Algoritmi un programmana Praktiskie darbi C un Python

Algoritmi un programmēšana Praktiskie darbi C++ un Python – pamati Doc. Dr. Sc. Comp. Edgars Rencis, Latvijas Universitāte, Datorikas fakultāte, 16. -18. septembris, 2020.

C++ programmas struktūra n Viena vairākas funkcijas q vienmēr tieši viena galvenā funkcija ar nosaukumu main n n q n n n ar šo funkciju tiek sākta izpilde (atbilst blokshēmas starta simbolam) šīs funkcijas beigās izpilde tiek pārtraukta (atbilst blokshēmas beigu simbolam) pēc dažām lekcijām veidosim arī citas funkcijas Komandas (instrukcijas, priekšraksti) q algoritma secīgie soļi q atrodas funkciju iekšienē q atbilst tādiem blokshēmu elementiem kā deklarācija, komanda, ievads, izvads, zarošanās Direktīvas q paziņojumi kompilatoriem, par tiem vēlāk. . . Komentāri q paskaidrojumi cilvēkam, atbilst blokshēmu komentāriem

Vienkārša programmiņa C++ #include <iostream> using namespace std; int main () { //Sākas programmas izpilde cout << "Hello, world!" << endl; return 0; }

Vienkārša programmiņa C++ #include <iostream> using namespace std; funkcijas n priekšrakst i n direktīvas n komentāri n int main () { //Sākas programmas izpilde cout << "Hello, world!" << endl; return 0; }

Python programmas struktūra n Programma ir atsevišķu instrukciju virkne q q n instrukcijas var izpildīt arī vienu pēc otras manuāli katra instrukcija tiek interpretēta Kods var tikt sadalīts funkcijās q bet atšķirībā no C++ – funkcijas nav obligātas

Vienkārša Python programmiņa name=input("Enter your name: ") print("Hello, "+name+"!")

Mainīgie C++ n n C++ ir stingri tipizēta valoda Mainīgais pirms lietošanas ir jādeklarē q jāpaziņo, kāda datu tipa vērtības mainīgais drīkstēs pieņemt n n q deklarācijā jānorāda datu tipa vārds un mainīgā vārds (drīkst arī uzreiz piešķirt mainīgajam sākuma vērtību) n n n int – veselo skaitļu datu tips (17, 3, -5, 0, . . . ) double – reālo skaitļu datu tips (17. 5, 3. 0, 0. 0, -5. 78, . . . ) char – simboliskais datu tips ('a', 'R', 'n', '\', '5', . . . ) bool – loģiskais datu tips (true, false) int x; double x, y; int x=0, y, z=17; char c, c 1='B'; bool b=false; Pirms mainīgā izmantošanas tam ir jābūt inicializētam

Mainīgie Python n Python ir vāji tipizēta valoda q q mainīgajiem nav datu tipi ir vērtībām n n int, float, bool, str Mainīgie nav jādeklarē, tie rodas automātiski, tos inicializējot q q q x=17 s="abc" y=None

Mainīgā inicializēšana – vērtības iegūšana n Mainīgā vērtību var likt ievadīt lietotājam q q C++ n cin >> x; n cin >> x >> y; Python n n val. Text = input() teksta ievade val. Num = int(input()) vesela skaitļa ievade q q q n x=int(s) s=str(x). . . Mainīgajam vērtību var piešķirt, izmantojot piešķiršanas operatoru = q q x y c b = = 17; 5. 78; 'A'; true;

Piešķiršanas operators = n Jāatšķir divas lietas q q n = piešķiršanas operators x = 17; piešķiršanas komanda Piešķiršanas operatora semantika q q kreisās puses mainīgajam tiek piešķirta labās puses vērtība piešķiršanas komandai tiek piešķirta labās puses vērtība n sekas – piešķiršanas komandu var lietot kā labās puses vērtību citās piešķiršanas komandās (un arī citur) q q n x=y=17; § vispirms mainīgajam y un komandai y=17 tiek piešķirta labās puses vērtība: 17 § pēc tam tiek izpildīta otra piešķiršana, līdz ar kuru mainīgajam x tiek piešķirta labās puses (y=17) vērtība: 17 int x=y=z=5; Lietojot piešķiršanas operatoru C++, jāievēro datu tipu saderība q q q int x=5. 5; kļūda – veselo skaitļu mainīgajam nedrīkst piešķirt daļskaitli double y=17; reālo skaitļu mainīgajam atļauts piešķirt veselu skaitli char c=true; kļūda – pilnīga tipu nesaderība

Datu ievade un izvade C++ n Ievade q n cin >> x >> y; Izvade q q q cout << x; cout << "Sveiki!"; cout <<x<<" kvadrātā ir " <<y<< endl; n q endl – pāreja uz jaunu rindu cout << "Hello, world!n"; n "n" – pāreja uz jaunu rindu

Datu ievade un izvade Python n Ievade q q n var val. Text = input() teksta ievade var val. Num = int(input()) vesela skaitļa ievade Izvade q print(value)

Saīsinātie piešķiršanas pieraksti C++ n Jebkuram aritmētiskajam operatoram – vērtības izmainīšana par jebkādu lielumu a q x=x<op>a; . . . jeb. . . x<op>=a; n n x=x+5; y=y-1; z=z*y; . . . jeb. . . x+=5; y-=1; z*=y; Aritmētiskajiem operatoriem "+" un "-" – vērtības izmanīšana par 1 q x=x<op>1; . . . jeb. . . x<op>; n n q x=x+1; y=y-1; x=x<op>1; n n x=x+1; y=y-1; . . . jeb. . . x++; y--; . . . jeb. . . <op>x; . . . jeb. . . ++x; --y;

"x++" un "++x" atšķirība n Atceroties 10. slaidu. . . q piešķiršanas operatora semantika n n n "x++" un "++x" atšķirība ir darbību secībā q x++ n n q n n piešķiršanas komandai tiek piešķirta x vērtība tiek palielināta par 1 ++x n n kreisās puses mainīgajam tiek piešķirta labās puses vērtība piešķiršanas komandai tiek piešķirta labās puses vērtība x vērtība tiek palielināta par 1 piešķiršanas komandai tiek piešķirta x vērtība Sekas q x vērtība abos gadījumos tiek palielināta par 1 q izteiksmes (piešķiršanas komandas) iegūst dažādas vērtības Tas pats attiecas uz saīsinātajiem pierakstiem "x--" un "--x"

"x++" un "++x" piemērs valodā C++ n n n y=x; int x=17, y; x++; y=x++; cout << x << " " << y; 18 17 int x=17, y; ++x; y=++x; cout << x << " " << y; 18 18 int x=5; ++x; cout << ++x; cout << x++; cout << x;

"x++" un "++x" piemērs valodā C++ n n n int x=17, y; y=x++; cout << x << int x=17, y; y=++x; cout << x << int x=5; cout << x; cout << ++x; cout << x++; cout << x; y=x; x++; " " << y; 18 17 ++x; y=x; " " << y; //5 //6 //7 18 18 ++x; cout << x; x++;

Vienkāršs pilnas programmas piemērs n n Uzdevums q Lietotājs ievada veselu skaitli. Izvadīt šī skaitļa kvadrātu. Risinājums valodā C++ q #include <iostream> using namespace std; int main() { int x; cout << "Ievadiet skaitli: "; cin >> x; int y = x*x; cout << "Šī skaitļa kvadrāts ir " << y <<endl; return 0; }

Vienkāršs pilnas programmas piemērs n n Uzdevums q Lietotājs ievada veselu skaitli. Izvadīt šī skaitļa kvadrātu. Risinājums valodā Python q x=int(input("Ievadiet skaitli: ")) y=x*x print("Šī skaitļa kvadrāts ir "+str(y))

Zarošanās komanda C++ n n n Jautājums, uz kuru var atbildēt ar "jā" vai "nē" if (<loģiska izteiksme>) {. . . Komandas, kas izpildāmas, ejot pa "+" zaru (ja atbilde uz jautājumu ir "jā") } else {. . . Komandas, kas izpildāmas, ejot pa "-" zaru (ja atbilde uz jautājumu ir "nē") } “else” zars ir neobligāts Figūriekavas blokam obligātas gadījumā, ja tas satur vairāk par vienu komandu

Zarošanās piemērs C++ n n if (a<b) { x=a; } else { Tā kā ir tikai pa vienai komandai katrā no x=b; abiem blokiem, tad figūriekavas drīkst nelietot } if (a<b) x=a; else x=b;

Zarošanās komanda Python n n if <loģiska izteiksme 1>: <bloks 1> elif <loģiska izteiksme 2>: <bloks 2> elif <loģiska izteiksme 3>: <bloks 3>. . . else: <bloks n> Ja bloks satur tikai vienu rindu, var rakstīt īsāk: q if <izt 1>: <komanda 1> elif <izt 2>: <komanda 2> else: <komanda 3>

Zarošanās piemērs Python n n if a>0: print("Positive") elif a==0: print("Zero") else: print("Negative")

Uzdevums 1 n Lietotājs ievada trīs veselus skaitļus. Noskaidrot, vai eksistē trijstūris ar šādiem malu garumiem. q uzrakstīt programmas C++ un Python

Uzdevums 1 – risinājums C++ #include <iostream> using namespace std; int main() { int a, b, c; cout << "Ievadiet skaitļus: "; cin >> a >> b >> c; if (a+b<=c) cout << "Trijstūris NEEKSISTĒ!n"; else if (a+c<=b) cout << "Trijstūris NEEKSISTĒ!n"; else if (b+c<=a) cout << "Trijstūris NEEKSISTĒ!n"; else cout << "Trijstūris EKSISTĒ!n"; return 0; }

Uzdevums 1 – risinājums Python a = int(input("Ievadi 1. skaitli: ")) b = int(input("Ievadi 2. skaitli: ")) c = int(input("Ievadi 3. skaitli: ")) if a+b<=c: print("Trijstūris NEEKSISTĒ!n") elif a+c<=b: print("Trijstūris NEEKSISTĒ!n") elif b+c<=a: print("Trijstūris NEEKSISTĒ!n") else: print("Trijstūris EKSISTĒ!n")

Uzdevums 2 n Lietotājs ievada 3 ciparus. Izdrukāt lielāko skaitli, kādu iespējams sastādīt no šiem cipariem, izmantojot katru ciparu tieši vienu reizi. q uzrakstīt programmu valodā C++

Uzdevums 2 – risinājums 1 n #include <iostream> using namespace std; int main() { int a, b, c; cout << "Ievadiet ciparus: "; cin >> a >> b >> c; if (a>b) if (b>c) cout << a << b << c; else if (a>c) cout << a else cout << c else if (a>c) cout << b << a << c; else if (b>c) cout << b else cout << c return 0; } << c << b; << a << b; << c << a; << b << a;

Uzdevums 2 – risinājums 2 n #include <iostream> using namespace std; int main() { int a, b, c, x; cout << "Ievadiet ciparus: "; cin >> a >> b >> c; if (a<b) { x=a; a=b; b=x; } if (a<c) { x=a; a=c; c=x; } if (b<c) { x=b; b=c; c=x; } cout << a << b << c; return 0; }
- Slides: 28