Computer finestre Internet

Procedure in presentazione pascal. Procedure e funzioni in Pascal. ricorsione. Subroutine Spesso un'attività richiede di ripetere una sequenza specifica di istruzioni in diverse parti del programma. Passando parametri. Parametri formali

Per utilizzare l'anteprima delle presentazioni, crea un account Google (account) e accedi: https://accounts.google.com


Didascalie delle diapositive:

Procedure e funzioni in Pascal. Ricorsione Eseguita dall'insegnante di informatica scuola GBOU 1362 Sanina Marina Sergeevna

Una subroutine è una parte autonoma di un programma che esegue un determinato algoritmo e consente l'accesso ad esso da varie parti del programma generale. L'utilizzo delle subroutine consente di implementare uno dei metodi di programmazione più moderni: la programmazione strutturata.

Funzione routine routine FUNZIONE PROCEDURA

Le procedure e le funzioni in Pascal sono dichiarate nella sezione delle dichiarazioni dopo la sezione delle variabili.

Le funzioni e le procedure hanno parametri (variabili che trasmettono un certo valore). Sono di due tipi: 1) Formali - quelli che sono nella descrizione della subroutine 2) Actual - quelli che vengono passati dal programma principale a una funzione o procedura. I parametri effettivi devono corrispondere a quelli formali in quantità, ordine e tipologia.

Inoltre, la subroutine ha variabili. con cui lavora ulteriormente. Sono di nuovo divise in due tipi: 1) Variabili globali, cioè quelle che agiscono nell'intero programma 2) Locale - quelle che agiscono solo in una procedura o funzione

Procedure Utilizzate nei casi in cui sono richiesti più risultati in una subroutine. Esistono due tipi di procedure: con un parametro; senza parametro.

La struttura di una procedura è simile a quella di un programma ed è costituita da un'intestazione e da un blocco (corpo della procedura). procedura NomeProcedura; var… begin… // Fine del corpo della procedura; inizio // corpo del programma principale end.

Procedure senza parametri procedura pr; var i: intero; begin for i: = da 1 a 60 do write ('* "); writeln; end. begin pr; end Questo programma stampa una stringa di 60 stelle.

Procedura dei parametri. Creare un programma per scambiare due numeri con = 5 e d = 7 program obmenDan; var c, d: intero; procedura obmen (a, b: intero); var m: intero; inizio m: = a; a: = b; b: = m; scrivere (a, b); fine; start writeln ("Inserisci 2 numeri:"); leggi ln (c, d); obmen (c, d); writeln (c, "", d); Fine.

Analisi del problema 1) quando si chiama la procedura obmen con due parametri 5 e 7, i numeri 5 e 7 vengono posti anche nelle variabili a e b, rispettivamente: c 5 d 7 a 5 b 7

Affinché le variabili c e d, a e b si riferiscano alle stesse celle di memoria (se i valori di a e b cambiano, allora i valori di c e d cambieranno), quando si descrivono i parametri formali, aggiungere la parola VAR prima delle variabili richieste: procedura obmen (var a, b: intero); s 5 d 7 un b

Funzioni L'insieme delle funzioni integrate nel linguaggio Pascal è piuttosto ampio (ABS, SQR, TRUNC, ecc.). Se nel programma è inclusa una nuova funzione non standard, deve essere descritta nel testo del programma, dopodiché è possibile farvi riferimento dal programma. La funzione viene chiamata sul lato destro dell'operatore di assegnazione, indicando il nome della funzione e i parametri effettivi. Una funzione può avere le proprie costanti, tipi, variabili, procedure e funzioni locali. La descrizione delle funzioni in Pascal è simile alla descrizione delle procedure.

Caratteristiche distintive delle funzioni: - risultato dell'esecuzione - un valore, che viene assegnato al nome della funzione e trasferito al programma principale; - il nome della funzione può essere incluso nell'espressione come operando.

Descrizione della funzione: funzione (): tipo; (sezione che descrive i nomi locali) Begin (sezione delle istruzioni eseguibili): =; (parametro richiesto) Fine;

Chiamata di funzione:: = (); 1 . Sul lato destro dell'operatore di assegnazione. 2. Nell'espressione nella condizione dell'operatore di diramazione. 3. Nella procedura di output, come risultato della funzione.

Le procedure e le funzioni di ricorsione in Pascal possono chiamare se stesse, ad es. hanno la proprietà di ricorsività. Una funzione ricorsiva deve contenere una condizione di fine ricorsiva per non causare il ciclo del programma. Ogni chiamata ricorsiva crea un nuovo insieme di variabili locali. Cioè, le variabili che si trovano all'esterno della funzione chiamata non vengono modificate.

Scrivere una funzione ricorsiva che calcoli il fattoriale di un numero n come segue: n! = 1 se n = 1 n! = (N -1)! N se n> 1

funzione f (n: intero): intero; inizia se n = 1 allora f: = 1 altrimenti f: = n * f (n -1); (la funzione f chiama se stessa) end;

Compiti Modificare i valori delle variabili a, b, c in modo che siano disposte in ordine non decrescente (a ≤ b ≤ c). Ti vengono dati n interi. Trova tra questi il ​​numero la cui somma di cifre ha il valore massimo.



subroutine v Turbo pascal


  • Sottoprogramma è un gruppo di comandi con nome, logicamente completo, che può essere chiamato per l'esecuzione un numero qualsiasi di volte da diversi punti del programma.

Motivi per l'utilizzo delle subroutine

  • semplificare lo sviluppo di programmi di grandi dimensioni scomponendo (dividendo) un'attività in più attività secondarie;
  • maggiore visibilità del programma;
  • risparmio di memoria.

Tipi di sottoprogrammi

procedure

funzioni

  • ProceduraÈ una parte con nome indipendente di un programma progettato per eseguire azioni specifiche.

Procedure senza parametri

  • Formato di registrazione :

procedura ;

fine ;

  • Tutte le variabili che vengono utilizzate nelle procedure senza parametri sono descritte nel programma principale (nel modulo Var).

Esempio . Fare un programma per trovare il volume del cilindro.

Cilindro di programma;

Var R, H, V: reale;

Ingresso procedura; (procedura di inserimento dati)

Writeln ("inserisci un valore di raggio");

writeln ("inserisci il valore dell'altezza");

Formula di procedura; { procedura calcoli volume }

V: = PI * sqr (R) * H;

Uscita della procedura; (procedura per la visualizzazione dei risultati)

writeln('V =', V);


Procedure C parametri

  • Nelle procedure è possibile descrivere costanti, variabili e altre procedure.
  • La sezione di descrizione nelle procedure ha la stessa struttura del programma principale.
  • Variabili locali- queste sono le variabili descritte all'interno della procedura.
  • Le variabili locali non sono disponibili al di fuori della procedura.
  • Le modifiche alle variabili locali all'interno di una procedura non influiscono sui valori delle variabili con gli stessi nomi, ma descritte al di fuori di questa procedura.

Procedure C parametri

  • Variabili globali

Esempio .

Programma zadacia;

Var a, b: intero;

Procedura locale;

Var a, x: carattere; Per procedure locale:

inizio variabile X - variabile locale

a: = '! '; (il programma non può cambiare il suo valore)

b: = b+1; variabile B - variabile globale

fine; (tutte le modifiche al valore di questa variabile nella procedura

BEGIN vengono salvati dopo essere usciti dalla procedura)

b: = 100; variabile un nel programma principale tipo intero,

locale; e in una procedura, è di tipo carattere. variabile a

writeln ('a =', a); il tipo intero non è disponibile nella procedura locale.

writeln ('b =', b);

Il risultato dell'esecuzione del programma: a = 0; b = 101.


); inizio; fine; "larghezza =" 640 "

Passaggio di parametri a Turbo Pascal

  • 1. Passaggio di parametri per valore
  • Parametri del valore variabili descritte dopo il nome della procedura tra parentesi. Non c'è nessuna parola di servizio Var prima di loro.
  • Formato di registrazione :

procedura (:

variabile);

fine ;


  • parametri formali .
  • parametri reali .

Esempio .

Parametri del programma;

Var m, n: intero;

Procedura summa (a, b: intero);

writeln('S =', S);

somma (m, n); o somma (100,10);

Variabili un e B sono parametri formali, e le variabili m e n - effettivo. Valori dei parametri effettivi m = 100 e n = 10 sono passati ai parametri formali un e B .

Le modifiche ai parametri effettivi si verificano solo all'interno della procedura e non li influenzano al di fuori di questa procedura.


; Variabile variabile:); inizio; fine; "larghezza =" 640 "

Passaggio di parametri a Turbo Pascal

  • 2. Passaggio di parametri per nome
  • Parametri variabili variabili descritte dopo il nome della procedura tra parentesi e precedute dalla parola di servizio Var.
  • Formato di registrazione :

procedura (:

variabile; Var

variabile :);

fine ;



b quindi min: = b; se min c allora min: = c; fine; BEGIN writeln ("inserisci tre numeri"); leggi ln (a1, b1, c1); writeln ("inserisci tre numeri"); leggi ln (a2, b2, c2); minimo (a1, b1, c1, min1); minimo (a2, b2, c2, min2); S: = minimo 1 + minimo 2; writeln('S =', S); FINE. Esempio. Date due triple di numeri: a 1, b 1, c 1 e a 2, b 2, c 2. Trovare il valore della somma: S = min (a1, b1, c1) + min (a2, b2, c2) "larghezza =" 640 "

Var a1, b1, c1, a2, b2, c2, min1, min2, S: reale;

Minimo di procedura (a, b, c: reale; Var min: reale);

se min b allora min: = b;

se min c allora min: = c;

writeln ("inserisci tre numeri");

leggi ln (a1, b1, c1);

writeln ("inserisci tre numeri");

leggi ln (a2, b2, c2);

minimo (a1, b1, c1, min1);

minimo (a2, b2, c2, min2);

S: = minimo 1 + minimo 2;

writeln('S =', S);

Esempio... Date due triple di numeri: a 1, b 1, c 1 e a 2, b 2, c 2. Trovare il valore della somma: S = min (a1, b1, c1) + min (a2, b2, c2)


FunzioneÈ una subroutine, il cui risultato è un valore.

  • Formato di registrazione :

funzione (:

fine ;

  • Nel corpo della funzione, al nome della funzione deve essere assegnato il risultato della sua esecuzione.
  • Quando si chiama una funzione, il suo nome con l'elenco dei parametri effettivi deve essere incluso nell'espressione come operando.

Programma vyrazenie;

modulo di funzione (a: reale): reale;

writeln ("inserisci il valore della variabile");

y: = modulo (x-3) + modulo (x + 6);

writeln ('y =', y);

Esempio . Calcola il valore dell'espressione: y = | x -3 | + | x +6 |

8 ° grado. Programmazione ABC Pascal

Insegnante di informatica NIS Uralsk FMN Zelenov Boris Aleksandrovich


  • Gli studenti utilizzano procedure e funzioni per risolvere i problemi
  • Gli studenti imparano a risolvere grandi problemi suddividendoli in problemi più piccoli

  • Forma il concetto di procedure e funzioni in un linguaggio di programmazione.

  • Gli studenti conoscono i concetti di "procedure" e "funzioni", definisce i parametri formali e attuali

Risultati attesi - Descrittori:

1.Conosce la definizione di "procedura"

2.Conosce la definizione di "funzione"

3.Definisce i parametri effettivi e formali

4.Distingue tra valore e parametri variabili

5. Trova una chiamata a una procedura o funzione nel codice del programma



Il piano standard di Elvira

1. Rimuovere i fogli

2. Innaffia i fiori

3. Lavabi

4. Pulisci il vetro

Fine dell'algoritmo

Come possiamo migliorare l'organizzazione di questo processo?




Argomento della lezione

Sottoprogrammi:


кі baғdarlama

Sottoprogramma

Procedura

Procedura

Parametrizzazione

Frasi utili:

Per trasferire i valori delle variabili a una procedura (funzione), vengono utilizzati i parametri effettivi ...

Per descrivere la procedura, si dovrebbe prima ...., Quindi ...


Il concetto di sottoprogramma

Definizione

Sottoprogrammaè una parte separata del programma, funzionalmente indipendente.

subroutine

Procedure


  • eliminare la necessità di ripetere ripetutamente frammenti simili nel testo del programma;
  • migliorare la struttura del programma, rendendolo più comprensibile;
  • aumentare la resistenza agli errori di programmazione e alle conseguenze impreviste durante le modifiche del programma.

  • Disegna una recinzione usando un linguaggio di programmazione

In questa attività, è possibile creare una procedura che eseguirà l'algoritmo per disegnare un frammento (staccionata) e quindi fare costantemente riferimento a questa procedura, modificando la posizione iniziale della penna


  • Descrivi come eseguire razionalmente il disegno di un albero di Natale in un ambiente di programmazione

  • Sono frammenti indipendenti di programmi, progettati in modo speciale e con un nome proprio.

Interazione tra programma principale e sottoprogramma



Diagramma a blocchi

  • Blocco chiamata sottoprogramma (procedura o funzione)

Nome della subroutine (procedura o funzione)


Diagramma a blocchi


La descrizione della procedura è la seguente:

procedura nome (elenco dei parametri formali); sezione descrizione inizio operatori fine ;


La descrizione della funzione è simile a:

funzione nome (elenco dei parametri formali): tipo restituito;

sezione descrizione inizio operatori fine ;


Posizione nel programma

Programma ...;

// Sezione Descrizione Usi, Const, Var, ...

procedura UN ;

inizio ....... fine ;

procedura B ;

inizio ........ fine ;

Funzione C ;

inizio ........ fine ;

// Programma principale

inizio ........ fine .


  • La differenza tra una funzione e una procedura è che il risultato dell'esecuzione degli operatori che formano il corpo della funzione è sempre un valore singolo, quindi la chiamata alla funzione può essere utilizzata nelle espressioni corrispondenti insieme a variabili e costanti.

Procedure

Funzioni

Può avere più risultati o eseguire alcune azioni

Ha un solo risultato, il cui tipo viene specificato separatamente quando viene dichiarata la funzione.

I risultati possono essere valori di qualsiasi tipo, array, stringhe, numeri, ecc.

Il risultato può essere solo un valore di tipo real, integer o char.

Il comando di chiamata di procedura è un comando separato che viene utilizzato in modo indipendente

Una chiamata di funzione può essere utilizzata solo come componente di un'espressione del tipo appropriato.

Il corpo di una funzione deve contenere almeno un operatore di assegnazione con il nome della funzione a sinistra.


b allora max: = a altrimenti max: = b; Numeromassimo: = massimo; fine; "larghezza =" 640 "

Procedura o funzione?

MaxNumber (a, b: intero): intero;

var max: intero;

Numeromassimo: = massimo;


b allora max: = a altrimenti max: = b; fine; "larghezza =" 640 "

Procedura o funzione?

MaxNumber (a, b: intero; var max: intero);

se ab allora max: = a altrimenti max: = b;


Procedura o funzione?

Cambia Colore (C1, C2: Parola);

TestoSfondoGround (C2)


Procedura o funzione?

Aggiungi (X, Y: Intero): Intero;


L'attuale

  • Indicato nella sezione principale del programma

Formale

  • Indicato in un sottoprogramma
  • Indicato in un sottoprogramma

La procedura viene richiamata da un operatore con il seguente formato:

nome della procedura (elenco dei parametri attuali);

  • Elenco dei parametri attuali- questo è il loro elenco separato da virgole.

  • Nello standard del linguaggio Pascal, i parametri possono essere passati in due modi: per valore e per riferimento. I parametri passati per valore sono chiamati parametri di valore passato per collegamento - parametri variabili... Questi ultimi differiscono per il fatto che la parola funzione var è posta prima di essi nell'intestazione della procedura (funzione).

Passando parametri. Parametri formali

Variabili

I valori

Parametri per valore

Parametri formali

Variabili


Parametri formali

Parametri per valore

  • Nel primo metodo (passando per valore), i valori dei parametri effettivi vengono copiati nei corrispondenti parametri formali.

Procedura

Nome della procedura (a, b: intero);

Programma principale

Se questi valori vengono modificati durante l'esecuzione della procedura (funzione), i dati iniziali (parametri effettivi) non possono cambiare.


Var c, d: intero;

  • Quando si passa per riferimento, tutti i cambiamenti che si verificano nel corpo di una procedura (funzione) con parametri formali portano a cambiamenti simili immediati nei corrispondenti parametri effettivi.

Procedura

Nome della procedura (a, b: intero, Var c: reale);

Programma principale

Le modifiche vengono apportate alle variabili del blocco chiamante, quindi i parametri di output vengono passati per riferimento. Quando vengono richiamati, i parametri effettivi corrispondenti possono essere solo variabili.


Scrivi:

1.Parametri effettivi ___________

Procedura Kvad (R: reale; var S: reale);

2.Parametri formali ___________

3.Valori dei parametri formali __________

5. Nome della procedura ___________

6.Riferimento alla procedura dal programma _____________________


Compito interattivo

http://www.bzfar.net/load/podprogrammy_procedury_i_funkcii_parametry/23-1-0-498


Elvira è la capoclasse. Dovrà elaborare un piano per eseguire una pulizia generale in classe: togliere i fogli, innaffiare i fiori, lavare i banchi, pulire i vetri. Come può organizzare al meglio il suo lavoro? Aiuta Elvira.


Il piano avanzato di Elvira

Sottoprogrammi:

Arsen - rimuove le carte

Mila - innaffiare i fiori

Vitaly - lava scrivanie

Indira - pulisce il vetro

1. Esegui Arsen

2. Esegui Mila

3. Esegui Vitaly

4. Esegui Indira

Fine dell'algoritmo


  • Quali nuove strutture del linguaggio di programmazione abbiamo incontrato oggi?
  • Dai un nome ai parametri appresi
  • Come vengono passati i parametri a una procedura?

  • Riepilogo della lezione
  • Trova le definizioni: "Variabili locali" e "Variabili globali"
  • Creare due attività in cui è possibile utilizzare procedure o funzioni.

  • Come definiresti l'argomento della lezione? (vieni con il tuo nome)
  • Cosa pensi che dovresti imparare nella prossima lezione?

Incontrarti

alla prossima lezione!

Diapositiva 1

Diapositiva 3

Subroutine: variabili globali e locali Tutte le subroutine devono essere descritte nella sezione descrizione. Ogni subroutine deve avere un nome. Le informazioni tra il programma principale ei sottoprogrammi vengono trasferite da parametri globali (variabili) che sono attivi in ​​qualsiasi parte del programma e hanno il nome descritto nel programma principale. I parametri locali (variabili) possono essere utilizzati all'interno di una subroutine - i loro nomi e valori sono significativi solo entro i limiti di questa subroutine e non sono disponibili per il programma chiamante

Diapositiva 4

Parametri formali e attuali Nella descrizione dei sottoprogrammi, i parametri sono indicati solo da nomi, quindi sono detti formali. Non hanno significato finché non viene chiamata la subroutine. Riservano spazio solo per i parametri effettivi, fissandone il numero e il tipo di dati. Tipi di parametri effettivi: i parametri di valore indicano quale valore deve essere assegnato a un particolare parametro di subroutine. Al termine del sottoprogramma, tornano ai valori precedenti, anche se sono stati modificati nel sottoprogramma. I parametri variabili nel sottoprogramma sostituiscono quelli formali, possono cambiare il loro valore durante l'esecuzione del sottoprogramma e salvare le modifiche all'uscita dal sottoprogramma (prima dei parametri della variabile c'è la parola chiave Var).

Diapositiva 5

Diapositiva 6

Descrizione della procedura del Programma Pr1; Const ... Tipo ... Var ... Procedura (); Parte descrittiva Inizio Corpo procedura Fine; Inizio ... (); ... fine. Quando la procedura viene chiamata, i parametri formali vengono sostituiti con quelli effettivi.

Diapositiva 7

La procedura per calcolare la somma di due numeri programma pr1; Utilizza crt; Var a, b, s: reale; procedura summa (x, y: reale; var z: reale); iniziare z: = x + y; fine; iniziare clrscr; writeln ("inserisci a, b"); leggi ln (a, b); somma (a, b, s); writeln ("la somma dei numeri", a: 3: 1, "e", b: 3: 1, "=", s: 3: 1); leggere; fine. x, y, z - parametri formali, variabili locali a, b, s - variabili globali a, b, s - parametri attuali х y z a b s Parametri valore Parametro variabile

Diapositiva 8

Diapositiva 9

Diapositiva 10

Valutare il valore dell'espressione a: = (3n! + 2m!) / (M + n)! Per trovare il fattoriale, che tipo di variabili è consigliabile utilizzare? programma pr2; Utilizza crt; Var m, n, x, y, z: intero; un vero; fatto di procedura (d: intero; var q: intero); var i: intero; inizio q: = 1; for i: = 1 a d do q: = q * i; fine; iniziare clrscr; writeln ("inserisci i valori n, m"); readln (n, m); fatto (n, x); fatto (m, y); fatto (m + n, z); a: = (3 * x + 2 * y) / z; writeln ("il valore dell'espressione at m =", m: 4, "and n =", n: 4, "uguale", a: 8: 3); leggere; fine. N! = 1 · 2 · 3 ·… · N

Diapositiva 11

Input output di elementi di un array unidimensionale La funzione Random (X) genera un numero casuale da 0 a X di tipo intero o reale (prima di chiamare la funzione, è necessario inizializzarla utilizzando la procedura Randomize). Se il parametro X non è specificato, il risultato sarà di tipo Real, compreso tra 0.0 e 1.0. Per ottenere un array di numeri interi casuali dall'intervallo random (BA + 1) + A Compito: eseguire l'input degli elementi di un array unidimensionale utilizzando un generatore di numeri casuali (intervallo di valori da -10 a 20) e emettere gli elementi come una procedura. Per A = -10 B = 20 casuale (20 - (- 10) +1) + (- 10)

Diapositiva 12

Diapositiva 13

Diapositiva 14

Descrizione della funzione Le funzioni sono progettate per calcolare un solo valore, 1. quindi la sua prima differenza è che una procedura può avere nuovi valori per più parametri e una funzione può averne uno solo (questo sarà il risultato). 2. La seconda differenza è nel titolo della funzione. Consiste nella parola FUNCTION, seguita dal nome della funzione, poi tra parentesi c'è un elenco di parametri formali, dopo di che viene scritto il tipo del risultato della funzione separato da due punti. 3. Il corpo della funzione deve contenere almeno un operatore di assegnazione, dove il nome della funzione è a sinistra e il suo valore è a destra. Funzione (): parte descrittiva Begin Corpo della funzione: =; Fine;

Diapositiva 15

Valutare il valore dell'espressione a: = (3n! + 2m!) / (M + n)! programma fn2; Utilizza crt; Var m, n: intero; un vero; funzione fact (d: intero): longint; var i: intero; q: longitudine; inizio q: = 1; for i: = 1 a d do q: = q * i; fatto: = q; fine; iniziare clrscr; writeln ("inserisci i valori n, m"); readln (n, m); a: = (3 * fatto (n) + 2 * fatto (m)) / fatto (m + n) ;; writeln ("il valore dell'espressione at m =", m: 4, "and n =", n: 4, "uguale", a: 8: 3); leggere; fine.

Diapositiva 16

Creare un programma che trovi ab, cioè la potenza b-esima del numero A, dove A e B sono numeri interi e B > 0, digitato da tastiera. Costruire un programma sostituendo la funzione con la procedura programma pr2; Utilizza crt; Var a, b: intero; c: longitudine; Funzione stepen (x, y: intero): longint; var i: intero; s: longint; inizio s: = 1; for i: = 1 a y do s: = s * x; Stepen: = s; fine; iniziare clrscr; writeln ("inserisci i valori a, b"); leggi ln (a, b); C: = passo (a, b); writeln ("s =", s); leggere; fine.

Diapositiva 17

Diapositiva 18

Il meccanismo per passare i parametri a funzioni e procedure Cosa verrà stampato dalla procedura e cosa dal programma? Variabili globali Variabili locali a b 3 3 -3 Indirizzo c a b c 48 Indirizzo c A: = b + 3 B: = 3 * a C: = a + b Stato C 24 5 8 Risposta

Diapositiva 19

Lo scopo della lezione

educativo

  • formare per gli studenti un sistema unificato di concetti relativi ai concetti di procedura e funzione;
  • insegnare come utilizzare le subroutine nella risoluzione di problemi in Pascal, nonché insegnare a capire quale tipo di subroutine è necessario quando si risolve un problema specifico;
  • mostrare le tecniche di base per l'utilizzo dei sottoprogrammi;

educativo

  • far emergere accuratezza, attenzione, organizzazione;
  • una cultura delle competenze informatiche;

sviluppando

  • sviluppare il pensiero logico, la cultura algoritmica degli studenti;
  • sviluppare conoscenze e abilità per comporre ed eseguire il debug di subroutine in linguaggio Pascal.

Gli studenti devono:

  • conoscere le regole per scrivere procedure senza parametri e con parametri;
  • conoscere le regole per scrivere le funzioni;
  • essere in grado di utilizzare procedure e funzioni per risolvere problemi semplici.

Durante le lezioni

I. Org. momento

II. Introduzione. Rilevanza

Assegna un compito su pezzi di carta ( Allegato 1 ). Trova replay.

A volte, in punti diversi del programma, è necessario eseguire praticamente le stesse sequenze di azioni con dati iniziali diversi. Tali sequenze di azioni possono essere formalizzate nella forma dei cosiddetti sottoprogrammi (dall'inglese, sottoprogramma) - raggruppare le istruzioni in un blocco a cui è possibile fare riferimento per nome, più di una volta.

Le subroutine riducono il testo del programma, riducono significativamente il tempo della loro esecuzione, semplificano la vita ai programmatori che possono creare programmi in modo modulare, ovvero assemblare un programma complesso da pezzi completi di componenti più semplici. Ciò consente a un gruppo di programmatori di creare programmi di grandi dimensioni e a un gruppo di scolari di sviluppare e implementare qualsiasi progetto globale.

I sottoprogrammi sono suddivisi in procedure e funzioni.

Le procedure e le funzioni integrate (standard) sono parte lingua e può essere chiamato per nome senza descrizione preventiva. Per esempio , abs, sqrt, ln, sin ... - funzioni (restituire un risultato), readln, scrivere ... - procedure (non restituire un risultato). La loro presenza facilita notevolmente lo sviluppo di programmi applicativi. Tuttavia, nella maggior parte dei casi, alcuni specifica le azioni per questo programma non trovano analoghi diretti nelle librerie Turbo Pascal, e quindi il programmatore deve svilupparne di proprie non standard procedure e funzioni.

III. Spiegazione del nuovo materiale

Le procedure utente sono scritte da soli programmatore secondo la sintassi del linguaggio in la sezione di descrizione del sottoprogramma.

La struttura della procedura ripete la struttura del programma, è un "programma in miniatura" - è anche rappresentato dall'intestazione e dal corpo.

L'intestazione è costituita dalla parola riservata alla procedura, un identificatore (nome) procedure.

VAR ... // sezione che descrive le variabili del programma principale

procedura NomeProcedura;

// corpo del programma principale

Viene registrato un bando di procedura per la successiva esecuzione nel corpo del programma principale.

Esempio 1. Il programma per il calcolo dell'area e del perimetro.

Vantaggi dei sottoprogrammi:

  • Programmi scritti con subroutine più facile da testare ed eseguire il debug, hanno un più chiaro struttura logica.
  • La natura indipendente dei sottoprogrammi permette di affidare la loro compilazione a vari programmatori. Questo separa il lavoro di programmazione e quindi accelera il suo completamento;
  • L'uso delle subroutine consente di risparmiare memoria. La memoria per la memorizzazione delle variabili utilizzate in una subroutine viene allocata solo per la durata della sua operazione e viene rilasciata non appena termina la sua esecuzione.

Esempio 2. L'utente inserisce i due lati dei tre rettangoli. Mostra la loro area.

Puoi risolvere il problema in questo modo:

per i: = da 1 a 3 do

writeln ("Inserisci a e b:");

writeln ('Area =', a * b);

È considerato un buon stile di programmazione utilizzare le procedure. È necessaria una procedura che calcoli l'area di un rettangolo. Ecco come apparirà schematicamente il programma principale:

calcolo

calcolo

calcolo

La procedura di testo è già presente (vedi esempio 1). Creiamo una seconda procedura che calcoli l'area. Ma per calcolare S, devi conoscere 2 lati, quindi la procedura deve mostrare quali lati deve moltiplicare.

procedura pl (c, d: intero);

writeln ('area di un rettangolo con lati', c, '', d, '=', S);

Un parametro è una variabile a cui viene assegnato un valore. esiste parametri formali definito nell'intestazione della subroutine, e parametri reali - espressioni che impostano valori specifici quando si fa riferimento a una subroutine.

La procedura verrà eseguita se la chiami per nome e specifichi i parametri effettivi , separati da virgole e racchiusi tra parentesi:

I parametri effettivi devono coincidere per tipo e quantità con quelli formali.

Quindi il programma principale:

per i: = da 1 a 3 do

Commento. Quando si risolve questo problema, è necessario controllare i numeri inseriti dall'utente (non devono essere negativi, altrimenti il ​​programma verrà interrotto).

Componiamo la procedura di verifica:

errore di procedura (f, g: intero);

se (f<0) or (g<0) then begin

writeln ("i lati di un rettangolo non possono essere negativi");

fermarsi; // interruzione del programma

Programma finale - Appendice 4

Quindi il formato della procedura:

Procedura<имя>(parametri formali);

<операторы>;

Esempio 3. Crea un programma per scambiare i posti di due numeri con = 5 e d = 7.

programma obmenDan;

var c, d: intero;

procedura obmen (a, b: intero);

m: = un; a: = b; b: = m;

writeln ("Inserisci 2 numeri:");

writeln (c, "", d);

Dopo aver avviato il programma, puoi vedere che i parametri formali (nella procedura) sono cambiati e quelli effettivi (che vengono utilizzati nel programma principale) non sono cambiati. Considera un'immagine che mostra parte della RAM:

1) quando si chiama la procedura obmen con due parametri 5 e 7, i numeri 5 e 7 vengono posti anche nelle variabili a e b, rispettivamente:

3) ma nelle variabili c e d i dati non sono cambiati, poiché sono in altre posizioni di memoria.

Per le variabili c e d, a e b riferiti alle stesse locazioni di memoria (se i valori di a e b cambiano, allora i valori di entrambi c, d cambieranno) quando si descrivono i parametri formali, aggiungere la parola VAR prima delle variabili richieste:

procedura obmen (var a, b: intero);

Modifica il programma obmenDan:

Errore dovuto alla var. I numeri sono costanti che non possono essere modificate in una procedura.

Esempio 4. Trova l'area di un cerchio usando una procedura che calcola solo, ma non visualizza il risultato sullo schermo.

cerchio procedurale (r: reale);

La procedura dovrebbe restituire un risultato:

cerchio procedurale (r: reale; var S: reale);

readln (a, e);

Commento: Una variabile nella procedura S viene utilizzata per restituire i risultati della procedura al programma principale. Quando cambia, cambia anche il parametro attuale nel programma chiamante, ad es. variabile e.

Più spesso, per questo in Pascal, invece delle procedure, vengono utilizzate le funzioni (subroutine che restituiscono qualcosa).

La funzione è la stessa della procedura, ma ci sono due differenze.

  • La funzione passa il risultato del suo lavoro al programma - l'unico valore, il cui vettore è il nome della sua funzione.
  • Il nome della funzione può essere incluso nell'espressione come operando. La funzione restituisce il risultato al momento della chiamata.

Ad esempio, sqr (x) - quadra il valore di x e restituisce il valore calcolato del quadrato del numero x al punto di chiamata: y: = sqr (x);

Una funzione definita dall'utente è costituita da un'intestazione e da un corpo della funzione. La struttura del corpo della funzione è simile al programma. Descrizione di etichette, costanti, tipi, ecc. valida solo nell'ambito di questa procedura.

Funzione<имя>(parametri formali):<тип результата>;

<операторы>;

La sezione dell'operatore deve contenere almeno un operatore che assegna un valore al nome della funzione. Il risultato dell'ultima assegnazione viene restituito al punto di chiamata.

Esempio 5. Rifacciamo il problema sull'area di un cerchio.

cerchio di funzioni (r: reale): reale;

a: = cerchio (5); (assegnazione OBBLIGATORIA)

Esempio 6. Trova 1! +2! +… + N!

Usiamo la funzione di trovare il fattoriale, perché lo diamo all'input e otteniamo il risultato.

funzione fact (a: intero): intero;

per i: = 1 a do

Nella riga fact: = fact * I;

il compilatore troverà un errore perché fact deve essere chiamato con parametri. Pertanto, di solito viene introdotta una variabile aggiuntiva in cui viene inserito il risultato. E poi questo risultato viene assegnato alla variabile fact:

fattoriale del programma;

var somma, n, j: intero;

funzione fact (a: intero): intero;

var i, d: intero;

per i: = 1 a do

per j: = da 1 a n do

somma: = somma + fatto (j);

IV. Riepilogo della lezione

In questo momento, il processo di programmazione si trasforma in produzione di software industriale basato tecnologie di programmazione... La maggior parte degli esperti è dell'opinione che metodo di progettazione del programma dall'alto verso il basso più conveniente per risolvere problemi complessi. In primo luogo, il compito è definito in termini generali, quindi c'è un graduale affinamento della sua struttura. Nella fase successiva, ogni sottoattività, a sua volta, viene suddivisa in una serie di altre. La soluzione di un frammento separato di un problema complesso è un blocco di programma indipendente: una subroutine.

V. Compiti a casa

Risolvere compiti (per iscritto):

  1. Scrivere una procedura che sostituisca tutte le lettere a con * nella stringa inserita.
  2. Vengono fornite due frasi. Trova il numero totale di lettere "n" in esse. (Definire una funzione per calcolare il numero di "n" lettere in una frase.)