LA CAMPANA

C'è chi legge questa notizia prima di te.
Iscriviti per ricevere articoli freschi.
E-mail
Nome
Cognome
Come vuoi leggere The Bell
Niente spam

Le dichiarazioni strutturate sono quelle che includono altre istruzioni e controllano la sequenza della loro esecuzione. Questi includono:

  • dichiarazione composta
  • operatore condizionale Se;
  • dichiarazione condizionale del caso
  • ripeti l'istruzione del ciclo;
  • istruzione loop while;
  • operatore per loop.

Dichiarazione composta

È spesso necessario che in relazione ad alcune azioni nel programma vengano percepiti più operatori come un solo operatore. Tale operatore può essere ottenuto se la sequenza necessaria di operatori è combinata con parentesi operatore. Le parole di servizio Begin e End sono chiamate parentesi operatore.

Formato operatore:

operatore numero 1;

operatore n. 2;

operatore n. 3;

numero operatore n-1;

numero operatore n; Fine;

La parola Begin svolge il ruolo di parentesi quadra aperta, la parola End svolge il ruolo di parentesi quadra chiusa.

Un operatore composto viene percepito come un singolo operatore. Può essere inserito ovunque nel programma in cui è consentito un solo operatore.

Gli operatori inclusi nell'operatore composto, come tutti gli operatori, sono separati da un punto e virgola, ma è possibile omettere questo separatore prima della fine. Dopo la fine, è necessario un punto e virgola come separatore tra l'istruzione composta e l'istruzione successiva.

Nelle sezioni seguenti, il significato e lo scopo dell'istruzione composta saranno illustrati da numerosi esempi.

Dichiarazione condizionale IF

L'operatore If implementa il costrutto algoritmico "Soluzione" e consente di modificare l'ordine di esecuzione degli operatori in base alla verità o alla falsità di una determinata condizione. Il formato dell'operatore può essere scritto in due forme: completo e incompleto.

Formato operatore in forma completa:

Se<условие> Poi<оператор 1> Altro<оператор 2>

Formato operatore in forma incompleta:

Se<условие>Poi<оператор 1>

If (if), Then (then), Else (altrimenti) sono parole riservate.

Gli schemi a blocchi dell'istruzione if sono presentati di seguito:

L'istruzione condizionale funziona come segue. L'espressione condizionale viene calcolata per prima.< условие >. Se il risultato è True, allora< оператор 1 > (dopo la parola Then), e< оператор 2 > saltato. Se il risultato è Falso, allora< оператор 1 > saltato ma eseguito< оператор 2 > (dopo la parola Else). Altrimenti non è mai preceduto da un punto e virgola, perché non è la fine dell'istruzione If.

Altra parte<оператор 2> L'istruzione If condizionale può essere omessa. Se una< условие > Se l'affermazione è vera, allora<оператор 1> in caso contrario, questa affermazione verrà ignorata. In questo caso, il formato dell'istruzione condizionale è incompleto:

Confronta due design:

Se<условие>Poi<оператор 1>;

Se<условие>Poi<оператор 1>; <оператор 2>;

Nella prima riga<оператор 1> eseguito o non eseguito a seconda dell'esecuzione<условия> . Nella seconda riga<оператор 2> sempre eseguito perché dopo<оператора 1> c'è un separatore ";" e tutto ciò che vale il campo di separazione è un altro operatore. Pertanto, in base al formato dell'istruzione If, \u200b\u200bpuò esistere una sola istruzione dopo le parole riservate Then ed Else.

Esempio:

Se a\u003e 0 Quindi b: \u003d 1;

Se a\u003e 0 Quindi b: \u003d 1; a: \u003d b; (operatore a: \u003d b; sempre eseguito)

Se, dopo Then ed Else, è necessario eseguire non uno, ma diversi operatori, è necessario inserire le parentesi degli operatori, ad es. usa un'istruzione composta.

In questo caso, l'istruzione If sarà simile alla seguente:

Se<условие>Poi

operatore 11;

operatore 1n;

operatore 21;

operatore 2n;

Esempio.

Se a\u003e 0 Quindi iniziare b: \u003d 1; a: \u003d b; fine;

COMPITO 1. Calcola il valore della funzione data dalle disuguaglianze

