Principalele diferențe între funcții și proceduri

1. Funcția, de regulă, returnează o singură valoare, de exemplu, Sin (x).

Procedura poate returna structuri complexe, cum ar fi matrice.

2. Antetul funcției (prima ei linie) se termină prin indicarea tipului valorii returnate (de exemplu, real, întreg, etc.). În titlul procedurii, aceste informații nu sunt necesare.







3. La sfârșitul corpului funcției, îi este atribuită valoarea pentru care este destinată, de exemplu Sum_Mas: = S;

4. O funcție poate fi un operand al unei expresii matematice. Procedura nu poate face parte din expresie.

Reguli pentru aplicarea subrutinelor

Este imposibil să se descrie structuri complexe în antetul subrutinei, este necesar să se facă referire la descrierea tipurilor acestor structuri în programul principal. De exemplu,

Procedura pr1 (a: matrice [1..n] de întreg); - Nu poți!

Procedura pr1 (a: Mas_Type); .

unde Mas_Type este numele tipului descris în programul principal:

Tip Mas_Type = matrice [1..n] jf integer;

2. Tipurile de parametri formali și actuali ar trebui să fie coerenți.

3. Subrutinele cu valoare parametru nu returnează acest parametru în programul principal, valoarea parametrului este copiată în stivă; poate fi o expresie variabilă, constantă sau matematică.

6. Este de dorit ca numele parametrilor formali și actuali să fie diferiți. Variabila globală din subrutină devine locală dacă este declarată în antetul subrutinei sau în secțiunea de declarare a variabilei.

7. Subrutinele pot declara etichete locale, constante, variabile, proceduri și funcții, însă directiva compilatorului Utilities nu poate fi declarată.


Un exemplu. Verificați prezența fișierului și notați-l

tip
TFileData = înregistrare
Nume: Șir [10];
ExtDat: Extended;
se încheie;
var
Cals: Fișier al TFileData;

începe
Drum: = '. Dat';
Dest: = '' + Drum;
încerca
AlocațiFile (Cals, Dest);
// Dacă fișierul este deschis pentru citire, altfel vom crea unul nou

Dacă FileExists (Cals) apoi Resetați (cals) altceva Rescrieți (cals);

// setați poziția de citire la sfârșitul fișierului

CalsData.Name: = 'nume de parametru';

Scrieți (Cals, CalsData);
cu excepția
pe E: EInOutError nu

ShowMessage ('A apărut o eroare în timpul operării fișierului' +

'Nu' + IntToStr (E. Cod de eroare) + ':' + SysErrorMessage (GetLastError));

pe E: EAccessViolation do

se încheie;
CloseFile (cals); // Indiferent de ceea ce sa întâmplat mai sus, închideți-vă

Rescrieți fișierul a.dat în fișierul b.dat, eliminând semnele de sfârșit de fișier:

var
f1, f2: fișierul Byte;

începe

Atribuiți fișierul (f1, 'a.dat');

Resetați (f1);
Rescrie (f2);
pentru i: = 1 la FileSize (f1)

dacă a <> 26 apoi scrie (f2, a);

se încheie;
CloseFile (f1);
CloseFile (f2);
end.

Dosarele fișierelor. Noi scriem și citim:

Nume: șir [100];
Vârstă: octet;
Venit: Real;
se încheie;
var f: fișier TR;

r: TR;
începe
// atribuiți fișierul

dacă FileExists ("MyFileName") atunci

resetați (f)
altfel
rescrie (f);
// citește intrarea a zecea







caută (f, 10);
citiți (f, r);
// scrie 20-a înregistrare

scrie (f, r);
fișierul closet (f);
se încheie;

3.3. Întrebări de test

12. În ce cazuri sunt parametrii - constantele?

13. De ce în funcții este nedorit să folosiți parametrii -

Sarcini pentru activitatea de laborator nr. 3

1. Triunghiul este dat de coordonatele vârfurilor sale. Efectuați un program pentru a calcula zona sa.

2. Datele sunt două fracții A / B și C / D (A, B, C, D sunt numere naturale). Efectuați un program de scădere din prima fracțiune a celui de-al doilea. Rezultatul ar trebui să fie o fracțiune ireductibilă.

1. Înlocuiți elementele negative ale unei matrice liniare cu modulele lor, fără a utiliza funcția de calcul standard a modulului. Calculați numărul de înlocuiri efectuate.

2. Datele sunt două fracții A / B și C / D (A, B, C, D sunt numere naturale). Creați un program pentru adăugarea fracțiunilor. Rezultatul ar trebui să fie o fracțiune ireductibilă.

1. Creati un matrice X (N) al carui termen N este definit de formula X (N) = 1 / N !.

2. În plan n punctele sunt date de coordonatele lor. Creați o matrice de dimensiune n (n-1), ale cărei elemente sunt distanțele de la fiecare punct la n-1 altele.

1. Datele numerelor X, Y, Z, T sunt lungimile laturilor patrulaterale. Calculați suprafața sa dacă unghiul dintre laturi este de lungime X și Y este o linie dreaptă.

2.Compilați un program pentru calcularea sumei factorilor de toate numerele parțiale de la m la n.

1. Înlocuiți un număr natural dat un număr care este derivat din numerele de înregistrare originale în ordine revers (de exemplu, conține numărul 156, pentru a obține 651).

2. Având un număr prim. Creați o funcție care va găsi următorul număr prime după el.

1. Scrieți un program pentru calcularea sumei p / q = 1-1 / 2 + 1 / 3- ... + ((-1) ^ (n + 1)) / n pentru un număr dat n. Fracțiunea p / q trebuie să fie ireductibilă (p, q - naturală).

2. Stabiliți o funcție pentru a găsi cel mai mic divizor natural k (k ≠ 1) pentru orice număr natural n dat.

1. Imprimați toate perechile de numere gemene de la [n, 2n], unde n este un număr natural dat mai mare de 2.

2. Având în vedere un număr natural N. Scrieți un program pentru a forma o matrice, ale cărei elemente sunt cifrele lui N.

1. Găsiți toate perechile de numere prietenoase care nu sunt mai mari decât un număr dat K.

2.Compilați un program care determină care dintre aceste două numere este mai mare decât cifrele.

Scrieți programul pentru calcularea sumei 1 + 1/2 + 1/3 + ... + 1 / n pentru numărul atribuit n. Rezultatul este reprezentat sub forma unei fracții ireductibile p / q (p, q sunt naturale).

1. Efectuați un program pentru a găsi numere din intervalul [M, N] având cel mai mare număr de divizori.

2. Găsiți toate numerele Armstrong de la 1 la K pentru a scrie un program care găsește și imprimă toate numerele de patru cifre ale formularului abcd. pentru care: 1) a, b, c, d - numere diferite; 2) ab-cd = a + b + c + d.

1.Datele cu numărul X, Y, Z, T-lungimea părților laterale ale patrulaterului. Calculați suprafața sa, dacă unghiul dintre laturile X și Y-

2. Efectuați un program pentru calcularea sumei de factoriali, toate numerele multipli de 3, de la A la B.

1.Sformirovat matrice X (N), N-lea termen este determinat de formula X (N) = 1 / N!

1. Cu un număr prime. Creați o funcție care va găsi următoarele numere prime K.

2. Înlocuiți elementele negative ale unei matrice liniare cu modulele lor, fără a utiliza funcția de calcul standard a modulului. Numără numărul de înlocuiri efectuate.

1. Găsiți toate numerele naturale care nu depășesc un n dat, care sunt împărțite în fiecare dintre cifrele lor.

2. Găsiți toate numerele naturale simple care nu depășesc n, înregistrările binare ale cărora sunt palindrom.

1.Completați o subrutină care va găsi rădăcinile unei ecuații patrate.

2. Scrieți programul pentru calcularea sumei 1 + 1/2 + 1/3 + ... + 1 / n pentru un număr dat n. Rezultatul este reprezentat sub forma unei fracțiuni ireductibile p / q (p, q-natural).

1. Acest numere întregi pozitive K și N. scrie un program care formează matrice A ale cărui elemente sunt numere, suma de cifre din care este egal cu K, și care nu sunt mai mari decât N.

2. Găsiți toate numerele naturale de n-cifre, numerele în care se formează o secvență strict în creștere (de exemplu, 1234, 5789).

1. Cu un număr prime. Creați o funcție care va găsi ultimul număr simplu care urmează.

2. Există o parte a bobinei cu bilete de autobuz. Numărul de bilete este de șase cifre. Scrieți un program care determină cantitatea de bilete de noroc în bobină, în cazul în care un număr mai mic de bilet - N, o mai mare - M (biletul este un fericit, în cazul în care suma primelor trei cifre ale sumei sale ravnv din ultimele trei).







Articole similare

Trimiteți-le prietenilor: