È il risultato dell'esecuzione di un'istruzione. Operatore condizionale? Restrizioni all'utilizzo da parte dell'operatore

Nel paragrafo precedente abbiamo conosciuto la struttura di un programma in Pascal, imparato come descrivere i dati e esaminato l'operatore di assegnazione. Questo è sufficiente per scrivere un programma di conversione dati. Ma il risultato di queste trasformazioni non ci sarà visibile.

Da cui produrre i dati memoria ad accesso casuale L'operatore di output di scrittura viene utilizzato sullo schermo del monitor:

Qui, tra parentesi, viene inserito un elenco di output, un elenco di espressioni i cui valori vengono stampati. Possono essere espressioni numeriche, simboliche e logiche, comprese variabili e costanti.

Un insieme arbitrario di caratteri racchiusi tra apostrofi è considerato una costante di stringa. Una costante stringa può contenere qualsiasi carattere digitato sulla tastiera.

Esempio. L'istruzione write ("s=" , s) viene eseguita in questo modo:

  1. Sullo schermo vengono visualizzati i simboli racchiusi tra apostrofi: s=
  2. Sullo schermo viene visualizzato il valore della variabile memorizzata in una cella RAM denominata s.

Se il valore della variabile s è 15 ed è di tipo intero, lo schermo visualizzerà: s=15.

Se il valore della variabile s è 15, ma è di tipo reale, allora sullo schermo apparirà: s=l.5E+01.

Quando viene eseguita l'istruzione di output, tutti gli elementi dell'elenco di output vengono stampati immediatamente uno dopo l'altro. Pertanto, come risultato dell'operatore di scrittura (1, 20, 300), sullo schermo verrà visualizzata la sequenza di numeri 120300, che verrà percepita da noi come il numero 120300 e non come tre costanti numeriche separate. Puoi rendere i dati di output più accessibili alla percezione in diversi modi:

Formato di outputè un numero intero indicato dopo i due punti che determina quante posizioni sullo schermo deve occupare il valore visualizzato. Se in un numero ci sono meno cifre delle posizioni ad esso riservate sullo schermo, le posizioni libere vengono integrate con spazi a sinistra del numero. Se il numero specificato nel formato di output dopo i due punti è inferiore al necessario, verrà automaticamente aumentato al minimo richiesto.

Per emettere un numero reale in formato a virgola fissa, nell'elenco di output vengono specificati due parametri per ciascuna espressione:

  1. il numero totale di posti assegnati per il numero;
  2. il numero di posizioni nella parte frazionaria del numero.

Quando viene eseguita una nuova istruzione di scrittura, l'output continua sulla stessa riga. Per saltare a una nuova riga, utilizzare l'operatore writeln. Non ci sono altre differenze tra le istruzioni write e writeln.

4.2.2. Primo programma in linguaggio Pascal

Utilizzando gli operatori discussi sopra, creeremo un programma che calcolerà la circonferenza e l'area di un cerchio con un raggio di 5,4 cm.

I dati iniziali in questo problema sono il raggio: r - 5,4 cm Il risultato del programma dovrebbe essere i valori C - la circonferenza e S - l'area del cerchio. C, S e r sono quantità di tipo reale.

I dati iniziali e i risultati sono legati da relazioni conosciute dal corso di matematica: C = 2πr, S = πr +. Un programma che implementa i calcoli utilizzando queste formule sarà simile a:

Questo programma è corretto e risolve il problema. Quando lo esegui, otterrai il seguente risultato:

Tuttavia, il programma che abbiamo compilato presenta uno svantaggio significativo: trova la circonferenza e l'area di un cerchio per un singolo valore di raggio (5,4 cm).

Per calcolare la circonferenza e l'area di un cerchio per un valore di raggio diverso, sarà necessario apportare modifiche direttamente al testo del programma, ovvero modificare l'operatore di assegnazione. Apportare modifiche ad un programma esistente non è a dir poco conveniente (ad esempio quando il programma è grande e ci sono molti operatori di assegnazione). Di seguito conoscerai un operatore che ti consente di inserire i dati iniziali mentre il programma è in esecuzione, senza modificare il testo del programma.

4.2.3. Inserimento da tastiera

Per inserire valori variabili nella RAM, utilizzare l'operatore read input:

Quando viene eseguita l'istruzione read, il computer entra in modalità di attesa dati: l'utente deve inserire i dati dalla tastiera e premere il tasto Invio. È possibile inserire più valori per le variabili di tipo numerico separati da spazi o virgole. Quando si immettono variabili carattere, gli spazi e le virgole vengono trattati come caratteri, quindi non possono essere immessi.

Il primo valore della variabile immesso dall'utente viene inserito nella posizione di memoria il cui nome si trova per primo nell'elenco di input, ecc. Pertanto, i tipi di valori di input (flusso di input) devono corrispondere ai tipi di variabili specificate nella variabile sezione descrizione.

Esempio. Permettere

var i, j: intero; x: reale; a:carattere;

Assegniamo le variabili i, j, x e i valori 1, 0, 2,5 e "A". Per fare ciò, utilizzeremo l'operatore read (i, j, x, a) e organizzeremo il flusso di input in uno dei seguenti modi:

Qui non solo abbiamo utilizzato diversi delimitatori (spazio, virgola), ma abbiamo anche rappresentato il flusso di input come una, due e quattro righe.

È inoltre possibile utilizzare l'operatore readln per inserire dati dalla tastiera, che differisce dall'operatore read solo per il fatto che dopo l'esecuzione il cursore si sposta su una nuova riga.

Miglioriamo il programma n_1 organizzando l'immissione dei dati al suo interno utilizzando l'operatore di lettura. E affinché l'utente sappia a cosa è destinato il programma e comprenda quale azione il computer si aspetta da lui, visualizzeremo il corrispondente messaggi di testo utilizzando l'operatore writeln:

Il risultato del programma migliorato:

Ora il nostro programma può calcolare la circonferenza e l'area di un cerchio per qualsiasi valore di r. In altre parole, non risolve un singolo problema, ma un’intera classe di problemi. Inoltre, il programma organizza in modo chiaro e conveniente l'immissione dei dati iniziali e l'output dei risultati ottenuti. Ciò garantisce un'interfaccia utente amichevole.

Il più importante

Per inserire valori variabili nella RAM, vengono utilizzati gli operatori di input read e readln.

Per inviare i dati dalla RAM allo schermo del monitor, vengono utilizzati gli operatori di output write e writeln.

L'inserimento dei dati iniziali e l'output dei risultati dovrebbero essere organizzati in modo chiaro e conveniente; questo garantisce un'interfaccia utente amichevole.

Domande e compiti

  1. Scrivi un'istruzione che ti permetta di inserire il valore della variabile summa mentre il programma è in esecuzione.
  2. Alle variabili intere i, y, k devono essere assegnati rispettivamente i valori 10, 20 e 30. Annotare l'istruzione di input corrispondente al flusso di input:
      a) 20 10 30
      b) 30 20 10
      c) 10 30 20
  3. Descrivi le variabili necessarie per calcolare l'area di un triangolo in base ai suoi tre lati e scrivi un'istruzione che fornisca i dati di input richiesti.
  4. Qual è il risultato dell'esecuzione della dichiarazione?
      a) scrivere (a)
      b) scrivere (1 a ")
      c) scrivere (1 a=1, a)
  5. Di che tipo è la variabile f se, dopo aver eseguito l'istruzione write (f), sullo schermo viene visualizzato il seguente numero?
      a) 125
      b) 1,25E+2
  6. Come posso visualizzare un numero reale in formato punto fisso?
  7. Annotare gli operatori per inserire due numeri ed emetterli in ordine inverso.
  8. Ecco un frammento del programma:

    leggi un); leggere(b); c:=a+b; scrivere(a, b); scrivere (c)

    Semplificalo riducendo il numero di istruzioni di input e output.

  9. Ecco un frammento del programma:

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

    Quali numeri verranno visualizzati sullo schermo del computer?

  10. Scrivi un programma che calcoli l'area e il perimetro di un rettangolo in base ai suoi due lati.

Uscita dati
Trasmissione dei dati dalla RAM allo schermo del monitor:
scrivere
(<выражение 1> ,< выражение 2> , ...,< выражение N>)
elenco uscite
Espressioni: simboliche, numeriche, logiche,
comprese variabili e costanti
Esempio:
scrivere("s=", s).
Per s=15 lo schermo mostrerà: s=15.
Le informazioni tra virgolette vengono visualizzate sullo schermo
senza modifiche

Opzioni di organizzazione dell'output
Opzione
organizzazione del ritiro
Nessun separatore
Operatore di inferenza
scrivere(1, 20, 300).
Risultato
120300
Aggiungi delimitatori scrivi (1, ',' , 20,
– virgole
’, ’, 300)
1, 20, 300
Aggiungi delimitatori scrivi (1, ‘ ‘, 2, ‘ ‘, 3)
– spazi
1 20 300

Formato di output
Il formato di output consente di impostare il numero di posizioni
sullo schermo occupato dal valore visualizzato.
scrivi(s:x:y)
x - il numero totale di posizioni assegnate per il numero;
y - il numero di posizioni nella parte frazionaria del numero.
Operatore di inferenza
Risultato dell'esecuzione
operatore
write('s=', s:2:0);
s=15
write('s=', s:3:1);
s=15,0
write('s=', s:5:1);
s=
writeln
15.0
- uscita da una nuova riga!

Primo programma
programma n_1;
cost pi=3,14;
var r, c, s: reale;
inizio
r:=5,4;
c:=2*pi*r;
Risultato del programma:
s:=pi*r*r;
writeln("c="", c:6:4);
writeln("s=", s:6:4)
Turbo Pascal
Versione 7.0
FINE.
c=33,9120
s =91,5624

Inserimento da tastiera
Immissione di valori variabili nella RAM:
Leggere
(<имя переменной1>, …, <имя переменной N>)
elenco di input
Eseguendo l'istruzione di lettura:
1) il computer entra in modalità standby dati:
2) l'utente inserisce i dati dalla tastiera:
più valori variabili
è possibile inserire tipi numerici
separati da spazio o virgola;
quando si immettono variabili di carattere
Non è possibile utilizzare spazi e virgole;
3) l'utente preme il tasto Invio.

Inserimento da tastiera
!
I tipi di valore di input devono corrispondere
tipi di variabili specificati nella sezione descrizione
variabili.
var i, j: intero;x: reale;a: carattere;
leggi(i, j, x, a);
opzioni per organizzare il flusso di input:
1 0 2,5 A 1,0 1
2.5, A 0
2.5
UN
Dopo l'esecuzione dell'istruzione readln, il cursore si sposta su
nuova linea.

Programma migliorato
programma n_1;
cost pi=3,14;
var r, c, s: reale;
inizio
writeln("Calcola la circonferenza e l'area di un cerchio");
write("Digita r>>");
leggiln(r);
c:=2*pi*r;
Risultato del programma:
s:=pi*r*r;
writeln("c="", c:6:4);
Versione Pascal 7.0
writeln("s=", s:6:4) Turbo
Calcolo della circonferenza e dell'area di un cerchio
Immettere r >> 8.5
FINE.
c =53,3800
s =226,8650

Il più importante
Per inserire valori variabili nella RAM
Vengono utilizzati gli operatori di input read e readln.
Per visualizzare i dati dalla RAM sullo schermo
Il monitor utilizza gli operatori di output write e writeln.
È necessario l'inserimento dei dati iniziali e l'output dei risultati
essere organizzato in modo chiaro e conveniente; questo assicura
facilità d'uso dell'interfaccia utente.

Domande e compiti
1) Dato un frammento di programma:
a:=10; b:=a+1: a:=b–a; scrivere (a, b)
Quali numeri verranno visualizzati sullo schermo del computer?
2) Descrivere le variabili necessarie per il calcolo
l'area di un triangolo lungo i suoi tre lati, e
scrivere una dichiarazione che fornisce input
dati iniziali necessari.
3) Qual è il risultato dell'esecuzione della dichiarazione?
a) scrivere (a)
b) scrivere("a")
c) scrivi("a=", a)
4) È necessario assegnare le variabili intere i, j, k
rispettivamente i valori sono 10, 20 e 30.
Annotare l'istruzione di input corrispondente all'input
flusso:
a) 20 10 30
b) 30 20 10
c) 10,30,20

Operatoreè un elemento del linguaggio che specifica una descrizione completa dell'azione da eseguire. Ogni operatore è una frase completa di un linguaggio di programmazione e definisce una fase completamente completata dell'elaborazione dei dati. Gli operatori possono includere parole funzionali, dati, espressioni e altri operatori. IN lingua inglese questo concetto indicato con la parola “dichiarazione”, che significa anche “proposta”.

Ogni operatore in qualsiasi linguaggio di programmazione ha uno specifico sintassi E semantica. Sotto sintassi per operatore si intende un sistema di regole (grammatica) che ne determina la registrazione utilizzando gli elementi dell'alfabeto di questa lingua, che, insieme a vari simboli, include, ad esempio, parole funzionali. Sotto semantica l'operatore ne comprende il significato, ad es. quelle azioni che corrispondono al record di un particolare operatore. Ad esempio, registra io:= io + 1è un esempio di notazione sintatticamente corretta operatore di assegnazione nel linguaggio Pascal, la cui semantica in questo caso è la seguente: estrarre il valore della cella di memoria corrispondente alla variabile i, sommarlo con uno e scrivere il risultato nella stessa cella di memoria.

Nella maggior parte dei linguaggi di programmazione procedurali, l'insieme di operatori è quasi lo stesso e consiste in un operatore di assegnazione, operatori di selezione, operatori di ciclo, un operatore di chiamata di procedura e operatori di salto. A volte vengono distinti anche gli operatori vuoti (nessuna azione) e composti. Molti operatori sono un modo di rappresentare determinati costrutti algoritmici (vedi “ Disegni algoritmici” ) in un linguaggio di programmazione. Diamo un'occhiata ai gruppi di operatori in modo più dettagliato utilizzando la sintassi del linguaggio Pascal.

Operatore di assegnazione

L'assegnazione è un'azione del computer a seguito della quale una variabile riceve il valore di un'espressione calcolata (viene posizionata nella cella di memoria corrispondente alla variabile). Per descrivere tale azione nei linguaggi di programmazione, c'è operatore di assegnazione.

In generale, l'operatore di assegnazione è scritto in questo modo:

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

Ad esempio, in Pascal la combinazione di simboli viene utilizzata come segno di assegnazione: =. In molte altre lingue è un segno di uguale.

Il risultato dell'esecuzione dell'operatore di assegnazione è un cambiamento nello stato dei dati: tutte le variabili diverse da variabile, situati sul lato sinistro dell'operatore di assegnazione, non cambiano il loro significato, ma quello specificato variabile ottiene il valore espressioni, che appare sul lato destro dell'operatore di assegnazione. Nella maggior parte dei casi è richiesto che il tipo espressioni corrispondeva al tipo variabile. In caso contrario, l'operatore viene considerato sintatticamente errato oppure il tipo dell'espressione viene convertito nel tipo della variabile (vedi “ Tipi di dati” ).

Operatori di selezione

Questi operatori sono chiamati diversamente dichiarazioni condizionali. Le istruzioni condizionali vengono utilizzate per programmare algoritmi che contengono un costrutto di ramificazione algoritmica.

Esistono diversi tipi di istruzioni condizionali nei linguaggi di programmazione. L'istruzione condizionale completa corrisponde alla struttura algoritmica della ramificazione completa:

In un linguaggio di programmazione, l'operatore condizionale corrispondente ha la forma:

se B Poi S1 altro S2

Se l'espressione B, che viene calcolato all'inizio dell'esecuzione dell'istruzione condizionale, ha il valore "vero", quindi l'istruzione verrà eseguita S1, altrimenti - operatore S2. Operatori S1 E S2 può essere composto.

La struttura algoritmica della ramificazione incompleta è implementata utilizzando un operatore condizionale incompleto, che ha la forma:

se B Poi S

Qui Bè un'espressione logica, e S- operatore arbitrario. Operatore S verrà eseguito se l'espressione B è vera.

Se un operatore condizionale implementa solo due rami di scelta (“sì” e “no”), allora using operatore variante (caso-operator) è possibile programmare una struttura multi-ramo. L'operatore variante è simile a:

caso E Di

Eseguita questo operatore così: il significato dell'espressione E ricercato tra i valori riportati nella scheda operatore V1, V2, …, Vn e se viene trovato tale valore, viene eseguito l'operatore corrispondente S1, S2, …, Sn.

In diversi linguaggi di programmazione, la sintassi e persino la semantica degli operatori elencati possono differire, ma le capacità fornite al programmatore da tali costruzioni sono approssimativamente le stesse.

Esempio 1. Nell'articolo " Disegni algoritmici”2 è stato fornito un esempio di scrittura di un algoritmo per risolvere un'equazione quadratica generalizzata utilizzando costruzioni di ramificazione. Ecco un frammento di un programma in Pascal che implementa lo stesso algoritmo:

