Presentazione "Linguaggio di programmazione Pascal. Editor di testo del linguaggio.". Nozioni di base sulla programmazione Pascal Presentazione su Pascal

Nikolaus Wirth Ma pensare che il Pascal sia una lingua esclusivamente didattica sarebbe sbagliato. Ecco cosa ha detto a questo proposito N. Wirth (1984): “Si è sostenuto che Pascal sia stato sviluppato come linguaggio per l'insegnamento. Sebbene questa affermazione sia vera, il suo utilizzo nell’insegnamento non era l’unico scopo. In effetti, non credo nel successo dell’utilizzo di tali strumenti e tecniche durante la formazione che non possono essere utilizzati per risolvere alcuni problemi pratici”. * *


Linguaggio di programmazione Pascal Da allora, Pascal è diventato sempre più popolare, non solo come linguaggio per insegnare i principi della programmazione, ma anche come mezzo per creare programmi piuttosto complessi. Software. Nella sua forma originale, Pascal aveva capacità piuttosto limitate, ma la versione estesa di questo linguaggio, Turbo Pascal, è un potente linguaggio di programmazione.


Perchè PASCAL? Il linguaggio di programmazione Pascal prende il nome dallo scienziato francese Blaise Pascal, che inventò la prima macchina calcolatrice meccanica nel 1642. Era un sistema di ruote dentate interagenti, ciascuna delle quali corrispondeva a una cifra di un numero decimale e conteneva i numeri da 0 a 9. Quando la ruota faceva un giro completo, quella successiva si spostava di una cifra. La macchina di Pascal era una macchina sommatrice.


Informazioni di base sui linguaggi di programmazione La lingua è un sistema di segni. Il linguaggio informatico (linguaggio macchina) è un sistema di segni binari. Pertanto, affinché un computer possa comprendere un programma scritto, deve essere tradotto in un linguaggio comprensibile dal computer. Questo processo di traduzione è chiamato traduzione.




Ambiente integrato Turbo Pascal-7.0 Borland International ha svolto un ruolo enorme nella distribuzione di massa di Pascal. È riuscita a creare il famoso ambiente di sviluppo Turbo. Questo è stato un enorme passo avanti nel rendere più semplice la programmazione. Perchè Turbo? Turbo in slang inglese significa accelerazione. Il compilatore incluso con Turbo Pascal traduce molto rapidamente un programma da un linguaggio di programmazione in codice macchina.




Mezzi linguistici di base I simboli linguistici sono segni elementari utilizzati nella composizione dei testi. L'alfabeto di una lingua è un insieme di tali simboli. L'alfabeto della lingua Turbo Pascal 7.0 include: tutte le lettere latine maiuscole e minuscole, numeri arabi (0 – 9), simboli + - * / =,. ; : _ () ( ) e altre parole di servizio (riservate).


Per registrare comandi, nomi di funzioni e termini esplicativi in ​​Turbo Pascal 7.0, esiste un insieme di parole rigorosamente definite chiamate servizio o riservato (queste sono abbreviazioni mnemoniche inglesi). Le parole di servizio sono divise in tre gruppi: operatori (READ, WRITELN, ecc.) nomi di funzioni (SIN, COS, ecc.) parole chiave (VAR, BEGIN, END, ecc.) Strumenti linguistici di base


Il nome di una quantità è la sua designazione; è una parola composta da lettere, numeri e trattini bassi, che inizia con una lettera. Numeri: interi, reali: virgola fissa (-1,23; 654,2), virgola mobile (2, 437,). Sei operazioni: + addizione, - sottrazione, / divisione, * moltiplicazione, ricerca mod resto, divisione div.


Un'espressione aritmetica è costruita da nomi, numeri, simboli di operazioni aritmetiche, funzioni matematiche. Per indicare l'ordine delle azioni vengono utilizzate solo le parentesi. Per la quadratura viene utilizzata la notazione sqr(x). Per estrarre la radice quadrata, utilizzare la notazione sqrt(x). Il modulo è indicato con abs(x).


Operatore di assegnazione Nome variabile:= espressione aritmetica. x:= 3,24 oppure x:= x+4. Tipo di variabile 1. Se la variabile a sinistra è di tipo reale, l'espressione aritmetica può essere di tipo intero o reale. 2.Se la variabile a sinistra è di tipo intero, l'espressione aritmetica è solo un numero intero.


Struttura del programma in Pascal Parte 1 – descrizione dei dati e degli operatori. Parte 2 – blocco di programma. Vista generale del programma: Program (nome del programma) label (elenco delle etichette) const (elenco dei valori costanti) type (descrizioni dei tipi di dati complessi) var (descrizioni dei dati del programma) Begin (inizio di un blocco di programma) (algoritmo) FINE. (fine del programma)


Nome del programma: non più di 8 caratteri, iniziando con una lettera. terminare con un punto. La parte descrittiva è composta da 4 sezioni: etichette, costanti, nomi e tipi di variabili. var nome e tipo di variabile: integer (intero), real (real). Ad esempio: var i, j: intero; x: reale; La descrizione di ciascun tipo termina con un punto e virgola. Il blocco di programma contiene istruzioni che descrivono l'algoritmo per risolvere il problema.


Operatori di input e output: read (lista di nomi) – interrompe il programma e attende che l'utente digiti i numeri sulla tastiera (separati da uno spazio) e prema INVIO. Ad esempio: read(i, j); Dopo che questo operatore ha funzionato, il cursore si trova dietro l'ultimo numero ma non viene spostato su una nuova riga. Per spostare il cursore su una nuova riga dopo aver immesso i dati, è necessario utilizzare l'operatore readln(elenco di nomi). write (elenco output) – scrive i dati sullo schermo. Elenco output: nomi separati da virgole dei risultati dei calcoli e testi esplicativi tra apostrofi. Ad esempio: write(x=, x); Sullo schermo verrà stampato un numero a virgola fissa. Ad esempio: write(x=, x:6:2); sullo schermo verrà visualizzato un numero di 6 cifre, di cui due dopo la virgola, (x =). Il cursore viene spostato su una nuova riga utilizzando l'operatore di output vuoto writeln. L'operatore di input vuoto readln






Lavorando nel sistema Turbo Pascal Alt + F10 – Menu File – Nuovo – crea nuovo file Invio - va posizionato alla fine di ogni riga Ctrl + Y - cancella una riga Invio - inserisce una riga Per eseguire il programma, selezionare Esegui dal menu Traduttore - traduce il programma da Pascal al linguaggio macchina e cerca errori di sintassi. 1.Se vengono rilevati errori, tornerai all'editor, il cursore punterà sull'errore. 2.Se non vengono rilevati errori, il programma viene eseguito










A volte dopo le parole THEN e ELSE è necessario eseguire non una, ma diverse istruzioni. Quindi questi operatori sono racchiusi tra parentesi operatori. La parentesi di apertura è la parola BEGIN, la parentesi di chiusura è la parola END. Non c'è il punto e virgola prima della parola ELSE. Si consiglia di scrivere ciascuna coppia BEGIN – END in una colonna. IF condizione THEN inizia l'istruzione 1; operatore 2; istruzione N fine ELSE inizio istruzione 1; operatore 2; operatore M fine ;




Programma E3; var a,b: intero; iniziare a scrivere (inserire due numeri interi separati da uno spazio, quindi premere); leggiln(a,b); se a mod 2 = 0 allora writeln (a – pari) altrimenti writeln (a – dispari); se b mod 2 = 0 allora writeln (b – pari) altrimenti writeln (b – dispari); readlnend.


3, se a>0 6, se a 0 6, se a 0 6, se a 0 6, se a0 6, se a title="3, se a>0 6, se a


Programma E31; var a,y: reale; iniziare a scrivere (inserire un numero quindi premere); leggiln(a); se a >0 allora y:=3 altrimenti y:=6; scrivi(y=,y); readlnend. 0 allora y:=3 altrimenti y:=6; scrivi(y=,y); readlnend."> 0 then y:=3 else y:=6; write (y=,y); readln end."> 0 then y:=3 else y:=6; write (y=,y); readln end." title="Programma E31; var a,y: reale; iniziare a scrivere (inserire un numero quindi premere); leggiln(a); se a >0 allora y:=3 altrimenti y:=6; scrivi(y=,y); readlnend."> title="Programma E31; var a,y: reale; iniziare a scrivere (inserire un numero quindi premere); leggiln(a); se a >0 allora y:=3 altrimenti y:=6; scrivi(y=,y); readlnend."> !}


A+b, se a>b a*b, se a b a*b, se a b a*b, se a b a*b, se ab a*b, se a title="a+b, se a>b a* b se a


Programma E32; var a,b,x: reale; iniziare a scrivere (inserire due numeri separati da uno spazio quindi premere); leggiln(a); se a >b allora x:=a+b altrimenti x:=a*b; scrivi(x=,x); readlnend. b allora x:=a+b altrimenti x:=a*b; scrivi(x=,x); readlnend."> b then x:=a+b else x:=a*b; write (x=,x); readln end."> b then x:=a+b else x:=a*b; write (x=,x); readln end." title="Programma E32; var a,b,x: reale; iniziare a scrivere (inserire due numeri separati da uno spazio quindi premere); leggiln(a); se a >b allora x:=a+b altrimenti x:=a*b; scrivi(x=,x); readlnend."> title="Programma E32; var a,b,x: reale; iniziare a scrivere (inserire due numeri separati da uno spazio quindi premere); leggiln(a); se a >b allora x:=a+b altrimenti x:=a*b; scrivi(x=,x); readlnend."> !}




Organizzazione dei cicli Le azioni ripetute nella programmazione sono chiamate loop Operatore di salto incondizionato goto n, n - intero (non più di 4 caratteri), etichetta. L'etichetta viene ripetuta 3 volte: 1.Nella sezione Etichetta; 2.Nell'istruzione goto; 3.Davanti all'operatore a cui viene effettuata una transizione incondizionata.


Organizzazione di cicli utilizzando operatori di salto condizionali e incondizionati. Compito. Trova la somma dei primi venti numeri. (1+2+3….+20). a ……………20 S ………….


Algoritmo di Euclide: ogni volta diminuiremo il numero più grande del valore di quello più piccolo finché entrambi i numeri non saranno uguali. Ad esempio: Iniziale 1 passo 2 passo 3 passo a= 25 b= MCD(a,b)=5


Programma E5; var a, b: intero; iniziare a scrivere (gcd=,a); leggere; FINE. scrivere (inserire due numeri naturali separati da uno spazio); leggiln(a,b); while ab fai se a>b allora a:=a-b else b:=b-a; b poi a:=a-b altro b:=b-a;"> b poi a:=a-b altro b:=b-a;"> b poi a:=a-b altro b:=b-a;" title="Programma E5 ; var a, b: intero; start write (GCD=,a); readln; end. write (inserisci due numeri naturali separati da uno spazio); readln (a,b); while ab do se a>b then a: =a-b altrimenti b:=b-a;"> title="Programma E5; var a, b: intero; iniziare a scrivere (gcd=,a); leggere; FINE. scrivere (inserire due numeri naturali separati da uno spazio); leggiln(a,b); while ab fai se a>b allora a:=a-b else b:=b-a;"> !}




B allora a:=a-b; se b>a allora b:=b-a scrivi (Inserisci due numeri naturali separati da uno spazio); readln (a,b);" title="Program E6; var a, b: intero; inizio scrittura (HOD=,a); readln; end. ripeti fino a a=b; se a>b allora a :=a-b; se b>a allora b:=b-a scrivi (inserisci due numeri naturali separati da uno spazio); readln (a,b);" class="link_thumb"> 40 !} Programma E6; var a, b: intero; iniziare a scrivere (HOD=,a); leggere; FINE. ripetere finché a=b; se a>b allora a:=a-b; se b>a allora b:=b-a scrivi (Inserisci due numeri naturali separati da uno spazio); leggiln(a,b); b allora a:=a-b; se b>a allora b:=b-a scrivi (Inserisci due numeri naturali separati da uno spazio); readln (a,b);"> b allora a:=a-b; se b>a allora b:=b-a scrivi (inserisci due numeri naturali separati da uno spazio); readln (a,b);"> b allora a: =a-b; se b>a allora b:=b-a scrivi (Inserisci due numeri naturali separati da uno spazio); readln (a,b);" title="Program E6; var a, b: intero; inizio scrittura (HOD=,a); readln; end. ripeti fino a a=b; se a>b allora a :=a-b; se b>a allora b:=b-a scrivi (inserisci due numeri naturali separati da uno spazio); readln (a,b);"> title="Programma E6; var a, b: intero; iniziare a scrivere (HOD=,a); leggere; FINE. ripetere finché a=b; se a>b allora a:=a-b; se b>a allora b:=b-a scrivi (Inserisci due numeri naturali separati da uno spazio); leggiln(a,b);"> !}




Argomento della lezione: "Cicli (ripetizione) nei programmi"

1) Ripetere e consolidare la conoscenza dell'elaborazione di programmi lineari e ramificati; 2) Impara a comporre programmi utilizzando un operatore ciclico - FOR i:=1 TO n DO Operatori di inizio (corpo del loop) end ; 3) Applicare gli operatori nella risoluzione di problemi standard. Lo scopo della lezione:

Compilare le parti mancanti: Programma SQL; Var A,B,C,D, XI, X2: ??? ; Begin Writeln ("Inserisci i coefficienti dell'equazione quadratica '); Readln (???); D:=B*B-4*A*C; If D

Domande per il gruppo: 1) Qual è la differenza tra programmi ramificati e programmi lineari? 2) Quali operatori vengono utilizzati per effettuare le selezioni nei programmi? 3) inizio….fine – Cos'è questo? Quali sono le regole di utilizzo del programma?

1) Operatori di input/output; 2) Operatori di selezione; 3) a:=a+3 – cosa succederà? 4) Elenca i tipi di dati; 5) Rimuovere AND,OR,END, NOT,IF non necessari; 6) ; - cosa significa? 7) Come viene indicata la fine del programma? 8) Elencare le operazioni aritmetiche. 9) Quanto fa 120 mod 65 = ? 10) Operatori di ciclo.

Disporre di conseguenza: 1. Leggi 2. Fine 3. Inizio 4. Intero 5. ; 6. Se... Allora 7. := 8. Ingresso 9. Fine 10. Interi 11. Assegna 12. Azione successiva 13. Inizio 14. Se... allora

Il risultato è davvero inferiore a 3? a:= 7 b:= - 10 a:=a*(- 7) b:=159 a:=b+a

Trova 5 errori nel programma: Program krug ; VAR Pi, r, S: reale; Pi:=3.14, WRITELN('vvedite radiuc r='), READ(r); S=Pi*r*r; WRITELN('Ploshad kruga S= ', S) fine

Cerchio del programma; VAR Pi, r, S: reale; Begin Pi:=3.14 , WRITELN('vvedite radiuc r=') , READ(r); S: =Pi*r*r; WRITELN('Ploshad kruga S= ', S) end .

Compito n. 1 Dato un numero intero N, determina se è pari o dispari. 2, 4, 6, … sono pari, perché sono divisi senza resto per 2(N mod 2 =0) 1, 3, 7, ... - dispari, perché sono divisi per 2 con resto 1(N mod 2 =1)

Algoritmo Algoritmo Chislo ; variabile N: numeri interi; start Output('vvedite chislo'); Immettere (N) ; SE N mod 2 =0 T O Uscita(N,'- chetnoe'); SE N mod 2 =1 T O Uscita(N,'- nechetnoe'); FINE.

Problema n. 2 Dato un numero intero a due cifre N (DE), dove D è il numero di decine, E è il numero di unità. Determina se la somma delle cifre di questo numero sarà uguale a 10. Esempio: 28 avrà la somma S = 2 + 8 = 10, ma 27 non avrà S = 2 + 7 = 9. Conteremo le decine: D = N div 10 , e unità: E= N mod 10

Algoritmo Algoritmo Chislo ; variabili N,E,D,S: intere; start Output('vvedite chislo'); Immettere (N) ; E:=N mod 10; D:=N div 10; S:=E+D; IF S = 10 T O Output(‘summa= 10’) Altrimenti (‘summa10‘); FINE.

Definizione: programmi in cui lo stesso tipo di azioni vengono ripetute più volte - programmi ciclici (con ripetizione).

Compito: Dati 100 numeri naturali da 1 a 100 (1,2,3, ... 99,100) Calcolare la loro somma e restituirla alla variabile S.

Somma dell'algoritmo; Variabile i,S: numeri interi; Inizio S:=0; Per i:=da 1 a 100 ripeti Inizio S:= S + i corpo Fine; uscita ciclo (S) Fine.

sommario del programma; VAR i, S: intero; Inizia S:=0; FOR i:=1 TO 100 DO inizio S:=S+i fine corpo; fine del ciclo WRITE(S).

sommario del programma; VAR i, S: intero; Inizia S:=0; FOR i:=1 TO 100 DO inizia S:=S+i ; corpo WRITE('S', i, '=', s) fine del ciclo; FINE.

Il corpo del ciclo sono le stesse azioni che devono essere ripetute molte volte. Il corpo del ciclo è racchiuso tra parentesi quadre. Begin..... End;

ALT + F9 - correggi gli errori CTRL + F9 - esegui il programma ALT + F5 - visualizza il risultato

Compito: 1) Visualizza una colonna della tabella di moltiplicazione di qualsiasi numero intero N per i numeri da 1 a 10. Esempio: N = 5, quindi la colonna sarà così: 1*5=5 2*5=10 3*5 =15 i * N = P , dove i varia da …… .. 1…10 10*5=50

Compiti a casa: commento sul programma per il problema “Sulla colonna della tavola pitagorica”

GRAZIE PER L'ATTENZIONE!

  1. 1.Pascal
  2. 2. Pascal Pascal è stato sviluppato dallo scienziato svizzero Niklaus Wirth. Il Pascal è considerato lo strumento più importante per l'insegnamento dei metodi di programmazione strutturata ed è stato introdotto nei corsi delle scuole per gli specializzandi in informatica dal 1983. Successivamente, il linguaggio Pascal è stato migliorato e ha acquisito nuove proprietà che differivano dalla versione dell’autore.
  3. 3. Il linguaggio Pascal è relativamente facile da imparare, abbastanza chiaro e logico e, essendo il primo linguaggio di programmazione appreso, insegna un buon stile.
  4. 4. Come i linguaggi naturali, ogni linguaggio di programmazione ha il proprio stile e le proprie regole. La sintassi di un linguaggio di programmazione è un insieme di regole che determinano come costruire programmi corretti partendo da caratteri alfabetici.
  5. 5. Alfabeto pascal 26 lettere minuscole latine e 26 lettere maiuscole latine: A B C D E F G H I J K L M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z underscore _ 10 cifre: 0 1 2 3 4 5 6 7 8 9 segni di operazione: + - * / =<> < > <= >= := @ delimitatori (delimitatori): . , " () (. .) ( ) (* *).. : ; specificatori: ^ # $
  6. 6. Struttura del programma (1. intestazione del programma) programma Nome_programma; (2. sezione per specificare i moduli utilizzati) uses List_of_Used_Modules; (3. Sezione Descrizioni) label Etichetta_descrizioni; const Descrizioni_costanti; digitare TypeDescriptions; var Variabile_Descrizioni; procedura Descrizioni_di_procedure_e_funzioni; funzione esporta Descrizioni_di_Nomi_Esportati; (4. Sezione istruzioni) inizio Istruzioni fine.
  7. 7. Struttura del programma semplificata (1. intestazione del programma) programma Nome_programma; (2. sezione per specificare i moduli utilizzati) uses List_of_Used_Modules; (3. Sezione Descrizioni) const Constant_Descriptions; var Variabile_Descrizioni; (4. Sezione istruzioni) inizio Istruzioni del programma fine.
  8. 8. I comandi del linguaggio di programmazione sono chiamati operatori.Il separatore dell'operatore in Pascal è; (punto e virgola)
  9. 9. Un commento è un frammento di testo del programma delimitato da caratteri ( ). I commenti nel programma svolgono una funzione informativa. (Il mio primo programma) programma prima; Begin writeln('Ciao mondo!') end.
  10. 10. Esempio: perimetro di un programma rettangolo perimetro; (titolo del programma) utilizza crt; (crt – necessario per pulire lo schermo) var a,b:integer; (dichiarazione delle variabili) P:intero; Begin (inizio del programma) clrscr; (schermo chiaro) a:=12; (assegniamo alla variabile a il valore 12) b:=7; (assegnare alla variabile b il valore 7) P:=2*(a+b); (assegnamo il valore dell'espressione a P) write("P = ",P); (visualizzare il valore P) fine. (fine del programma)
  11. 11. Il programma si occupa dei dati nel suo lavoro. Alcuni dati vengono impostati prima che il programma inizi l'esecuzione e, dopo l'avvio, i loro valori rimangono invariati durante il funzionamento del programma. Queste sono costanti. Altri dati potrebbero cambiare durante l'esecuzione del programma. Si chiamano variabili.
  12. 12. La differenza tra una variabile e una costante è abbastanza evidente: durante l'esecuzione di un programma, il valore di una variabile può essere modificato, ma il valore di una costante no. ti
  13. 13. Per variabile intendiamo una cella (“box”) dove il computer può scrivere (“aggiungere”) dati. Per cellula intendiamo infatti un “pezzo di memoria” in cui sono archiviate le informazioni. Per utilizzare le informazioni memorizzate in una cella, ciascuna cella deve avere il proprio nome o, come spesso si dice, un identificatore. a b somma 5 3 8
  14. 14. Identificatori. I nomi (identificatori) sono elementi del linguaggio: costanti, etichette, tipi, variabili, procedure, funzioni, moduli, oggetti. Un identificatore è una sequenza di lettere, numeri e trattini bassi che inizia con una lettera o un carattere di sottolineatura e non contiene spazi.
  15. 15. Il nome può contenere qualsiasi numero di caratteri, ma 63 caratteri sono significativi. Nel linguaggio PASCAL non è consentito utilizzare parole funzione e nomi standard che denominino costanti standard, tipi, procedure, funzioni e file come nomi. Esempi di nomi di linguaggi PASCAL: A b12 r1m SIGMA gamma I80_86
  16. 16. In Pascal, la differenza tra lettere minuscole e maiuscole viene ignorata, quindi NaMe e nome sono la stessa cosa.
  17. 17. Una parola funzionale è una parola che nel linguaggio PASCAL ha un certo significato semantico che non può essere modificato. A volte viene chiamata parola chiave.
  18. 18. Parole di servizio (riservate): ABSOLUTE EXPORTS LIBRARY SET ASSEMBLER EXTERNAL MOD SHL E FAR NAME SHR ARRAY FILE NIL STRING ASM FOR NEAR THEN ASSEMBLER FORWARD NOT BEGIN FUNZIONE OGGETTO TIPO CASE GOTO OF UNIT CONST IF OR UNTIL CONSTRUCTOR IMPLEMENTATION PACKED USA DESTRUCTOR IN PROCEDURA INDICE VAR DIV PRIVATO VIRTUALE DO PROGRAMMA EREDITATO MENTRE DOWNTO INLINE PUBBLICO CON INTERFACCIA ELSE REGISTRA XOR FINE INTERRUZIONE RIPETI ESPORTA ETICHETTA RESIDENTE
  19. 19. Gli spazi non possono essere utilizzati all'interno di caratteri doppi o parole riservate. Ci sono nomi che si chiamano standard. sin cos real true A differenza delle parole funzione, il significato dei nomi standard può essere ridefinito dal programmatore.
  20. 20. Questa è un'indicazione al compilatore quanta memoria dovrebbe essere riservata alle variabili del nostro programma. In un programma compilato, lo spazio di memoria viene allocato per tutte le variabili e a tutte le variabili vengono assegnati valori zero. Tutte le variabili utilizzate nel programma devono essere dichiarate nella sezione di descrizione delle variabili dopo la parola riservata var. Dichiarazione di variabili
  21. 21. I dati sono di diversi tipi...
  22. 22. Tipi di dati I nomi dei tipi standard sono identificatori predefiniti e sono validi ovunque nel programma. Sono descritti nel modulo Sistema standard, che per impostazione predefinita è incluso nell'elenco dei moduli utilizzati. I tipi definiti dall'utente sono tipi aggiuntivi (semplici e strutturati) definiti dall'utente.
  23. 23. Tipi di dati standard 1. gruppo di tipi interi (Shortint, Integer, Longint, Byte, Word); 2. gruppo di tipologie reali (Single, Real, Double, Extended, Comp); 3. logico (tipi booleani)(Boolean, ByteBool, WordBool, LongBool); 4. carattere(Carattere); 5. stringa (Stringa); 6. indice (Puntatore); 7. tipo di testo (Testo).
  24. 24. Gruppo di tipi interi Nome del tipo Tipo Intervallo di valori memoria richiesta Intero breve con segno Shortint -128 .. 127 1 byte Intero con segno Integer -32768 .. 32767 2 byte Intero lungo con segno Longint -2147483648 .. 2147483647 4 byte Intero breve senza segno con segno Byte 0 .. 255 1 byte Intero senza segno Parola 0 .. 65535 2 byte
  25. 25. Var b: byte; summa, conteggio: intero; Dichiarazione di variabili di tipo intero summa:= -365; Utilizzo
  26. 26. I numeri nel linguaggio PASCAL sono solitamente scritti nel sistema numerico decimale. Il segno positivo del numero può essere omesso. I numeri interi sono scritti nella forma senza punto decimale, ad esempio: 217 -45 8954 +483
  27. 27. Il gruppo dei tipi reali definisce quei dati che sono realizzati da un sottoinsieme di numeri reali. Var A: reale; iniziare... A:=0,65; ...FINE.
  28. 28. Nome del tipo Tipo Intervallo di valori Numero di cifre della mantissa Dimensione (byte) Numero reale a precisione singola Real 2.9e-39 .. 1.7e+38 11 6 Numero reale a precisione singola 1.5e-45 .. 3.4e+38 7 4 Precisione doppia numero reale Doppio 5.0e-324 .. 1.7e+308 15 8 Numero reale ad alta precisione Esteso 3.4e-4932 .. 1.1e+4932 19 10 Numero reale intero Comp -9.2e+18 .. 9.2e+18 19 8
  29. 29. I numeri reali sono scritti nella forma con un punto decimale o nella forma utilizzando l'ordine decimale, che è rappresentato dalla lettera E: 28.6 0.65 -0.018 4.0 5E12 -1.72E9 73.1E-16
  30. 30. L'identificatore booleano corrisponde al tipo di dati booleano. Le variabili booleane hanno una dimensione di 1 byte e possono contenere valori VERO o FALSO. Il valore FALSO corrisponde a 0, qualsiasi numero diverso da zero è considerato VERO. Pulsante Var, flag: booleano; Pulsante Inizia:=true;
  31. 31. L'identificatore standard Char corrisponde al tipo di carattere. Le variabili e le costanti del tipo di carattere possono assumere valori da una varietà di caratteri ASCII. Var simvol, bukva, z: char; Dichiarazione di variabili simboliche
  32. 32. Il tipo stringa corrisponde all'identificatore standard String. Var S: corda; (stringa da 0 a 255 caratteri) S2: Stringa; (stock di 5 caratteri)
  33. 33. Una stringa di caratteri è una sequenza di caratteri del set di caratteri ASCII, racchiusa tra virgolette singole. Le righe nel linguaggio Pascal sono una sequenza di caratteri scritti tra apostrofi. Se devi utilizzare l'apostrofo stesso come carattere significativo in una riga, dovresti scrivere due apostrofi. Esempi di stringhe: "STRING" "STRING" "AD" "YUTANT"
  34. I tipi di carattere, così come i tipi interi e booleani, sono classificati come cosiddetti tipi ordinali.  L'insieme dei valori validi di qualsiasi tipo ordinale è una sequenza ordinata, ciascun elemento della quale ha il proprio numero ordinale (a partire da 0).
  35. 35. La funzione Ord restituisce il numero ordinale di questo valore nella dichiarazione di tipo. Ord(2)=2, Ord('0')=48 Writeln(ord('e')); Writeln(ord('9'));
  36. 36. Tabella di codifica ASCII ASCII (American Standard Code for Information Interchange; pronunciato “ask”) è una codifica informatica per rappresentare l'alfabeto latino, i numeri arabi, alcuni segni di punteggiatura e caratteri di controllo. È stato introdotto dall'American Standards Institute ANSI.

1 diapositiva

LEZIONE “INTRODUZIONE ALLA LINGUA PASCAL” SULL'ARGOMENTO: Insegnante di matematica e informatica, Scuola dell'istituto scolastico municipale n. 2, Kalach-on-Don, Regione di Volgograd Anisimova N.A.

2 diapositive

OBIETTIVO DELLA LEZIONE: Conoscere la struttura del programma, gli operatori, le regole di progettazione e la punteggiatura del linguaggio Turbo Pascal.

3 diapositive

Sistema di programmazione TURBO PASCAL. Pascal è un linguaggio di programmazione universale che consente di risolvere un'ampia varietà di problemi di elaborazione delle informazioni.

4 diapositive

1)Linguaggio di programmazione Turbo Pascal; 2) ambiente di programmazione integrato (compilatore: traduce il programma in codice macchina e interprete: esegue comandi) COMPOSIZIONE DEL SISTEMA DI PROGRAMMAZIONE TR:

5 diapositive

1) Lettere latine - grandi e piccole; 2) lettere dell'alfabeto russo: grandi e piccole; 3) numeri – da 0 a 9; 4)Segni di operazione - +, -, /, *,=, =; 5) segni di separazione – () ( ) ; . , ‘ _% & # ecc. Alfabeto del linguaggio di programmazione TURBO PASCAL

6 diapositive

7 diapositive

Titolo del programma Sezione descrizione variabile Sezione operatore (parte principale)

8 diapositive

La sezione di descrizione delle variabili inizia con la parola Var, seguita da un elenco separato da virgole di nomi di variabili dello stesso tipo. Nel linguaggio Pascal esistono due tipi numerici di quantità: reale (Real) e intera (Integer). I nomi delle variabili sono composti da lettere e numeri latini, dove il primo carattere è una lettera. VAR elenco di variabili dello stesso tipo: INTEGER; lista di variabili dello stesso tipo:REAL;

Diapositiva 9

La sezione operatore è la parte principale del programma. L'inizio e la fine di una sezione sono contrassegnati con le parole di servizio BEGIN e END, che sono parentesi dell'operatore. Tra queste parole sono posti tutti i comandi dell'algoritmo scritti in Pascal (operatori). Il separatore delle istruzioni è un punto e virgola. Alla fine del programma c'è un punto. BEGIN READ(lista di input); READLN(lista input); variabile:=espressione aritmetica; SCRIVI(lista output); SCRIVICI(Listaoutput); FINE.

10 diapositive

L'immissione dei dati iniziali dalla tastiera avviene utilizzando l'operatore READ o READLN (lettura). L'istruzione READLN differisce da READ solo perché dopo aver immesso i dati, il cursore si sposta all'inizio nuova linea. variabile:=espressione aritmetica; SCRIVI(lista output); SCRIVICI(Listaoutput); FINE. LEGGI(lista di input); READLN(lista input);

11 diapositive

variabile:=espressione aritmetica; Operatore di assegnazione aritmetica: a sinistra c'è una variabile, a destra c'è un'espressione aritmetica che deve essere valutata. Il simbolo composto := viene letto come "assegnare". Innanzitutto viene calcolata un'espressione aritmetica, quindi il valore risultante viene assegnato a una variabile. Esempio: a:= sqr (x) + sin (y) / (12*z + 5)

12 diapositive

mod div / * - + SIN (x) COS (x) SQR (x) SQRT (x) ABS (x) Sin x Cos x x 2 |x| x addizione sottrazione moltiplicazione divisione divisione intero resto della divisione

Diapositiva 13

Regole per scrivere espressioni aritmetiche Un'espressione aritmetica viene scritta su una riga Non è possibile mettere due caratteri di seguito operazioni aritmetiche Non è possibile omettere il segno di moltiplicazione tra i fattori. Vengono utilizzate solo le parentesi. La sequenza delle operazioni è determinata dalle loro priorità () F(x) * / + - div mod

Diapositiva 14

I risultati vengono emessi utilizzando WRITE o WRITELN (scrittura). I risultati vengono visualizzati nell'ordine in cui appaiono nell'elenco. La differenza tra le istruzioni WRITE e WRITELN è che dopo che l'istruzione WRITELN ha completato l'operazione di output, il cursore si sposta all'inizio di una nuova riga. SCRIVI(lista output); SCRIVICI(Listaoutput);

15 diapositive

Compito 1: AXby 6) TU154 2) R&B 3) 4Wheel 4) Vasya 5) “PesBarbos” 7) 8) _ABBA 9) A+B

16 diapositive

programma zadacha1; var a, b: intero; x, y: reale; iniziare a:= 5; 10:= x; y:= 7,8; b:= 2,5; x:= 2*(a + y); a:= b+x; FINE. il nome della variabile deve essere a sinistra del segno:= le parti intere e frazionarie sono separate da una virgola e non corrispondono al tipo Mancata corrispondenza del tipo COMPITO 2: Trova gli errori nella voce del programma.

PASCAL INTRODUZIONE AL LINGUAGGIO DI PROGRAMMAZIONE 2006 STRUTTURA DEL CORSO interfaccia e definizioni di base; struttura del programma; visualizzare informazioni di testo sullo schermo; inserimento dati da tastiera; connessione e utilizzo dei moduli del sistema; lavorare con tipi di dati di base (intero, reale, stringa, array, file), lavorare con la grafica; uso di subroutine (procedure e funzioni); utilizzando i moduli. 2 INTERFACCIA AMBIENTE PASCAL Il linguaggio di programmazione Turbo Pascal 7.0 è racchiuso in una shell strumentale. Include: editor di testo multi-finestra; collegamento di programmi; debugger del programma; sistema di aiuto; compilatore. 3 PASCAL 4 INTERFACCIA AMBIENTE Elenco file aperti: Alt + 0 Accesso rapido ai file aperti: Alt +<№ окна> DEFINIZIONI FONDAMENTALI Una parola riservata è una parola speciale utilizzata da un linguaggio di programmazione per separare le aree logiche di un programma. Un operatore è un comando linguistico che esegue alcune azioni (verifica di una condizione, organizzazione di un ciclo, ecc.). Un identificatore è un nome scelto liberamente dal programmatore per gli elementi del programma. Un tipo di dati è una caratteristica di un identificatore che determina l'insieme di valori che può assumere (numeri interi o frazionari, stringhe di caratteri, espressioni logiche, ecc.). 5 STRUTTURA GENERALE DEL PROGRAMMA Programma Nome_programma; Utilizza la sezione dei plug-in; Sezione etichetta per le descrizioni delle etichette; Sezione Const per la descrizione delle costanti; Sezione tipo per descrivere i propri tipi di dati; Sezione descrizione variabile Var; Inizio Il corpo principale del programma; FINE. Codice minimo: 6 SCREEN OUTPUT Per visualizzare le informazioni sullo schermo si utilizzano i seguenti operatori: Write o Writeln. F9 – Compilazione + verifica Ctrl+F9 – Esegui F9 → Ctrl+F9 – Evita errori Visualizzazione dei risultati dell'esecuzione del programma 7 DISPLAY Il risultato dell'utilizzo degli operatori: WRITE Operatore “Vuoto” WRITELN aggiunge una riga vuota WRITELN 8 EXERCISE Visualizza le informazioni su sullo schermo come mostrato di seguito Ciao! Felice di vederti! Chiamami computer. Materiale utilizzato: Istruzioni di output: Write, WriteLn istruzione WriteLn “vuota”; inserisce una riga vuota. 9 COLLEGAMENTO DI MODULI AGGIUNTIVI I moduli aggiuntivi espandono le capacità dei vostri programmi introducendo operatori aggiuntivi. I moduli sono collegati nella sezione Usi. Programma il mio; Utilizza Modulo1, Modulo2; ________________________ ________________________ ________________________ ________________________ MODULO 1 Insieme di risorse 1 ... MODULO N Moduli: Sistema Proprio Insieme di risorse N Cancellazione dello schermo di testo In attesa della pressione di un tasto Modulo collegato denominato CRT 10 USCITA IN UNA POSIZIONE ARBITRARIA DELLO SCHERMO GotoXY (X , Y: intero) Dove X, Y – coordinata di un luogo familiare sullo schermo. X può assumere valori da 1 a 80 e Y da 1 a 25. Ad esempio: Programma Mio_programma; (Connessione del modulo) Utilizza Crt; Inizia (Cancella schermo) ClrScr; (Uscita dati) GotoXY(1, 1); scrivere("▒"); Vai a XY(80, 1); scrivere("▒"); Vai a XY(1, 25); scrivere("▒"); Vai a XY(80, 25); scrivere("▒"); (Ritardo schermo) ReadKey; FINE. Il programma visualizza il simbolo “▒” (codice 177) negli angoli dello schermo. 11 USCITA A COLORI TextColor (Colore); Definisce il colore dei caratteri. SfondoTesto(Colore); Definisce il colore del luogo familiare. Programma Il mio programma; Utilizza Crt; Inizia ColoreTesto(Rosso); TestoBackGround(Blu); Write("Nel cortile"); ColoreTesto(Bianco); Write("erba, "); ColoreTesto(Verde); TestoBackGround(Giallo); Write("sull'erba"); TestoBackGround(Magenta); Scrivi ("legna da ardere. "); Fine. 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Colori Nero Blu Verde Ciano Rosso Magenta Marrone Grigio chiaro Grigio scuro Azzurro chiaro Verde chiaro Ciano chiaro Rosso chiaro Magenta chiaro Giallo Bianco 12 – nero – blu – verde – ciano – rosso – lilla – marrone – grigio chiaro – grigio scuro – blu – verde chiaro – ciano chiaro – rosa – lilla chiaro – giallo – bianco LAVORARE CON I DATI LAVORARE CON I DATI DICHIARARE IDENTIFICATORI 14 IMPOSTAZIONE DI UN TIPO DI DATI Identificazione dei dati Univocità delle operazioni sui dati VALORI DELLE ATTIVITÀ Operazioni con dati IDENTIFICATORI Il termine identificatore si applica a costanti, variabili, funzioni, procedure, componenti e altri oggetti definiti dall'utente Caratteri consentiti: lettere latine; numeri; carattere di sottolineatura. Restrizioni: non deve iniziare con un numero, ma può iniziare con un carattere di sottolineatura. . non può contenere più parole non può essere uguale a qualsiasi parola chiave Gli identificatori non fanno distinzione tra maiuscole e minuscole. Identificatori errati: Dati Il mio nome 2Array Var ( ( ( ( Vengono utilizzati caratteri russi ) C'è uno spazio ) Inizia con un numero ) Corrisponde a una parola chiave ) 15 TIPI DI DATI Un tipo di dati è una caratteristica di un identificatore che determina l'insieme di valori ​​può contenere (numeri interi o frazionari, stringhe di caratteri, espressioni logiche, ecc.). 16 INTEGER DATA TYPE 17 Insieme finito di valori possibili tipo byte shortint parola intero longint range 0..255 -128..127 0..65535 -32768..32767 -2147483648..2147483647 ! Il superamento dell'intervallo provoca un errore! size DICHIARAZIONE DELLE VARIABILI Una variabile è un identificatore che può memorizzare qualsiasi valore (numero, stringa, ecc.) e modificarlo durante il funzionamento del programma. Sintassi: var<имя переменной> : <тип переменной>; Programma nome_programma; Utilizza la sezione dei plug-in; Sezione descrizione variabile Var; Inizio Il corpo principale del programma; FINE. Lo spazio è riservato nella memoria del computer per 3 variabili 18 IMPOSTAZIONE DEI VALORI DI UNA VARIABILE Per impostare il valore di una variabile, è necessario utilizzare l'operatore di assegnazione:= Sintassi di registrazione:<Переменная> := <Значение>; Il valore 3 viene inserito in una variabile (intera) con il nome A 19 OPERAZIONI CON VARIABILI INTERE 20 Operazioni aritmetiche: + - * / Operazioni standard: div | mod | sqr Non può essere utilizzato con tipi interi La variabile denominata S memorizza la somma dei valori memorizzati nelle variabili X e Y Il valore memorizzato nella variabile denominata S viene visualizzato sullo schermo ESERCIZIO 21 1. Scrivere un programma che visualizzi il risultato di moltiplicare i numeri 15 e 20 2. Scrivere un programma che visualizzi il valore della funzione f 2 x 3 y , per x=11, y=3 Materiali utilizzati: Le variabili sono dichiarate nella sezione Var Il tipo intero si chiama Integer Il la sintassi per assegnare un valore a una variabile è:<Переменная> := <Значение> ; Dopo ogni operatore c'è un cartello; (tranne l'inizio e l'ultima fine) TIPO DATI REALI Insieme di valori √ √ Tipo ordinale Tipo reale Compatibilità unidirezionale: Reale Intero Intero Reale! Il superamento dell'intervallo e il mancato rispetto delle regole di compatibilità provocano un errore! 22 OPERAZIONI CON VARIABILI REALI 23 Operazioni standard: pi | Sqrt | Peccato | Cos | Abs | Esp | Ln Rotondo | Trunc (reale → intero) Ad esempio (X, S – tipo Real): X:= pi/3; S:= Sin(X) * 100; Scrivi(Arrotondo(S)); La variabile denominata S contiene il rapporto tra i valori memorizzati nelle variabili X e Y. La posizione del numero e il numero di caratteri nella parte frazionaria del numero E - denota la potenza del numero. 5.6E-5 = 5.6·10-5 TIPO DATI STRINGA 24 Stringhe – un insieme ordinato di caratteri. Le righe sono racchiuse tra apostrofi. Le stringhe non sono compatibili con i tipi interi e reali. Tipo Intervallo Stringa 255 caratteri (Operatori di base per le stringhe) + (concatenazione) Lunghezza(S); (lunghezza della stringa) Ad esempio: X:= 'Vasya'; Write('Nel tuo nome', Lunghezza(X), 'lett.'); S:=X; X:=S; ESERCIZIO Scrivete un programma che visualizzi il risultato della divisione dei numeri 12,89 e 0,22, visualizzando solo tre cifre significative dopo la virgola decimale, nel seguente formato: primo numero diviso per il secondo numero = risultato Scrivete (X:1:3, ' razdelit na ', y:1 :3, ' = ' z:1:3) Materiale utilizzato: Il tipo di stringa si chiama String Le stringhe sono racchiuse tra opostrofi La concatenazione delle stringhe avviene tramite il segno + Nell'operatore di visualizzazione, i diversi tipi sono separati da una virgola 25 INSERIMENTO DATI DA TASTIERA 26 Per inserire informazioni da tastiera è necessario utilizzare l'operatore di input: Read o ReadLn. Sintassi: Leggi (N1, N2, ... Nn); Dove N1, N2, ... Nn sono variabili (intero, reale, stringa) Il valore inserito dalla tastiera viene inserito nella variabile X. Dopo aver inserito il valore, è necessario premere il tasto Invio. Se sono specificate più variabili nel dall'operatore, si inseriscono separati da uno spazio o premendo un tasto Invio ESERCIZIO 27 1. Scrivere un programma di mini-calcolatrice che calcoli la somma di due numeri digitati dalla tastiera. 2. Scrivere un programma che chieda qual è il tuo nome e, dopo averlo scritto, visualizzi un saluto. Ad esempio, se inserisci il nome Vanja, il programma visualizzerà la frase: Ciao Vanja!!! Materiale utilizzato: Operatori di input: Read, ReadLn OPERATORI OPERATORE CONDIZIONATO 29 Un operatore condizionale implementa il “ramificazione”, cioè cambia l'ordine di esecuzione degli operatori a seconda della verità o falsità di alcune condizioni. Verifica condizione NO Azione 1 Vado al mare Piove SI Azione 2 Prendo l'ombrello Azione 3 Vado al cinema VERIFICA CONDIZIONI Operazioni di confronto: > - altro< - меньше = - равно >= - maggiore o uguale a<= - меньше или равно <>- diverso da 30 Operazioni logiche: Not And Or - Not -And - Oppure Ad esempio: Se la mia altezza è > dell'altezza di Petya, allora sono più alto di Petya Se (piove) Oppure (nevica), allora lo farò resto a casa altrimenti ((piove) e (vento)), allora andrò a fare una passeggiata quando uso operazioni logiche, le condizioni sono racchiuse tra parentesi tonde SINTASSI DI SCRITTURA DELL'OPERATORE CONDIZIONATO Forma breve: If<условие>Poi<оператор>; Ad esempio, se il valore nella variabile X è inferiore a 0, il valore 1 viene scritto nella stessa variabile: Se X<0 Then X:= 1; Полная форма: If <условие>Poi<оператор_1>altro<оператор_2>; Ad esempio: Se X>5 Allora X:= X - 1 Altrimenti X:= X + 1; Dopo le parole Then e Else è possibile utilizzare un solo operatore: prima della parola Else, il segno; mancante 31 ESERCIZIO 32 1. Scrivere un programma che riceva in input un importo in dollari e un importo in euro, e poi visualizzi in quale valuta l'importo è maggiore (1 dollaro = 28 rubli, 1 euro = 35 rubli) 2. Scrivere un programma , che accetta tre numeri come input e quindi ne visualizza il massimo. Materiale utilizzato: Forme di registrazione dell'operatore condizionale: If<условие>Poi<оператор>; Se<условие>Poi<оператор_1>Altro<оператор_2>; Prima del segno Else; non incluso Operazioni di confronto: >< = <> >= <= Логические операции: Not Or And ОПЕРАТОРНЫЕ СКОБКИ Если после слов Then или Else необходимо записать несколько операторов, то их заключают в операторные скобки (составной оператор). Операторные скобки начинаются словом Begin, а заканчиваются словом End; Например: If Z >0 Quindi inizia X:= 1; Y:= -1; WriteLn('Informazioni ricevute'); End Else WriteLn('Errore'); 33 CASO DELL'OPERATORE DI SELEZIONE L'operatore di selezione viene utilizzato per sostituire i costrutti da istruzioni condizionali annidate. Sintassi del caso<порядковая_переменная>Di<значение_1> : <оператор_1> ; <значение_2> : <оператор_2> ; ……… <значение_N> : <оператор_N>Altro<оператор_N+1>; FINE; È possibile utilizzare parentesi quadre nell'istruzione di selezione Riga facoltativa 34 OPERATORE DI SELEZIONE CASO Caso Studente altezza 16..30: Sei uno studente della scuola elementare; 31,32,33: Sei nella classe 5-6; 34..50: Sei uno studente delle scuole superiori. Per elencare i valori viene utilizzata una virgola, per selezionare un intervallo vengono utilizzati i due punti. Altrimenti Chiaramente non sei uno studente; FINE; Caso x di -128..-1: writeln('Negativo'); 0: writeln('Zero'); 1..127: writeln('Positivo') Else WriteLn('Fuori intervallo'); FINE; 35 ESERCIZIO Scrivere un programma che, dato un numero, visualizzi il giorno della settimana corrispondente. Ad esempio, se hai inserito il numero 2, il programma dovrebbe emettere "Martedì". Se il numero va oltre 1..7, dovrebbe essere visualizzato un messaggio che informa che non esiste un giorno simile. Materiale utilizzato: Operatore di selezione: Caso<порядковая_переменная>Di<значение_1> : <оператор_1> ; ……… <значение_N> : <оператор_N>; Altro<оператор_N+1>; FINE; 36 CICLI 37 Gli algoritmi ciclici sono quelli in cui determinati operatori vengono eseguiti ripetutamente con gli stessi dati modificati (ad esempio, la procedura per moltiplicare i numeri tramite la loro addizione ripetuta). Ci sono tre operatori di ciclo nel linguaggio Pascal: For (ciclo con un parametro o per un numero specificato di ripetizioni) While (ciclo BYE) Ripeti (ciclo TO) Se il numero di ripetizioni è noto, è meglio usare il ciclo operatore con un parametro. LOOP CON PARAMETRO 38 Ciclo per un numero specificato di ripetizioni con un valore crescente o decrescente del parametro For (parametri) := (valore_iniziale) To (valore_finale) Do (operatore) ; Corpo del loop Note Parametro – tipo intero; Puoi usare le parentesi in un ciclo; Non è possibile modificare il parametro del loop nel corpo del loop; Il parametro del loop viene incrementato di uno; Valore iniziale > valore finale, altrimenti il ​​corpo del loop viene ignorato; Per diminuire il parametro, al posto di To, utilizzare DownTo. LOOP CON PARAMETRO 39 Scrivere un programma che richieda numeri interi (a, b) e a := <нач_зн>A<кон_зн>Fare<оператор>; Parametro: un tipo intero (solitamente intero); Puoi usare le parentesi in un ciclo; Il parametro del ciclo viene incrementato di uno 40 WHILE LOOP Il ciclo While controlla prima la condizione e, solo se è vera, esegue il corpo del ciclo. While (condizione) do (operatore); Nel corpo del codice scritto di seguito, il ciclo non verrà eseguito nemmeno una volta: x:=1; Mentre x>1 fa x:=x-1; Puoi ottenere un ciclo infinito. Ad esempio: x:=1 Mentre x>0 fa x:=x+1; 41 WHILE LOOP (“WHILE”) Un programma che visualizza la somma dei numeri da a a b. Mentre non viene premuto un tasto, inizia Delay(2000); FINE; Il ciclo funziona finché la variabile variabile f diventa maggiore del valore b 42 ESERCIZIO 43 1. Gli astronauti hanno deciso di piantare betulle sulla luna e ogni anno hanno raddoppiato il numero di betulle; nel primo anno ne hanno piantate 3. Visualizza sullo schermo tra quanti anni il numero di betulle supererà 10000. 2. Scrivere un programma che determini il massimo dei numeri immessi dalla tastiera (il numero inserito termina con il numero 0). Di seguito è riportata la visualizzazione della schermata consigliata: Immettere i numeri. Per completare l'immissione, immettere 0. 89 15 0 Il numero massimo è 89. Materiale utilizzato: Istruzione del ciclo While: While<условие>Fare<оператор>; Il Ciclo While controlla prima la condizione, e solo se è vera lo fa il corpo principale del ciclo. REPEAT LOOP 44 Il loop Repeat esegue prima il corpo del loop, e solo dopo verifica la condizione Repeat (loop_body) Until (condizione); Non è necessario utilizzare un operatore composto nel ciclo Ripeti, perché Questa costruzione prevede l'esecuzione non di uno, ma di più operatori, racchiusi tra le parole Repeat e Until. REPEAT LOOP Un programma che visualizza la somma dei numeri da a a b. Il ciclo viene eseguito finché la variabile variabile f diventa maggiore del valore b 45 CONFRONTO DI CICLI For While Repeat 46 La scelta di un modello di ciclo dipende solo dalla comodità del suo utilizzo in una situazione particolare. Possiamo quasi sempre usarne un altro invece di un tipo di ciclo ESERCIZIO Calcola il valore della funzione y x 3 x 2 16 x 43 per x che varia nell'intervallo da -4 a 4 compreso con incrementi di 0,5. Materiale utilizzato: Operatore di ripetizione del ciclo: Ripeti<тело_цикла>Fino a<условие>Il loop Repeat esegue prima il corpo del loop e solo successivamente ne verifica la condizione. 47 CICLI DI INTERRUZIONE 48 Per un controllo flessibile degli operatori ciclici, vengono utilizzate le seguenti procedure: Break - uscita dal loop; Continua: completamento del passaggio successivo del ciclo; Esempi: trovare il numero minimo i per il quale la somma dei numeri da 1 a i è maggiore di 100. Non appena s (la somma dei numeri da 1 a i) diventa maggiore di 100, viene attivata l'istruzione break e il ciclo viene terminato uscito. s:=0; per I:= da 1 a 100 iniziano se s>100 poi si interrompono; s:= s + i; FINE; Writeln('il numero minimo i tale che (1+2+..+i)>100 sia uguale a ',i); Si inseriscono 10 numeri dalla tastiera e nel ciclo viene calcolata la somma dei soli numeri positivi. Se il numero è negativo, viene eseguita l'istruzione continue, che inizia il passaggio successivo del ciclo. s:=0; per I:= da 1 a 10 inizia Readln (k); se k<0 then Сontinue; s:= s + k; end; Writeln (‘Сумма положительных чисел равна ’,s); МАССИВЫ МАССИВЫ 50 Простые типы: одна переменная – одно значение Структурированные типы: одна переменная – несколько значений Массив – это фиксированное количество значений одного типа. Доступ к конкретному значению осуществляется через индекс. Переменная массива Структура массива: A= Доступ к массиву: 0 1 2 3 Индекс 9 7 0 0 Значения <Имя массива> [ <Индекс>] LA := 7; ARRAYS Un array viene dichiarato nella sezione Var: (Nome) : Array [ (valore_iniziale) .. (valore_finale) ] of (tipo) ; Esempi di dichiarazioni di array: Var A: Array of String; B: Matrice di Reali; C: Array di numeri interi; Esempi di riempimento di array con valori: A:='Vasya'; R:='Petya'; R:='Masha'; A:='Olesya'; Scrivere un); Per f:=da 1 a 10 fare C[f] := f*2; Per f:=da 1 a 10 eseguire WriteLn (C[f]); 51 ESERCIZIO 52 Scrivete un programma che chieda all'utente 7 numeri interi e li memorizzi in un array. L'elemento massimo viene trovato nell'array e visualizzato sullo schermo. Ad esempio: Inserisci il 1° numero: 4 Inserisci il 2° numero: 8 Inserisci il 3° numero: 9 Inserisci il 4° numero: 2 Inserisci il 5° numero: 4 Inserisci il 6° numero: 5 Inserisci il 7° numero: 0 Numero massimo: 9 Materiale utilizzato: Dichiarazioni di array:<Имя>:Vettore[<нач_зн> … <кон_зн>] Di<тип>; Accesso all'array:<Имя массива> [ <Индекс>] GENERATORE DI NUMERI CASUALI (RNG) Per generare numeri casuali nel programma, utilizzare i seguenti operatori: Randomize – Inizializzazione RNG. Annunciato solo all'inizio del programma; Casuale – genera un numero casuale da 0 a 1 (tipo reale); Random (N) – genera un numero casuale da 0 a N-1 (tipo intero); 53 ARRAY MULTIDIMENSIONALI 54 Elenco di intervalli per ciascuna dimensione dell'array (Nome): Array [ (valore_iniziale) .. (valore_finale), (valore_iniziale) .. (valore_finale), (ecc.) ] di (tipo) ; Un esempio di dichiarazione di un array bidimensionale (matrice, tabella) con 4 righe e 6 colonne: Var A: Array of Integer; Un esempio di riempimento di un array: For i:=da 1 a 4 do For j:=da 1 a 6 do A := i+j; Ai , j 2 3 4 5 3 4 5 6 4 5 6 7 5 6 7 8 6 7 8 9 7 8 9 10 ESERCIZIO Scrivi un programma che riempia un array bidimensionale con numeri casuali da -10 a 20 e visualizzi le somme degli elementi disposti diagonalmente sul tavolo. Materiale utilizzato: Inizializzazione RNG: Randomizza Numero casuale da 0 a N-1: Casuale (N) 55 LAVORARE CON I FILE LAVORARE CON I FILE 57 File: Inizio del file Indice)a@$ku⌂|"Hd9v*9(L*M= ÁYGRMxduВ █ 8e*ВOtCDrTVzHGJ1aBD>@Á\(r8sE) █ :wcJvAmRa"v/.Wai;$`SWI=y2]suB █ ?Hq>vF(LmBcV^Adz4P4.6b]o(QkВ8 █ cu<6`8Z":M^1;:8ANwak;,b2-4…u5 █ 2]suB?Hq>vF(LmBcAdz4wcP]o(QkВ █ 8c8df]e"v,su>+),VAEFБjFV,W$Q- █ y0G1GjN$-eБ|sqZ0`QnВ%\БD%y █ █ █ - terminatore di riga █ - file terminatore Variabile Creazione, lettura, scrittura, chiusura LAVORO CON I FILE Sequenza di azioni quando si lavora con i file: 1. Dichiarazione di una variabile di file (FP); 2. Associazione di un FP con un file; 3. Apertura di un file in lettura/scrittura; 4 Operazioni con il file 5. Chiusura del file (viene interrotta anche la connessione tra il file e il FP) 1. Dichiarazione del FP<Имя>:File di<тип> ; <Имя>:Testo; Var f:Testo; h: File di numeri interi; 2. Associazione del FP al file Assegna (<ФП>, <имя файла>); Assegna (f, ‘c:\my\Data.ghm’) 58 LAVORARE CON I FILE 3. Apertura di un file per la lettura/scrittura Reset (<ФП>); - apre il file per la lettura di Riscrivi (<ФП>); - apre un file in scrittura 4. Operazioni sui file Leggi (<ФП>, <П1> , <П2>,…); - legge in variabili<П1>, <П2>eccetera. un elemento alla volta dalla posizione del puntatore. Scrivere(<ФП> , <П1> , <П2>,…); - scrive valori variabili in un file<П1>, <П2>eccetera. un elemento alla volta dalla posizione del puntatore. EoLn (<ФП>); - restituisce True se viene raggiunta la fine della riga. EoF (<ФП>); - restituisce True se viene raggiunta la fine del file. 5. Chiusura del file Chiudi (<ФП>); 59 LAVORARE CON I FILE Semplifica il programma se sai che la matrice ha dimensioni 5x5 (usa il ciclo For) 60 ESERCIZIO 61 Scrivi il programma “CASA-3”. Il primo file contiene i nomi dei partecipanti al caso nominativo. Nella seconda gli stessi nomi, ma all'accusativo. Il terzo contiene un elenco di espressioni di sentimenti o di azioni (amori, antipatie, baci, vuole mordere, adora, rispetta, odia, vuole vedere, abbracci). Il programma dovrebbe prendere informazioni in modo casuale da questi file e crearne uno nuovo secondo il seguente principio:<имя в им. пад> <чувство/действие> <имя в вин. пад> Olga ama Sergei Oleg vuole vedere Roman Katya rispetta Nastya Etc. Materiale utilizzato: Nomi degli operatori: Assegna, Riscrivi, Reimposta, Scrivi, Leggi, Chiudi. GRAFICA Per lavorare con la grafica in Pascal, sono necessari due file: il modulo graph.tpu e il driver dell'adattatore grafico egavga.bgi. Il primo è nella directory \UNITS e il secondo è nella directory \BGI. ! Driver egavga.bgi. Necessario quando si lavora con un file exe! Per disegnare è necessario: 1. collegare il modulo GRAPH (nella sezione Usi); 2. inizializzare la grafica (InitGraph); 3. disegna qualcosa; 4. chiudere la modalità grafica (CloseGraph) 63 GRAPHICS Inizializzazione della modalità grafica Disegnare una linea. La piuma si sposta dal punto (0,0) al punto (639, 479). PROGRAMMA Primer_1; Utilizza Grafico, crt; Var Gd,Gm: intero; INIZIO Gd:=0; InitGraph (Gd,Gm,'d:\BP\bgi"); Line (0,0,639,479); ReadKey; CloseGraph; END. 639 px. Sistema di coordinate 479 px. 64 Chiusura della modalità grafica ESERCIZIO 65 1. Disegna una forma rettangolare in il centro del triangolo dello schermo 2. Disegnare un rettangolo al centro dello schermo con i lati due più piccoli dei lati corrispondenti dello schermo Materiale utilizzato: Modulo grafico: Graph Inizializzazione grafica: InitGraph Chiusura modalità grafica: CloseGraph; GRAPHICS + COLOR SetColor( Color: parola); Imposta il colore della penna GetColor: parola; Restituisce il colore della penna SetBkColor(colore: parola); Imposta il colore dello sfondo. GetBkColor: parola; Restituisce il colore dello sfondo. Colori Nero Blu Verde Ciano Rosso Magenta Marrone Grigio Chiaro Grigio Scuro Azzurro Verde Chiaro Ciano chiaro Rosso chiaro Magenta chiaro Giallo Bianco 66 – nero – blu – verde – ciano – rosso – lilla – marrone – grigio chiaro – grigio scuro – blu – verde chiaro – ciano chiaro – rosa – lilla chiaro – giallo – bianco PRIMITIVE GRAFICHE Linea (x, y ); Disegna una linea dalla coordinata corrente della penna alle coordinate (x,y). Sposta in(x, y); Imposta la penna sulle coordinate (x,y). PutPixel(x, y, Colore); Disegna un punto con coordinate (x,y) con Colore. OttieniPixel(x, y): parola; Restituisce il colore di un punto con coordinate (x,y). Rettangolo(x1, y1, x2, y2); Costruisce il contorno di un rettangolo. Cerchio(x, y, r); Disegna una circonferenza con centro in (x,y) e raggio r. SetLineStyle (Ln, 0, T) Cambia i parametri dei contorni. Ln - stile linea (0..3): 67 x1, y1 T - spessore linea: 1 = normale; 3 = spesso. RiempiEllisse(x, y, Xr, Yr); Disegna un'ellisse piena con centro in (x,y) e raggi Xr e Yr. ImpostaStileRiempimento(Tipo, Colore); Imposta il tipo (0..11) e il colore del tratteggio delle forme ClearDevice chiuse; Cancella lo schermo grafico dipingendolo con il colore di sfondo corrente x2, y2 PRIMITIVE GRAFICHE 68 ESERCIZIO 69 1. Scrivi un programma che disegna una casa sullo schermo del monitor; 2. Scrivi un programma che disegna un cielo stellato sullo schermo del monitor con stelle di raggio casuale (da 1 a 5 pixel) e una posizione casuale. Anche il colore è casuale (bianco, grigio chiaro, grigio scuro); Materiale utilizzato: SetColor(Colore: parola); - Imposta il colore del disegno SetBkColor (colore: parola); - Imposta il colore di sfondo corrente. Linea(x, y); - Disegna una linea dalle coordinate correnti della penna alle coordinate (x,y). Sposta in(x, y); - Imposta la penna sulle coordinate (x,y). PutPixel(x, y, Colore); - Disegna un punto con coordinate (x,y) con Colore. Rettangolo(x1, y1, x2, y2); - Costruisce il contorno di un rettangolo partendo da linee del colore corrente. Cerchio(x, y, r); - Disegna un cerchio con centro in (x,y) e raggio r. RiempiEllisse(x, y, Xr, Yr); - Disegna un'ellisse piena con centro in (x,y) e raggi Xr e Yr. GRAFICA + ANIMAZIONE Pausa in msec. 70 SUBROUTINE SUBROUTINE Le subroutine consentono di isolare una parte ripetuta del codice in frammenti separati e inserirli nei posti giusti nel programma. Una funzione, a differenza di una procedura, restituisce il risultato della chiamata. Procedure Funzioni Subroutine: scritte tra parole chiave Inizio Fine; identificato da nomi, che sono scritti secondo le regole per specificare gli identificatori; può avere parametri di input e output; ripetere completamente la struttura del programma principale. 72 Programma Mio; Subroutine 1 [Codice della subroutine 1] Subroutine 2 [Codice della subroutine 2] Inizio Subroutine 2 Subroutine 1 Esempio di subroutine di sistema: Write(“Ok”); ClrScr; Lunghezza(S); Casuale; // // // // procedura con un parametro procedura senza parametri funzione con un parametro funzione senza parametri Sottoprogramma 2 Fine. SUBROUTINE (SPR) Annidamento di subroutine Programma Subroutine 1 Subroutine 3 Subroutine 4 Subroutine 2 73 Area di disponibilità delle variabili Le variabili descritte in un certo SPR sono conosciute all'interno del suo corpo, COMPRESI tutti gli SPR nidificati (la variabile descritta in SPR1 sarà disponibile in SPR3,4) . I nomi delle variabili descritte nel PPR possono coincidere con i nomi delle variabili di altri PPR (la stessa variabile può essere dichiarata in ciascuno dei PPR). Il nome della variabile descritta nel PPR scherma le variabili con lo stesso nome del PPR che lo racchiudono (se variabili identiche sono dichiarate in PPR1 e PPR3, allora in ciascun PPR queste variabili saranno uniche). Le variabili del programma sono chiamate globali e le variabili della subroutine sono chiamate locali. PROCEDURE SENZA PARAMETRI Sintassi della registrazione: Procedura (nome della procedura); (Sezione variabili, costanti, tipi, etichette, moduli) Begin (corpo della procedura); FINE; Un esempio di utilizzo di una procedura senza parametri: 74 PROCEDURE SENZA PARAMETRI Un esempio di escape di variabili con lo stesso nome: Programma Mio_programma; Utilizza Crt; Var A:Stringa; // Descrizione della procedura Procedura My_Procedure; Var A:Stringa; Inizio A:= "Sottoprogramma"; Scriviln(A); FINE; Inizia A:= "Corpo"; Scriviln(A); Mia_Procedura; Scriviln(A); FINE. // Chiamare una procedura 75 PROCEDURE CON PARAMETRI 76 Affinché le subroutine siano più universali, vengono utilizzati meccanismi speciali per lo scambio di dati tra il programma e le sue subroutine. Procedure di sistema con parametri: SetColor (Rosso); ( Procedura con Rettangolo (0, 0, 639, 479); ( Procedura con InitGraph (Gd,Gm,'d:\BP\bgi"); ( Procedura con ( parametri un parametro ) diversi parametri ) diversi tipi ) ) Registrazione procedure di sintassi con parametri Procedura (Nome) ((Area delle variabili di ingresso) Var (Area delle variabili di uscita (ogni variabile ha una propria Var))); Struttura delle aree: Variabile_1, Variabile_2, … : Tipo; .. ......... ............. Variabile_N-1, Variabile_N, … : Tipo; Può mancare una qualsiasi delle aree PROCEDURE CON PARAMETRI Utilizzo dei parametri di input Procedura per disegnare un rettangolo bordando lo schermo, un dato colore Senza parametri Con parametri Procedure Cir; Begin SetColor (i); SetBkColor (b); Rectangle (0, 0, 639, 479); End; Procedure Cir (i, b:Integer); Begin SetColor (i); SetBkColor (b); Rettangolo (0, 0, 639, 479); Fine; Chiamata di una procedura in un programma: Chiamata di una procedura in un programma: i:=6; b:=12; Cir; Cir( 6, 12); 77 PROCEDURE CON PARAMETRI Utilizzo dei parametri di uscita Procedura per convertire un angolo da misura in gradi a radiante PROGRAMMA EX_26_3; VAR x,a: reale; PROCEDURA Rad(alfa: reale; var betta: reale); (variabile di output) BEGIN Betta:= pi*alfa/180; FINE; BEGIN Write("Inserisci l'angolo in gradi: "); Leggi(x); Rad(x, a); (Chiamata alla procedura) Writeln("È uguale all'angolo in radianti = ",a:6:4); FINE. 78 ESERCIZIO 79 1. Scrivi una procedura per disegnare un triangolo nel seguente formato: Triangle (x1,y1, x2,y2, x3,y3, Color) 2. Scrivi una procedura per calcolare l'area di un rettangolo nel seguente formato: SRect (a, b, S) dove S è il parametro di output della procedura. Materiale utilizzato: Procedura (Nome) ((Area Variabile di Ingresso) Var (Area Variabile di Uscita)); Struttura dell'area: Variabile_1, Variabile_2, ... : Tipo; ........................ Variabile_N-1, Variabile_N, … : Tipo; FUNZIONI 80 Sintassi per scrivere una funzione Funzione ((Area variabili di ingresso) Var (Area variabili di uscita)): (Tipo) ; Formattazione della procedura Formattazione della funzione Procedura S(a,b:real; var s:real); Inizia s:= a+b; FINE; Funzione Somma (a,b: reale): reale; Inizio somma:= a+b; FINE; Chiamare la procedura Chiamare la funzione S(10, 20, A); Scrivere un); A:= S(10, 20); ScriviLN(A); ScriviLN(S(20, 30)); È consigliabile progettare una determinata subroutine come funzione solo se si prevede qualche risultato dal suo funzionamento. Se una subroutine è focalizzata solo sull'esecuzione di una determinata sequenza di azioni (visualizzazione, disegno, ecc.), è meglio progettarla come una procedura. ESERCIZIO Scrivere una funzione per calcolare l'area di un rettangolo nel seguente formato: SRect (a, b) Materiale utilizzato: Funzione (Nome) ((Area variabile di input) Var (Area variabile di output)): (Tipo) ; Struttura dell'area: Variabile_1, Variabile_2, ... : Tipo; ........................ Variabile_N-1, Variabile_N, … : Tipo; 81 MODULI MODULI 83 Un modulo (UNIT) è un'unità di programma indipendente, le cui risorse (procedure e funzioni) possono essere utilizzate da altri programmi. Programma My1; Utilizza Modulo1, Modulo2; __________________________ __________________________ __________________________ __________________ MODULO 1 Set di risorse 1 … Programma My2; Utilizza Modulo1, Modulo2; __________________________ __________________________ __________________________ __________________ MODULO N Insieme di risorse N I moduli sono collegati al programma attraverso la sezione MODULI UTILIZZI. STRUTTURA 84 Un modulo è composto dalle seguenti parti: 1. Intestazione del modulo. 2. Parte dell'interfaccia. (descrizioni degli oggetti visibili) 3. Parte attuativa. (descrizioni degli oggetti nascosti) 4. Parte di inizializzazione (opzionale). Unità (nome del modulo); Interfaccia (Sezione variabili globali, costanti, tipi) (moduli) (Elenco intestazioni di procedure e funzioni) Implementazione (Sezione variabili locali, costanti, tipi) (Implementazione di procedure e funzioni) Begin (Parte di inizializzazione) End. ! Il nome dell'intestazione del modulo deve corrispondere al nome del file del modulo! MODULI Modulo di esempio: Unit My_Unit; Interfaccia Var ms: Array di Real; (Array globale) Funzione Cub(x:intero):Intero; ( Funzione Cub = x^3 ) Funzione ext4(x:integer):Integer; ( Funzione ext4 = x^4 ) Funzione di implementazione Cub(x:integer):Integer; (Implementazione della funzione Cub) Begin Cub:= x*x*x; FINE; Funzione Ext4(x:intero):Intero; (Implementazione della funzione ext4) Inizio Ext4:= x*x*x*x; FINE; FINE. 85 ESERCIZIO 86 Scrivere un modulo con una funzione e una procedura: ( Calcolo della funzione X1=1/x ) X1(a:real):real; ( Procedura per stampare la parola S sullo schermo, nella posizione X, Y WriteXY(S:String; X,Y:Iteger); Materiale utilizzato (struttura del modulo): Unit (Nome del modulo); Interfaccia (Sezione delle variabili globali, costanti , tipi) ( moduli) (Elenco delle intestazioni di procedure e funzioni) Implementazione (Sezione di variabili locali, costanti, tipi) (Implementazione di procedure e funzioni) Begin (Parte di inizializzazione) End.)