Bevezetés a Python használatába
|
|
- Fanni Pintér
- 6 évvel ezelőtt
- Látták:
Átírás
1 Bevezetés a Python használatába Aradi Bernadett 2017/18 ősz Python bevezető 2017/18 ősz 1 / 31
2 Kurzusinformációk: A kurzushoz tartozó jegyzet: import this Python bevezető 2017/18 ősz 2 / 31
3 A Python adattípusai Számok: integer és float boolean: True, False string: print( Hello World! ) Az adattípusok dinamikusan (deklarálás nélkül) adódnak: type(1) type(1.2) type(1.) type("hello") # string: vagy type(none) type(int) Változók típusának konvertálása: str(17) int("17") float("2.5") float("1") Python bevezető 2017/18 ősz 3 / 31
4 Alapműveletek x=3 print(x) print(x + 2), +,-,*,/ print(x ** 2) x += 1 print(x) x *= 5 print(x) # hatványozás 7 // 3 # hányados egészrésze type: int 7 % 3 # osztási maradék Adhatunk értéket egyszerre több változónak: x,y=2,8 print(x*y) Python bevezető 2017/18 ősz 4 / 31
5 Indentálás Pythonban!! x=3 if x>1: x+=2 print(x) Kommentelés: 1-soros: # többsoros: """ előtte-utána Alt használatával: egyszerre több sor kijelölése (jupyter notebook) Változónevek: a z, A Z, 0 9, nem kezdődhetnek számmal case sensitive nem lehetnek az alábbiak: and assert break class continue def del elif else except exec finally for from global if import in is lambda not or pass print raise return try while yield Python bevezető 2017/18 ősz 5 / 31
6 Logikai operátorok t=true f=false print(type(t)) print(t and f) print(t or f) print(not t) print(t!= f) # XOR A bool típus interpretálható int-ként is: True==1 és False==0 1 == 1 3 * 2 == 7 2!= 2 3 * 2!= 7 1 < 5 3 >= 0 1 < 2 >= 3 Python bevezető 2017/18 ősz 6 / 31
7 Műveletek stringekkel x = "Hello, I m" x + "Python!" # Default: utf-8 karakterkódolás h = Hello w = "world" print(h) print(len(h)) # string hossza hw = h + + w +! # stringek összefűzése print(hw) "Do you have {no} of those {what}?".format(no= two,what= apples ) Do you have %d of those %s % (2, apples ) s="hello" indexelés: s[0], s[1],..., s[5] negatív indexelés: s[-1], s[-2],..., s[-5] s.capitalize(), s.upper(), s.rjust(7), s.center(9) s.replace( l, k ) world.strip() # eltünteti a szóközöket előtte-utána Python bevezető 2017/18 ősz 7 / 31
8 A Python objektumai listák: akár különböző típusú változók rögzített sorrendben szótárak (dictionary): (key,value) párokat rögzít halmazok osztályok (class): definiálhatunk egyéb típusokat függvények Python bevezető 2017/18 ősz 8 / 31
9 Listák lst = [3, 1, 2] print(lst,lst[2]) print(lst[-1]) lst[0]= start print(lst) lst.append(3) ls=ls.pop() # kiveszi a lista utolsó elemét print(ls,lst) empty=[] lst1=[0,1,2,3] lst2=[4,5,6] lst=lst1+lst2 print(lst) # listák összefűzése nums=list(range(7)) print(nums) # range: beépített fv egész számok sorozatára Python bevezető 2017/18 ősz 9 / 31
10 Slicing lists nums=list(range(7)) print(nums) print(nums[2:4]) # slice: 2 indexű elemtől 3-ig print(nums[2:]) print(nums[:4]) print(nums[:]) # teljes lista print(nums[:-1]) # az utolsó elemig print(nums[1:5:2]) # ez hogy jött ki? print(nums[4::-2]) # visszafelé is mehetünk print(nums[::-1]) stringekre ugyanígy! nums[2:4]=[100,101] print(nums) nums[2:4]=list(range(20)) print(nums) Python bevezető 2017/18 ősz 10 / 31
11 Listák... nums=list(range(7)) letters=[ a, b, c ] lst=[nums,letters] print(lst[1][2]) print(lst[1][:2]) len(nums), len(lst) len([]) len( python ) 8 in nums # in: ellenőrzi, hogy az elem benne van-e a listában t in python min(nums), max(nums) Python bevezető 2017/18 ősz 11 / 31
12 Listák rendezése lst = [25, 50, 10, -150, 28, 250, 310, 33] sorted(lst) # növekvő sorrend sorted(lst, reverse=true) Vektorok, mint szabályos sorozatok A range függvény segítségével: list(range(4)) list(range(4,10)) list(range(2, 12, 3)) list(range(-7, -37, -5)) # csökkenő sorrend Python bevezető 2017/18 ősz 12 / 31
13 for-ciklus egy lista elemei mentén hallgatok=[ Sanyi, Anna, Gábor ] for valaki in hallgatok: print(valaki, jár neurális gyakorlatra ) hallgatok=[ Sanyi, Anna, Gábor ] for idx, valaki in enumerate(hallgatok): # enumerate print(valaki, a névsor, idx+1,. tagja ) hallgatok=[ Sanyi, Anna, Gábor ] for idx, valaki in enumerate(hallgatok): print( %s a névsor %d. tagja % (valaki,idx + 1)) nums = [0, 1, 2, 3, 4] negyzet = [] for i in nums: negyzet.append(i ** 2) print(negyzet) Python bevezető 2017/18 ősz 13 / 31
14 Függvények Függvények definiálása: def parancs segítségével: def sign(x): if x > 0: return positive elif x < 0: return negative else: return zero for x in [-1, 0, 1]: print(sign(x)) Python bevezető 2017/18 ősz 14 / 31
15 Feladatok Álĺıtsuk elő minél egyszerűbben az alábbi vektorokat! 1 a = (0, 1,..., 30) 2 b = (2, 4, 6,..., 100) 3 c = (2, 1.9, 1.8,..., 0) 4 d = (0, 3, 6,..., 27, 30, 100, 30, 27,..., 6, 3, 0) 3. feladat megoldása: c = list(range(20,-1,-1)) c = [i/10 for i in c] print(c) Python bevezető 2017/18 ősz 15 / 31
16 Feladatok 2 Legyen v egy adott 100 elemű vektor. Ennek megadására egy lehetőség: from random import randint v=[randint(-500,500) for i in range(0,100)] print(v) 5 Álĺıtsuk elő azt a w vektort, melynek elemei a v elemei fordított sorrendben felsorolva! Írjunk függvényt, amely 6 egy adott n természetes szám esetén kíırja n! értékét; 7 egy adott természetes szám esetén eldönti, hogy az palindrom szám-e! Python bevezető 2017/18 ősz 16 / 31
17 NumPy Tömbök kezeléséhez, numerikus számításokhoz készült kiegészítő csomag a Pythonhoz. import numpy as np alapvető adatszerkezete az n-dimenziós tömb vektor és mátrix szintű utasítások lineáris algebrai és véletlenszám almodul több magasabb szintű modul is épül rá (pl. scipy, matplotlib, scikit-learn) Python bevezető 2017/18 ősz 17 / 31
18 Tömbök létrehozása konkrét adatokból Vektorok: v = np.array([1, 3, 2]) print(type(v)) print(v.shape) v[0]=5 print(v) Mátrixok: A = np.array([[1,2,3],[4,5,6]]) # sorfolytonosan mátrixot képez print(a.shape) A[0,1]=-100 print(a) import numpy as np helyett: from numpy import array v = array([1, 3, 2]) Python bevezető 2017/18 ősz 18 / 31
19 Speciális tömbök B = np.zeros((3,2)) C = np.ones((1,2)) D = np.full((2,5),7) E = np.eye(3) # csupa 0-ból álló mátrix # csupa egyesből álló mátrix # konstans mátrix # 3x3-as egységmátrix F = np.random.random((2,2)) # véletlen számok [0, 1]-en egyenletes eloszlásból Indexelés, slicing: mint a listáknál. DE: A = np.array([[1,2,3,4], [5,6,7,8], [9,10,11,12]]) B = A[:2, 1:3] print(b) B[0, 0] = 1000 print(a) Python bevezető 2017/18 ősz 19 / 31
20 Még több slicing: amire figyelni kell... A = np.array([[1,2,3,4], [5,6,7,8], [9,10,11,12]]) # a középső sor kiválasztása: sor1 = A[1, :] vagy sor2 = A[1:2, :] print(sor1) print(sor2) print(sor1,sor1.shape) print(sor2,sor2.shape) # ugyanaz? sor1 = A[1, :] integer indexing: csökkenti a tömb rangját sor2 = A[1:2, :] slicing: nem csökkenti a rangot Python bevezető 2017/18 ősz 20 / 31
21 Integer array indexing B = np.array([[1,2], [3, 4], [5, 6]]) print(b[[0, 1, 2], [0, 1, 0]]) print(np.array([b[0, 0], B[1, 1], B[2, 0]])) print(b[[0, 0], [1, 1]]) # tehát többször is választhatjuk ugyanazt az elemet C = np.array([[1,2,3], [4,5,6], [7,8,9], [10, 11, 12]]) v = np.array([0, 2, 0, 1]) print(c[np.arange(4), v]) # minden sorból egy elem # arange: NumPy range függvénye tömbökre C[np.arange(4),v] += 100 # minden sorból egy elemhez hozzáadunk 100-at print(c) Python bevezető 2017/18 ősz 21 / 31
22 Boolean array indexing Egy logikai feltétel ellenőrzésével történik az indexelés. C = np.array([[1,2], [3, 4], [5, 6]]) felt = (C > 1) # visszatérési érték: boolean NumPy tömb print(felt,felt.shape) print(c[felt]) # 1 rangú NumPy tömb vektor print(c[c>1]) # közvetlenül Adattípusok NumPy-ban: Mint korábban, itt is dinamikusan választ adattípust a Python. Ennek ellenére egy opcionális argumentummal ki is kényszeríthetünk bizonyos adattípus-választást: v = np.array([1, 2]) print(v.dtype) # típus: int32 v = np.array([1., 2]) print(v.dtype) # típus: float64 v = np.array([1, 2],dtype=np.float32) print(v.dtype) # típus: float32 Python bevezető 2017/18 ősz 22 / 31
23 Műveletek NumPy tömbökkel A tömbökkel végzett matematikai alapműveletek elemenként hajtódnak végre, és függvényként is meghívhatjuk őket: A = np.array([[1,2],[3,4]]) B = np.array([[5,6],[7,8]]) print(a+b) # mátrixösszeadás print(np.add(a,b)) print(a-b) # különbségképzés print(np.subtract(a,b)) print(a*b) # szorzás elemenként! print(np.multiply(a,b)) print(a/b) # osztás print(np.divide(a,b)) Egyéb matematikai függvények is elemenként: print(np.sqrt(a)) Mit kapunk, ha 0-val osztunk, vagy negatív számból vonunk négyzetgyököt? Python bevezető 2017/18 ősz 23 / 31
24 Belső/skaláris szorzat, mátrixszorzás A dot függvénnyel történik: A = np.array([[1,2],[3,4]]) B = np.array([[5,6],[7,8]]) v = np.array([9,10]) w = np.array([11, 12]) print(np.dot(v, w)) # v és w vektorok belső szorzata print(v.dot(w)) # ez is print(np.dot(a,v)) print(a.dot(v)) print(np.dot(v,a)) print(np.dot(a,b)) print(a.dot(b)) # A mátrix és v vektor szorzata # ez is # és ez? # mátrixszorzás # ez is Vegyük észre, hogy a NumPy nem tesz különbséget sor- és oszlopvektorok között! Python bevezető 2017/18 ősz 24 / 31
25 Ha mégis sor- és oszlopvektorokkal szeretnénk dolgozni: n 1 és 1 n típusú mátrixokra van szükségünk: v = np.array([9,10]) print(v==v.t) #.T: transzponálás v = np.array([[9,10]]) w = np.array([[9],[10]]) print(v.shape,w.shape) print(v==w) print(v==w.t) NumPy függvények # v sorvektor # v oszlopvektor A = np.array([[1,2],[3,4]]) print(np.sum(a)) # elemek összege print(np.sum(a, axis=0)) print(np.sum(a, axis=1)) # összeg oszloponként # összeg soronként Egyéb hasznos NumPy függvények: Python bevezető 2017/18 ősz 25 / 31
26 Feladatok 3 1 Álĺıtsuk elő azt a 3 4-es mátrixot, mely sorfolytonosan tartalmazza az 1,...,12 elemek kétszereseit! (Hint: használjuk az np.reshape függvényt!) 2 Álĺıtsuk elő a csupa 1-esekből álló 3 5-ös mátrixot. 3 Álĺıtsuk elő azt az 5 3-as mátrixot, melynek átlójában az 1,2,3 elemek állnak, minden más eleme 0. 4 Keressük meg egy 6 8-as véletlen mátrix minden sorában a maximális elemet. (Hint: a mátrix megadásához használjuk ismét az np.reshape függvényt, valamint például a randint parancsot!) 5 Írjunk függvényt, amely egy adott n természetes szám esetén (for-ciklus használata nélkül) kíırja n! értékét! Python bevezető 2017/18 ősz 26 / 31
27 Broadcasting Különböző méretű NumPy tömbökkel végzett műveletvégzés esetén hasznos. Például tegyük fel, hogy egy rögzített vektort hozzá szeretnénk adni egy mátrix minden sorához: A = np.array([[1,2],[3,4],[5,6]]) v = np.array([2,1]) Megoldás: for-ciklussal broadcasting segítségével: print(a+v) elemenkénti műveletvégzés az ezt támogató függvények: univerzális függvények, lásd: Mit tegyünk, ha a w = np.array([1,1,3]) vektort szeretnénk hozzáadni A minden oszlopához? Python bevezető 2017/18 ősz 27 / 31
28 Broadcasting hogyan működik? 1 Ha a 2 tömb rangja nem egyezik meg: a kisebb rangú tömb shape-vektorának elejére annyi 1-est ír, hogy a rangok megegyezzenek. Pl. (3,1,4) és (2,) (3,1,4) és (1,1,2). 2 Két tömböt egy adott dimenzióban kompatibilisnek mondunk, ha a két tömb adott dimenziója megegyezik, vagy az egyik tömb esetén ez az érték 1. Pl. (3,1,4) és (1,1,2) az első 2 dimenziójukban kompatibilisek. 3 Két tömb akkor broadcastolható, ha minden dimenziójukban kompatibilisek. Pl. (3,1,4) és (1,1,2) nem broadcastolható. 4 Két tömb broadcastolása esetén mindkét tömb úgy viselkedik, mintha minden dimezióban a 2 lehetőség maximuma lenne az adott dimenzió mérete. Pl. (3,1,1) és (1,2,4) esetén: (3,2,4) 5 Ha valamelyik dimenzióban a két tömb mérete különböző, akkor az 1 méretűt annyiszor egymás után másolja, hogy a két tömbbel elemenként végezhessük a műveleteket. Python bevezető 2017/18 ősz 28 / 31
29 Függvényábrázolás Matplotlib: beépített könyvtár ábrák készítéséhez, ezen belül a matplotlib.pyplot egy függvényábrázolásra használható modul. import matplotlib.pyplot as plt Pl. a cos függvény ábrázolása egy tartományon: x = np.arange(0,3*np.pi,0.1) # pontok x koordinátája y = np.cos(x) # megfelelő y értékek kiszámolása plt.plot(x, y) plt.show() # ez a parancs teszi láthatóvá a grafikát Több függvény ábrázolása és feliratok készítése: y2 = np.sin(x) plt.plot(x, y, b ) plt.plot(x, y2, g: ) plt.xlabel( x-tengely ) plt.ylabel( y-tengely ) plt.title( cos és sin függvények ) plt.legend([ cos, sin ]) # jelmagyarázat készítése plt.show() Python bevezető 2017/18 ősz 29 / 31
30 Feladatok 4 1 Olvassuk be egy tömbbe a címen található adatállományt! Erre egy lehetőség: import urllib.request url=... # ide kell a fenti link points = np.loadtxt(urllib.request.urlopen(url)) 2 Vizsgáljuk meg az adathalmazunk felépítését! 1-esekkel és -1-esekkel felcímkézett síkbeli pontok szerepelnek benne. Hány 1-es és hány -1-es jelzésű pontunk van? 3 Ábrázoljuk egy közös koordináta-rendszerben különböző színnel az 1-es, valamint a -1-es címkével rendelkező pontokat. Perceptronnal ketté fogjuk választani a 2 ponthalmazt. Előtte: 4 Tegyük rá az ábránkra a -2 meredekségű, 10-es tengelymetszettel rendelkező egyenest is egy harmadik színnel. Python bevezető 2017/18 ősz 30 / 31
31 A perceptron algoritmus 1 Vizsgáljuk meg, hogyan függ a szükséges korrekciós lépések száma a tanulási paramétertől! 2 Mi történik, ha közelebb hozzuk egymáshoz a két halmazt? Pl. legyen B = B + ε, ahol ε > 0. 3 Ellenőrizzük, hogy teljesül-e a perceptron konvergencia tétel! 4 Ábrázoljuk grafikonon, hogy hogyan alakul a hiba az epochok függvényében! Python bevezető 2017/18 ősz 31 / 31
Imperatív programozás
Imperatív programozás 7. Előadás Függvények, láthatóság (folytatás) Modulok Kivételkezelés Beágyazott függvény def lnko(x, y): def kivon(m, n): return m - n while not (x == y) : if x > y : x = kivon(x,y)
Python tanfolyam Python bevezető I. rész
Python tanfolyam Python bevezető I. rész Mai tematika Amiről szó lesz (most): Interpretált vs. fordított nyelvek, GC Szintakszis Alaptípusok Control flow: szekvencia, szelekció, iteráció... Függvények
Informatika terméktervezőknek
Informatika terméktervezőknek C# alapok Névterület (namespace) using Osztály (class) és Obejtumok Metódus (function, procedure, method) main() static void string[] arg Szintaxis // /* */ \n \t Névadások
INFORMATIKA javítókulcs 2016
INFORMATIKA javítókulcs 2016 ELMÉLETI TÉTEL: Járd körbe a tömb fogalmát (Pascal vagy C/C++): definíció, egy-, két-, több-dimenziós tömbök, kezdőértékadás definíciókor, tömb típusú paraméterek átadása alprogramoknak.
Ismerkedés a Python programnyelvvel. és annak micropython változatával
Ismerkedés a Python programnyelvvel és annak micropython változatával A Python programozási nyelv története Az alapötlet 1980-ban született, 1989 decemberében kezdte el fejleszteni Guido van Rossum a CWI-n
Matlab alapok. Baran Ágnes
Matlab alapok Mátrixok Baran Ágnes Mátrixok megadása Mátrix megadása elemenként A = [1, 2, 3; 4, 5, 6; 7, 8, 9] vagy A = [1 2 3; 4 5 6; 7 8 9] eredménye: A = 1 2 3 4 5 6 7 8 9 (Az egy sorban álló elemeket
Imperatív programozás
Imperatív programozás 2. Előadás Python alapok Elérhetőség Tejfel Máté Déli épület, 2.616 matej@elte.hu http://matej.web.elte.hu Python Script nyelv Értelmezett (interpretált) Dinamikus típusrendszer Gyors
Apple Swift kurzus 3. gyakorlat
Készítette: Jánki Zoltán Richárd Dátum: 2016.09.20. Apple Swift kurzus 3. gyakorlat Kollekciók: Tömb: - let array = [] - üres konstans tömb - var array = [] - üres változó tömb - var array = [String]()
Matlab alapok. Vektorok. Baran Ágnes
Matlab alapok Vektorok Baran Ágnes Vektorok megadása Megkülönbözteti a sor- és oszlopvektorokat Sorvektorok Az a = ( 1.2, 3.1, 4.7, 1.9) vektor megadása elemei felsorolásával: az elemeket vesszővel választjuk
BASH script programozás II. Vezérlési szerkezetek
06 BASH script programozás II. Vezérlési szerkezetek Emlékeztető Jelölésbeli különbség van parancs végrehajtása és a parancs kimenetére való hivatkozás között PARANCS $(PARANCS) Jelölésbeli különbség van
Python bevezető foglalkozás Python bevezető foglalkozás
Python bevezető foglalkozás program, programozás, programnyelvek a Python nyelv és az IDLE környezet változók és adattípusok konzol input és output (input(), print()) vezérlési szerkezetek (if/else, while)
2018, Diszkrét matematika
Diszkrét matematika 3. előadás mgyongyi@ms.sapientia.ro Sapientia Egyetem, Matematika-Informatika Tanszék Marosvásárhely, Románia 2018, őszi félév Miről volt szó az elmúlt előadáson? számtartományok: természetes
Adattípusok, vezérlési szerkezetek. Informatika Szabó Adrienn szeptember 14.
Informatika 1 2011 Második előadás, vezérlési szerkezetek Szabó Adrienn 2011. szeptember 14. Tartalom Algoritmusok, vezérlési szerkezetek If - else: elágazás While ciklus For ciklus Egyszerű típusok Összetett
Az Összetett hálózatok vizsgálata elektronikus tantárgy részletes követeleményrendszere
Az Összetett hálózatok vizsgálata elektronikus tantárgy részletes követeleményrendszere Horváth Árpád 2014. február 7. A tárgy célja: Az összetett hálózatok fogalomrendszerének használata a tudomány több
MATLAB alapismeretek I.
Alkalmazott Informatikai Intézeti Tanszék MŰSZAKI INFORMATIKA Dr.Dudás László 0. MATLAB alapismeretek I. A MATLAB bemutatása MATLAB filozófia MATLAB modulok A MATLAB felhasználói felülete MATLAB tulajdonságok
Gyakorló feladatok Gyakorló feladatok
Gyakorló feladatok előző foglalkozás összefoglalása, gyakorlató feladatok a feltételes elágazásra, a while ciklusra, és sokminden másra amit eddig tanultunk Változók elnevezése a változók nevét a programozó
Imperatív programozás
Imperatív programozás 6. Előadás Python típusok (folytatás) Függvények Típusok + műveleteik Listák - mutable (változtatható) - heterogén lista >>> lista = ["szo", 12, 3.5] >>> lista[1] 12 >>> lista[1:3]
PYTHON. Avagy hosszú az út a BioPythonig
PYTHON Avagy hosszú az út a BioPythonig Miért a Python? Mert ez áll a legközelebb az ember által beszélt nyelvhez. Mert ez a leggyorsabb az ismert script nyelvek közül Mert rengeteg modul érhető el hozzá
Programozási nyelvek Python
Programozási nyelvek Python A nyelv története és jellemzői 2 A nyelv története Tervező Guido van Rossum (1956, Hollandia) Befolyásoló nyelvek ABC (pl. blokkok jelölése behúzással); Modula-3; C; C++; Unix
1. Egyszerű (primitív) típusok. 2. Referencia típusok
II. A Java nyelv eszközei 1. Milyen eszközöket nyújt a Java a programozóknak Korábban már említettük, hogy a Java a C nyelvből alakult ki, ezért a C, C++ nyelvben járatos programozóknak nem fog nehézséget
A C# PROGRAMOZÁSI NYELV
A C# PROGRAMOZÁSI NYELV 2010.02.23. Bevezetés C# nyelv jellemzői 2 Kis és NAGY betű érzékeny Minden utasítást pontos vessző zár. Utasítás zárójel a:,. .NET Framework keretrendszerek 3 Microsoft.NET Framework
Vezérlési szerkezetek Vezérlési szerkezetek: feltételes elágazás és ciklusok
: feltételes elágazás és ciklusok töbszörös elágazás (if-elif-else) kilépés while ciklusból (break), ciklus folytatása (continue), és a while ciklus feltételéhez tartozó else ág a for ciklus és a range()
A MATLAB alapjai. Kezdő lépések. Változók. Aktuális mappa Parancs ablak. Előzmények. Részei. Atomerőművek üzemtana
A MATLAB alapjai Kezdő lépések - Matlab Promt: >> - Help: >> help sqrt >> doc sqrt - Kilépés: >> quit >> exit >> Futó script leállítása: >> ctrl+c - Változók listásása >> who >> whos - Változók törlése
INFORMATIKA tétel 2019
INFORMATIKA tétel 2019 ELIGAZÍTÁS: 1 pont hivatalból; Az 1-4 feladatokban (a pszeudokód programrészletekben): (1) a kiír \n utasítás újsorba ugratja a képernyőn a kurzort; (2) a / operátor osztási hányadost
Szoftvertechnológia alapjai Java előadások
Szoftvertechnológia alapjai Java előadások Förhécz András, doktorandusz e-mail: fandrew@mit.bme.hu tárgy honlap: http://home.mit.bme.hu/~fandrew/szofttech_hu.html A mai előadás tartalma: Miért pont Java?
AWK programozás, minták, vezérlési szerkezetek
10 AWK programozás, minták, vezérlési szerkezetek AWK adatvezérelt szkriptnyelv text processing, adat kiterjesztés, tagolt adatok automatizált soronkénti feldolgozása a forrásállományt soronként beolvassa
2016, Diszkrét matematika
Diszkrét matematika 8. előadás Sapientia Egyetem, Műszaki és Humántudományok Tanszék Marosvásárhely, Románia mgyongyi@ms.sapientia.ro 2016, őszi félév Miről volt szó az elmúlt előadáson? a Fibonacci számsorozat
Írjon olyan programot a standard könyvtár alkalmazásával, amely konzolról megadott valós adatokból meghatározza és kiírja a minimális értékűt!
Írjon olyan programot a standard könyvtár alkalmazásával, amely konzolról megadott valós adatokból meghatározza és kiírja a minimális értékűt! valós adatokat növekvő sorrendbe rendezi és egy sorba kiírja
A Python programozási nyelv
A Python programozási nyelv Takács Gábor Széchenyi István Egyetem Matematika és Számítástudomány Tanszék 1 / 47 Jellemzők + értelmezett nyelv + típusai dinamikusak + szintaxisa tömör,
AWK programozás, minták, vezérlési szerkezetek
10 AWK programozás, minták, vezérlési szerkezetek AWK futtatási módok AWK parancs, közvetlen programkódmegadás: awk 'PROGRAMKÓD' FILE példa: ls -l awk '{print $1, $5}' a programkód helyére minden indentálás
Programozás alapjai. 5. előadás
5. előadás Wagner György Általános Informatikai Tanszék Cserélve kiválasztásos rendezés (1) A minimum-maximum keresés elvére épül. Ismétlés: minimum keresés A halmazból egy tetszőleges elemet kinevezünk
S z á m í t ó g é p e s a l a p i s m e r e t e k
S z á m í t ó g é p e s a l a p i s m e r e t e k 7. előadás Ami eddig volt Számítógépek architektúrája Alapvető alkotóelemek Hardver elemek Szoftver Gépi kódtól az operációs rendszerig Unix alapok Ami
Matlab alapok. Baran Ágnes. Baran Ágnes Matlab alapok Elágazások, függvények 1 / 15
Matlab alapok Baran Ágnes Elágazások, függvények Baran Ágnes Matlab alapok Elágazások, függvények 1 / 15 Logikai kifejezések =, ==, = (két mátrixra is alkalmazhatóak, ilyenkor elemenként történik
Algoritmusok Tervezése. 1. Előadás MATLAB 1. Dr. Bécsi Tamás
Algoritmusok Tervezése 1. Előadás MATLAB 1. Dr. Bécsi Tamás Tárgy adatok Előadó: Bécsi Tamás, St 106, becsi.tamas@mail.bme.hu Előadás:2, Labor:2 Kredit:5 Félévközi jegy 2 db Zh 1 hallgatói feladat A félév
Felvételi tematika INFORMATIKA
Felvételi tematika INFORMATIKA 2016 FEJEZETEK 1. Természetes számok feldolgozása számjegyenként. 2. Számsorozatok feldolgozása elemenként. Egydimenziós tömbök. 3. Mátrixok feldolgozása elemenként/soronként/oszloponként.
2016, Diszkrét matematika
Diszkrét matematika 2. előadás Sapientia Egyetem, Műszaki és Humántudományok Tanszék Marosvásárhely, Románia mgyongyi@ms.sapientia.ro 2016, őszi félév Miről volt szó az elmúlt előadáson? Követelmények,
Smalltalk 2. Készítette: Szabó Éva
Smalltalk 2. Készítette: Szabó Éva Blokkok Paraméter nélküli blokk [műveletek] [ x := 5. 'Hello' print. 2+3] Kiértékelés: [művelet] value az értéke az utolsó művelet értéke lesz, de mindet kiírja. x :=
Változók és adattípusok Változók és adattípusok
előző foglalkozás összefoglalása, ismétlő gyakorlatok változók elnevezése, értékadás, többszörös értékadás műveletek egész és tört számokkal, string-ekkel logikai változók és logikai műveletek típusátalakítás,
end function Az A vektorban elõforduló legnagyobb és legkisebb értékek indexeinek különbségét.. (1.5 pont) Ha üres a vektor, akkor 0-t..
A Név: l 2014.04.09 Neptun kód: Gyakorlat vezető: HG BP MN l 1. Adott egy (12 nem nulla értékû elemmel rendelkezõ) 6x7 méretû ritka mátrix hiányos 4+2 soros reprezentációja. SOR: 1 1 2 2 2 3 3 4 4 5 6
Alkalmazott modul: Programozás. Programozási tételek, rendezések. Programozási tételek Algoritmusok és programozási tételek
Eötvös Loránd Tudományegyetem Informatikai Kar Alkalmazott modul: Programozás, rendezések 2015 Giachetta Roberto groberto@inf.elte.hu http://people.inf.elte.hu/groberto Algoritmusok és programozási tételek
Megjegyzés: A programnak tartalmaznia kell legalább egy felhasználói alprogramot. Példa:
1. Tétel Az állomány két sort tartalmaz. Az első sorában egy nem nulla természetes szám van, n-el jelöljük (5
Programozás alapjai gyakorlat. 4. gyakorlat Konstansok, tömbök, stringek
Programozás alapjai gyakorlat 4. gyakorlat Konstansok, tömbök, stringek Házi ellenőrzés (f0069) Valósítsd meg a linuxos seq parancs egy egyszerűbb változatát, ami beolvas két egész számot, majd a kettő
Algoritmusok Tervezése. 4. Előadás Visual Basic 1. Dr. Bécsi Tamás
Algoritmusok Tervezése 4. Előadás Visual Basic 1. Dr. Bécsi Tamás Bevezetés A BASIC (Beginner s All-purpose Symbolic Instruction Code) programnyelvet oktatási célokra hozták létre 1964-ben. Az általános
Python I. Vincze Dávid Miskolci Egyetem, IIT
Vincze Dávid Miskolci Egyetem, IIT vincze.david@iit.uni-miskolc.hu http://users.iit.uni-miskolc.hu/~vinczed/ Általános célú szkriptnyelv A név Monthy Python után De ettől még kígyókat is láthatunk :) Platformfüggetlen
A C# programozási nyelv alapjai
A C# programozási nyelv alapjai Tisztán objektum-orientált Kis- és nagybetűket megkülönbözteti Ötvözi a C++, Delphi, Java programozási nyelvek pozitívumait.net futtatókörnyezet Visual Studio fejlesztőkörnyezet
Maximum kiválasztás tömbben
ELEMI ALKALMAZÁSOK FEJLESZTÉSE I. Maximum kiválasztás tömbben Készítette: Szabóné Nacsa Rozália Gregorics Tibor tömb létrehozási módozatok maximum kiválasztás kódolása for ciklus adatellenőrzés do-while
2018, Diszkrét matematika
Diszkrét matematika 5. előadás mgyongyi@ms.sapientia.ro Sapientia Egyetem, Matematika-Informatika Tanszék Marosvásárhely, Románia 2018, őszi félév Miről volt szó az elmúlt előadáson? Python alapfogalmak:
Programozási segédlet
Programozási segédlet Programozási tételek Az alábbiakban leírtam néhány alap algoritmust, amit ismernie kell annak, aki programozásra adja a fejét. A lista korántsem teljes, ám ennyi elég kell legyen
A MATLAB alapjai. Kezdő lépések. Változók. Aktuális mappa Parancs ablak. Előzmények. Részei
A MATLAB alapjai Atomerőművek üzemtanának fizikai alapjai - 2016. 03. 04. Papp Ildikó Kezdő lépések - Matlab Promt: >> - Help: >> help sqrt >> doc sqrt - Kilépés: >> quit >> exit - Változók listásása >>
Programozás I. 3. gyakorlat. Szegedi Tudományegyetem Természettudományi és Informatikai Kar
Programozás I. 3. gyakorlat Szegedi Tudományegyetem Természettudományi és Informatikai Kar Antal Gábor 1 Primitív típusok Típus neve Érték Alap érték Foglalt tár Intervallum byte Előjeles egész 0 8 bit
C# feladatok gyűjteménye
C# feladatok gyűjteménye Készítette: Fehérvári Károly I6YF6E Informatika tanár ma levelező tagozat 1) Feladat: ALAPMŰVELETEK Készítsünk programot, amely bekér két egész számot. Majd kiszámolja a két szám
Változók. Mennyiség, érték (v. objektum) szimbolikus jelölése, jelentése Tulajdonságai (attribútumai):
Python Változók Mennyiség, érték (v. objektum) szimbolikus jelölése, jelentése Tulajdonságai (attribútumai): Név Érték Típus Memóriacím A változó értéke (esetleg más attribútuma is) a program futása alatt
Számítógépes Hálózatok. 1. Gyakorlat
Számítógépes Hálózatok 1. Gyakorlat Elérhetőségek gyakvez: Dr. Laki Sándor honlap: http://lakis.web.elte.hu/ email: lakis@inf.elte.hu szoba: 2.506 (déli tömb) Számítógépes Hálózatok Gyakorlat 1 2 Követelmények
7. Strukturált típusok
7. Strukturált típusok 1. Mintafeladat a különböző tömbtípusok konstanssal való feltöltésére és kiíratására! (minta7_1) program minta7_1; fejlec:array[1..8] of char = 'Eredmény'; adatok:array[1..4] of
2018, Diszkrét matematika
Diszkrét matematika 4. előadás mgyongyi@ms.sapientia.ro Sapientia Egyetem, Matematika-Informatika Tanszék Marosvásárhely, Románia 2018, őszi félév Miről volt szó az elmúlt előadáson? számtartományok: racionális
MATLAB OKTATÁS 1. ELŐADÁS ALAPOK. Dr. Bécsi Tamás Hegedüs Ferenc
MATLAB OKTATÁS 1. ELŐADÁS ALAPOK Dr. Bécsi Tamás Hegedüs Ferenc BEVEZETŐ A Matlab egy sokoldalú matematikai programcsomag, amely a mérnöki számításokat egyszerusíti le. (A Matlab neve a MATrix és a LABoratory
Matematikai programok
Matematikai programok Mátrixalapú nyelvek octave Wettl Ferenc Algebra Tanszék B U D A P E S T I M Ű S Z A K I M A T E M A T I K A É S G A Z D A S Á G T U D O M Á N Y I I N T É Z E T E G Y E T E M Wettl
C# nyelv alapjai. Krizsán Zoltán 1. Objektumorientált programozás C# alapokon tananyag. Általános Informatikai Tanszék Miskolci Egyetem
C# nyelv alapjai Krizsán Zoltán 1 Általános Informatikai Tanszék Miskolci Egyetem Objektumorientált programozás C# alapokon tananyag Tartalom Bevezetés Lokális változó Utasítások Szójáték Why do all real
3. Gyakorlat Ismerkedés a Java nyelvvel
3. Gyakorlat Ismerkedés a Java nyelvvel Parancssori argumentumok Minden Java programnak adhatunk indításkor paraméterek, ezeket a program egy tömbben tárolja. public static void main( String[] args ) Az
Felvételi vizsga mintatételsor Informatika írásbeli vizsga
BABEȘ BOLYAI TUDOMÁNYEGYETEM MATEMATIKA ÉS INFORMATIKA KAR A. tételsor (30 pont) Felvételi vizsga mintatételsor Informatika írásbeli vizsga 1. (5p) Egy x biten tárolt egész adattípus (x szigorúan pozitív
Programozás I. Matematikai lehetőségek Műveletek tömbökkel Egyszerű programozási tételek & gyakorlás V 1.0 OE-NIK,
Programozás I. Matematikai lehetőségek Műveletek tömbökkel Egyszerű programozási tételek & gyakorlás OE-NIK, 2013 1 Hallgatói Tájékoztató A jelen bemutatóban található adatok, tudnivalók és információk
Aradi Bernadett. 2017/18 ősz. TensorFlow konvolúciós hálózatokhoz 2017/18 ősz 1 / 11
TensorFlow konvolúciós hálózatokhoz Aradi Bernadett 2017/18 ősz TensorFlow konvolúciós hálózatokhoz 2017/18 ősz 1 / 11 Tensorflow import tensorflow as tf szoftverkönyvtár neurális hálózatokhoz a Google
Tuesday, March 6, 12. Hasító táblázatok
Hasító táblázatok Halmaz adattípus U (kulcsuniverzum) K (aktuális kulcsok) Függvény adattípus U (univerzum) ÉT (értelmezési tartomány) ÉK (érték készlet) Milyen az univerzum? Közvetlen címzésű táblázatok
Függvények. Programozás alapjai C nyelv 7. gyakorlat. LNKO függvény. Függvények(2) LNKO függvény (2) LNKO függvény (3)
Programozás alapjai C nyelv 7. gyakorlat Szeberényi Imre BME IIT Függvények C program egymás mellé rendelt függvényekből áll. A függvény (alprogram) jó absztrakciós eszköz a programok
Programozás alapjai C nyelv 7. gyakorlat. Függvények. Függvények(2)
Programozás alapjai C nyelv 7. gyakorlat Szeberényi Imre BME IIT Programozás alapjai I. (C nyelv, gyakorlat) BME-IIT Sz.I. 2005.11.05. -1- Függvények C program egymás mellé rendelt függvényekből
LEGO robotok. XII. rész
LEGO robotok XII. rész III.1.22. Változók és konstansok A változó fogalma a matematikában egy értelmezési tartománnyal rendelkező, ebből bármilyen értéket felvehető objektum, melynek értéke logikailag
MATLAB. 3. gyakorlat. Mátrixműveletek, címzések
MATLAB 3. gyakorlat Mátrixműveletek, címzések Menetrend Kis ZH Mátrixok, alapműveletek Vezérlő szerkezetek Virtuális műtét Statisztikai adatok vizsgálata pdf Kis ZH Mátrixok, alapműveletek mátrix létrehozása,
Hálózatok építése és üzemeltetése
Hálózatok építése és üzemeltetése Python 1 Python nyelv Alapok 2 Általános jellemzők A Python programozási nyelv egy általános célú magas szintű nagyon széles körben elterjedt ingyenes program nyelv, amely
A JavaScript főbb tulajdonságai
JavaScript alapok A JavaScript főbb tulajdonságai Script nyelv azaz futás közben értelmezett, interpretált nyelv Legfőbb alkalmazási területe: a HTML dokumentumok dinamikussá, interaktívvá tétele Gyengén
Tömbök kezelése. Példa: Vonalkód ellenőrzőjegyének kiszámítása
Tömbök kezelése Példa: Vonalkód ellenőrzőjegyének kiszámítása A számokkal jellemzett adatok, pl. személyi szám, adószám, taj-szám, vonalkód, bankszámlaszám esetében az elírásból származó hibát ún. ellenőrző
Programozási nyelvek JAVA EA+GY 1. gyakolat
Programozási nyelvek JAVA EA+GY 1. gyakolat EÖTVÖS LORÁND TUDOMÁNYEGYTEM INFORMATIKAI KAR PROGRAMOZÁSI NYELVEK ÉS FORDÍTÓPROGRAMOK TANSZÉK 2018/2019. tavaszi félév Tartalom 1 A Java alapjai 2 Java program
Occam 1. Készítette: Szabó Éva
Occam 1. Készítette: Szabó Éva Párhuzamos programozás Egyes folyamatok (processzek) párhuzamosan futnak. Több processzor -> tényleges párhuzamosság Egy processzor -> Időosztásos szimuláció Folyamatok közötti
2018, Diszkre t matematika. 10. elo ada s
Diszkre t matematika 10. elo ada s MA RTON Gyo ngyve r mgyongyi@ms.sapientia.ro Sapientia Egyetem, Matematika-Informatika Tansze k Marosva sa rhely, Roma nia 2018, o szi fe le v MA RTON Gyo ngyve r 2018,
tétel: különböző típusú adatokat csoportosít, ezeket egyetlen adatként kezeli, de hozzáférhetünk az elemeihez is
A tétel (record) tétel: különböző típusú adatokat csoportosít, ezeket egyetlen adatként kezeli, de hozzáférhetünk az elemeihez is A tétel elemei mezők. Például tétel: személy elemei: név, lakcím, születési
PHP. Telepítése: Indítás/újraindítás/leállítás: Beállítások: A PHP nyelv
PHP A PHP rövidítés jelentése hivatalosan: PHP Hypertext Preprocessor. Ez egy kiszolgáló-oldali parancsnyelv, amit jellemzően HTML oldalakon használnak. A különbség a két nyelv között az, hogy a kiszolgáló
2. Milyen értéket határoz meg az alábbi algoritmus, ha A egy vektor?. (2 pont)
A Név: l 2017.04.06 Neptun kód: Gyakorlat vezet : HG BP l 1. Az A vektor tartalmát az alábbi KUPACOL eljárással rendezzük át maximum kupaccá. A={28, 87, 96, 65, 55, 32, 51, 69} Mi lesz az értéke az A vektor
Komputeralgebra Rendszerek
Komputeralgebra Rendszerek Programozás Czirbusz Sándor ELTE IK, Komputeralgebra Tanszék 2014. február 23. TARTALOMJEGYZÉK 1 of 28 TARTALOMJEGYZÉK I 1 TARTALOMJEGYZÉK 2 Értékadás MAPLE -ben SAGE -ben 3
OOP: Java 1.Gy: Java alapok
OOP: Java 1.Gy: Java alapok Eclipse alapok O O P Objektum Orientált Programozás 31/1 B ITv: MAN 2019.02.25 Feladat Írja meg a 4 alapműveletet megvalósító Kalkulátor programot Java nyelven. Az elvégzendő
SZERVER OLDALI JAVASCRIPT. 3. hét Javascript nyelvi elemek
SZERVER OLDALI JAVASCRIPT 3. hét Javascript nyelvi elemek NYELVI ALAPOK: Ez sajnos igen száraz anyag, Viszont a megértékhez és a nyelv elsajátításához kell. Próbáljuk meg random gifekkel feldobni. MIRŐL
Alkalmazott modul: Programozás. Programozási tételek, rendezések Giachetta Roberto
Eötvös Loránd Tudományegyetem Informatikai Kar Alkalmazott modul: Programozás Programozási tételek, rendezések 2015 Giachetta Roberto groberto@inf.elte.hu http://people.inf.elte.hu/groberto Algoritmusok
1. Olvassuk be két pont koordinátáit: (x1, y1) és (x2, y2). Határozzuk meg a két pont távolságát és nyomtassuk ki.
Számítás:. Olvassuk be két pont koordinátáit: (, y) és (2, y2). Határozzuk meg a két pont távolságát és nyomtassuk ki. 2. Olvassuk be két darab két dimenziós vektor komponenseit: (a, ay) és (b, by). Határozzuk
Bevezetés a programozásba I.
Elágazás Bevezetés a programozásba I. 2. gyakorlat, tömbök Surányi Márton PPKE-ITK 2010.09.14. Elágazás Elágazás Eddigi programjaink egyszer ek voltak, egy beolvasás (BE: a), esetleg valami m velet (a
1. Alapok. Programozás II
1. Alapok Programozás II Elérhetőség Név: Smidla József Elérhetőség: smidla dcs.uni-pannon.hu Szoba: I916 2 Irodalom Bjarne Stroustrup: A C++ programozási nyelv 3 Irodalom Erich Gamma, Richard Helm, Ralph
Matematikai programok
Matematikai programok Mátrixalapú nyelvek MatLab Wettl Ferenc diái alapján Budapesti M szaki Egyetem Algebra Tanszék 2017.11.07 Borbély Gábor (BME Algebra Tanszék) Matematikai programok 2017.11.07 1 /
Programozás II. 2. Dr. Iványi Péter
Programozás II. 2. Dr. Iványi Péter 1 C++ Bjarne Stroustrup, Bell Laboratórium Első implementáció, 1983 Kezdetben csak precompiler volt C++ konstrukciót C-re fordította A kiterjesztés alapján ismerte fel:.cpp.cc.c
Programozás C- és Matlab nyelven C programozás kurzus BMEKOKAM603 Előfeldolgozó rendszer Tömbök. Dr. Bécsi Tamás 4. Előadás
Programozás C- és Matlab nyelven C programozás kurzus BMEKOKAM603 Előfeldolgozó rendszer Tömbök Dr. Bécsi Tamás 4. Előadás A?: operátor Nézzük meg a következő kifejezést: if (a>b) z=a; else z=b; Ez felírható
11. gyakorlat Sturktúrák használata. 1. Definiáljon dátum típust. Olvasson be két dátumot, és határozza meg melyik a régebbi.
11. gyakorlat Sturktúrák használata I. Új típus új műveletekkel 1. Definiáljon dátum típust. Olvasson be két dátumot, és határozza meg melyik a régebbi. typedef struct datum { int ev; int ho; int nap;
Alapok. tisztán funkcionális nyelv, minden függvény (a konstansok is) nincsenek hagyományos változók, az első értékadás után nem módosíthatók
Haskell 1. Alapok tisztán funkcionális nyelv, minden függvény (a konstansok is) nincsenek hagyományos változók, az első értékadás után nem módosíthatók elég jól elkerülhetők így a mellékhatások könnyebben
Funkcionális és logikai programozás. { Márton Gyöngyvér, 2012} { Sapientia, Erdélyi Magyar Tudományegyetem }
Funkcionális és logikai programozás { Márton Gyöngyvér, 2012} { Sapientia, Erdélyi Magyar Tudományegyetem } http://www.ms.sapientia.ro/~mgyongyi ` 1 Jelenlét: Követelmények, osztályozás Az első 4 előadáson
Webprogramozás szakkör
Webprogramozás szakkör Előadás 5 (2012.04.09) Programozás alapok Eddig amit láttunk: Programozás lépései o Feladat leírása (specifikáció) o Algoritmizálás, tervezés (folyamatábra, pszeudokód) o Programozás
BASH SCRIPT SHELL JEGYZETEK
BASH SCRIPT SHELL JEGYZETEK 1 TARTALOM Paraméterek... 4 Változók... 4 Környezeti változók... 4 Szűrők... 4 grep... 4 sed... 5 cut... 5 head, tail... 5 Reguláris kifejezések... 6 *... 6 +... 6?... 6 {m,n}...
Egész számok. pozitív egész számok: 1; 2; 3; 4;... negatív egész számok: 1; 2; 3; 4;...
Egész számok természetes számok ( ) pozitív egész számok: 1; 2; 3; 4;... 0 negatív egész számok: 1; 2; 3; 4;... egész számok ( ) 1. Írd a következõ számokat a halmazábra megfelelõ helyére! 3; 7; +6 ; (
Függvények Megoldások
Függvények Megoldások ) Az ábrán egy ; intervallumon értelmezett függvény grafikonja látható. Válassza ki a felsoroltakból a függvény hozzárendelési szabályát! a) x x b) x x + c) x ( x + ) b) Az x függvény
A Python programozási nyelv
A Python programozási nyelv Takács Gábor Széchenyi István Egyetem Matematika és Számítástudomány Tanszék 1 / 1 Jellemzők + értelmezett nyelv + típusai dinamikusak + szintaxisa tömör, elegáns
12. előadás. Egyenletrendszerek, mátrixok. Dr. Szörényi Miklós, Dr. Kallós Gábor
12. előadás Egyenletrendszerek, mátrixok Dr. Szörényi Miklós, Dr. Kallós Gábor 2015 2016 1 Tartalom Matematikai alapok Vektorok és mátrixok megadása Tömbkonstansok Lineáris műveletek Mátrixok szorzása
6. A Pascal nyelv utasításai
6. A Pascal nyelv utasításai Írjunk programot, amely beolvas két valós számot és a két szám közül a kisebbikkel osztja a nagyobbikat! (felt0) program felt0; szam1, szam2, eredmeny : real; writeln('kérek
OOP I. Egyszerő algoritmusok és leírásuk. Készítette: Dr. Kotsis Domokos
OOP I. Egyszerő algoritmusok és leírásuk Készítette: Dr. Kotsis Domokos Hallgatói tájékoztató A jelen bemutatóban található adatok, tudnivalók és információk a számonkérendı anyag vázlatát képezik. Ismeretük
ELEMI PROGRAMOZÁSI TÉTELEK
ELEMI PROGRAMOZÁSI TÉTELEK 1. FELADATMEGOLDÁS PROGRAMOZÁSI TÉTELEKKEL 1.1 A programozási tétel fogalma A programozási tételek típusalgoritmusok, amelyek alkalmazásával garantáltan helyes megoldást adhatunk
Bevezetés a programozásba I.
Bevezetés a programozásba I. 6. gyakorlat C++ alapok, szövegkezelés Surányi Márton PPKE-ITK 2010.10.12. Forrásfájlok: *.cpp fájlok Fordítás: a folyamat, amikor a forrásfájlból futtatható állományt állítunk
Szövegek C++ -ban, a string osztály
Szövegek C++ -ban, a string osztály A string osztály a Szabványos C++ könyvtár (Standard Template Library) része és bár az objektum-orientált programozásról, az osztályokról, csak később esik szó, a string