Se un = 0 Poi

Se b = 0 Poi

se c = 0 Poi writeln("x - qualsiasi")

altro writeln("nessuna radice")

altro scriviln(-c/b)

altrimenti comincia

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

Se D< 0 Poi writeln("nessuna radice")

altrimenti comincia

x1:= -b + sqrt(D);

x2:= -b - sqrt(D);

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

Istruzioni in ciclo

Gli operatori di loop implementano strutture algoritmiche cicliche; vengono utilizzati per azioni che si ripetono più volte. In molti linguaggi di programmazione esistono tre tipi di operatori di ciclo: “con precondizione”, “con postcondizione”, “con parametro”.

Una struttura algoritmica necessaria e sufficiente per programmare i cicli è un ciclo “con una precondizione”, quindi può essere definito il tipo principale di ciclo. L'operatore di ciclo con una precondizione è simile a:

mentre B Fare S

Operatore S, per il quale viene creato un ciclo per l'esecuzione ripetuta corpo del ciclo. L'esecuzione di un operatore di ciclo si riduce all'esecuzione ripetuta del corpo del ciclo fino al valore dell'espressione logica B vero (fino a diventare falso). In effetti, istruzioni di ciclo simili implementano l'esecuzione ripetuta di istruzioni condizionali Se B Poi S, mentre la condizione è vera B.

Esempio 2. Considera l'uso di tale operatore di ciclo per calcolare la somma delle cifre di un numero naturale N:

Mentre N>0 inizia

S:= S+N mod 10;

N:=N div 10

In un ciclo con una postcondizione, il corpo del ciclo precede la condizione B. A differenza di un ciclo con una precondizione, qui B è la condizione per terminare il ciclo. L'operatore di ciclo con postcondizione in Pascal ha la forma:

ripetere S Fino a B

Con questa organizzazione del ciclo, il corpo del ciclo S deve essere eseguito almeno una volta.

In quasi tutti i linguaggi procedurali esiste operatore di ciclo con parametro. Può essere rappresentato schematicamente in questo modo:

per< variabile > E1 A E2 fare un passo E3 Fare S

Ecco il significato variabile(parametro del ciclo) cambia dal valore dell'espressione E1 a E2 in passi di E3. Per ciascuno di questi valori di un parametro di ciclo, viene eseguito l'operatore S. Nel linguaggio Pascal, il concetto di passo è assente nella descrizione di questo operatore e il passo stesso per un parametro di ciclo intero può essere uguale a 1 o –1. L'operatore “loop con parametro” viene utilizzato per programmare cicli con un numero specificato di ripetizioni. Non è adatto per programmare cicli iterativi (il cui numero di ripetizioni non è noto in anticipo).

Operatore di chiamata di procedura

Nell'articolo " Subroutine” descrive in dettaglio questo tipo di subroutine, come le procedure. Le routine del linguaggio di programmazione standard incluse in una delle librerie di routine, così come le routine utente descritte all'interno di questo blocco, vengono chiamate utilizzando l'operatore chiamata di procedura:

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

Qui E1,E2,…,En sono variabili o espressioni che rappresentano parametri effettivi accesso alla procedura. Più comunemente usato procedure standard sono procedure di input e output dei dati (lettura e scrittura in Pascal).

Chiamare una procedura equivale semanticamente ad eseguire il blocco descritto come corpo della procedura, dopo aver passato in esso i valori iniziali di alcune variabili (parametri valore) o sostituito i nomi di alcune variabili (parametri variabile) con i nomi delle variabili effettive specificate quando si chiama la procedura.

Esempio 3. Descriviamo la procedura abc:

procedura abc(a,b:intero; var c: intero);

Chiamare questa procedura abc(2,3,x) equivale a un blocco di azioni:

Operatori di salto

L'operatore più famoso in questo gruppo di operatori è l'operatore di salto incondizionato vai a. Se aggiungi a tutte o ad alcune delle dichiarazioni di programma esistenti tag, allora nel programma diventa possibile utilizzare un operatore di transizione della forma:

vai a<метка>

L'etichetta in questo caso corrisponde all'inizio dell'istruzione da cui deve proseguire l'esecuzione del programma. Questo operatore consente di scrivere algoritmi in un linguaggio di programmazione che hanno una struttura arbitrariamente complessa. Ma spesso il ricorso alla transizione incondizionata è ingiustificato, perché porta a confusione, male programma leggibile. Quasi l'unico utilizzo significativo dell'operatore vai aè un'uscita da più cicli annidati contemporaneamente, ad esempio, durante l'elaborazione di array bidimensionali.

Esempio 4. Supponiamo di dover determinare se un array bidimensionale a contiene un elemento uguale a 0:

per io:= 1 A N Fare

per j:= 1 A N Fare

se a = 0 quindi iniziare

1: Se B Poi scrivere("è") altro scrivere("no");

Un programma sviluppato secondo le regole della programmazione strutturata non dovrebbe contenere operatori di salto incondizionati. Il programma sopra senza utilizzare l'operatore vai a può essere riscritto come segue:

mentre no B E(io< N) inizia

mentre no B E(J< N) inizia

Se un = 0 Poi b:= vero;

Se B Poi scrivere("è") altro scrivere("no");

In questo caso, il programma strutturato è meno visivo del programma con vai a.

Altri operatori di salto possono essere definiti nei linguaggi di programmazione. Ad esempio, in Pascal: rottura(interruzione anticipata del ciclo, passaggio a un'istruzione che deve essere eseguita dopo la fine del ciclo), Continua(completamento anticipato dell'iterazione del ciclo corrente e transizione a quella successiva), Uscita(interruzione anticipata del sottoprogramma, uscita da esso), fermati(interruzione anticipata del programma, transizione alla sua fine). Operatori simili esistono nei linguaggi C, C++ e Java.

Operatore composto

Un'istruzione composta è un gruppo di istruzioni racchiuse tra parentesi quadre (in Pascal - inizioFINE; in C, C++ - (…)).

L'operatore composto è stato introdotto nei linguaggi di programmazione per facilitare la descrizione dei costrutti linguistici. Ad esempio, in Pascal, la parte eseguibile di ciascun blocco (programma, procedura, funzione) è un'istruzione composta. Allo stesso modo, il corpo di qualsiasi operatore di ciclo è costituito da un solo operatore, magari composto. Un'alternativa a un operatore composto può essere una parola funzione che indica la fine di un particolare operatore, ad esempio, FINISCI SE nel linguaggio di base.

L'argomento "Operatori dei linguaggi di programmazione" viene solitamente studiato solo nel contesto di uno specifico linguaggio di programmazione. Nel considerarlo, è importante mostrare la connessione tra le costruzioni algoritmiche di base e gli operatori: le costruzioni algoritmiche sono scritte in un linguaggio di programmazione utilizzando gli operatori corrispondenti. L'eccezione, in un certo senso, è il disegno sequenziale, che determina l'ordine lineare delle azioni. Le azioni in un programma strettamente lineare sono implementate solo tramite istruzioni di assegnazione e istruzioni di chiamata di procedura.

Nella fase iniziale della programmazione dell'apprendimento, gli scolari incontrano molti problemi. La prima barriera psicologica che devono superare è quando imparano l'operatore di assegnazione. Uno dei compiti principali che devi risolvere insieme ai tuoi studenti è scambiare i valori di due variabili. Puoi chiedere agli scolari di risolvere mentalmente il problema di come scambiare il contenuto di due cassetti, ad esempio una scrivania. Tipicamente, in questa fase della discussione, gli studenti si rendono conto che è necessaria una terza casella (variabile) per risolvere il problema. Tuttavia, quando scrivono questo algoritmo, spesso confondono in quale parte dell'operatore di assegnazione (sinistra o destra) dovrebbe apparire una particolare variabile.

Gli errori nella scrittura delle espressioni aritmetiche e logiche derivano dall'ignoranza della precedenza delle operazioni utilizzate nell'espressione. Allo stesso tempo, le operazioni non significano solo operazioni aritmetiche, ma anche operazioni di confronto e connettivi logici, e nel linguaggio C l'operazione di assegnazione, cosa molto insolita per gli scolari. La situazione è complicata dal fatto che in diversi linguaggi di programmazione le stesse operazioni hanno priorità relative diverse. Dovresti anche prestare attenzione alla corrispondenza tra i tipi della variabile e l'espressione sui lati sinistro e destro dell'operatore di assegnazione (vedi “ Tipi di dati”).

Quando si padroneggiano gli operatori di selezione, è utile che gli studenti programmino un algoritmo contenente una struttura multi-ramo, sia utilizzando una combinazione di istruzioni condizionali sia utilizzando un operatore di selezione.

Esempio. Ad una variabile intera N Inserisci l'età della persona in anni. Digita la frase “ Ho K anni”, sostituendo la parola anni SU anno O dell'anno a seconda del numero K. Ecco due soluzioni a questo problema:

Se(K mod 100) In

Poi writeln("Ho ","k," anni")

caso K mod 10 Di

0,5..9:writeln("Ho ","k," anni");

1:writeln("Ho ","k," anni");

2..4:writeln("Ho ","k," anni");

var k, n: intero;

leggiln(k); n:= kmod 10;

Se(K mod 100) In

Poi writeln("Ho ","k," anni") altro

Se n=1 Poi writeln("Ho ","k," anni")

Se(n >=) E(N<= 4)

Poi writeln("Ho ","k," anni")

altro writeln("Ho ","k," anni")

Quando si considerano gli operatori di loop, è utile suggerire di programmare la stessa attività in tre modi diversi utilizzando tre operatori di loop e viceversa, in base alle condizioni del problema, imparare a determinare quale operatore di loop è più adatto in un caso particolare.

La procedura di chiamata dell'operatore è semplice a prima vista. Qui è importante spiegare le regole per il passaggio dei parametri a procedure e funzioni, la differenza tra parametri variabili e parametri valore (in quest'ultimo caso possiamo passare non solo il nome della variabile, ma anche una costante o anche un'espressione del corrispondente tipo). I parametri formali e quelli effettivi devono corrispondere nel tipo, ma non nel nome, il che è tutt'altro che ovvio per gli studenti.

Studiare il condizionale e soprattutto l'enunciato composto è una buona opportunità per parlare agli studenti dello stile di scrittura del programma. Esistono diversi modi comuni per scrivere programmi strutturati in Pascal, ma tutti includono il rientro per accogliere strutture annidate. Importante per la registrazione di programmi e commenti.

Il codice del programma è mostrato in Fig. 4.3-9.

Option Strict On Option Explicit On Imports System.Math Public Class Form1 "Funzione per inserire le coordinate di un punto in un TextBox Function vvod(ByVal T As TextBox) As Single Return CSng(Val(T.Text)) End Function "Procedura per emettendo il risultato in un TextBox Sub vivod (ByVal Z As Single, ByVal T As TextBox) T.Text = CStr(Z) End Sub "Funzione per calcolare la lunghezza di un segmento dalle coordinate di due punti Public Function Segment Length(ByVal x1 Come singolo, _ ByVal y1 Come singolo, ByVal x2 Come singolo, _ ByVal y2 Come singolo) Come singolo Return CSng(Sqrt((x2 - x1) ^ 2 + (y2 - y1) ^ 2)) Funzione finale "Procedura per calcolo del perimetro e dell'area di un triangolo Sub PS(ByVal x1 As Single, ByVal y1 As Single, _ ByVal x2 As Single, ByVal y2 As Single, _ ByVal x3 As Single, ByVal y3 As Single, _ ByRef P As Single , ByRef S As Single) Dim A, B, C, Pp As Single A = Lunghezza del segmento (x1 , y1, x2, y2)"Richiamo della funzione per il calcolo della lunghezza del negativo. B = Lunghezza del segmento (x2, y2, x3, y3) C = Lunghezza del segmento (x3, y3, x1, y1) P = (A + B + C) : Pp = P / 2 S = CSng(Sqrt(Pp * (Pp - A) * (Pp - B) * (Pp - C))) End Sub "Procedura per l'elaborazione dell'evento click sul pulsante Button1 Private Sub Button1_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button1.Click Dim x1 Come singolo, x2 Come singolo, x3 Come singolo Dim y1 Come singolo, y2 Come singolo, y3 Come singolo Dim Per Come singolo, Plo Come singolo x1 = vvod(TextBox1) : x2 = vvod(TextBox2) : x3 = vvod(TextBox3 ) y1 = vvod(TextBox6) : y2 = vvod(TextBox7) : y3 = vvod(TextBox8) PS(x1, y1, x2, y2, x3, y3, Per, Plo) vivod(Plo, TextBox4) : vivod(Plo, TextBox5) End Sub Private Sub Button2_Click(ByVal mittente As System.Object, _ ByVal e As System.EventArgs) Handles Button2.Click End End Sub End Class

Eseguire l'applicazione e ottenere risultati

Il risultato è mostrato in Fig. 4.3-10.

Prova della correttezza del risultato

A=
= 2,82843 B =
= 2

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


Domande di sicurezza sull'argomento

“La struttura dei programmi, dei moduli e delle procedure VB.

Strumenti di programmazione per algoritmi di struttura lineare"

1. Cos'è un modello matematico?

2. Quali sono le fasi principali coinvolte nella risoluzione dei problemi su un computer?

3. Quali fasi della risoluzione dei problemi informatici vengono eseguite senza la partecipazione di un computer?

4. Cos'è chiamato modello matematico di un oggetto o fenomeno?

5. Quali sono i passaggi sequenziali nel processo di sviluppo del programma?

6. Cos'è un algoritmo?

7. Quali proprietà di base dovrebbe avere un algoritmo?

8. Quali sono i modi per descrivere gli algoritmi?

9. Quali simboli grafici sono solitamente rappresentati nei diagrammi degli algoritmi?

10. Come lavora l'interprete?

11. Come funziona il compilatore?

12. Quale algoritmo si chiama lineare?

13. Quale algoritmo è chiamato ciclico?

14. Quale algoritmo è chiamato branching?

15. Qual è la differenza tra passare i risultati di funzioni e procedure?

16. L’ottenimento di un risultato plausibile dimostra che il programma è corretto?

17. Quali errori potrebbero non essere rilevati se non si controlla (visualizza, scorre) il programma?

18. In che modo testare un programma è diverso dal debuggarlo?

19. È possibile dimostrare la correttezza di un programma utilizzando i test?

20. In quale fase del programma vengono calcolati i risultati dei test di riferimento?

21. Elencare le fasi principali del processo di test.

22. Qual è la differenza tra errori di sintassi ed errori semantici?

23. Cosa indica la mancanza di messaggi di errore di sintassi della macchina?

24. Quali tipi di errori non è in grado di rilevare il traduttore?

25. Qual è il programma?

26. In quale fase avviene la ricerca e l'eliminazione degli errori nel programma?

27. Cos'è un sistema di programmazione?

28. Qual è la procedura?

29. Quali sono i vantaggi di un programma dotato di procedure?

30. Quali strumenti di programmazione procedurale sono disponibili in VB?

31. Come vengono scambiati i dati tra le singole procedure del programma?

32. Quali sono i parametri effettivi e formali?

33. Come passare come parametro: una costante, una variabile, un'espressione?

34. Come vengono utilizzate le variabili globali?

35. Come vengono utilizzate le variabili locali?

36. Cosa sono i parametri formali?

37. Quali sono i parametri effettivi?

38. Cosa succede quando viene richiamata una procedura?

39. Come si possono passare i parametri a una procedura?

40. Quali parametri vengono passati per valore?

41. Quali parametri vengono passati all'indirizzo?

42. Cosa sono gli strumenti di programmazione procedurale?

43. Qual è il risultato dell'esecuzione di una funzione?

44. Come dovrebbero essere dichiarate le singole variabili in modo che siano locali all'interno di una funzione?

45. Quale istruzione viene utilizzata per uscire anticipatamente da una funzione?

46. Cosa viene controllato quando si chiamano funzioni e procedure?

47. Come dovrebbero essere dichiarati i parametri formali per passare un parametro variabile per valore?

48. Come dovrebbero essere dichiarati i parametri formali per passare un parametro variabile a un indirizzo?

49. Come viene richiamata una procedura di funzione dal programma chiamante?

50. Quale potrebbe essere il risultato della procedura?

51. Quale affermazione viene utilizzata per uscire anticipatamente da una procedura?

52. Dove si possono trovare le descrizioni delle funzioni e delle procedure?

53. Dove sarà disponibile una variabile dichiarata utilizzando l'operatore Public?

54. Dove può trovarsi l'operatore privato?

55. Cos'è un commento e le regole per scriverlo?

56. Quali sono i valori delle variabili all'inizio del programma?

57. Perché vengono descritte (definite) procedure e funzioni?

58. Come si chiamano le procedure?

59. Come si chiamano le funzioni?


Informazioni correlate.





Superiore