Algoritmi un programmēšana Praktiskie darbi

Slides:



Advertisements
Līdzīgas prezentācijas
      Sensoro spēju attīstīšana matemātisko pamatpriekšstatu veidošana, matemātika - integrētā pieeja  Konsultācija  Rīgas pirmsskolas izglītības.
Advertisements

Skolas simbolika 10.a klases projekts 2011./2012. m.g.
Lasīšanas prasmju pilnveide
“Rītausmas reidi”.
Eiropas Sociālā fonda projekts „Inovatīva un praksē balstīta pedagogu izglītības ieguve un mentoru profesionālā pilnveide” Vienošanās Nr.2010/0096/1DP/ /09/IPIA/VIAA/001.
Aktualitātes bērnu tiesību aizsardzības jautājumos
Demonstrējumi dārzkopībā g.
Prezentācijas transkripts:

Algoritmi un programmēšana Praktiskie darbi C++ un Javascript – pamati Doc. Dr. Sc. Comp. Edgars Rencis, Latvijas Universitāte, Datorikas fakultāte, 12. septembris, 2019.

19. septembrī praktisko darbu lekcija nenotiek!!

C++ programmas struktūra Viena vai vairākas funkcijas vienmēr tieši viena galvenā funkcija ar nosaukumu main 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) algoritma secīgie soļi atrodas funkciju iekšienē atbilst tādiem blokshēmu elementiem kā deklarācija, komanda, ievads, izvads, zarošanās Direktīvas paziņojumi kompilatoriem, par tiem vēlāk... Komentāri 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; int main () { //Sākas programmas izpilde cout << "Hello, world!" << endl; return 0; } funkcijas priekšraksti direktīvas komentāri

Javascript programmas struktūra Pamatā ir HTML dokuments, kura dažādās vietās var parādīties Javascript kods saglabāts kā datne ar paplašinājumu ".html" Javascript vieta HTML dokumentā vienkārša reakcija uz notikumiem <button onclick='document.write("Hello JavaScript!");'>Click Me!</button> lielāki koda gabali <script> birkās <script> document.write("My First JavaScript"); </script> Kods var tikt sadalīts funkcijās bet atšķirībā no C++ funkcijas nav obligātas

Vienkārša programmiņa Javascript <html> <body> <button onclick = 'document.write ("Hello JavaScript!")'>Click Me!</button> <script> document.write("My First JavaScript"); </script> </body> </html>

Mainīgie C++ C++ ir stingri tipizēta valoda Mainīgais pirms lietošanas ir jādeklarē jāpaziņo, kāda datu tipa vērtības mainīgais drīkstēs pieņemt 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) 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) int x; double x,y; int x=0,y,z=17; char c,c1='B'; bool b=false; Pirms mainīgā izmantošanas tam ir jābūt inicializētam

Mainīgie Javascript Javascript ir vāji tipizēta valoda mainīgo tipi netiek atklāti norādīti Mainīgā deklarācija var x; var x=0;

Mainīgā inicializēšana – vērtības iegūšana Mainīgā vērtību var likt ievadīt lietotājam C++ cin >> x; cin >> x >> y; Javascript var valText = prompt();  teksta ievade var valNum = Number(prompt());  skaitļa ievade Mainīgajam vērtību var piešķirt, izmantojot piešķiršanas operatoru = x = 17; y = 5.78; c = 'A'; b = true;

Piešķiršanas operators = Jāatšķir divas lietas =  piešķiršanas operators x = 17;  piešķiršanas komanda Piešķiršanas operatora semantika 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 sekas – piešķiršanas komandu var lietot kā labās puses vērtību citās piešķiršanas komandās (un arī citur) 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 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++ cin >> x >> y; Izvade cout << x; cout << "Sveiki!"; cout <<x<<" kvadrātā ir " <<y<< endl; endl – pāreja uz jaunu rindu cout << "Hello, world!\n"; "\n" – pāreja uz jaunu rindu

Datu ievade un izvade Javascript var valText = prompt();  teksta ievade var valNum = Number(prompt());  skaitļa ievade Izvade alert(value);  izvade izlecošā logā console.log(value);  izvade konsolē document.write("Value: "+value);  izvade HTML dokumentā document.getElementById("demo").innerHTML = value1+"<br/>"+value2;  izvade HTML dokumenta konkrētā elementā ...

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

"x++" un "++x" atšķirība Atceroties 11. slaidu... piešķiršanas operatora semantika 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++" un "++x" atšķirība ir darbību secībā x++ piešķiršanas komandai tiek piešķirta x vērtība x vērtība tiek palielināta par 1 ++x Sekas x vērtība abos gadījumos tiek palielināta par 1 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++ y=x; x++; int x=17,y; y=x++; cout << x << " " << y; int x=17,y; y=++x; cout << x << " " << y; int x=5; cout << x; cout << ++x; cout << x++; cout << x;  18 17 ++x; y=x;  18 18 ++x; cout << x; cout << x; x++;

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

Vienkāršs pilnas programmas piemērs Uzdevums Lietotājs ievada veselu skaitli. Izvadīt šī skaitļa kvadrātu. Risinājums valodā C++ #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 Uzdevums Lietotājs ievada veselu skaitli. Izvadīt šī skaitļa kvadrātu. Risinājums valodā Javascript <html> <body> <script> var x = Number(prompt("Ievadiet skaitli!")); var y = x*x; alert("Šī skaitļa kvadrāts ir "+y); </script> </body> </html>

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

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

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

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) if (b+c<=a) cout << "Trijstūris EKSISTĒ!\n"; return 0; }

Uzdevums 1 – risinājums Javascript <html> <body> <script> var a,b,c; a = Number(prompt("Ievadi 1. skaitli!")); b = Number(prompt("Ievadi 2. skaitli!")); c = Number(prompt("Ievadi 3. skaitli!")); if (a+b<=c) alert("Trijstūris NEEKSISTĒ!\n"); else if (a+c<=b) if (b+c<=a) alert("Trijstūris EKSISTĒ!\n"); </script> </body> </html>

Uzdevums 2 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. uzrakstīt programmu valodā C++

Uzdevums 2 – risinājums 1 #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 << c << b; cout << c << a << b; cout << b << a << c; cout << b << c << a; cout << c << b << a; return 0; }

Uzdevums 2 – risinājums 2 #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) { a=c; c=x; if (b<c) { x=b; b=c; cout << a << b << c; return 0;

Uzdevums 3 Uzrakstīt Javascript kodu, kas ļauj lietotājam ievadīt veselu pozitīvu skaitli un izdrukā tā pirmspēdējo ciparu x%y – atlikums, dalot x ar y Math.floor(x/y) – veselā daļa no dalījuma x/y Algoritms – kā tikt pie skaitļa pirmspēdējā cipara? dots skaitlis x > 9 (ja x<=9, tad pirmspēdējais cipars neeksistē) y = Math.floor(x/10) šādi no x atšķeļam tā pēdējo ciparu (kurš mums neinteresē) tagad mums interesē skaitļa y pēdējais cipars z = y%10 y pēdējais cipars tiek iegūts kā atlikums, dalot y ar 10

Uzdevums 3 – risinājums <html> <body> <script> var x,y,z; x = Number(prompt("Ievadi skaitli!")); if (x>9) { y=Math.floor(x/10); z=y%10; alert("Skaiļa "+x+" pirmspēdējais cipars ir "+z); } else alert("Skaitlis ir par mazu!"); </script> </body> </html>

Uzdevums 3 – īsāks risinājums <html> <body> <script> var x; x = Number(prompt("Ievadi skaitli!")); if (x>9) alert("Skaiļa "+x+" pirmspēdējais cipars ir "+Math.floor(x/10)%10); else alert("Skaitlis ir par mazu!"); </script> </body> </html>