erori de programare

Erori de programare, există două tipuri de sintaxa si logica. erori de sintaxă este o greșeală de scriere a cuvintelor cheie și a simbolurilor lingvistice. Toate tipurile de erori de sintaxă pot fi găsite în calculator 99% din cazuri.

Erori logice legate de punerea în aplicare incorectă a algoritmului de logica programului. În 99% din cazuri, computerul va executa programul, dar rezultatul lucrării va fi greșit.

Exemple de erori de sintaxă în Pascal și corectarea acestora:

1) Nu pune punct și virgulă. După pornirea programului, prin apăsarea +, linia de sus va fi scris în mesajul roșu:

Eroare 85 ";" așteptat.

(Eroare 85: "" nu este disponibil.)

2) În descrierea variabilelor care nu sunt înregistrate variabile, și este prezent în program. După pornirea programului, veți primi un mesaj:

Eroare 3: identificator necunoscut.

(Eroare 3: ID necunoscut.)

Cursorul va fi setat la această variabilă. Este necesar să se corecteze eroarea, adică, pentru a înregistra o variabilă în secțiunea de declarare variabilă și continuă.

3) Nu pune un punct după încheierea operatorului, la sfârșitul programului. Mesaj compilator este:

Eroare 10: Sfârșit neașteptat de fișier.

(Eroare 10: sfârșitul greșită a fișierului.)

Cursorul este setat la litera „e“, în cuvântul „sfârșit“. Este necesar să se pună capăt și să execute programul din nou.

Executarea programului. butoane cheie

După programul stabilit, puteți încerca să-l execute.

Pentru a face acest lucru, apăsați tastele + (Țineți apăsat , presa ). Aceeași operațiune se poate face accesând meniul principal prin apăsarea , și apoi se deplasează indicatorul pentru a selecta opțiunea Run și apăsați <Ввода>.

Acum trebuie să găsim noua opțiune de meniu RUN (start-up) și apăsați <Ввод>.

Dacă nu a existat nici o eroare atunci când tastați, apoi, după câteva secunde, imaginea va trece pe ecran. Turbo Pascal oferă un ecran disponibil pentru un program de utilizator care rulează. Acest ecran se numește fereastra programului.

Primele erori și corectarea acestora

1. Nu pune punct și virgulă, de exemplu, după ce operatorul readln (a). După pornirea programului, prin apăsarea +, linia de sus va fi scris în mesajul roșu:

Eroare 85 ";" așteptat.

(Eroare 85: "" nu este disponibil.)

2. Descrierea variabilelor nu înregistrează variabile, iar programul este prezent, cum ar fi c variabila. După pornirea programului, veți primi un mesaj:

Eroare 3: identificator necunoscut.

(Eroare 3: ID necunoscut.)

Cursorul va fi setat la această variabilă, în exemplul nostru, c variabila. Este necesar să se corecteze eroarea, adică, scrie c variabilă în secțiunea de declarare variabilă și continuă.

3. Nu pune un punct după încheierea operatorului, la sfârșitul programului. Mesaj compilator este:

Eroare 10: Sfârșit neașteptat de fișier.

(Eroare 10: sfârșitul greșită a fișierului.)

cursorul este setat la litera „e“, în cuvântul „sfârșit“. Este necesar să se pună capăt și să execute programul din nou.

Ajutor în „PASCAL“.

În Turbo Pascal are un serviciu de sesizare care să acopere toate întrebările posibile cu privire la programele de scriere. Principalul lucru - este sfaturi cu privire la limba de cuvinte cheie.

opțiuni de meniu HELP

Ajutor cu privire la ajutor. Acesta oferă informații cu privire la modul de utilizare biroul de ajutor. Rețineți că mesajele de help desk toate referințele încrucișate evidențiate. Puteți lua oricare dintre ele și mouse-ul prin dublu-clic pe butonul stâng aduce mesajul de ajutor corespunzător (sau mutați cursorul pentru a-l cu tastele cursor și transfer apăsați pe Enter).

FILES. Cu această opțiune puteți seta fișierele de helpdesk dorit.

DIRECTIVELOR Compiler. Afișează ajutor despre directivele compilator.

CUVINTE rezervate. Afișează ajutor despre cuvinte rezervate.

Unități standard. Afișează ajutor pe module standard.

LIMBA PASCAL TURBO. Afișează ajutor pe limba Turbo Pascal.

Mesaje de eroare. Afișează ajuta la mesaje de eroare.

Curs №7 proceduri. Programare algoritmi recursive.

Metoda deductivă de programare

Programatorul are nevoie pentru a vedea întregul program care rezolvă unele probleme, iar apoi îl împarte în părți separate ale limbajului de programare selectată, aceste părți ale programului, le combină într-o singură unitate și primește programul.

Deci, întregul proces de creație poate fi rupt în jos (desigur, pur convenționale), în următoarele etape:

1) Ideea de bază pentru rezolvarea problemei;

2) proiectarea generală a programului;

