Feladatok (értékadás) Írassuk ki 3 beolvasott szám számtani közepét! Hogyan lehet tetszőleges számot kerekíteni? (egészrész(x)) Adott kettes számrendszerben egy négyjegyű szám. Alakítsuk decimálissá! Számítsuk ki egy legfeljebb négyjegyű decimális szám jegyeinek összegét! (div, mod)
Feladatok(elágazások) Írjuk ki 2 szám hányadosát! (0) Döntsük el egy számról, hogy egész-e! Írjuk ki, hogy 2 egész szám közül egyik osztója-e a másiknak! Írjunk ki 2 számot növekvő sorrendben! Írjunk ki 3 számot növekvő sorrendben! Adott egy évszám. Döntsük el ,hogy szökőév-e!
Feladatok(elágazások) Döntsük el 3 számról, hogy lehetnek-e egy háromszög oldalai! Írjunk algoritmust, amely megold egy másodfokú egyenletet!
Ciklus i:= 1-től 10-ig Ki:2*i,” ”, (2*i)*(2*i), sorvége Ciklus vége Be: a Ciklus amíg (a<>0) Ciklus Be: h Ciklus amíg (h<1) vagy (h>12)
Feladatok(ciklus) Írassuk ki 1-től 20-ig a számokat és a négyzetüket! Kérjünk be egész számokat 0 végjelig! Kérjük be egy hónap sorszámát!
Tömb Azonos típusú elemek sorozata Létrehozása: név: tömb [indextartomány] elemtípus pl. a: tömb[1..5] Z helyfoglalás? értékadás: a[3]:=3345 túlindexelés? egydimenziós (vektor), kétdimenziós (mátrix)
Szöveg (string) Karakterekből álló vektor a:=”11.c ” a[3]:=’.’
További adatszerkezetek rekord verem sor lista adatállomány (file) halmaz fa gráf
Programozási tételek Gyakori programozási alapfeladatok Fajtái: egy sorozathoz egy értéket rendel egy sorozathoz egy sorozatot rendel sorozathoz sorozatot rendel
Sorozathoz értéket Az összegzés tétele: Feladat: Adott egy n elemű számsorozat. (vektor) Számoljuk ki az elemek összegét! Megoldás: Program Be: a //az egész vektor s:=0 // ebben gyűjtöm az összeget Ciklus i:=1-től n-ig s:=s+a[i] Ciklus vége Ki: s // a teljes összeg Program vége faktoriális is legyen
Be: n f:=1 Ciklus i:=2-től n-ig f:=f*i Ciklus vége Ki: f
Sorozathoz értéket Az eldöntés tétele: Feladat: Adott egy n elemű sorozat. Döntsük el van-e a sorozatban T tulajdonságú elem! Megoldás: Be: a i:=1 Ciklus amíg (i<=n) és (a[i] nem T tulajdonságú) i:=i+1 Ciklus vége Ha i<=n akkor Ki: ” van ilyen tulajdonságú elem” különben Ki: ”nincs.....”
Sorozathoz értéket A kiválasztás tétele: Feladat: Adott egy n elemű számsorozat. Tudjuk, hogy van a sorozatban T tulajdonságú elem! Mi a sorszáma? Megoldás: Be: a i:=1 Ciklus amíg (a[i] nem T tulajdonságú) i:=i+1 Ciklus vége Ki: ”Az ilyen tulajdonságú elem az”, i,”.”
Sorozathoz értéket A lineáris keresés tétele: Feladat: Adott egy n elemű számsorozat. Van-e a sorozatban T tulajdonságú elem, és ha igen, akkor mi a sorszáma? Megoldás: Be: a i:=1 Ciklus amíg (i<=n) és (a[i] nem T tulajdonságú) i:=i+1 Ciklus vége Ha i<=n akkor Ki: ” Van ilyen tulajdonságú elem az”, i,”.” különben Ki: ”nincs.....”
Sorozathoz értéket A megszámlálás tétele: Feladat: Adott egy n elemű számsorozat. Hány darab T tulajdonságú elem van a sorozatban? Megoldás: Be: a s:=0 Ciklus i:=1-től n-ig Ha a[i] T tulajdonságú akkor s:=s+1 Ciklus vége Ki: s
Sorozathoz értéket A maximumkiválasztás tétele: Feladat: Adott egy n elemű számsorozat. Keressük meg a sorozat legnagyobb elemét! Megoldás: Be: a maxhely:=1 Ciklus i:=2-től n-ig Ha a[maxhely] < a[i] akkor maxhely:=i Ciklus vége Ki: maxhely, a[maxhely]
Sorozathoz sorozatot A kiválogatás tétele: Feladat: Adott egy n elemű számsorozat. Gyüjtsük ki a sorozat T tulajdonságú elemének sorszámát egy másik vektorba! Megoldás: Be: a j:=0 Ciklus i:=1-től n-ig Ha a[i] T tulajdonságú akkor j:=j+1 b[j]:=i Elágazás vége Ciklus vége Ki: b kezdőindex 0 (Cpp-ben)
Sorozathoz sorozatot A buborékrendezés tétele: Feladat: Adott egy n elemű számsorozat. Rendezzük az elemeit nagyság szerint növekvő sorrendbe! Megoldás: Be: a Ciklus i:=1-től (n-1)-ig Ciklus j:=1-től (n-i)-ig Ha a[j]>a[j+1] akkor csere(a[j], a[j+1]) C.v. C.v Ki: a
Rendezés1 Adott a 3,4,2,5,1 sorozat. Rendezd buborékrendezéssel! Írj új sort, ha csere történt!
Rendezés1 megoldás 3,2,4,5,1 3,2,4,1,5 5 a helyén 2,3,4,1 1,2 mind a helyén Hány csere kell maximum? (hatékonyság) Mikor következik ez be? Az hány értékadás?
Sorozathoz sorozatot A közvetlen kiválasztás tétele: Feladat: Adott egy n elemű számsorozat. Rendezzük az elemeit nagyság szerint növekvő sorrendbe! Megoldás: Be: a Ciklus i:=1-től (n-1)-ig Ciklus j:=i+1-től n-ig Ha a[j]>a[i] akkor csere(a[j], a[i]) C.v. C.v Ki: a
Rendezés2 Adott a 3,4,2,5,1 sorozat. Rendezd közvetlen kiválasztással! Írj új sort, ha csere történt!
Rendezés2 megoldás 2,4,3,5,1 1,4,3,5,2 1 a helyén ,3,4,5,2 , , ,4,5 mind Hány csere kell maximum? Mikor következik ez be? Az hány értékadás?
Mit csinál a következő algoritmus? cn:=0 Ciklus i:=1-től 7-ig j:=1 Adott: a: tömb[1..n] Z = {2,3,4,5,10,12,15} b: tömb[1..m] Z = {4,7,10,12,21,23} Mit csinál a következő algoritmus? cn:=0 Ciklus i:=1-től 7-ig j:=1 Ciklus amíg (j<=6) és a([i]<>b[j]) j:=j+1 C.v. Ha j<=6 akkor cn:=cn+1;c[cn]:=a[i] elágazás vége C. v.
Unióképzés tétele Adott: a[1..n], b[1..m] Ciklus i=1-től n-ig c[i]:=a[i] C.v. cn:=n Ciklus j:=1-től m-ig i:=1 Ciklus amíg i<=n és a[i]<>b[j] i:=i+1 C.v Ha i>n akkor cn:=cn+1 c[cn]:=b[j] El. v.
Bináris keresés tétele Adott egy n elemű rendezett vektor és egy keresett elem: x. Írjunk algoritmust, amely megadja, hogy x benne van-e a vektorban, és ha igen, akkor mi a sorszáma?
e:=1 u:=n //e: az első lehetséges index u: az utolsó Ciklus k:=int(e+u)/2 // a közepe Ha a[k]<x akkor e:=k+1 Ha a[k]>x akkor u:=k-1 Ciklus amíg e<=u és a[k] <>x Ha e<=u akkor Ki: k különben Ki: „nincs ilyen benne”
Mit csinál? Be: n Ciklus i:= 2-től n-ig Ciklus amíg n mod i = 0 ki: i n:=n div i C. v.
Mit csinál? Be: a,b Ciklus m:= a mod b a:=b b:=m Ciklus amig m<>0 Ki: a
A prog. tételek alkalmazása Adjunk össze n db szomszédos egész számot a-tól kezdődően! Ismert n db autó 100 km-re számított fogyasztása. Döntsük el, hogy minden autó 10 liter alatt fogyasztott-e? Határozzuk meg az n szám legkisebb 1-nél nagyobb pozitív osztóját! Egyenlő-e egy szám a nála kisebb pozitív osztóinak összegével?
A prog. tételek alkalmazása Írjuk ki a Fibonacci sorozat első 15 elemét! (a1=1, a2=1, an=an-1+an-2) Mennyi 1-től n-ig a számok átlaga? Döntsük el egy számról, hogy prím-e? Végezzünk szorzást ismételt összeadásokkal! Végezzünk osztást ismételt kivonásokkal! Egy könyvespolcon 8 sor van. Minden sorban 22 könyv. Megadott 2 sort cseréljünk meg!
Be: a s:=0 i:=1 Ciklus amíg i<=(a/2) Ha a mod i=0 akkor s:=s+i El. v. i:=i+1 C. v. Ha a=s akkor ki: ”” különben…