y \u003d x + 1 in x<0; y=2∙x при x>0. programma a5; var x, y: real; inizia a scrivere ("Inserisci il valore x:"); readln (x); se x writeln ("Il valore di y è:", y: 6: 2) fine.

I risultati del programma:

Immettere x: 0,5

Il valore di y è: 1.00

COMPITO 2. Scrivi un programma per risolvere l'equazione quadratica. Se il discriminante è inferiore a zero, quindi emettere il messaggio corrispondente.

Programma a6; var a, b, c: real; (coefficienti di equazione) x1, x2: reale; (radici dell'equazione) d: reale; (discriminante) iniziare Writeln ("Soluzione dell'equazione quadratica": 50); Scrivi ("Inserisci i valori dei coefficienti a, b, c:"); Readln (a, b, c); (input di coefficienti) d: \u003d b * b-4 * a * c; se (d<0) then Writeln(‘Уравнение не имеет корней.’) else begin {операторные скобки} x1:=(-b+sqrt(d))/(2*a); x2:=(-b-sqrt(d))/(2*a); WriteLn(‘Корни уравнения: ’, x1:8:2,x2:8:2); end; end.

I risultati del programma:

La soluzione dell'equazione quadratica

Immettere i coefficienti a, b, c: 3 1 6

L'equazione non ha radici.

Nell'istruzione If non è possibile utilizzare solo un'istruzione composta, ma anche qualsiasi istruzione strutturata. L'operatore condizionale Se considerato sopra può essere utilizzato anche come tale operatore. In questo caso, parliamo di istruzioni nidificate If.

Esempio.

se condizione quindi
inizio Staffe operatore
operatore; nidificato
Dichiarazione IF
forma incompleta
se condizione quindi operatore
dichiarazione else;
fine
altro
inizio Staffe operatore
operatore; nidificato
dichiarazione IF
forma incompleta
se condizione
quindi dichiarazione;
fine;

Quando si lavora con operatori nidificati Se le seguenti regole dovrebbero essere considerate:

  • prima della parola riservata altrimenti il \u200b\u200bsimbolo ";" mai impostato;
  • la parola riservata else è sempre associata alla parola riservata più vicina quindi di fronte ad essa.

COMPITO 3. Miglioriamo il programma per risolvere l'equazione quadratica (TASK 2). Quando il valore del coefficiente è a \u003d 0, l'equazione degenera. Questo fatto non è stato preso in considerazione nel programma, il che causerà un errore fatale durante l'esecuzione del programma (divisione per zero). Per escludere la divisione per zero, controlliamo il valore del coefficiente a dopo averlo inserito dall'operatore Readln (a, b, c).

Poiché la variabile a è dichiarata nel programma come una variabile di tipo reale, il suo valore numerico nella macchina non è rappresentato esattamente, con qualche errore. Pertanto, un record come

Esistono diverse opzioni per confrontare correttamente i valori di una variabile reale con zero:

COMPITO 4. Programma avanzato di soluzioni quadratiche.

Programma a7; Var a, b, c: real; (coefficienti di equazione) x1, x2: reale; (radici dell'equazione) d: reale; (discriminante) iniziare Writeln ("Soluzione dell'equazione quadratica": 50); Scrivi ("Inserisci i valori dei coefficienti a, b, c:"); Readln (a, b, c); (coefficienti di immissione) se rotondo (a)<>0 quindi inizia d: \u003d b * b-4 * a * c; se d<0 then Writeln(‘Уравнение не имеет корней.’) else begin{операторные скобки} x1:=(-b+sqrt(d))/(2*a); x2:=(-b-sqrt(d))/(2*a); WriteLN(‘Корни уравнения: ’, x1:8:2,x2:8:2); end; end else Writeln(‘Деление на нуль.’); end.

I risultati del programma:

Soluzione dell'equazione quadratica Immettere i valori dei coefficienti a, b, c: 0 1 6 Divisione per zero.

Istruzione di selezione condizionale del caso

L'operatore di selezione è una generalizzazione dell'operatore If e viene utilizzato nei casi in cui è necessario eseguire un solo operatore dall'insieme di operatori in base al valore della chiave di selezione.

Un'espressione viene utilizzata come chiave di selezione, che si trova tra le parole riservate Case e of. Un'espressione può essere un tipo intero, logico o di carattere. Un'espressione non può essere di tipo Reale, String.

Formato operatore:

Caso di "<ключ выбора>"costante1: operatore 1; costante2: operatore 2; costante3: operatore 3; ... costante N-1: operatore N-1; costante N: operatore Nn; Else altro operatore;

Qui Case (nel caso), of (of), Else (altrimenti), End (end) sono parole riservate.

La chiave di selezione è un'espressione di qualsiasi tipo tranne Real e String.

Costante1 è una costante dello stesso tipo dell'espressione.

Operator1 è un operatore arbitrario.

L'operatore di selezione agisce come segue. Innanzitutto, viene valutata l'espressione<ключ выбора> e quindi nella sequenza di operatori viene cercata una che è preceduta da una costante uguale al valore calcolato<ключ выбора> . L'istruzione trovata viene eseguita, dopodiché l'istruzione di selezione completa il suo lavoro (il controllo passa alla fine). Se una costante corrispondente al valore calcolato della chiave di selezione non viene trovata nell'elenco delle costanti, il controllo viene trasferito all'operatore dietro la parola Else.

Altra parte<оператора> può essere omesso, quindi se la costante richiesta non è nell'elenco delle costanti, non accade nulla e l'operatore di selezione termina semplicemente il suo lavoro.

COMPITO 5. Scrivi un semplice programma di calcolatrice.

Programma a8; var x, y: real; z: reale; (risultato) op: char; (tasto di selezione) inizia a scrivere ("Inserisci gli operandi x, y:"); Readln (x, y); Scrivi ("Inserisci l'operazione (+, -, *, /):"); Readln (op); caso op di "+": z: \u003d x + y; "-" "z: \u003d x-y; "*" "Z: \u003d x * y; "/": Se y0 allora z: \u003d x / y Elsewriteln ("Divisione per zero"); Else writeln ("Nessuna azione fornita!"); fine; (op) (in modo da poter contrassegnare "il cui" fine) writeln ("Il risultato è \u003d", z: 8: 2); fine.

I risultati del programma:

Immettere gli operandi x, y: 4 2

Immettere l'operazione (+, -, *, /): *

Il risultato è \u003d 8,00

Nel programma, la chiave di selezione è una variabile del tipo di carattere. A seconda del valore del carattere immesso (+, -, *, /), viene eseguita una delle operazioni aritmetiche: addizione, sottrazione, moltiplicazione o divisione. Se si inserisce zero come divisore, la divisione non è possibile e viene visualizzato il messaggio "Divisione per zero". Se viene inserito un altro personaggio, il risultato sarà il messaggio "Nessuna azione!". Se vengono immesse operazioni valide, viene visualizzato il risultato.

COMPITO 6. Scrivi un programma che richiede all'utente il giorno della settimana, quindi visualizza il nome del giorno della settimana o un messaggio di errore se vengono inseriti dati errati.

Programma a9; Var n: intero; (giorno della settimana) Inizia a scrivere ("Inserisci il giorno della settimana:"); readln (n); caso n di 1: writeln ("lunedì"); 2: writeln ("martedì"); 3: writeln ("mercoledì"); 4: writeln ("giovedì"); 5: writeln ("venerdì"); 6: writeln ("sabato"); 7: writeln ("domenica"); altrimenti scrivi ("eri sbagliato!") fine; (n) fine.

I risultati del programma:

Immettere il numero del giorno della settimana: 1

Lunedi

Nessuna costante dovrebbe coincidere con un'altra. Se è necessario eseguire lo stesso operatore per più costanti, ad esempio possono essere elencati con una virgola

caso n di 1,3,5,7,9: writeln ("Questi sono numeri dispari"); 2,4,6,8,10: writeln ("Questi sono numeri pari"); fine;

Operatore viene chiamata frase del linguaggio di programmazione che definisce una descrizione completa di alcune azioni che devono essere eseguite. La parte principale del programma in Turbo Pascal è una sequenza di operatori. Le istruzioni di separazione sono punti e virgola. Tutti gli operatori del linguaggio Turbo Pascal possono essere divisi in due gruppi: semplice e strutturale.

Vengono chiamati operatori che non contengono altri operatori semplice. Questi includono assegnazione, salto incondizionato, chiamata di procedura e dichiarazione vuota.

Operatore di assegnazione

Operatore di assegnazione (:=) prescrive di eseguire l'espressione specificata sul lato destro e di assegnare il risultato a una variabile il cui identificatore si trova sul lato sinistro. La variabile e l'espressione devono essere compatibili per tipo.

L'operatore di assegnazione viene eseguito come segue: innanzitutto, viene calcolata l'espressione sul lato destro dell'assegnazione, quindi il suo valore viene assegnato alla variabile indicata sul lato sinistro dell'operatore.

Ad esempio, per l'operatore

Rezult: \u003d A div B;

viene eseguita la prima divisione intera del valore variabile E sul valore della variabile NELe quindi il risultato viene assegnato alla variabile Rezult.

Esempi di applicazione dell'operatore di assegnazione:

E:= 8;

S: \u003d A *NEL;

Ostatok: \u003d A mod B;

Rapporto: \u003d A / B;

Operatore di salto incondizionato (vai a)

Operatore di salto incondizionato (vai a) significa "vai a" e viene utilizzato nei casi in cui dopo aver eseguito un operatore è necessario eseguire non quello successivo in ordine, ma qualche altro operatore contrassegnato da un'etichetta.

Ricorda che un'etichetta è dichiarata nella sezione di descrizione dell'etichetta e può contenere sia caratteri numerici che alfabetici.

Quando si utilizza un operatore vai abisogna ricordarlo ambito dell'etichetta è solo il blocco in cui è descritto. È vietato il trasferimento del controllo a un'altra unità.

Regole per l'utilizzo dell'operatore di salto incondizionato. L'uso di trasferimenti di controllo incondizionato in un programma è considerato teoricamente ridondante ed è soggetto a serie critiche, poiché contribuisce alla creazione di programmi oscuri e difficili da modificare che causano grandi difficoltà nel debug e nella manutenzione. Pertanto, si consiglia un uso minimo da parte dell'operatore. vai a fatte salve le seguenti regole:

Bisogna cercare di utilizzare gli operatori di transizione (se sembra impossibile farne a meno) per trasferire il controllo solo verso il basso (in avanti) in tutto il testo del programma; se necessario, il controllo di trasferimento indietro dovrebbe usare operatori di loop;

La distanza tra l'etichetta e l'operatore di transizione non deve superare una pagina di testo (o l'altezza dello schermo).

Un esempio di utilizzo dell'operatore di salto incondizionato:

etichetta metka; (nella sezione descrizioni le etichette descrivono un'etichetta con un nomeMetka}

inizio (programma principale)

(principali dichiarazioni del programma)

(dichiarazioni del programma principale etichettate)

Ordine di lavoro

    Per studiare informazioni teoriche sull'argomento: "Scrivere un programma in Pascal usando gli operatori di assegnazione e di salto incondizionato".

    Ottieni un incarico individuale dall'insegnante e sviluppa un programma in conformità con l'attività.

    Mostra il programma di lavoro all'insegnante.

    Rispondi alle domande di controllo.

domande di prova

    Gli elementi principali della programmazione.

    Le principali caratteristiche del programma. I concetti di linguaggio, sovrapposizioni, blocchi globali e locali.

    Operatori del linguaggio di programmazione Pascal. Operatore di assegnazione. Formato, esempi.

    Operatore di salto incondizionato. Formato, esempi. Termini d'uso di base

Lavoro di laboratorio n. 7

Scrivere un programma in Pascal usando operatori condizionali e un operatore di selezioneAstuccio

Obbiettivo : la formazione di conoscenze e abilità nel lavorare con gli operatori linguistici. Acquisizione di abilità di scrittura mediante operatori di assegnazione e salti incondizionati.

Brevi informazioni teoriche

Dichiarazioni condizionali

Gli operatori condizionali sono progettati per selezionare per l'esecuzione una delle possibili azioni (operatori) a seconda di una determinata condizione (in questo caso, una delle azioni può essere vuota, ovvero assente). Come condizioni di selezione, viene utilizzato il valore. espressione logica.

Turbo Pascal ha due dichiarazioni condizionali: se e caso.

Se la condizione condizione

Dichiarazione delle condizioni se è uno degli strumenti più popolari che cambiano l'ordine naturale di esecuzione delle istruzioni del programma.

Può assumere una delle seguenti forme:

    se<условие> poi<оператор1>

altro<оператор2>;

    se<условие> poi<оператор>;

Tradotti dall'inglese, questi formati possono essere definiti come:

    SE UNA <условие> PER <оператор1> ALTRO <оператор2>

    SE UNA <условие> PER <оператор>

Dichiarazione delle condizioni se eseguito come segue. Innanzitutto, viene valutata l'espressione scritta nella condizione. Come risultato del suo calcolo, si ottiene un valore di tipo booleano.

Nel primo caso, se il valore dell'espressione è Vero (true) è soddisfatto <оператор1>, indicato dopo la parola poi(in traduzione - "quello"). Se il risultato della valutazione dell'espressione nella condizione è falso (falso) quindi eseguito <оператор2> .

Nel secondo caso, se il risultato dell'espressione Vero, eseguita <оператор>, se una falso - operatore che segue immediatamente l'operatore se. operatori se può essere nidificato.

Un esempio di un frammento di programma con un'istruzione if condition:

se Ch \u003d "N" allora Parol: \u003d True

else Parol: \u003d False;

se Parol \u003d True allora

se X \u003d 100, allora scrivi ("Password e codice sono corretti")

Writeln ("Errore nel codice");

In questo esempio, il valore della variabile del tipo di carattere viene letto dalla tastiera Ch. Quindi viene verificata la condizione A PARTIRE DALh=" N" . Se lo è, allora la variabile Parolal tipo booleano è assegnato un valore Verose la condizione non è soddisfatta, falso. Quindi, il valore del codice viene letto dalla tastiera X. Successivamente, l'istruzione if verifica la condizione Parol \u003d True. Se è importante Vero, quindi l'operatore controlla la password inserita se X \u003d 100. Se la condizione X \u003d 100 ha il significato Vero, viene visualizzato il messaggio "Password e codice corretti" e il controllo nel programma viene trasferito all'operatore dopo la parola finese è importante falso, l'istruzione composta in piedi dopo l'esecuzione della parola altro, che visualizza il messaggio "Errore nel codice" sullo schermo del monitor video e chiama la procedura standard Halt (1) per interrompere il programma.

Funzionalità dell'applicazione operatorese. Quando si utilizzano istruzioni condizionali nidificate, può sorgere un'ambiguità sintattica, ad esempio:

if condition1 quindi if condition2 allora<оператор1> altro<оператор2>

Ambiguità emergente a quale operatore se parte appartiene altro <оператор2>, consentito dal fatto che la parola di servizio altro sempre associato (collegato) alla parola di servizio più vicina al testo se che non è ancora associato a una parola di servizio altro.

A questo proposito, occorre prestare attenzione quando si scrivono dichiarazioni di condizioni nidificate.

Esempio 1 . Creare un programma che calcola il quoziente di due numeri interi. A causa del fatto che è impossibile dividere per zero, organizzare il controllo dell'immissione dei dati.

Per controllare i valori di input del divisore, utilizziamo l'operatore di salto condizionale se ... allora ... altro.

Il testo del programma potrebbe essere simile al seguente:

programma Primer1;

A, B: intero;

Scrivi ("Inserisci il valore del dividendo A:");

Scrivi ("Inserisci il valore del divisore B:");

se B \u003d 0 (Controllo immissione numeriB}

quindi Writeln ("Ha zero non può essere diviso") (Condizione soddisfatta)

(Condizione non soddisfatta)

Rezult: \u003d A / B;

Writeln ("Il quoziente di numeri", A, "e", B, "\u003d", Risultato);

L'operatore di transizione consente di passare dalla posizione corrente del programma a un'altra posizione non successiva nell'ordine. Questo operatore viola il normale corso dell'esecuzione del programma.

La transizione viene effettuata utilizzando i cosiddetti tag.
Un'etichetta è un identificatore o un numero intero senza segno nell'intervallo compreso tra 0 e 9999, che si trova prima di qualsiasi operatore del programma ed è separato da due punti. Tutte le etichette utilizzate nel programma devono essere precedentemente dichiarate nella sezione di dichiarazione dell'etichetta che inizia con l'etichetta WORD.

Si può teoricamente dimostrare che gli operatori considerati sono abbastanza per scrivere programmi di qualsiasi complessità. A questo proposito, la presenza di operatori di transizione nella lingua sembra ridondante. Inoltre, la moderna tecnologia di programmazione strutturale si basa sul principio della "programmazione senza GOTO": si ritiene che l'abuso degli operatori di transizione renda difficile la comprensione del programma, rendendolo confuso e difficile da eseguire il debug. Tuttavia, in alcuni casi, l'utilizzo degli operatori di salto può semplificare il programma.

L'operatore di transizione ha la forma:

Qui goto è la parola riservata (vai [all'etichetta]); - etichetta.

Etichetta 1; // Dichiara un'etichetta con il nome 1 var
a: intero; inizio
a: \u003d 10;
Vai a 1; // Vai all'etichetta 1
a: \u003d sqrt (a); // Questa affermazione non verrà mai eseguita! 1: a: \u003d a + a; // Dichiarazione etichettata 1 estremità;

Operatori di salto condizionali

L'operatore condizione è destinato a eseguire o meno azioni che dipendono dal risultato di una condizione di tipo booleano. Questo operatore viene utilizzato per fork l'esecuzione di un programma,
cioè se questa condizione è vera (e solo in questo caso!), allora una certa sequenza di operatori è soddisfatta, altrimenti vengono eseguiti altri operatori. L'operatore condizione è il seguente:

se condizione poi operator1 else operator2;

L'istruzione condition può essere scritta in una forma semplificata:

se condizione poi operatore;

Ecco alcuni esempi di utilizzo delle istruzioni condition:

se a\u003e 0 allora b: \u003d sqrt (a) altrimenti b: \u003d a * 2; // Operatore delle condizioni
se a \u003d 10 allora b: \u003d b + 1; // Forma semplificata

Per organizzare la diramazione in più direzioni (più di due), è possibile utilizzare diversi operatori condizionali nidificati l'uno nell'altro. L'annidamento di operatori condizionali segue le stesse regole dell'annidamento di operatori composti.

A differenza di altri linguaggi di programmazione in Object Pascal, la priorità delle operazioni relazionali è inferiore a quella delle "operazioni logiche", quindi i singoli componenti di un'espressione logica complessa sono racchiusi tra parentesi. Ad esempio, un tale record dell'istruzione precedente sarà errato:
se a\u003e bec 0 quindi ... // Errore perché in effetti (tenendo conto della priorità dell'operazione) il compilatore tradurrà questa riga:
se a\u003e (be b) 0 allora ...

Operatore di filiale

Questa volta continuerò a considerare l'argomento "Operatori".

Le istruzioni di transizione (incondizionate) hanno lo scopo di trasferire il controllo a un operatore contrassegnato da un'etichetta (preceduto da un'etichetta).

La versione dell'autore della lingua prevede l'etichettatura come numero intero decimale nell'intervallo 1..9999 . Come tag Turbo pascal consente l'uso di identificatori. Quando si utilizzano gli operatori di transizione, è necessario osservare le seguenti regole:

1) Tutti i tag nel blocco devono essere descritti. Inoltre, ogni etichetta può essere descritta non più di una volta. Coloro. all'interno di un blocco non possono esserci due etichette con lo stesso nome.

2) L'etichetta indicata nell'operatore di transizione deve indicare l'operatore (contrassegnarlo) situato nello stesso blocco dell'operatore di transizione stesso. Coloro. non sono consentite transizioni al di fuori delle procedure (funzioni) o al loro interno.

3) Un tentativo di trasferire (controllo del trasferimento) nella struttura dell'operatore può causare effetti imprevedibili, sebbene in questo caso il compilatore potrebbe non fornire un messaggio di errore.

L'uso di una transizione incondizionata in un programma è considerato teoricamente ridondante, poiché può causare confusione nella catena di operazioni del programma posizionate logicamente, il che può portare a grandi difficoltà durante il debug e la modifica di tale programma. Si consiglia di utilizzare gli operatori di transizione, osservando le seguenti regole:

1) se sembra impossibile fare a meno degli operatori di transizione, è necessario cercare di utilizzarli per trasferire il controllo solo nel testo del programma (avanti); quando diventa necessario trasferire il controllo "indietro", è meglio usare gli operatori di loop (vedi sotto);

2) per chiarezza, la distanza tra l'etichetta e l'operatore di transizione ad esso non deve superare una pagina di testo (o l'altezza dello schermo di visualizzazione), altrimenti il \u200b\u200bsignificato di tale transizione incondizionata sarà difficile da cogliere.

I tag sono definiti da descrizioni che iniziano con una parola di servizio etichettae contengono una sequenza di nomi di etichette separati da virgole. Per trasferire il controllo a un operatore contrassegnato da un'etichetta, viene fornito un operatore di salto incondizionato vai a. L'etichetta è separata dall'operatore seguendola dal simbolo ":" (due punti). Esempio:

var j: intero;

(dichiara due tag)

etichettaInizio, fine;

Start: writeln ("Avvio del programma");

vai a finire

Fine: writeln ("Fine del programma");

Dichiarazione composta

L'operatore strutturale più semplice è un operatore composto. Questo operatore imposta la sequenza di esecuzione degli operatori in essa contenuti. L'operatore composto è composto sotto forma di un elenco di operatori separati da символ; ’(punto e virgola) e racchiusi tra parole di servizio inizioe fine.

La necessità di un'istruzione composta può verificarsi quando la sintassi è linguaggio pasquale consente l'uso di un solo operatore al posto del programma in cui sono necessarie una serie di azioni (operatori, vedere esempi di seguito). Ecco un semplice esempio di un'istruzione composta:

Operatore condizionale

Il significato dell'operatore condizionale è quello di analizzare alcune condizioni logiche e, a seconda che questa condizione sia soddisfatta o meno, trasferire il controllo all'operatore corrispondente. La condizione può essere un'espressione che restituisce un valore logico di tipo booleano. Il risultato dell'analisi della condizione può essere il valore vero, cioè la condizione è soddisfatta e falso, cioè la condizione non è soddisfatta.

L'istruzione condizionale viene eseguita come segue. L'espressione specificata dopo la parola di servizio è pre-calcolata SE. Se la condizione è soddisfatta, il controllo viene trasferito all'operatore specificato dopo la parola di servizio poiin caso contrario, viene eseguita l'istruzione specificata dopo la parola di servizio else. Inoltre, parte dell'istruzione condizionale, a partire dalla parola else, può essere assente. Ecco alcuni esempi di dichiarazioni condizionali:

Se keyPressed poi writeln ("Tasto premuto");

Se A\u003e B poi Min: \u003d B

altro Min: \u003d A;

se X1\u003e X2 quindi iniziare

L'ultimo esempio è proprio il caso in cui è necessario che, per condizione, vengano eseguiti numerosi operatori, ma a causa del fatto che dietro la parola di servizio poio altrosolo un operatore può seguire, cioè la capacità di risolvere la situazione usando un operatore composto contenente solo un numero di quegli operatori necessari.

Quando si creano istruzioni condizionali nidificate, è necessario tenere presente che il ramo else appartiene sempre al ramo precedente SEche non ha ancora un altro ramo. Coloro. dopo la costruzione

se Condizione 1 allora se Condizione 2 poi operator1 altrooperatore2;

per chiarezza, puoi interpretarlo

se Condizione 1 quindi iniziare

SeCondizione 2 poi operator1 altrooperatore2;

Bisogna fare attenzione quando si usano le istruzioni condizionali nidificate, in modo che nel calore della compilazione della successiva dichiarazione condizionale del programma, non si debba perdere di vista un dettaglio così apparentemente piccolo che può portare a un'esecuzione completamente diversa della ramificazione condizionale.

Operatore opzionale

Molto spesso, si verifica una situazione in cui una catena di istruzioni condizionali cresce su larga scala, ad esempio il seguente esempio illustra una modesta ramificazione, ma già contenente la complessità di percepire il significato intrinseco in essa:

genere TWay \u003d (Su, Destra, Giù, Sinistra);

var Modo: TWay;

MapX, MapY: word;

seModo \u003d su poi MapY: \u003d MapY - 1

altro se Way \u003d right poiMapX: \u003d MapX + 1

altrose Way \u003d down poiMappaY: \u003d MappaY + 1

altro MapX: \u003d MapX - 1;

L'ultimo ramo di altro non ha operatore Se, poiché se tutte e tre le condizioni non sono soddisfatte, sarebbe logico che l'operatore entrasse in azione corrispondente alla quarta e ultima variante di possibili valori del tipo Tway.

In questo caso, siamo ancora fortunati che il tipo Twayha solo quattro opzioni per i valori accettati. La compilazione di tali rami si trasformerebbe in una routine se ci fossero dieci o più opzioni? Ma nel ramo presentato, è visibile un modello semplice. Quindi può essere in qualche modo semplificato e reso più efficiente e leggibile? È possibile, e per questo, viene fornito un operatore variante nella lingua, la cui costruzione può contenere un numero arbitrario di alternative per una determinata espressione. Quindi l'ultimo esempio può essere riscritto in un nuovo modo:

astuccio Modo di

Su: MapY: \u003d MapY - 1;

A destra: MapX: \u003d MapX + 1;

Giù: MapY: \u003d MapY + 1;

Sinistra: MapX: \u003d MapX - 1;

Bene, questa è una questione completamente diversa. Ora considera l'ordine di esecuzione di questo operatore. Il valore dell'espressione che segue la parola di servizio è pre-calcolato astuccio, ma poiché in questo caso esiste un nome variabile Modo, quindi viene letto il valore di questa variabile. Il valore risultante viene confrontato a sua volta con ogni alternativa (valore costante, immediato) specificato dopo la parola di servizio di. Se l'espressione è uguale alla costante successiva, un operatore alternativo viene eseguito seguendo questa costante, separata da due punti. Dopo aver completato l'operatore alternativo, l'azione procede all'operatore seguendo l'operatore variante. Se il valore non corrisponde Modocon una sola costante operatore dato L'opzione non produce alcuna azione.

Ma cosa succede se è necessario prevedere un certo ramo di operatori che verrebbe eseguito se il valore dell'espressione non corrispondesse a nessuna costante? Per fare ciò, puoi usare l'alternativa altrimenti, ad esempio:

astuccioModo di

Su: MapY: \u003d MapY - 1;

A destra: MapX: \u003d MapX + 1;

Giù: MapY: \u003d MapY + 1;

altro MapX: \u003d MapX - 1;

Pertanto, la costruzione costruita utilizzando l'operatore case è completamente equivalente alla costruzione costruita in precedenza utilizzando l'operatore SE. Inoltre, è più visivo e non c'è rischio di rimanere impigliato in numerosi altro.

Ancora una volta, desidero attirare la vostra attenzione sul fatto che le costanti nell'operatore variante possono essere numeri interi diretti o nomi di costanti non tipizzate descritte in precedenza. Non è consentito l'uso di costanti tipizzate in alternativa all'operatore variante. Inoltre, in ciascuna opzione, è possibile specificare un elenco di costanti separate da virgole o un intervallo di valori, ad esempio:

astuccioModo di

Su, Giù: writeln ("Muovendosi verticalmente");

Destra, Sinistra: writeln ("Muoversi in orizzontale");

astuccioX di

10,20,30: writeln ("decine");

1..9: writeln ("unità");

Nell'ultima costruzione, l'operatore writeln ("unità") verrà eseguito se la variabile X ha uno dei valori 1,2,3,..,8,9 .

Come puoi vedere, ho allineato le linee con costanti e due punti, poiché mi sembra che questo tipo sia più visibile, anche se questa è una questione di gusti, ma come sai, non c'è compagno nel gusto e nel colore; O)

Utilizzare l'operatore variante in base alle seguenti regole:

1) Il valore valido dell'espressione - "switch" registrato dopo la parola di servizio astucciodeve soddisfare un tipo discreto: per un tipo intero, devono trovarsi nell'intervallo -32768..32767 .

2) Tutte le costanti indicate delle alternative devono essere di un tipo compatibile con il tipo di espressione.

3) Le costanti nelle alternative non devono essere ripetute all'interno dell'operatore variante e gli intervalli non devono sovrapporsi e non devono contenere le costanti specificate in questa o in altre alternative.

Un'altra cosa. Design astucciofornisce un operatore per ogni alternativa. Se diventa necessario eseguire diverse istruzioni, è necessario raggrupparle in un'istruzione composta bEGIN..END. È possibile specificare un operatore vuoto per un'alternativa inserendo il simbolo ";" (punto e virgola) immediatamente dopo i due punti, che non farà nulla. Una sintassi del ramo altrofornisce un'indicazione della sequenza di istruzioni separate dal simbolo ";" (punto e virgola).

LA CAMPANA

C'è chi legge questa notizia prima di te.
Iscriviti per ricevere articoli freschi.
E-mail
Nome
Cognome
Come vuoi leggere The Bell
Niente spam