Bevezetés progrmozásb 3. Elődás Algortmusok, tételek
ISMÉTLÉS Specfkácó Előfeltétel: mlyen körülmények között követelünk helyes működést Utófeltétel: mt várunk kmenettől, m z összefüggés kmenet és bemenet között Ezek feltételek, tehát vgy teljesülnek, vgy nem. H teljesülnek, kkor progrm megoldj feldtot. A specfkácó feltételekből áll, nem utsításokból, mert feldtot írj le, és nem progrmot.
ISMÉTLÉS Elágzás PROGRAM elágzás : : EGÉSZ BE: HA HA > 0 AKKOR KI: "poztív" KÜLÖNBEN KI: "nem poztív"
ISMÉTLÉS Cklus PROGRAM soroztösszedó n, n,,, összeg, : : EGÉSZ BE: BE: n 0 összeg 0 CIKLUS AMÍG < n BE: BE: összeg összeg + + KI: KI: összeg
Progrmkonstrukcók összefogllás ISMÉTLÉS Elágzás kell, h más kódr szükség egyes esetekben Cklus kell, h smételn kell lépéseket Okos megbízhtó mtemtkusok eredménye: Mnden lgortmkusn megoldhtó problém megoldhtó szekvenc, elágzás és cklus segítségével. Tehát vége s féléves nygnk... Érdemes lesz zért bejárn..
Algortmus Sokféle defnícó, prktkusn elágzásból, cklusból, értékdásból és I/O-ból álló helyes progrm elve, m egy dott feldtot megold A foglom ennél bsztrktbb Néhány lgortmus áltlános skol nyg, mnt ppíron szorzás Néhány száz lgortmusnk neve s Mre jó smern lgortmusokt: h vlk már megoldott egy problémát, nekünk már ne kelljen
Progrm - lgortmus A progrm egy konkrét feldtot, konkrét formátumbn dott kmenettel és bemenettel old meg Az lgortmus megoldás elve, formátumtól, típusoktól mennyre lehet, függetlenül A továbbkbn progrmokt és z zokból bsztrkcóvl kpott lgortmusokt fogtok látn
Sorozt A m elődáson mnden sorozt formátum következő: Az első bemenet egy szám, m következő sorozt hosszát jelent Után jönnek soroztelemek
Sorozt PROGRAM elemenként A m elődáson PROGRAM mnden elemenként sorozt formátum következő: n, n, : : EGÉSZ, Az első bemenet egy : szám, m következő : VALÓS sorozt hosszát jelent Után jönnek soroztelemek BE: BE: n 0 CIKLUS AMÍG < n BE: BE: KI: KI:,, SV SV + A mnden elemet lemásoló progrm
Összegzés PROGRAM soroztösszedó n, n, : : EGÉSZ,,, összeg: VALÓS BE: BE: n 0 összeg 0 CIKLUS AMÍG < n BE: BE: összeg összeg + + KI: KI: összeg összeg: z eddg látott dtok összege Mnden soroztelem pontosn egy lklomml szerepel -bn
Összegzés tétele Változók: összeg, : T összeg 0 CIKLUS AMÍG nncs vége soroztnk következő elem összeg összeg + f() f()
Összegzés tétele Mre jó Kumultív (hlmozó) feldtok soroztokon M cserélhető Kezdőérték Művelet, függvény Példák Átlg Fktoráls Négyzetösszeg
PROGRAM PROGRAM számlálás,, n, n, sz, sz, : : EGÉSZ EGÉSZ Számlálás BE: BE: n sz sz 0 0 CIKLUS CIKLUS AMÍG AMÍG < n BE: BE: HA HA MOD MOD 2 = 0 AKKOR AKKOR sz sz sz sz + + KI: KI: sz sz sz: számláló, z eddg látott megfelelőek szám
Számlálás tétele sz: EGÉSZ, :T sz sz 0 CIKLUS AMÍG nncs vége soroztnk következő elem HA HA feltétel() AKKOR sz sz sz sz +
Számlálás tétele Mre jó menny? hány? feldtok soroztokon M cserélhető Feltétel Növelő függvény Példák Osztók szám Szvk szám egy szövegben
Lneárs keresés PROGRAM PROGRAM lneárs_keresés lneárs_keresés,, n, n,,, hol: hol: EGÉSZ, EGÉSZ, : : LOGIKAI LOGIKAI BE: BE: n n HAMIS HAMIS hol hol 0 0 0 0 CIKLUS CIKLUS AMÍG AMÍG < < n n ÉS ÉS NEM NEM BE: BE: + + HA HA MOD MOD 2 2 = = 0 0 AKKOR AKKOR IGAZ IGAZ hol hol KI: KI: HA HA AKKOR AKKOR KI: KI: hol hol Két eredmény : -e megfelelő, és (h gen) hol : -e z eddg látott elemek között megfelelő? hol: megfelelő elem ndexe (h nncs megfelelő, nem érdekes, m z értéke)
Lneárs keresés tétele hol,: EGÉSZ, : : LOGIKAI, : : T HAMIS HAMIS hol hol 0 0 CIKLUS AMÍG AMÍG nncs nncs vége vége soroztnk ÉS ÉS NEM NEM következő elem elem + HA HA feltétel() AKKOR AKKOR IGAZ IGAZ hol hol
Lneárs keresés tétele Mre jó -e?, hánydk? feldtok soroztokon M cserélhető Feltétel Példák Prím-e egy szám (-e osztój?) Szerepel-e egy bzonyos érték egy soroztbn
Mxmum keresés PROGRAM PROGRAM mxmumkeresés mxmumkeresés,, n, n, hol: hol: EGÉSZ, EGÉSZ,,, mx: mx: VALÓS VALÓS BE: BE: n n BE: BE: mx mx hol hol CIKLUS CIKLUS AMÍG AMÍG < < n n BE: BE: + + HA HA mx mx < < AKKOR AKKOR mx mx hol hol KI: KI: mx, mx, SV, SV, hol hol Két eredmény: menny mxmum, és melyk elem volt z. Mndg létezk, h leglább egy elemű sorozt A mx és hol z eddg látott mxmáls elemre vontkoznk, ez z elején z első elem H tlálunk z eddg mxmumnál ngyobbt kkor lecseréljük
Mxmum keresés tétele,, hol: hol: EGÉSZ, EGÉSZ,,, mx: mx: T első első elem elem mx mx f() f() hol hol CIKLUS CIKLUS AMÍG AMÍG nncs nncs vége vége soroztnk soroztnk következő következő elem elem + HA HA mx mx < f() f() AKKOR AKKOR mx mx f() f() hol hol
Mxmum keresés tétele Mre jó M / Menny leg..? feldtok soroztokon M cserélhető Feltétel, relácó Függvény (másk változó kár, mnek z értéke bemenettől függ) Példák Mnmumkeresés Zárójelek mélysége szövegben
Elemenként feldolgozás Sok dt, kevés változó Egy feldt elemenként feldolgozhtó, h meg lehet úgy oldn, hogy hosszú dtsorból egyszerre csk kevésre szükség csk egyszer kell véggnézn mndegyket Sok hsznos lgortmus trtozk de Az előbb látottk Válogtás (pl. soroztból pároskt írjuk k) Összefésülés
Elemenként feldolgozás Péld egyéb elemenként feldolgozhtó feldtr: Sorozt értékkészletét befoglló ntervllum Sorozt másodk legngyobb értéke Vn-e még egy olyn m megegyezk z első elemmel Péld feldtr, m nem elemenként feldolgozhtó: Sorozt növekvő/csökkenő sorrendbe rendezése Sorozt medánj Vn-e két egyform
Tételek kombnácó Feldt: egy ntervllumbn számoljuk meg prímszámokt Számlálás tétel kell hozzá, de még nem elég: nncs prím-e műveletünk Ezért prímdöntést lneárs kereséssel (-e vlód osztój?) dönthetjük el számlálás belsejében állpottér trnszformácó, úgy teszünk számlálásbn, mnth logk értékeket olvsnánk, mket egy másk tétellel állítunk elő
prímek szám ntervllumon,sz,eleje, vége: EGÉSZ BE: BE: eleje, vége eleje sz sz 0 CIKLUS AMÍG <=vége HA HA prím() AKKOR sz sz sz sz + + KI:sz
prímek szám ntervllumon PROGRAM PROGRAM _e_vlód_osztó,sz,eleje, vége: EGÉSZ BE: BE: eleje, BE: vége n eleje sz sz 0 2 CIKLUS AMÍG <=vége HA HA prím() AKKOR sz sz sz sz + + KI: KI: KI:sz,, n: n: EGÉSZ, EGÉSZ, : : LOGIKAI LOGIKAI BE: n HAMIS HAMIS CIKLUS CIKLUS AMÍG AMÍG < n ÉS ÉS NEM NEM HA HA n MOD MOD = 0 AKKOR AKKOR IGAZ IGAZ +
PROGRAM PROGRAM tétel_kombnácó tétel_kombnácó,, sz, sz, eleje, eleje, vége, vége, : : EGÉSZ, EGÉSZ, : : LOGIKAI LOGIKAI BE: BE: eleje, eleje, vége vége eleje eleje sz sz 0 0 CIKLUS CIKLUS AMÍG AMÍG <= <= vége vége HAMIS HAMIS 2 2 CIKLUS CIKLUS AMÍG AMÍG < < ÉS ÉS NEM NEM HA HA MOD MOD = = 0 0 AKKOR AKKOR IGAZ IGAZ + + HA HA NEM NEM AKKOR AKKOR sz sz sz sz + + + + KI: KI: sz sz,sz,eleje, vége: EGÉSZ,sz,eleje, vége: EGÉSZ BE: eleje, vége BE: eleje, vége eleje eleje sz 0 sz 0 CIKLUS AMÍG <=vége CIKLUS AMÍG <=vége HA prím() AKKOR HA prím() AKKOR sz sz + sz sz + + + KI:sz KI:sz PROGRAM _e_vlód_osztó PROGRAM _e_vlód_osztó, n: EGÉSZ, : LOGIKAI, n: EGÉSZ, : LOGIKAI BE: n BE: n HAMIS HAMIS 2 2 CIKLUS AMÍG < n ÉS NEM CIKLUS AMÍG < n ÉS NEM HA n MOD = 0 AKKOR HA n MOD = 0 AKKOR IGAZ IGAZ + + KI: KI: