Informatika Saulius Ragaiis VU MIF saulius ragaisismif vu

  • Slides: 16
Download presentation
Informatika Saulius Ragaišis, VU MIF saulius. ragaisis@mif. vu. lt 2008 -09 -09

Informatika Saulius Ragaišis, VU MIF saulius. ragaisis@mif. vu. lt 2008 -09 -09

Paprastesnė užduotėlė: Parašyti programą, kuri įveda 3 sveikus skaičius ir išveda didžiausią reikšmę. program

Paprastesnė užduotėlė: Parašyti programą, kuri įveda 3 sveikus skaičius ir išveda didžiausią reikšmę. program Paprasta; var a, b, c : integer; begin writeln('Iveskite 3 sveikus skaicius: '); readln(a, b, c); write('Didziausia reiksme: '); if (a > b) and (a > c) then writeln(a) else if (b > a) and (b > c) then writeln(b) else writeln(c); readln; end. Programoje yra klaidų. . .

Paprastesnė užduotėlė: korektiška program Paprasta; var a, b, c : integer; begin writeln('Iveskite 3

Paprastesnė užduotėlė: korektiška program Paprasta; var a, b, c : integer; begin writeln('Iveskite 3 sveikus skaicius: '); readln(a, b, c); write('Didziausia reiksme: '); if (a >= b) and (a >= c) then writeln(a) else if (b >= a) and (b >= c) then writeln(b) else writeln(c); end.

Paprastesnė užduotėlė: plečiama program Paprasta 2; var a, b, c, max : integer; begin

Paprastesnė užduotėlė: plečiama program Paprasta 2; var a, b, c, max : integer; begin writeln('Iveskite 3 sveikus skaicius: '); readln(a, b, c); max : = a; if (b > max) then max : = b; if (c > max) then max : = c; writeln('Didziausia reiksme: ', max); end.

Užduotėlė: Parašyti programą, kuri įveda sveiką skaičių, paskirsto jį 12 mėnesiui (kiek įmanoma, lygiomis

Užduotėlė: Parašyti programą, kuri įveda sveiką skaičių, paskirsto jį 12 mėnesiui (kiek įmanoma, lygiomis dalimis) ir išveda gautas reikšmes. program Minimali; var sk, po, lieka : integer; begin write('Iveskite paskirstoma skaiciu: '); readln(sk); if (sk < 0) then writeln('Neigiamo skaiciaus paskirstyti negalima') else if (sk mod 12 = 0) then writeln('Visiems menesiams tenka po ', sk div 12) else begin lieka : = sk mod 12; po : = sk div 12; writeln(lieka, ' men. po ', po+1, ', ', 12 -lieka, ' men. po ', po); end.

Algoritmai Algoritmas - tai baigtinė seka pažingsninių tikslių instrukcijų, skirtų atlikti tam tikrą darbą.

Algoritmai Algoritmas - tai baigtinė seka pažingsninių tikslių instrukcijų, skirtų atlikti tam tikrą darbą. Formaliai algoritmas turi patenkinti 3 sąlygas: 1) jis turi atlikti darbą; 2) jis turi būti aiškus ir nedviprasmiškas; 3) jis turi apibrėžti žingsnių seką, reikalingą darbui atlikti, t. y. jis turi nurodyti žingsnių atlikimo tvarką. Informatikoje dažnai dar reikalaujama, kad algoritmas būtų baigtinis dviem prasmėm: 4) atliekamų žingsnių skaičius turi būti baigtinis, t. y. algoritmas turi tikrai baigti darbą; 5) kiekvienam žingsniui atlikti turi pakakti baigtinio laiko ir baigtinių resursų, t. y. kiekvienas žingsnis turi būti toks, kad jį būtų galima atlikti. Nuo algoritmo yra neatsiejama jo vykdytojo sąvoka.

Algoritmų pavyzdžiai Euklido algoritmas sveikų teigiamų skaičių A ir B bendram didžiausiam dalikliui (BDD)

Algoritmų pavyzdžiai Euklido algoritmas sveikų teigiamų skaičių A ir B bendram didžiausiam dalikliui (BDD) rasti: 1. Rasti A dalybos iš B liekaną. 2. Pakeisti A - B. 3. Pakeisti B liekana, rasta 1 žingsnyje. 4. Kartoti žingsnius 1 -3, kol B bus 0. 5. BDD bus A reikšmė.

Įrodymas, kad pagal Euklido algoritmą randamas BDD Jei A dalijasi iš L, tai galima

Įrodymas, kad pagal Euklido algoritmą randamas BDD Jei A dalijasi iš L, tai galima užrašyti A=n. L, kur n - kažkoks sveikas skaičius. Analogiškai jei B dalijasi iš L, tai B=m. L, kur m - kažkoks sveikas skaičius. Taigi jei A ir B dalijasi iš L, tai A dalybos iš B liekana irgi dalijasi iš L: A mod B = A - k. B = n. L - km. L = (n - km)L Tai reiškia Euklido algoritmo 1 -ame žingsnyje atliekamas veiksmas nekeičia BDD reikšmės: BDD(A, B) = BDD(A', B') =. . . = BDD(L, 0) = L

Algoritmų užrašymo būdai Jei vykdytojas žmogus, algoritmą galima pateikti labai įvairiai: - natūralia kalba

Algoritmų užrašymo būdai Jei vykdytojas žmogus, algoritmą galima pateikti labai įvairiai: - natūralia kalba - diagrama - bet kokia kita žmogui priimtina forma.

Algoritmų užrašymo būdai (2) Informatikoje kaip vykdytojas dažniausiai suprantamas kompiuteris. Pagrindinės idėjos: • kompiuteriai

Algoritmų užrašymo būdai (2) Informatikoje kaip vykdytojas dažniausiai suprantamas kompiuteris. Pagrindinės idėjos: • kompiuteriai apdoroja duomenis, išreikštus simboliais; • jie kontroliuojami instrukcijomis, kurios ir sudaro algoritmą; • instrukcijos irgi pateikiamos mašinai kaip simbolių seka. Taigi viskas, ko reikia algoritmų pateikimui kompiuteriui, tai kalba patogiam instrukcijų užrašymui. Programa - tai algoritmo išraiška tikslia kalba, suprantama kompiuteriui, t. y. programavimo kalba.

Euklido algoritmas (Pascal) repeat liekana : = A mod B; { 1. } A

Euklido algoritmas (Pascal) repeat liekana : = A mod B; { 1. } A : = B; { 2. } B : = liekana; { 3. } until B = 0; { 4. } writeln(A) { 5. }

Euklido algoritmas (C) do { liekana = A % B; A = B; B

Euklido algoritmas (C) do { liekana = A % B; A = B; B = liekana; } while (B != 0); printf("%d n", A); /* /* /* 1. 2. 3. 4. 5. */ */ */

Programa realizuojanti Euklido algoritmą (Pascal) program Euklido; var A, B, liekana : integer; begin

Programa realizuojanti Euklido algoritmą (Pascal) program Euklido; var A, B, liekana : integer; begin writeln('Iveskite 2 sveikus readln(A, B); if (A <= 0) or (B <= 0) then writeln(‘Bent vienas else begin write('BDD(', A, ', ', repeat liekana : = A mod B; A : = B; B : = liekana; until B = 0; writeln(A) end. teigiamus skaicius: '); skaicius nera teigiamas!') B, ')='); { { { 1. 2. 3. 4. 5. } } }

Programa realizuojanti Euklido algoritmą (C) #include <stdio. h> int main() { int A, B,

Programa realizuojanti Euklido algoritmą (C) #include <stdio. h> int main() { int A, B, liekana; printf("Iveskite 2 sveikus teigiamus skaicius: n" ); scanf("%d %d", &A, &B); if ((A <= 0) || (B <= 0)) printf("Bent vienas skaicius nera teigiamas! n" ); else { printf("BDD(%d, %d)=", A, B ); do { liekana = A % B; // 1. A = B; // 2. B = liekana; // 3. } while (B != 0); // 4. printf("%d n", A); } }

Programa realizuojanti Euklido algoritmą (C++) #include <Iostream. h> int main() { int A, B,

Programa realizuojanti Euklido algoritmą (C++) #include <Iostream. h> int main() { int A, B, liekana; cout << "Iveskite 2 sveikus teigiamus skaicius: " << endl; cin >> A >> B; if ((A <= 0) || (B <= 0)) cout << "Bent vienas skaicius nera teigiamas!" << endl; else { cout << "BDD(" << A << ", " << B << ")="; do { liekana = A % B; // 1. A = B; // 2. B = liekana; // 3. } while (B != 0); // 4. cout << A << endl; } }

Klausimai ?

Klausimai ?