Datormcba pamatkurss DIP 101 3 kp Doc Jurijs
Datormācība (pamatkurss) DIP 101, 3 kp Doc. Jurijs Ivanovs E-Mail Jurijs. Ivanovs@df. rtu. lv www. df. rtu. lv/usr/ijm/ 1
Programma Mācību priekšmeta apjoms: lekcijas - 16 st. , prakt. – 32 st. Kontrole – eksāmens 2
Mācību priekšmeta mērķis un uzdevumi. Skaitļošanas tehnikas vēsture. Datoru klasifikācija. Lazarus vide. 3
Programmēšanas valoda OBJECT PASCAL. Valodas alfabēts. Datu tipi. Datu tipu klasifikācija. Vienkāršie datu tipi. Veselie datu tipi. Loģiskais tips. Simboliskais tips. Pārskaitāmais tips. Diapazona tips. Reālie tipi. 4
Izteiksmes. Mainīgie. Konstantes. konstantes. Reālās konstantes. Veselās Rindu un simboliskās konstantes. Konstanšu izteiksmes. Tipizētās konstantes. Aritmētiskās funkcijas. Standartā funkcijas. Tipa pārveidošanas funkcijas. 5
Sakārtojuma tipa lielumu funkcijas. Operāciju zīmes. Aritmētiskās operācijas. Loģiskās operācijas. Operācijas ar informācijas bitiem. Attiecības operācijas. Apaļās iekavas. Izteiksmju skaitļošanas kārtība. Valodas operatori. Vienkāršie operatori: piešķiršanas operators, beznosacījuma pārgājiena operators GOTO, tukšais operators. 6
Strukturētie operatori: saliktais operators, nosacījuma operators IF, nosacījuma operators CASE, cikla operators REPEAT, cikla operators WHILE, cikla operators FOR. 7
Procedūras un funkcijas. Procedūra. Funkcija. Formālie un faktiskie parametri. Parametrinozīmes. Parametri-mainīgie. Parametrikonstantes. Parametri bez tipa. 8
Faili. Faila izsludināšana. Faila iecelšana. Izvade failā. Ievade no faila. Ievada-izvada organizēšana. Standarta procedūras un funkcijas priekš visiem failiem. 9
Laboratorijas darbi. • Sazaroto procesu programmēšana Lazarus, Matlab, Mathcad un EXCEL vidē. • Darbs ar masīviem. • Atrisināt nelineāro vienādojumu dotajā skaitļu asa nogrieznī ar doto precizitātes pakāpi. 10
Sazaroto procesu programmēšana Lazarus, Matlab , Mathcad un EXCEL vidē. • Uzdota funkcija F(x). • Izrēķināt F (x) vērtības , ja x 1 = -4. 0; x 2 = 0. 85; x 3 = 2. 6. • Izveidot funkcijas F(x) vērtību tabulu, ja arguments mainās no -5. 0 līdz 5. 0 ar soli 0. 1. • Konstruēt funkcijas F(x) grafiku, ja arguments mainās no -5. 0 līdz 5. 0 ar soli 0. 1. 11
Paraugs 1. 12
Paraugs 2. Ir veselu skaitļu divizmēru masīvs. Masīva dimensija ir 5 x 5. Atrast rindas numurus, kuriem visi elementi dalās ar 4 bez atlikuma. Masīva elementu vērtības ievadīt no tastatūras. 13
Paraugs 3. Atrisināt nelineāro vienādojumu dotajā skaitļu asa nogrieznī ar doto precizitātes pakāpi. x * lg(x) - 1. 2 = 0 14
Lazarus — kas tas ir? Lazarus - tā ir ātras izstrādāšanas vide, kurā par programmēšanas valodu tiek izmantota Free Pascal valoda. Lazarus valoda - stingri tipizētā objekt-orientētā valoda, kura pamatā Object Pascal valoda. 15
Lazarus programmēšanas valoda Lazarus programmēšanas vidē programmas ierakstam tiek izmantota Free Pascal programmēšanas valoda. Programma Lazarus vidē pārstāv instrukciju secīgumu, kuras diezgan bieži sauc par operatoriem. Viena instrukcija no citas nošķiras ar semikolu. 16
Datu tipi Programma var operēt ar atšķirīgiem datu tipiem: ar veseliem un reāliem skaitļiem, simboliem, simbolu rindām, loģiskiem lielumiem. 17
Vesels tips Lazarus vide atbalsta septiņus veselus datu tipus: Shortint, Smailint, Longint, Int 64, Byte, Word un Longword 18
Tips Diapazons Shortint -128 … 127 Smallint -32 768 … 32 767 Formāts(baitos) 1 2 Longint -2 147 483 648 … 2 147 483 647 4 Int 64 -263 … 263 – 1 8 Byte 0 … 255 1 (bez zīmes) Word 0 … 65 535 2 (bez zīmes) Longword 0 … 4 294 967 295 4 (bez zīmes) Object Pascal atbalsta arī īpašu universālu veselu tipu - Integer, kurš ir ekvivalents Longint. 19
Reāls tips Lazarus vide atbalsta sešus reālus tipus: Real 48, Single, Double, Extended, Comp, Currency. Tipi atšķiras savā starpā ar diapazona pieļaujamo vērtību, ar nozīmējošo ciparu daudzumu un baitu daudzumu, kas ir nepieciešami datu glabāšanai datora atmiņā. 20
Tips Diapazons Nozīmējošo ciparu skaits Real 48 2. 9* 10 -39 … 1. 7*1038 11 -12 Single 7 - 8 Double 1. 5 * 10 -45 … 3. 4* 1038 Baitu skaits 6 4 5. 0*10 -324 … 1. 7*10308 15 -16 8 Extended 3. 6*10 -4951 … 1. 1 *104932 19 -20 10 Comp -263+1 - 263 -1 19 -20 8 Currency -922 337 203 685 477. 5808 … 922 337 203 685 477. 5807 19 -20 8 21
Lazarus vide atbalsta arī īpašu universālu reāls datu tips - Real, kurš ir ekvivalents Double. 22
Simbolu tips Lazarus vide atbalsta divus simbolu tipus: Ansichar un Widechar: Ansichar tips — tie ir simboli ANSI kodēšanā, kurš atbilsta skaitļus diapazonā no 0 līdz 255; Widechar tips — tie ir simboli Unicode kodēšanā, tam atbilst skaitļi no 0 līdz 65 535. Object Pascal atbalsta arī īpašu universālu simbolu tipu - Char, kurš ir ekvivalents Ansichar. 23
Rindu tips Lazarus vide atbalsta trīs rindu tipus: Shortstring, Longstring, Wide. String: Shortstring tips pārstāv rindas, kuras ir statiski izvietotas datora atmiņā, garumā no 0 līdz 255 simboliem; Longstring tips pārstāv rindas, kuru garumu ierobežo tikai brīvās atmiņas apjoms, kuras ir dinamiski izvietotas atmiņā; 24
Wide. String tips pārstāv rindas, kuru garumu ierobežo tikai brīvas atmiņas apjoms, kuras ir dinamiski izvietojamas atmiņā. Wide. String tipa rindas katrs simbols ir Unicode-simbols. Lazarus valodā rindu tipa apzīmējumam atļauts string identifikatora izmantošana. String tips ir ekvivalents shortstring tipam. 25
Loģisks tips Loģisks lielums var būt pieņemts vienu no divām vērtībām: True (patiesība) vai False (meli). Lazarus valodā loģiskus lielumus ierindo pie Boolean tipa. 26
Mainīgais — tas ir atmiņas apgabals, kurā atrodas dati, ar kuriem operē programma. Kad programma manipulē ar datiem, viņa faktiski, operē ar atmiņas šūnu saturu, t. i. ar mainīgiem. Lai programma varētu vērsties pie mainīgam (atmiņas apgabalam), mainīgam jābūt vārdam. Mainīgā vārdu ievieš programmētājs. 27
Par mainīga vārdu var izmantot secību no latīņu alfabēta burtiem, ciparu un dažādiem speciāliem simboliem. Mainīgā pirmajam simbolam vārdā jābūt burtam. Atstarpe mainīgā vārdā izmantot nedrīkst. 28
Vajag pievērst uzmanību uz to, ka Lazarus valodas kompilators neizšķir lielos un rindas burtus maiņu vārdos, tādēļ vārdi SUMMA, Summa un summa apzīmē vienu un to pašu mainīgo. 29
Ieteicams, lai mainīgā vārds būtu loģiski saistīts ar tās iecelšanu. Piemēram, mainīgiem, kas ir paredzēti koeficentu un kvadrātvienādojuma sakņojumu glabāšanai, kuru kopskatā tradicionāli ieraksta ах2 + bх + с = 0 pilnīgi loģiski piesavināt vārdus a, b, c, x. 30
Lazarus valodā katrs mainīgais pirms izmantošanas ir jāizsludina. Ar izsludināšanas palīdzību ir uzstādāms ne tikai mainīgā eksistences fakts, bet arī ir uzdodams tās tips, ar ko ir norādīts pieļaujamo nozīmju diapazons. 31
Kopskatā mainīgā izsludināšanas instrukcija izskatās tā: Vārds : tips; kur: Vārds — mainīgā vārds; tips — datu tips, kuru glabāšanai ir paredzēts mainīgais 32
Piemērs: а : real; b : Real; i : Integer; Minētajos piemēros izsludināti divi mainīgie real tipa un viens mainīgais integer tipa. Programmas tekstā izsludināšanu katram mainīgam, kā likums, novieto atsevišķā rindā. 33
Ja programmā ir daži mainīgie, kas attiecas uz vienu tipu, tad šo mainīgo vārdus var pārskaitīt vienā rindā caur komatu, bet mainīgo tipu norādīt pēc pēdējās mainīgā vārda caur kolu, piemēram: var а, b, с : Real; x 1, x 2 : Real; 34
Konstantes Lazarus valodā eksistē divi konstanšu veidi: parasti un saukti konstantes. Parasta konstante — tas ir vesels vai daļveida skaitlis, simbolu rinda vai atsevišķs simbols, loģiska vērtība. 35
Skaitliskas konstantes Programmas tekstā skaitliskas konstantes rakstās ar parastu tēlu, t. i. tāpat kā skaitļi, piemēram, risinot matemātiskus uzdevumus. Pie daļveida skaitļu pieraksta veselo sadalīšanai un daļveida daļām tiek izmantots punkts. Ja konstante noliedz, tad tieši pirms cipara rakstās zīme "mīnuss". 36
Skaitlisku konstanšu piemēri: 123 0. 0 -524. 03 0 37
Daļveida konstantes var attēlotas skaitļa veidā ar peldošo punktu. Priekšstats skaitļa veidā ar peldošo punktu ir izveidots tā, ka jebkurš skaitlis var būt ierakstīts algebriskā formā kā skaitļa reizinājums, kas ir mazāks 10, kurš dēvējas par mantisu, un desmitnieka pakāpe, ko sauc par kārtu. 38
Daļveida skaitļu ieraksta piemēri Skaitlis 1 000 -123. 452 Agebriskā forma 1*106 -1. 23452*102 0. 0056712 5. 6712*10 -3 Forma ar peldošo punktu 1. 00000 Е+06 -1. 2345200000 Е+02 5. 6712000000 Е-03 39
Rindu un simbolu konstantes noslēdzas apostrofos. Rindu konstanšu piemēri: ' Lazarus programmēšanas valoda' '2. 4' 'D' Šeit vajag pievērst uzmanību uz konstanti ' 2. 4'. Tā ir tieša simbolu konstante, t. i. simbolu rinda, bet ne skaitli 2. 4. 40
Loģiskas konstantes Loģiska izteiksme (izteiksme) var būt patiess, vai meli. Patiesībai atbilst True konstante, vērtībai "meli" - False konstante. 41
Vārdā saukta konstante — tas ir vārds (identifikators), kurš programmā tiek izmantots pašas konstantes vietā. Vārdā saukta konstante, tāpat kā mainīgais, pirms izmantošanas ir jāizsludina. Kopskatā vārdā sauktas konstantes izsludināšanas instrukcija izskatās sekojoši: konstante = vērtība; kur: konstante — konstantes vārds; vērtība — konstantes vērtība. 42
Vārdā sauktas konstantes ir izsludināmas programmā konstanšu izsludināšanas nodalījumā, kurš sākas ar vārdu const. Zemāk ir minēts vārdā sauktu konstanšu izsludināšanas piemērs (vesela, rinda un daļveida). const Bound = 10; Title = 'Ideāls svars'; pi = 3. 1415926; 43
Atšķirībā no mainīga, izsludinot konstanti tipu skaidri nenorāda. Konstantes tips tiek noteikts ar tās veidu, piemēram: 125 — vesela tipa konstante; 0. 0 — reāla tipa konstante; ' izpildīt ' — rindu konstante; ' ' — simbolu konstante. 44
Piešķiršanas instrukcija ir galvenā aprēķināšanas instrukcija. Ja programmā ir jāizpilda aprēķināšanu, tad vajag izmantot piešķiršanas instrukciju. Piešķiršanas instrukcijas izpildes rezultātā mainīga nozīme mainās, viņai piešķirtā vērtība. 45
Kopskatā piešķiršanas instrukcija izskatās tā: vārds : = izteiksme; kur: Vārds ir mainīgais, kura vērtība izmainās piešķiršanas instrukcijas izpildes rezultātā; : = — piešķiršanas instrukcijas simbols. Izteiksme — izteiksme, kuras nozīme piešķir mainīgam, kura vārds ir norādīts pa kreisi no piešķiršanas instrukcijas simbola. 46
Piemēri: Summa : = Сеnа * Kol; Atlaide : = 10; Found : = False; 47
Izteiksme sastāv no operandiem un operatoriem. Operatori atrodas starp operandu un apzīmē darbības, kuras tiek izpildītas ar operandu. Par izteiksmju operandiem var izmantot: mainīgos, konstantes, funkcijas vai citas izteiksmes. 48
Algebriskie operatori Operators Darbība + Saskaitīšana - Atņemšana * Reizināšana / Dalīšana DIV Dalīšana ar veselu atbildi MOD Atlikuma aprēķināšana no dalīšanas 49
Pie izteiksmju ieraksta starp operandu un operatoru, izņemot DIV un MOD operatorus, atstarpi var nelikt. Operatoru +, -, * un / pielietojuma rezultāts acīmredzams. DIV operators ļauj saņemt veselu viena skaitļa dalīšanas rezultāta daļa uz citu. Piemēram, izteiksmes nozīme 5 DIV 2 ir vienāds ar 2. MOD operators, dalīšana, ar moduli ļauj saņemt atlikumu no viena skaitļa dalīšanas uz citu. Piemēram, izteiksmes nozīme 15 MOD 7 ir vienāds ar 1. 50
Aprēķinot izteiksmju nozīmes vajag ņemt vērā, ka operatoriem ir dažāda prioritāte. Tā pie operatoriem *, /, DIV, MOD augstāka prioritāte, nekā pie operatoriem + un -. Operatoru prioritāte iespaido to izpildes kārtību. Aprēķinot izteiksmes nozīmi pirmkārt tiek izpildīti operatori ar augstāku prioritāti. Ja operatoru prioritāte izteiksmē ir vienāda, tad sākumā tiek izpildīts tas operators, kurš atrodas vairāk uz kreiso pusi. 51
Operāciju izpildes vajadzības kārtībai uzdevumam izteiksmē var izmantot iekavas, piemēram: (r 1+r 2+r 3)/(r 1*r 2*r 3) Izteiksme, kas ir noslēgta iekavas, ir traktējams kā viens operands. 52
Izteiksmes tips tiek noteikts ar operandu tipu, kas ienāk izteiksmes tipā, un atkarīgs no operācijām, kas ir izpildāmas ar tiem. Piemēram, ja divi operandi, ar kuriem tiek izpildīta operācija - saskaitīšana, kas ir vesels, tad acīmredzami, ka rezultāts arī ir vesels. Bet ja kaut viens no operandiem ir daļveida, tad rezultāta tips ir daļveida, pat tajā gadījumā, ja izteiksmes vērtības daļveida daļā ir vienāda nullei. 53
Izteiksmes tipa definēšanas noteikumi Operators Operandu tips Izteiksmes tips *, +, - Kaut viens no operandu real *, +, - Abi operandi integer / real vai integer DIV, MOD Vienmēr integer real integer Vienmēr real Vienmēr integer 54
Standarta funkcijas Matemātiskas funkcijas Funkcija Аbs (n) Vērtība n absolūta vērtība Sqrt (n) Kvadrātsakne no n Sqr (n) n kvadrāts Sin (n) sinuss (n) Cos (n) kosinuss (n) Arctan (n) Arktangens (n) Ехр(n) Eksponenta n Ln(n) Dabisks logaritms n Random(n) Nejaušs vesels skaitlis no 0 līdz n - 1 diapazonā Trigonometrisku funkciju leņķa lielums ir jāieraksta radiānos. 55
Pārveides funkcijas visbiežāk tiek izmantotas instrukcijās, nodrošinot ievadi un informācijas izvadi. Piemēram, tādēļ, lai attēlotu dialoģisko logu secinājumu (Label komponents) laukā mainīga real tipa nozīmi, nepieciešams pārveidot skaitli par simbolu rindu, kas attēlo doto skaitli. To var izdarīt ar Float. To. Str funkcijas palīdzību, kura dod izteiksmes nozīmes rindu priekšstatu, kas ir norādīta par funkcijas parametru. 56
Pārveides funkcijas Funkcijas vērtība Chr(n) Simbols, kura kods ir vienāds n Int. To. Str (k) Float. To. Str (n) Rinda, kas ir vesela k attēlošana Rinda, kas ir reāla skaitļa n attēlošana Float. To. Str. F(n, f , k, m) Rinda, kas ir reāla n attēlošana. Pie izsaukuma funkcijas norāda: f — formāts (attēlošanas veids); k — precizitāte (vajadzīgs kopīgs ciparu daudzums); m — ciparu daudzums pēc punkta Str. To. Int (s) Vesels, kura attēlošana ir s rinda Str. To. Float (s) Reāls, kura attēlošana ir s rinda Round (n) Vesels, saņemts n apaļošanas ceļā pa zināmajiem likumiem Frac(n) Daļveida, pārstāvošs reāla n daļveida daļu Int (n) Daļveida, pārstāvošs lietiska n veselu daļu 57
Funkciju izmantošanas piemēri n : = Round((x 2 -x 1)/dx); x 1: = (-b + Sqrt(d)) / (2*а); m : = Random(10); cena : = Str. To. Int(Edit 1. Text); Edit 2. Text : = Int. To. Str(100); mes : = 'x 1=' + Float. To. Str(xl); 58
Nosacījums Ikdienišķā dzīvē nosacījums parasti ir noformulējams jautājumā, uz kuru var atbildēt jā vai nē veidā. Piemēram: 1. Pretestības lielums ir vienāds nullei? 2. Atbilde ir pareiza? 59
Programmā nosacījums - tas ir loģiska tipa (Boolean) izteiksme, kura var pieņemt vienu no divām nozīmēm: True (patiesība) vai False (maldi). 60
Algoritma blok-shēma (1. variants) 61
Algoritma blok-shēma (2. variants) 62
- Slides: 62