3) separarea părților elementare individuale ale programului;

4) punerea în practică într-un limbaj de programare a acestor părți ale programului;

5) într-un program unificat.

Un astfel de proces de programare se numește structurală sau în jos. Mai multe informații detaliate cu privire la acest proces, vom învăța mai târziu, când să învețe cel puțin elementele de bază ale limbajului de programare, ci pe părțile individuale ale „pietrele de temelie“ care alcătuiesc programul pentru a învăța această lecție.

Subrutină este un grup de operatori la care este accesat din programul principal de mai multe ori. Uneori poate fi de 2, 3 ori, și foarte frecvent, de fiecare dată când bucla principală de program realizat.

Este destul de clar că, pentru a scrie de mai multe ori același grup de operatori este dificil, se face o mulțime de muncă „tehnice“, iar în unele cazuri imposibile (dacă trebuie să trateze de fiecare dată ciclu).

Pentru a facilita acest lucru și rutine stabilite.

Acesta permite utilizarea subrutine.

1) Pentru a face programul de bază mai vizibil și compact;

2) de a reduce cantitatea de memorie utilizată de calculator;

3) reduce timpul pentru a depana un program.

rutine Pascal sunt de două tipuri - sunt proceduri și funcții.

Luați în considerare următorul exemplu simplu, prin care încearcă să înțeleagă proiectarea procedurilor Pascal.

Exemplu. Creați un program care verifică dacă cele trei numere sunt relativ prim.

Știm că numerele sunt numite relativ prim în cazul lor cea mai mare divizor comun (GCD) este 1. Deci, pentru a rezolva această problemă trebuie să găsim GCD a două numere. În cazul dat trei numere: a, b, c, apoi găsiți GCD (a, b), și apoi găsiți GCD (GCD (a, b), c).

De două ori pentru a scrie declarații pentru a găsi GCD noi nu dorim, astfel încât operatorii vor asigura GCD procedurii.

A se vedea cum va arăta în program.

a, b, c, k. întreg;

Procedura din cap (a, b întreg ;. Var n întreg.);

în cazul în care k = 1, atunci writeln ( 'numere relativ prime')

writeln altceva ( „Numerele nu sunt relativ prim„)

În secțiunea Declarații, după descrierea variabilelor scrise procedură antet: Procedură

Acest cuvânt este un serviciu și rezervat în Pascal. În aceeași linie cu el, prin golul, numele scris al procedurii, care trebuie să îndeplinească toate cerințele pentru numele, cele mai importante sunt: ​​începe cu o literă și nu au lacune, adică cerințele sunt aceleași ca și numele programului (.. numele procedurilor noastre - da din cap):

Procedura din cap (a, b întreg ;. Var n întreg.);

Mai departe, în paranteze scrise denumiri și tipuri de variabile, ale căror valori vor fi introduse în procedura programului principal, în acest caz, există două (a, b) au tip întreg.

Imediat trebuie remarcat faptul că numele acestor variabile pot să nu fie identice cu numele variabile în programul principal, putem spune marca lor m, n, sau orice alt nume.

După virgulă și cuvântul rezervat var, înregistrate variabile și tipurile lor, ale căror valori vor fi rezultatul procedurii și scoase din ea la programul principal. O astfel de variabilă în acest exemplu este una - n. Acesta va valoare de ieșire GCD a numerelor a și b. Numele ei poate avea, de asemenea, același nume în programul principal și nu afectează funcționarea procedurii.

Notă. că, înainte de variabilele ale căror valori sunt introduse din programul principal, nu a pus cuvântul var, și în fața căreia valoarea variabilei este afișată în programul principal, cuvântul este scris. Acest lucru este foarte important!

Deci, dacă ai pus var în fața a și b, atunci compilatorul va trata aceste variabile ca ieșire și valoarea de intrare a acestora nu va fi luată, și, invers, în cazul în care var nu va fi scris la variabila de ieșire, compilatorul va accepta ca intrare și afișa valoarea în programul principal nu va fi.

Procedurile de construcție suplimentare și de construcție ca programul principal în Pascal.

Descrie variabilele care vor fi implicate în activitatea sa, dar numele lor nu trebuie să repete numele acestor parametri de intrare și de ieșire deja descrise în antetul de program. Următoarele descrie necesitatea operatorilor.

În exemplul nostru, procedura da din cap va fi după cum urmează:

Procedura din cap (a, b întreg ;. Var n întreg.);

Programul principal este construit în mod obișnuit, dar în cazul în care este necesar să se găsească GCD a numerelor se referă la procedura. Cum?

Pentru a face acest lucru, se referă la ea după nume în paranteze scrie valorile reale ale variabilelor de intrare (în acest caz variabilele a și b), care, de asemenea nume de variabilele de ieșire (în acest caz, k).

Din următoarea secțiune de program arată că primul apel la cap procedură stabilită de GCD numere întregi a și b (din cap (a, b, k)), iar rezultatul este stocat în variabila k, in continuare, se modifică valorile variabilelor a și procedura din cap b și din nou a cauzat care își găsește deja GCD a numerelor k și c, iar rezultatul este atribuit variabilei k.

Puteti vedea partea principală a programului:

a scrie ( „Introduceți cele trei numere naturale“); readln (a, b, c);

în cazul în care k = 1, atunci writeln ( 'numere relativ prime')

writeln altceva ( „Numerele nu sunt relativ prim„)

Am trage concluzii generale pentru construcția și operarea procedurilor

Procedurile puse în secțiunea Declarații începe rezervat (oficial) cuvânt

Procedura având în vedere în mod necesar un nume, care trebuie să îndeplinească aceleași cerințe ca numele de variabile, adică, aceasta poate fi una sau mai multe litere, combinații de litere și numere întregi, dar fără spații, să înceapă cu o literă, etc.

După numele, scrise în variabilele brackets - parametri și tipul: de intrare ale căror valori sunt folosite pentru a calcula ca argumente.

Parametrii de ieșire - acestea sunt variabile în care se obține rezultatul procedurii.

Parametrii de intrare și de ieșire de proceduri sunt numite parametri formali.

Real, parametrii specifici, valoarea formală trebuie să intre în programul principal după apelul la ea (atâta timp cât procedura nu sunt mai mult decât un „fals“).

După parametrii formali descriu variabilele care sunt necesare în mod direct la procedura de lucru.

Această procedură parametri. Ei au nevoie de ea, la fel ca în orice alt program, și sunt, de asemenea, descrise. Numele lor trebuie să fie diferit de numele parametrilor de intrare și de ieșire.

Trebuie remarcat faptul că procedura poate fi astfel încât nu va fi la toate opțiunile, suficient de cele care urmează să fie introduse din program.

Descrierea procedurii este următoarea:

procedură <имя> (<входные параметры>. <их тип>;

<выходные параметры>. <их тип>);

Acesta este plasat în programul principal în secțiunea Declarații.

Prin parametrii de intrare și de ieșire ale procedurii pot fi următoarele tipuri:

1) și au de intrare și ieșire parametrii.

procedură <имя>(<входные параметры>. <их тип>;

var <выходные параметры>. <их тип>);

Tocmai ne-am întâlnit cu un program de acest tip.

2) au parametri de intrare, dar să nu fie de ieșire.

procedură <имя>(<входные параметры>. <их тип>);

3) au parametrii de ieșire, dar nu are de intrare.

procedură <имя>(var <выходные параметры>. <их тип>);

4) nu au nici intrare, nici ieșire parametri.

În funcție de acest lucru, proceduri diferite în materie de design și funcțiile pe care le efectuează.

Aceasta este urmată de o secțiune de operatori, care se face prin aceleași reguli ca și în alte programe.

Procedura este descrisă și apoi începe programul principal.

Cum este apelul subrutina - procedura?

Obligatoriu pe numele procedurii specificate. În paranteze sunt date valorile reale ale parametrilor de intrare și variabilele în care va „aminti“ valorile de ieșire.

Să considerăm un exemplu în cazul în care al doilea tip de procedură poate fi utilizată: având parametri de intrare, dar nu are nici o ieșire.

Exemplu. Creați un program care precizează care dintre numerele perioadei specificate [a; b] poate fi reprezentat ca suma a două pătrate de numere întregi?

În acest program, va trebui să verifice fiecare interval de număr [a; b] dacă aceasta poate fi exprimată ca suma pătratelor celor două numere, așa că ar fi înțelept să dezvolte o procedură care ar fi testat un singur număr și apoi acces de la programul principal pentru a verifica fiecare număr în intervalul.

Procedura a fost în conformitate cu următoarea metodă. Să presupunem că avem numărul n. Trebuie să găsim două numere a și b, suma pătratelor lor este egală cu n, adică, rezolvate în numere întregi ecuația:

Este firesc de a experimenta numerele naturale de la 1 și în sus. Dar, până la o valoare necunoscută. În cazul în care acestea sunt de a lua până la numărul n, atunci va fi prea mult de lucru inutile și inutil.

Pentru a clarifica această problemă, este posibil să se organizeze un ciclu. în care un control cât de multe numere este necesar pentru a satisface inegalitatea: Aici, după cum luate b cel mai mic întreg pozitiv 1. Pentru a organiza un astfel de ciclu, și se calculează cât de multe numere de nevoie, vom ști câte numere trebuie să răsfoiți pentru a găsi o soluție.

Acest ciclu poate fi:

în timp ce o * a + 1<=n do

Este clar acum că numerele de testare ar trebui să facă o buclă de la 1 la k:

pentru: = 1 la k face

Al doilea ciclu ar trebui să fie pentru valori b. Dar dacă o organiza, de asemenea, de la 1 la k, atunci se poate repeta de două ori aceeași valoare, numai în locuri diferite, de exemplu, numărul 20, următoarele valori pot fi date: