Operator condiționat? Scrierea codului programului folosind proceduri Este rezultatul executării unei instrucțiuni.

Acasă / Nu se aprinde

Operator este un element al limbajului care specifică descriere completă acţiunea de efectuat. Fiecare operator este o frază completă a unui limbaj de programare și definește o etapă complet finalizată a procesării datelor. Operatorii pot include cuvinte funcționale, date, expresii și alți operatori. ÎN engleză Acest concept este desemnat de cuvântul „declarație”, care înseamnă și „propunere”.

Fiecare operator în orice limbaj de programare are un specific sintaxăŞi semantică. Sub sintaxă operator este înțeles ca un sistem de reguli (gramatică) care determină înregistrarea acestuia folosind elementele alfabetului a acestei limbi, care, împreună cu diferite simboluri, include, de exemplu, cuvinte funcționale. Sub semantică operatorul să-i înțeleagă semnificația, adică acele acțiuni care corespund evidenței unui anumit operator. De exemplu, înregistrați i:= i + 1 este un exemplu de notație corectă din punct de vedere sintactic operator de atribuire V limbajul Pascal, a cărui semantică este în acest caz, este după cum urmează: extrageți valoarea celulei de memorie corespunzătoare variabilei i, adăugați-o cu una, scrieți rezultatul în aceeași celulă de memorie.

În majoritatea limbajelor de programare procedurală, setul de operatori este aproape același și constă dintr-un operator de atribuire, operatori de selecție, operatori de buclă, un operator de apel de procedură și operatori de salt. Uneori se disting și operatorii goli (fără acțiune) și cei compuși. Mulți operatori sunt o modalitate de a reprezenta anumite constructe algoritmice (vezi „ Proiecte algoritmice” ) într-un limbaj de programare. Să ne uităm la grupurile de operatori mai detaliat folosind sintaxa limbajului Pascal.

Operator de atribuire

Atribuirea este o acțiune computerizată în urma căreia o variabilă primește valoarea unei expresii calculate (este plasată în celula de memorie corespunzătoare variabilei). Pentru a descrie o astfel de acțiune în limbaje de programare, există operator de atribuire.

În general, operatorul de atribuire este scris astfel:

<переменная> <знак присваивания> <выражение>

De exemplu, în Pascal combinația de simboluri este folosită ca semn de atribuire: =. În multe alte limbi, este un semn de egalitate.

Rezultatul executării operatorului de atribuire este o modificare a stării datelor: toate variabilele, altele decât variabilă, situat în partea stângă a operatorului de atribuire, nu le schimbă semnificația, ci cea specificată variabilă primește valoarea expresii, care apare în partea dreaptă a operatorului de atribuire. În cele mai multe cazuri este necesar ca tipul expresii potrivit tipului variabilă. Dacă nu este cazul, atunci operatorul fie este considerat incorect din punct de vedere sintactic, fie tipul expresiei este convertit în tipul variabilei (vezi „ Tipuri de date” ).

Operatori de selecție

Acești operatori sunt numiți diferit declarații condiționale. Instrucțiunile condiționate sunt folosite pentru a programa algoritmi care conțin constructul algoritmic de ramificare.

Există mai multe tipuri de limbaje de programare declarații condiționale. Declarația condițională completă corespunde structurii algoritmice a ramificării complete:

Într-un limbaj de programare, operatorul condițional corespunzător are forma:

daca B apoi S1 altfel S2

Dacă expresia B, care se calculează la începutul execuției instrucțiunii condiționate, are valoarea „adevărat”, apoi instrucțiunea va fi executată S1, V altfel- operator S2. Operatori S1Şi S2 poate fi compus.

Structura algoritmică a ramificării incomplete este implementată folosind un operator condiționat incomplet, care are forma:

daca B apoi S

Aici B este o expresie logică și S- operator arbitrar. Operator S va fi executat dacă expresia B este adevărată.

Dacă un operator condiționat implementează doar două ramuri de alegere („da” și „nu”), atunci folosind operator varianta (caz-operator) puteți programa o structură cu mai multe ramuri. Operatorul variantă arată astfel:

cazul E de

Acest operator se execută astfel: valoarea expresiei E căutat printre valorile enumerate în fișa operatorului V1, V2, …, Vn, iar dacă se găsește o astfel de valoare, atunci se execută operatorul corespunzător S1, S2, …, Sn.

ÎN limbi diferite programarea, sintaxa și chiar semantica operatorilor enumerați pot diferi, dar capacitățile oferite programatorului de astfel de construcții sunt aproximativ aceleași.

Exemplul 1.În articolul „ Proiecte algoritmice”2 a fost dat un exemplu de scriere a unui algoritm pentru rezolvarea unei ecuații pătratice generalizate folosind construcții de ramificare. Iată un fragment dintr-un program în Pascal care implementează același algoritm:

dacă a = 0 apoi

dacă b = 0 apoi

dacă c = 0 apoi writeln("x - oricare")

altfel writeln("fără rădăcini")

altfel scrieln(-c/b)

altfel începe

D:= b*b - 4*a*c;

dacă D< 0 apoi writeln("fără rădăcini")

altfel începe

x1:= -b + sqrt(D);

x2:= -b - sqrt(D);

writeln(x1:0:2,""", x2:0:2)

Instrucțiuni de buclă

Operatorii de buclă implementează structuri algoritmice ciclice, acestea sunt utilizate pentru acțiuni care se repetă de mai multe ori. În multe limbaje de programare, există trei tipuri de operatori de buclă: „cu precondiție”, „cu postcondiție”, „cu parametru”.

O structură algoritmică necesară și suficientă pentru programarea buclelor este o buclă „cu o precondiție”, deci poate fi numită tipul principal de buclă. Operatorul de buclă cu o precondiție arată astfel:

în timp ce B do S

Operator S, pentru care este creată o buclă pentru execuție repetată este apelată corpul buclei. Execuția unui operator de buclă se reduce la execuția repetată a corpului buclei până la valoarea expresiei logice B adevărat (până când devine fals). De fapt, instrucțiuni de buclă similare implementează execuția repetată a instrucțiunilor condiționate dacă B apoi S, în timp ce condiția este adevărată B.

Exemplul 2. Luați în considerare utilizarea unui astfel de operator de buclă pentru a calcula suma cifrelor unui număr natural N:

în timp ce N>0 începe

S:=S+N mod 10;

N:= N div 10

Într-o buclă cu o postcondiție, corpul buclei precede condiția B. Spre deosebire de o buclă cu o precondiție, aici B este condiția pentru încheierea buclei. Operatorul de buclă cu postcondiție în Pascal are forma:

repeta S până B

Cu această organizare a ciclului, corpul ciclului S trebuie executat cel puțin o dată.

În aproape toate limbile procedurale există operator de buclă cu parametru. Poate fi reprezentat schematic astfel:

pentru< variabilă > E1 la E2 pas E3 do S

Iată sensul variabilă(parametrul ciclului) se modifică de la valoarea expresiei E1 la E2 în pașii lui E3. Pentru fiecare astfel de valoare a unui parametru de buclă, se execută operatorul S. În limbajul Pascal, conceptul de pas este absent în descrierea acestui operator, iar pasul în sine pentru un parametru de buclă întreg poate fi egal cu 1 sau. –1. Operatorul „buclă cu parametru” este folosit pentru a programa bucle cu un număr specificat de repetări. Nu este potrivit pentru programarea buclelor iterative (al căror număr de repetări este necunoscut în prealabil).

Operator de apel de procedură

În articolul „ Subrutine” descrie în detaliu acest tip de subrutină, precum proceduri. Rutinele limbajului de programare standard care sunt incluse într-una dintre bibliotecile de rutine, precum și rutinele utilizator descrise în acest bloc, sunt apelate folosind operatorul apel de procedură:

<имя процедуры>(E1,E2,…,En)

Aici E1,E2,…,En sunt variabile sau expresii care reprezintă parametrii efectivi acces la procedura. Cel mai des folosit proceduri standard sunt proceduri de intrare și ieșire a datelor (citire și scriere în Pascal).

Apelarea unei proceduri este echivalentă din punct de vedere semantic cu executarea blocului descris ca corp al procedurii, după trecerea în el a valorilor inițiale ale unor variabile (parametri de valoare) sau înlocuirea denumirilor unor variabile (parametrii variabilelor) cu numele unor variabile variabilele reale specificate la apelarea procedurii.

Exemplul 3. Să descriem procedura abc:

procedura abc(a,b:intger; var c: întreg);

Apelarea acestei proceduri abc(2,3,x) este echivalentă cu un bloc de acțiuni:

Operatori de salt

Cel mai faimos operator din acest grup de operatori este operatorul de salt necondiționat du-te la. Dacă adăugați la toate sau la unele dintre instrucțiunile de program existente etichete, apoi în program devine posibilă utilizarea unui operator de tranziție de forma:

du-te la<метка>

Eticheta în acest caz corespunde începutului instrucțiunii de la care execuția programului ar trebui să continue. Acest operator vă permite să scrieți algoritmi într-un limbaj de programare care au o structură arbitrar complexă. Dar adesea folosirea tranziției necondiționate este nejustificată, deoarece duce la confuz, rău program lizibil. Aproape singura utilizare semnificativă a operatorului du-te la este o ieșire din mai multe bucle imbricate simultan, de exemplu, atunci când procesați tablouri bidimensionale.

Exemplul 4. Să presupunem că trebuie să determinăm dacă o matrice bidimensională a conține un element egal cu 0:

pentru eu:= 1 la N do

pentru j:= 1 la N do

dacă a = 0 apoi începe

1: dacă b apoi scrie ("este") altfel scrie ("nu");

Un program dezvoltat conform regulilor de programare structurată nu trebuie să conțină operatori de sărituri necondiționați. Programul de mai sus fără a utiliza operatorul du-te la poate fi rescris astfel:

în timp ce nu b şi(i< N) începe

în timp ce nu b şi(j< N) începe

dacă a = 0 apoi b:= adevărat;

dacă b apoi scrie ("este") altfel scrie ("nu");

În acest caz, programul structurat este mai puțin vizual decât programul cu du-te la.

Alți operatori de salt pot fi definiți în limbaje de programare. De exemplu, în Pascal: pauză(întreruperea timpurie a buclei, trecerea la o instrucțiune care ar trebui să fie executată după sfârșitul buclei), continua(finalizarea timpurie a iterației buclei curente și tranziția la următoarea), Ieșire(întreruperea timpurie a subrutinei, ieșirea din ea), Halt(întreruperea timpurie a programului, trecerea la sfârșitul acestuia). Operatori similari există în limbajele C, C++ și Java.

Operator compus

O instrucțiune compusă este un grup de instrucțiuni cuprinse între paranteze operator (în Pascal - ÎNCEPESfârşit; în C, C++ - (…)).

Operatorul compus a fost introdus în limbaje de programare pentru a facilita descrierea constructelor limbajului. De exemplu, în Pascal, partea executabilă a fiecărui bloc (program, procedură, funcție) este o instrucțiune compusă. Exact în același mod, corpul oricărui operator de buclă este format dintr-un singur operator, poate unul compus. O alternativă la un operator compus poate fi un cuvânt de funcție care indică sfârșitul unui anumit operator, de exemplu, TERMINAT DACAîn limbajul de bază.

Subiectul „Operatori limbaj de programare” este de obicei studiat doar în contextul unui limbaj de programare specific. Când o luăm în considerare, este important să arătăm legătura dintre construcțiile algoritmice de bază și operatori: construcțiile algoritmice sunt scrise într-un limbaj de programare folosind operatorii corespunzători. Excepția, într-un sens, este proiectarea secvențială care determină ordinea liniară a acțiunilor. Acțiuni în strictă program liniar sunt implementate numai de operatorii de atribuire și operatorii de apel de procedură.

În etapa inițială a programării învățării, școlarii se confruntă cu multe probleme. Prima barieră psihologică pe care trebuie să o depășească este atunci când învață operatorul de atribuire. Una dintre sarcinile principale pe care trebuie să le rezolvați împreună cu studenții dvs. este schimbarea valorilor a două variabile. Puteți cere școlarilor să rezolve mental problema cum să schimbe conținutul a două sertare, de exemplu, un birou. De obicei, în această etapă a discuției, elevii realizează că este nevoie de o a treia casetă (variabilă) pentru a rezolva problema. Cu toate acestea, atunci când scriu acest algoritm, adesea confundă în ce parte a operatorului de atribuire (stânga sau dreapta) ar trebui să apară o anumită variabilă.

Erori în scrierea aritmeticii și expresii logice apar din cauza necunoașterii precedenței operațiilor care sunt folosite în expresie. În același timp, operațiile înseamnă nu numai operații aritmetice, ci și operații de comparație și conexiuni logice, iar în limbajul C și operația de atribuire, care este foarte neobișnuită pentru școlari. Situația este complicată de faptul că în diferite limbaje de programare aceleași operațiuni au priorități relative diferite. De asemenea, ar trebui să acordați atenție corespondenței dintre tipurile de variabilă și expresia din stânga și din dreapta operatorului de atribuire (vezi „ Tipuri de date”).

La stăpânirea operatorilor de selecție, este util ca studenții să programeze un algoritm care conține o structură cu mai multe ramuri, atât folosind o combinație de instrucțiuni condiționale, cât și folosind un operator de selecție.

Exemplu. La o variabilă întreagă N Introduceți vârsta persoanei în ani. Tastați expresia „ Am K ani”, înlocuind cuvântul ani pe an sau an in functie de numarul K. Iată două soluții la această problemă:

dacă(k mod 100) în

apoi writeln ("Am ",k," ani")

caz k mod 10 de

0,5..9:writeln("Am ",k," ani");

1:writeln ("Am ",k," ani");

2..4:writeln("Am ",k," ani");

var k, n: întreg;

readln(k); n:= k mod 10;

dacă(k mod 100) în

apoi writeln ("Am ",k," ani") altfel

dacă n=1 apoi writeln ("Am ",k," ani")

dacă(n>=) şi(n<= 4)

apoi writeln ("Am ",k," ani")

altfel writeln ("Am ",k," ani")

Când luați în considerare operatorii de buclă, este util să sugerați programarea aceleiași sarcini în trei moduri diferite folosind trei operatori de buclă și invers, pe baza condițiilor problemei, învățați să determinați care operator de buclă este cel mai potrivit într-un anumit caz.

Operatorul de apel procedura este simplu la prima vedere. Aici este important să explicăm regulile de transmitere a parametrilor către proceduri și funcții, diferența dintre parametrii variabili și parametrii de valoare (în acest din urmă caz, putem trece nu numai numele variabilei, ci și o constantă sau chiar o expresie a corespunzătoare). tip). Parametrii formali și actuali trebuie să corespundă după tip, dar nu după nume, ceea ce este departe de a fi evident pentru elevi.

Studierea enunțului condiționat și mai ales compus este o oportunitate bună de a vorbi cu studenții despre stilul de scriere a programului. Există mai multe moduri comune de a scrie programe structurate în Pascal, dar toate includ indentare pentru a se adapta structurilor imbricate. Important pentru înregistrarea programelor și a comentariilor.

„Imprimantă pentru imprimarea cardurilor de plastic” - Capacitatea de a plasa de două ori mai multe informații pe un card de plastic. Preţ. Imprimanta pentru imprimarea cardurilor din plastic. ZEBRA P110i/ P120i. Revizuirea gamei de modele. Imprimante color economice pentru imprimarea cardurilor din plastic. Performanță ridicată O gamă largă de dispozitive de codare suplimentare.

„Periferice PC” - Dispozitive periferice. Imprimante. Înregistra. Camere digitale. Ierarhia instrumentelor de conectare. Adaptoare video. Clasificarea PU. Autobuz serial universal. CD-R. Opțiuni de selecție. Bliț încorporat. Pionierii. Natură. Modem. Terminal video. Scanere. periferice PC. Clasificarea în formă de șoarece.

„Mijloace de introducere și ieșire a informațiilor” - Scanner. Plotter. CRT. Imprimante. Tastatura. Camere digitale și camere. Funcții. Dispozitiv de intrare universal. Dispozitive de intrare și ieșire a informațiilor. Tableta grafica. Mouse.

„Dispozitive de ieșire a informațiilor” - Dispozitiv computer. Cu cât rezoluția monitorului este mai mare, cu atât calitatea imaginii este mai mare. Dezavantajele imprimantelor cu jet de cerneală: Consum mare de cerneală; Cost ridicat de reumplere. Monitoarele cu ecran plat cu cristale lichide (LCD) sunt compacte și fără emisii. Dispozitive de ieșire a informațiilor. Monitorul este un dispozitiv universal de ieșire a informațiilor.

„Imprimante” - Local. Bloc termic, aragaz, cuptor - o unitate în care tonerul este copt în hârtie. Laser. Matrice (în formă de ac). În timp, își pierd proprietățile și trebuie înlocuite în mod regulat de un specialist. Jet. Reţea. Modificat de utilizator. Caracteristicile imprimantei. Dezvoltator, purtător, dezvoltator - cele mai mici particule de metal care transferă tonerul pe rola foto.

„Subsistem I/O” - Punct de întrerupere. Mesele. Amplasare continuă. Atribut. Permisiuni pentru fișiere. Lista legată de indici. Date. Organizarea fizică. Acces direct la memorie. Fișier indexat-secvențial. Montare. Întreruperea I/O condusă. Permisiuni de acces la director. Organizarea muncii paralele.

Există un total de 27 de prezentări în acest subiect

Codul programului este prezentat în Fig. 4.3-9.

Opțiune Strict On Opțiune Explicit On Imports System.Math Public Class Form1 "Funcție de introducere a coordonatelor unui punct într-un TextBox Funcție vvod(ByVal T As TextBox) As Single Return CSng(Val(T.Text)) End Function "Procedura pentru ieșirea rezultatului într-un TextBox Sub vivod (ByVal Z As Single, ByVal T As TextBox) T.Text = CStr(Z) End Sub "Funcție pentru calcularea lungimii unui segment din coordonatele a două puncte Public Function Segment Length(ByVal) x1 Ca Single, _ ByVal y1 Ca Single, ByVal x2 Ca Single, _ ByVal y2 Ca Single) Ca Single Return CSng(Sqrt((x2 - x1) ^ 2 + (y2 - y1) ^ 2)) End Function "Procedura pentru calcularea perimetrului și aria unui triunghi Sub PS(ByVal x1 As Single, ByVal y1 As Single, _ ByVal x2 As Single, ByVal y2 As Single, _ ByVal x3 As Single, ByVal y3 As Single, _ ByRef P As Single , ByRef S As Single) Dim A, B, C, Pp As Single A = Lungimea segmentului (x1 , y1, x2, y2)"Apelarea funcției pentru calcularea lungimii negativului. B = Lungimea segmentului (x2, y2, x3, y3) C = Lungimea segmentului (x3, y3, x1, y1) P = (A + B + C) : Pp = P / 2 S = CSng(Sqrt(Pp * (Pp - A) * (Pp - B) * (Pp - C))) End Sub "Procedura de procesare a evenimentului de clic pe butonul Button1 Private Sub Button1_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button1.Click Dim x1 Ca Single, x2 Ca Single, x3 Ca Single Dim y1 Ca Single, y2 Ca Single, y3 Ca Single Dim Per As Single, Plo Ca Single x1 = vvod(TextBox1) : x2 = vvod(TextBox2) : x3 = vvod(TextBox3 ) y1 = vvod(TextBox6) : y2 = vvod(TextBox7) : y3 = vvod(TextBox8) PS(x1, y1, x2, y2, x3, y3, Per, Plo) vivod(Plo, TextBox4) : vivod(Plo, TextBox5) End Sub Private Sub Button2_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button2.Click End End Sub End Class

Rularea aplicației și obținerea rezultatelor

Rezultatul este prezentat în Fig. 4.3-10.

Dovada corectitudinii rezultatului

A=
= 2,82843 B =
= 2

C = = 2 P = A + B + C = 6,828427; Рр = Р/2 = 3,414213 S= = 2


Întrebări de securitate pe această temă

„Structura programelor, modulelor și procedurilor VB.

Instrumente de programare pentru algoritmi de structură liniară"

1. Ce este un model matematic?

2. Care sunt principalele etape implicate în rezolvarea problemelor pe calculator?

3. Ce etape ale rezolvării problemelor computerului se desfășoară fără participarea unui computer?

4. Ce se numește model matematic al unui obiect sau fenomen?

5. Care sunt pașii succesivi în procesul de dezvoltare a programului?

6. Ce este un algoritm?

7. Ce proprietăți de bază ar trebui să aibă un algoritm?

8. Ce modalități există pentru a descrie algoritmii?

9. Ce simboluri grafice sunt de obicei descrise în diagramele de algoritm?

10. Cum funcționează interpretul?

11. Cum funcționează compilatorul?

12. Ce algoritm se numește liniar?

13. Ce algoritm se numește ciclic?

14. Ce algoritm se numește ramificare?

15. Care este diferența dintre transmiterea rezultatelor funcțiilor și procedurilor?

16. Obținerea unui rezultat plauzibil dovedește că programul este corect?

17. Ce erori pot rămâne nedetectate dacă nu verificați (vizualizați, derulați) programul?

18. Cum este testarea unui program diferită de depanarea lui?

19. Este posibil să se dovedească corectitudinea unui program folosind teste?

20. În ce etapă a programului sunt calculate rezultatele testelor de referință?

21. Enumerați etapele principale ale procesului de testare.

22. Care este diferența dintre erorile de sintaxă și erorile semantice?

23. Ce indică lipsa de mesaje de eroare de sintaxă a mașinii?

24. Ce tipuri de erori nu poate detecta traducătorul?

25. Care este programul?

26. În ce etapă are loc căutarea și eliminarea erorilor din program?

27. Ce este un sistem de programare?

28. Care este procedura?

29. Care sunt beneficiile unui program care are proceduri?

30. Ce instrumente de programare procedurală sunt disponibile în VB?

31. Cum se face schimbul de date între procedurile individuale ale programului?

32. Care sunt parametrii reali și formali?

33. Cum se trece ca parametru: o constantă, o variabilă, o expresie?

34. Cum sunt utilizate variabilele globale?

35. Cum sunt utilizate variabilele locale?

36. Care sunt parametrii formali?

37. Care sunt parametrii efectivi?

38. Ce se întâmplă când este apelată o procedură?

39. Cum pot fi transferați parametrii unei proceduri?

40. Ce parametri trec după valoare?

41. Ce parametri trec la adresa?

42. Ce sunt instrumentele de programare procedurală?

43. Care este rezultatul executării unei funcții?

44. Cum ar trebui să fie declarate variabilele individuale astfel încât să fie locale în cadrul unei funcții?

45. Ce instrucțiune este folosită pentru a părăsi o funcție mai devreme?

46. Ce este controlat atunci când apelați funcții și proceduri?

47. Cum ar trebui să fie declarați parametrii formali pentru a trece un parametru variabil după valoare?

48. Cum ar trebui să fie declarați parametrii formali pentru a transmite un parametru variabil unei adrese?

49. Cum se apelează o procedură de funcție din programul apelant?

50. Care ar putea fi rezultatul procedurii?

51. Ce declarație este folosită pentru a ieși mai devreme dintr-o procedură?

52. Unde pot fi localizate descrierile funcțiilor și procedurilor?

53. Unde va fi disponibilă o variabilă declarată folosind operatorul public?

54. Unde poate fi localizat operatorul privat?

55. Ce este un comentariu și regulile pentru a-l scrie?

56. Care sunt valorile variabilelor la începutul programului?

57. De ce sunt descrise (definite) procedurile și funcțiile?

58. Cum se numesc procedurile?

59. Cum se numesc functiile?


Informații conexe.


Primul operand - „expression1” - poate fi orice expresie al cărei rezultat este o valoare de tip bool . Dacă rezultatul este adevărat , apoi se execută operatorul specificat de al doilea operand, adică „expression2”.

Dacă primul operand este egal cu fals , apoi se execută al treilea operand - „expression3”. Al doilea și al treilea operanzi, adică „expression2” și „expression3”, trebuie să returneze valori de același tip și nu trebuie să fie de tip void . Rezultatul executării unei instrucțiuni condiționale este rezultatul „expresiei2” sau rezultatul „expresiei3”, în funcție de rezultatul „expresiei1”.

Restricții de utilizare de către operator

Operatorul bazat pe valoarea „expression1” trebuie să returneze una dintre cele două valori – fie „expression2” fie „expression3”. Există o serie de restricții asupra acestor expresii:

  1. Nu puteți combina un tip definit de utilizator cu un tip simplu sau o enumerare. Este acceptabil să folosiți NULL pentru un pointer.
  2. Dacă tipurile de valori sunt simple, atunci tipul operatorului va fi tipul maxim (vezi Coerciție de tip).
  3. Dacă una dintre valori este un tip de enumerare, iar a doua este un tip numeric, atunci enumerarea este înlocuită cu int și se aplică a doua regulă.
  4. Dacă ambele valori sunt valori enumerate, atunci tipurile lor trebuie să fie aceleași, iar tipul operatorului va fi o enumerare.

Limitări pentru tipurile personalizate (clase sau structuri):

  1. tipurile trebuie să fie aceleași sau unul trebuie să moștenească de la celălalt.
  2. dacă tipurile nu sunt aceleași (moștenire), atunci copilul este implicit turnat către părinte, adică tipul operatorului va fi tipul părintelui.
  3. Nu puteți amesteca obiect și indicator - fie ambele expresii sunt obiecte, fie indicatori. Este acceptabil să folosiți NULL pentru un pointer.

Nota

Fiți atenți când utilizați un operator condiționat ca argument pentru o funcție supraîncărcată, deoarece tipul rezultatului operatorului condiționat este determinat în momentul în care programul este compilat. Și acest tip este definit ca tipul mai mare al tipurilor „expression2” și „expression3”.

Exemplu:

void func(double d) ( Print ("argument dublu: " ,d); )
void func(șir s) ( Print ("argument șir: " ,s); )

bool Expresie1=adevărat;
expresie dublă2=M_PI;
șir Expression3= "3.1415926" ;

void OnStart()
{
func(Expresie2);
func(Expresie3);

func(Expresie1?Expresie2:Expresie3);
func(!Expresie1?Expresie2:Expresie3);// primește un avertisment al compilatorului despre turnarea explicită la tipul șir
}

// Rezultat:
// argument dublu: 3.141592653589793

// argument șir: 3.141592653589793
// argument șir: 3.1415926

În paragraful anterior, ne-am familiarizat cu structura unui program în Pascal, am învățat cum să descriem datele și ne-am uitat la operatorul de atribuire. Acest lucru este suficient pentru a scrie un program de conversie a datelor. Dar rezultatul acestor transformări nu ne va fi vizibil.

Pentru a scoate date din RAM pe ecranul monitorului, utilizați operatorul de ieșire de scriere:

Aici, între paranteze, este plasată o listă de ieșiri - o listă de expresii ale căror valori sunt tipărite. Acestea pot fi expresii numerice, simbolice și logice, inclusiv variabile și constante.

Un set arbitrar de caractere cuprinse în apostrofe este considerat o constantă șir. O constantă șir poate conține orice caractere introduse pe tastatură.

Exemplu. Instrucțiunea write ("s=", s) este executată astfel:

  1. Pe ecran sunt afișate simboluri cuprinse în apostrofe: s=
  2. Valoarea variabilei stocate într-o celulă RAM numită s este afișată pe ecran.

Dacă valoarea variabilei s este 15 și este de tip întreg, atunci ecranul va afișa: s=15.

Dacă valoarea variabilei s este egală cu 15, dar este de tip real, atunci pe ecran vor apărea următoarele: s=l.5E+01.

Când instrucțiunea de ieșire este executată, toate elementele listei de ieșire sunt tipărite imediat una după alta. Astfel, ca urmare a operatorului de scriere (1, 20, 300), pe ecran va fi afișată șirul numerelor 120300, care va fi percepută de noi ca numărul 120300, și nu ca trei constante numerice separate. Puteți face datele de ieșire mai accesibile percepției în diferite moduri:

Format de ieșire este un număr întreg indicat după două puncte care determină câte poziții pe ecran ar trebui să ocupe valoarea afișată. Dacă într-un număr există mai puține cifre decât pozițiile rezervate acestuia pe ecran, atunci pozițiile libere sunt completate cu spații în stânga numărului. Dacă numărul specificat în formatul de ieșire după două puncte este mai mic decât este necesar, acesta va fi mărit automat la minimul necesar.

Pentru a scoate un număr real în format de virgulă fixă, în lista de ieșire sunt specificați doi parametri pentru fiecare expresie:

  1. numărul total de posturi alocate pentru acest număr;
  2. numărul de poziții din partea fracționară a numărului.

Când este executată o nouă instrucțiune de scriere, ieșirea continuă pe aceeași linie. Pentru a trece la o linie nouă, utilizați operatorul writeln. Nu există alte diferențe între declarațiile de scriere și de scriere.

4.2.2. Primul program în limbajul Pascal

Folosind operatorii discutați mai sus, vom crea un program care calculează circumferința și aria unui cerc cu o rază de 5,4 cm.

Datele inițiale din această problemă sunt raza: r - 5,4 cm Rezultatul programului ar trebui să fie valorile C - circumferința și S - aria cercului. C, S și r sunt mărimi de tip real.

Datele și rezultatele inițiale sunt legate prin relații cunoscute de la cursul de matematică: C = 2πr, S = πr +. Un program care implementează calcule folosind aceste formule va arăta astfel:

Acest program este corect și rezolvă problema. Când îl rulați, veți obține următorul rezultat:

Totuși, programul pe care l-am compilat are un dezavantaj semnificativ: găsește circumferința și aria unui cerc pentru o singură valoare a razei (5,4 cm).

Pentru a calcula circumferința și aria unui cerc pentru o rază diferită, va trebui să faceți modificări direct textului programului, și anume, să schimbați operatorul de atribuire. Efectuarea de modificări la un program existent este, cel puțin, nu este întotdeauna convenabilă (de exemplu, când programul este mare și există mulți operatori de atribuire). Mai jos vă veți familiariza cu operatorul care vă permite să introduceți date inițiale în timp ce programul rulează, fără a modifica textul programului.

4.2.3. Intrare de la tastatură

Pentru a introduce valori variabile în RAM, utilizați operatorul de intrare citire:

Când instrucțiunea de citire este executată, computerul intră în modul de așteptare a datelor: utilizatorul trebuie să introducă datele de la tastatură și să apese tasta Enter. Mai multe valori pentru variabilele de tip numeric pot fi introduse separate prin spații sau virgule. La introducerea variabilelor caracter, spațiile și virgulele sunt tratate ca caractere, deci nu pot fi introduse.

Prima valoare de variabilă introdusă de utilizator este plasată în locația de memorie al cărei nume se află primul în lista de intrare etc. Prin urmare, tipurile de valori de intrare (flux de intrare) trebuie să corespundă tipurilor de variabile specificate în variabilă secțiunea de descriere.

Exemplu. Lasă

var i, j: întreg; x: real; a:char;

Să atribuim variabilele i, j, x și valorile 1, 0, 2.5 și „A”. Pentru a face acest lucru, vom folosi operatorul de citire (i, j, x, a) și vom organiza fluxul de intrare într-unul din următoarele moduri:

Aici nu numai că am folosit diverși delimitatori (spațiu, virgulă), dar am reprezentat și fluxul de intrare ca una, două și patru linii.

De asemenea, puteți utiliza operatorul readln pentru a introduce date de la tastatură, care diferă de operatorul de citire doar prin faptul că, după ce este executat, cursorul se deplasează pe o nouă linie.

Să îmbunătățim programul n_1 organizând introducerea datelor în el folosind operatorul de citire. Și pentru ca utilizatorul să știe pentru ce este destinat programul și să înțeleagă exact ce acțiune așteaptă computerul de la el, vom afișa mesajele text corespunzătoare folosind operatorul writeln:

Rezultatul programului îmbunătățit:

Acum, programul nostru poate calcula circumferința și aria unui cerc pentru orice valoare a lui r. Cu alte cuvinte, rezolvă nu o singură problemă, ci o întreagă clasă de probleme. În plus, programul organizează în mod clar și convenabil introducerea datelor inițiale și obținerea rezultatelor obținute. Acest lucru asigură o interfață prietenoasă cu utilizatorul.

Cel mai important

Pentru a introduce valori variabile în RAM, se folosesc operatorii de intrare readln și readln.

Pentru a scoate date din RAM pe ecranul monitorului, sunt utilizați operatorii de ieșire de scriere și scriere.

Introducerea datelor inițiale și rezultatele rezultatelor trebuie organizate clar și convenabil; aceasta asigură o interfață prietenoasă cu utilizatorul.

Întrebări și sarcini

  1. Scrieți o declarație care vă permite să introduceți valoarea variabilei suma în timp ce programul rulează.
  2. Variabilelor întregi i, y, k trebuie să li se atribuie valorile 10, 20 și, respectiv, 30. Notați instrucțiunea de intrare corespunzătoare fluxului de intrare:
      a) 20 10 30
      b) 30 20 10
      c) 10 30 20
  3. Descrieți variabilele necesare pentru a calcula aria unui triunghi pe baza celor trei laturi ale sale și scrieți o declarație care oferă datele de intrare necesare.
  4. Care este rezultatul executării instrucțiunii?
      a) scrie (a)
      b) scrie (1 a")
      c) scrie (1 a=1, a)
  5. Ce tip este variabila f dacă, după executarea instrucțiunii write (f), pe ecran este afișat următorul număr?
      a) 125
      b) 1,25E+2
  6. Cum pot afișa un număr real în format punct fix?
  7. Notați operatorii pentru introducerea a două numere și afișarea lor în ordine inversă.
  8. Având în vedere un fragment din program:

    citeste(a); citeste(b); c:=a+b; scrie (a, b); scrie (c)

    Simplificați-l prin reducerea numărului de instrucțiuni de intrare și de ieșire.

  9. Având în vedere un fragment din program:

    a:=10; b:=a+l: a:=b-a; scrie (a, b)

    Ce numere vor fi afișate pe ecranul computerului?

  10. Scrieți un program care calculează aria și perimetrul unui dreptunghi pe baza celor două laturi ale acestuia.

© 2024 ermake.ru -- Despre repararea PC-ului - Portal de informații