1 / 72

Nosacījums

tameka
Download Presentation

Nosacījums

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Delphi valodas vadošās struktūrasPraksē reti sastopami uzdevumi, kur lēmuma algoritms ir lineārs. Bieži izrādās, ka elementāra uzdevuma lēmuma algoritms nav lineārs. Piemēram, jāaprēķina ar formulas palīdzību strāvu elektriskajā ķēdē. Ja paredzēt, ka lietotājs vienmēr ievadīs pareizus datus, tad šā uzdevuma atrisinājuma algoritms patiešām ir lineārs.

  2. Tomēr paļauties uz to, ka lietotājs uzvedīsies tā, kā vajag programmai, nepārlicina. Aprēķina formula paredz, ka pretestības lielums nav vienāds nullei. Bet kas būs, ja lietotājs ievedīs 0? Atbilde ir dīkstāve: radīsies kļūda "Dalīšana uz nulli", un programma parādīs kļūdu un pabeigs darbu.

  3. Var, protams, likt atbildību par to lietotājam, bet ir labāks variants ieviest izmaiņu risinājuma algoritmā, lai aprēķins tiktu izpildīts tikai tajā gadījumā, ja ir ievadīti pareizi dati. Algoritma punkti, kuros tiek izpildīta tālākā programmas gaitas izvēle, dēvējas par izvēles punktiem. Uzdevuma atrisinājuma kārtējā soļa izvēle notiek atkarībā no dažādiem nosacījumu izpildes.

  4. Nosacījums Ikdienišķā dzīvē nosacījums parasti ir noformulējams jautājumā, uz kuru var atbildēt jā vai nē veidā. Piemēram: • Pretestības lielums ir vienāds nullei? • Atbilde ir pareiza?

  5. 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).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).

  6. Algoritma blok-shēma (1. variants)

  7. Algoritma blok-shēma (2. variants)

  8. Vienkāršs nosacījums sastāv no divu operandu un salīdzinājuma operatora. Kopskatā nosacījums rakstās sekojoši: Оp1 Operators Op2 kur: Op1 un Оp2 — ir nosacījuma operandi, par kuru var tik uzskatīts mainīgais, konstante, funkcija vai izteiksme; Operators — salīdzinājuma operators.

  9. Salīdzinājumu operatori Operators apraksts Salīdzinājuma rezultāts > Lielāks True, ja pirmais operands lielāk par otru, citādi False< MazāksTrue, ja pirmais operands mazāk par otru, citādi False= Vienāds True, ja pirmais operands ir vienāds ar otraju, citādi False<> NevienādsTrue, ja pirmais operands nav vienāds ar otru, citādi False>= Lielāks vai vienāds True, ja pirmais operands lielāks vai vienāds ar otru, citādi False<= Mazāks vai vienāds True, ja pirmais operands mazāks vai vienāds ar otru, citādi False

  10. No vienkāršiem nosacījumiem ar loģisku operatoru palīdzību (and - "loģiskais Un", or -- "loģiskais Vai" un not - "noliegumu") var būvēt sarežģītus nosacījumus. Kopskatā sarežģītais nosacījums pierakstās sekojoši: nosacījums 1 operators nosacījums 2 kur: • nosacījums1 un nosacījums 2 - vienkārši nosacījumi (loģiska tipa izteiksmes); • operators — operators and vai or.

  11. Piemēram: (ch >= '0') and (ch <= '9') (day = 7) or (day = 6) (Form1.Edit1.Text <> ' ' ) or (Forml.Edit2.Text <> ‘ ' ) (Form1.CheckBox1.Checked) and (Forml.Edit1.Text <> ‘ ' )

  12. Loģisku operatoru izpilde Op1 Op2 Op1 and Op2 Op1 or Op2 not Op1False False False False TrueFalse True False True True True False False True False True True True True False

  13. Izvēle Izvēle - kārtējā programmas soļa algoritma sazarojuma punktā var būt realizēts ar if un case instrukciju palīdzību. If instrukcija ļauj izvēlēties vienu no diviem iespējamiem variantiem, case instrukcija - viens no dažiem.

  14. Instrukcija if If instrukcija ļauj izvēlēties vienu no programmas attīstības diviem iespējamiem variantiem. Izvēle notiek atkarībā no nosacījuma izpildes. Kopskatā if instrukcija pierakstās tā: if nosacījums (i) thenbegin šeit instrukcijas, kuras ir jāizpilda, ja nosacījums ir patiess. end else begin šeit instrukcijas, kuras ir jāizpilda, ja nosacījums maldi. end;

  15. Algoritms, kas atbilst if-tnen-else instrukcijai.

  16. Algoritms, ko realizē if-then instrukcija

  17. Programmas "Svara kontrole" algoritms

  18. Instrukcija Case Delphi valodā ir case instrukcija, kura ļauj efektīvi realizēt daudzveidīgu izvēli. Kopskatā viņa rakstās sekojoši: case selektors of saraksts1: begin { instrukcija 1 } end; Saraksts2: begin { instrukcija 2 } end; : sarakstsN: begin { instrukcija N } end; else begin { instrukcija ) end; end;

  19. kur: Selektors ir izteiksme, kuras vērtība nosaka programmas izpildes tālāko gaitu (t.i. instrukciju secību, kura tiks izpildīta); N saraksts ir konstanšu saraksts. Ja konstantes pārstāv skaitļu diapazonu, tad saraksta vietā var norādīt pirmo un pēdējo diapazona konstanti, sadalot tos ar diviem punktiem. Piemēram, saraksts 1, 2, 3, 4, 5, 6 var būt aizstāts ar diapazonu 1..6.

  20. case instrukcija tiek izpildīta sekojoši: 1. Sākumā aprēķina izteiksmes-selektora vērtība. 2. Izteiksmes-selektora vērtība konsekventi ir salīdzināma ar konstantēm no konstanšu sarakstiem. 3. Ja izteiksmes vērtība sakrīt ar konstanti no saraksta, tad tiek izpildīta attiecīgā šim sarakstam instrukciju grupa. Tā instrukcijas case izpilde ir pabeigta. 4. Ja izteiksmes-selektora vērtība nesakrīt ne ar vienu no konstantēm no visiem sarakstiem, tad tiek izpildīts instrukciju secīgums, kas ir nākamais aiz else. Case instrukcijas sintakse ļauj nerakstīt else un atbilstošo instrukciju secīgumu. Šajā gadījumā, ja izteiksmes nozīme nesakrīt ne ar vienu no konstantēm no visiem sarakstiem, tad tiek izpildīta nākamā aiz case programmas instrukcija.

  21. Algoritms, ko realizē case instrukcija

  22. Kā piemēru case instrukcijas izmantošanai aplūkosim programmu, kura pārrēķina svaru no mārciņām kilogramos. Programma ņem vērā, ka dažādās valstīs mārciņa "sver" dažādi. Piemēram, Latvijā mārciņa ir vienāda 409,5 grami, Anglijā - 453,592 grami, bet Vācijā, Dānijā un Islandē mārciņa sver 500 grami.

  23. Programmas dialoģisks logs. Case izmantošanas piemērs.

  24. Valsts nosaukuma izvēlei tiek izmantots saraksts - Listbox komponents. Listbox komponenta nozīmīte atrodas uz Standard lapas . Pieliekts saraksts pie pielikuma formas precīzi tāpat, kā un citi komponenti, piemēram, komandu poga vai redakcijas lauks.

  25. Komponents ListBox

  26. Komponenta ListBox īpašības Īpašība NosakaName Komponenta vārds. Programmā tiek izmantots piekļūšanai pie komponenta īpašībāmItems Saraksta elementiItemindex Izvēlas saraksta elementa numurs. Saraksta pirmais elementa numurs ir vienāds nullei.Left Saraksta attālums no kreisās robežas līdz kreisajai formas robežaiTop Saraksta attālums no augšējas robežas līdz augšējai formas robežaiHeight Saraksta lauka augstumsWidth Saraksta lauka platumsFont Šrifts, kas ir izmantojams saraksta elementu attēlojumam

  27. Lielāko interesi iztēlojas Items un Itemindex īpašības. Items īpašība satur saraksta elementus. Itemindex īpašību uzdod izvēlas saraksta elementa numuru. Ja nevienu no elementiem neizvēlas, tad īpašības nozīme ir vienāda ar -1. Saraksts var būt noformēts formas radīšanas laikā vai programmas darba laikā. Saraksta noformēšanai formas radīšanas laikā jāizvēlas Object Inspector logā Items īpašību un klikšķ uz palaišanas pogas rindu saraksta redaktoru.

  28. Saraksta redaktora palaišanas poga

  29. Saraksta redaktors

  30. Formas komponenti Komponents IecelšanaListBox1 Valsts izvēlei, kurai ir jāizpilda aprēķināšanuEdit1 Svara ievade mārciņāsLabel1, Label2, Label3 Paskaidrojošo teksta izvadei par ievades lauku iecelšanuLabel4 Aprēķinātā rezultāta izvade Button1 Svara aprēķināšanas no mārciņām kilogramos procedūras aktivizācijai.

  31. Komponentu īpašību vērtības Īpašība Vērtība Form1 .Caption case izmantošanas piemērs Editl. TextLabel1 . Caption Izvēlaties valsti, ievadiet mārciņu daudzumu un klikšķiet uz pogas AprēķinātLabel2 .Caption ValstisLabel3 . Caption MārciņuButton1 . Caption Aprēķināt

  32. Listings . Svara pārrēķināšana no mārciņām kilogramos unit Unit1;interfaceusesWindows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; typeTForm1 = class(TForm)Label2: TLabel;Editl: TEdit; // svara ievades lauks mārciņās Button1: TButton; // poga Aprēķināt Label1: TLabel;LabelS: TLabel;ListBox1: TListBox; // valstu saraksts Label4: TLabel; // rezultāta izvades lauks - svara kilogramos procedure FormCreate(Sender: TObject);procedure ButtonlClick(Sender: TObject); private{ Private declarations } public{ Public declarations } end;

  33. varForm1: TForml;implementation{$R *.DFM}procedure TForml.FormCreate(Sender: TObject); begin{ ListBox1.items.add('Latvija'); ListBox1.items.add('Anglija'); ListBox1.iterns.add('Austrālija'); ListBox1.items.add('Vacija'); ListBox1.items.add ('Dānija'); ListBoxl.items.add('Islande'); ListBox1.items.add ('Itālija'); ListBox1.items.add ('Nīderlandes'); } ListBox1.itemindex:=0; end;

  34. procedure TForm1.ButtonlClick(Sender: TObject); var funt:real; // svars mārciņās kg:real; // svars kilogramos k:real; //pārrēķināšanas koeficents begin case ListBoxl.Itemindex of 0: k:=0.4095; // Krievija, Latvija 1: k:=0.453592; // Anglija 2:k:=0.56001; // Austrija 3..5,7:k:=0.5; // Vācija, Dānija, Islande, Nīderlandes 6: k:=0.31762; // Itālija end;funt:=StrToFloat(Editl.Text); kg:=k*funt; label4.caption:=Edit1.Text + 'm. — tas ' + FloatToStrF(kg,ffFixed, 6,3) + 'kg.'; end; end.

  35. Vajag pievērst uzmanību Formcreate notikuma apstrādāšanas procedūru, kur notiek formas radīšanas momentā (forma top automātiski palaižot programmu). Šo procedūru var izmantot mainīgo inicializācijai programmā, to skaitā arī elementu pielikumam sarakstā. Saraksta radīšanas instrukcijas programmas attēlotajā tekstā komentēts, saraksts, kas tika radīts ar rindu redaktora palīdzību formas radīšanas laikā.

  36. Cikli Uzdevumu daudzu risinājuma algoritmi ir cikliski, t.i. rezultāta sasniegšanai noteikts darbību secīgumu ir jāizpilda vairākas reizes. Algoritms, kurā ir operāciju (instrukciju grupa) secīgums, kurš ir jāizpilda vairākas reizes, dēvējas par ciklu, bet pats operāciju secīgums saucas par ciklu. Programmā cikls var būt realizēts ar for, while un repeat instrukciju palīdzību.

  37. Instrukcija For For instrukcija tiek izmantota tajā gadījumā, ja dažu darbību (programmas instrukciju) secīgumu ir jāizpilda vairākas reizes, turklāt atkārtošanu skaitlis iepriekš ir zināms. Kopskatā for instrukcija rakstās sekojoši: for skaitītājs := sāk_noz to beig_noz do begin// šeit instrukcijas, kuras ir jāizpilda vairākas reizes end;

  38. kur: skaitītājs ir mainīgais-skaitītājs cikla instrukciju atkārtošanai; sāk_noz - izteiksme, kas nosaka cikla skaitītāja sākumu vērtību; beig_noz — izteiksme, kas nosaka cikla skaitītāja galīgu vērtību. Mainīgais-skaitītājam, sāk_noz un beig_noz izteiksmēm jābūt vesela tipa.

  39. For instrukcijas algoritms

  40. Ja for instrukcijā to vārda vietā ierakstīt downto, tad pēc cikla ķermeņa instrukciju kārtējās izpildes skaitītāja vērtība nevis palielināsies, bet gan samazināsies.

  41. Instrukcija while While instrukcija (cikls) tiek izmantots tajā gadījumā, ja dažu darbību (programmas instrukciju) secīgumu ir jāizpilda vairākas reizes, turklāt nepieciešams atkārtošanas skaitli programmas izstrādāšanas laikā ir nezināms un var būt noteikts programmas darba laikā.

  42. Kopskatā while instrukcija rakstās sekojoši: while nosacījums do begin // šeit instrukcijas, kuras ir jāizpilda vairākas reizes End; kur nosacījums ir loģiska tipa izteiksme, kas nosaka cikla instrukciju izpildes nosacījumu.

  43. While instrukcija tiek izpildīta sekojoši: 1. Sākumā ir aprēķināma nosacījuma izteiksmes vērtība . 2. Ja nosacījuma izteiksmes vērtība ir vienāda False (nosacījums netiek izpildīts), tad while instrukcijas izpilde ir pabeigta. 3. Ja nosacījuma izteiksmes vērtība ir vienāda True (nosacījums tiek izpildīts), tad tiek aizpildīti starp begin un end cikla ķermeņa instrukcijas. Pēc tā no jauna ir pārbaudāma nosacījuma izpilde. Ja nosacījums tiek izpildīts, tad cikla instrukcijas tiek izpildītas vēlreiz. Jau tā līdz tam laikam, kamēr nosacījums nebūs maldi (False).

  44. While instrukcijas algoritms

  45. Instrukcija repeat Repeat instrukcija, tāpat kā while instrukcija, tiek izmantota programmā tajā gadījumā, ja nepieciešams izpildīt atkārtoto aprēķināšanu (organizēt ciklu), bet atkārtošanas skaitlis programmas izstrādāšanas laikā ir nezināms un var būt noteikts programmas darba laikā, t.i. tiek noteikts ar aprēķināšanas gaitu.

  46. Kopskatā repeat instrukcija pierakstās sekojoši: repeat // instrukcijas until nosacījums; kur nosacījums ir loģiska tipa izteiksme, kas nosaka cikla pabeigšanas nosacījumu.

  47. Repeat instrukcija tiek izpildīta sekojoši: 1. Sākumā tiek izpildīti starp repeat un cikla ķermeņa until instrukcijas. 2. Pēc tam ir aprēķināma nosacījuma izteiksmes vērtība. Ja nosacījums maldi (nosacījuma izteiksmes vērtība ir vienāda ar False), tad cikla ķermeņa instrukcija tiek izpildīta vēlreiz. 3. Ja nosacījums ir patiess (nosacījuma izteiksmes vērtība ir vienāda ar True), tad cikla izpilde beidzas.

  48. Algoritms, kas attiecīgs repeat instrukcijai

  49. Cikla instrukcijas, kas atrodas starp repeat un until, tiek izpildītas kā minimums vienu reizi. Tādēļ, lai cikls būtu pabeigts, nepieciešams, lai cikla instrukcijas, kas atrodas starp repeat un until, izmainītu mainīgie, kas ienāk izteiksmē.

  50. Instrukcija goto If un case instrukcijas tiek izmantotas pārejai pie programmas instrukcijas secīguma atkarībā no dažādiem nosacījuma. Tādēļ tos dažreiz sauc par nosacītās pārejas instrukcijām. Blakus pārvaldes ar programmas izpildes gaitai šīm instrukcijām eksistē vēl viena — beznosacījuma goto pārejas instrukcija.

More Related