Come configurare smartphone e PC. Portale informativo

Qual è la forma dell'operatore di assegnazione. Operatori Pascal

Operatore di assegnazione

Uno degli operatori principali è l'operatore di assegnazione. Viene utilizzato per assegnare un valore a una variabile. In questo caso il valore dell'espressione posta a destra del segno di assegnazione è assegnato alla variabile il cui identificatore si trova a sinistra del segno di assegnazione.

L'operatore di assegnazione può essere utilizzato per assegnare valori

variabile di qualsiasi tipo eccetto file. L'unica condizione è

in modo che la variabile / o la funzione / e l'espressione abbiano lo stesso tipo. Un'eccezione è il caso in cui la variabile è di tipo reale, quindi l'espressione può essere sia di tipo reale che intero.

Qui a è una variabile semplice o indice; b - aritmetica o espressione booleana... L'esecuzione dell'operatore consiste nel valutare l'espressione posta a destra del segno “: =", e nell'assegnare il valore risultante alla parte sinistra dell'operatore, tenendo conto del tipo di variabile ivi presente. Esempi:

angolo: = angolo * p1;

AccessOK: = Falso;

SpherVol: = 4 * p1 * R * R;

3.3.2. Input - output di dati

L'immissione dei dati viene eseguita da operatori di input senza formato:

Leggi (a 1, ..., a n); Leggiln (a 1, ..., a n) ;,

dove a 1,… e n è un elenco di variabili.

L'immissione dei dati avviene da tastiera, mentre i dati numerici sono separati tra loro da spazi, ad eccezione dei dati di tipo carattere e stringa.

I valori degli elementi dell'array vengono inseriti sia enumerando gli elementi nella lista sia utilizzando operatori di loop, ad esempio:

Leggi (a, a, a, ...)

per i: = da 1 a n do

per j: = 1 a m do

leggi un) ;.

Con una grande dimensione dell'array, l'inserimento dei dati dalla tastiera diventa un'operazione laboriosa. In questo caso, è più conveniente impostare i valori degli elementi dell'array nella sezione che descrive le costanti.

Esempio: inserisci i valori degli elementi del vettore X e della matrice A, che sono rispettivamente uguali:

X = (5, 1.2, 0.1, 7, 8.6) A = 3, 0, 6, 14, 5

0, 0, 0, 99, 12

I valori degli elementi possono essere determinati inizializzandoli:

Const X: array di real = (5.0, 1.2, 0.1, 7.0, 8.6);

A: array di interi = ((4, 5, 10, 8, 0),

(7, 9, 25, 0, 1),

(3, 0, 6, 14, 5),

(0, 0, 0, 99, 12));.

L'output dei dati sul display è effettuato dagli operatori write e writeln, ad esempio:

scrivere ('x =', ​​x: 3, 'y =', y: 8: 3);

Il display mostra: valori di una variabile di tipo intero X, a cui sono assegnate 3 posizioni, di una variabile Y tipo reale, occupa 8 posizioni. Con un atomo sotto parte frazionaria alla variabile Y sono assegnate 3 posizioni; viene visualizzata solo la variabile X parte intera... Davanti valori numerici variabili, vengono visualizzate le informazioni che le spiegano, costituite da nomi di variabili.

Pertanto, come segue dall'esempio, il formato di visualizzazione delle variabili di tipo intero è :un, variabili di tipo reale : a: p, dove un- il numero complessivo degli incarichi assegnati per il numero, di cui R- i posti sono riservati alla parte frazionata. Il numero totale di posizioni un sono incluse le posizioni del segno numerico e della virgola. I delimitatori nel formato sono ":". Se il formato non è specificato nell'operatore di output, l'output verrà eseguito nella forma normalizzata che rappresenta un numero reale. Il testo visualizzato delle informazioni esplicative è racchiuso tra apostrofi.

Per le espressioni abbreviate nel linguaggio di programmazione C++, esistono operazioni speciali chiamate operazioni di assegnazione. Diamo un'occhiata a un pezzo di codice usando un'operazione di assegnazione.

Int valore = 256; valore = valore + 256; // un'espressione ordinaria che utilizza due operazioni: = e + valore + = 256; // espressione equivalente abbreviata usando l'operatore di assegnazione

V linea 2 al valore della variabile viene assegnato il valore 512, ottenuto come risultato della somma del valore contenuto nella variabile valore con il numero 256. B linea 3 espressione esegue la stessa operazione di in linea 2, ma l'espressione è scritta in forma semplificata. Questa espressione contiene un'operazione di assegnazione con un segno più + =. Quindi, l'operazione + = aggiunge il valore della variabile value co al valore che sta a destra: 256, e assegna il risultato della somma alla stessa variabile. Come puoi vedere dall'esempio, l'operatore in linea 3 più corto dell'operatore in linea 2, sebbene esegua un'operazione simile. Quindi, se è necessario modificare alcune variabili, si consiglia di utilizzare le operazioni di assegnazione.

Ci sono cinque operazioni di assegnazione in C ++ oltre all'operatore di assegnazione di base: =.

  1. + = operazione di assegnazione-addizione;
  2. - = operazione di assegnazione-sottrazione;
  3. * = operazione di assegnazione-moltiplicazione;
  4. / = operazione di assegnazione-ripartizione;
  5. % = operazione di assegnazione modulo;

Concordiamo di denominare le operazioni di assegnazione con un trattino in modo che sia chiaro di che tipo di operazione stiamo parlando. La tabella 1 mostra chiaramente esempi di utilizzo degli operatori di assegnazione nel linguaggio di programmazione C++.

Operazioni di assegnazione in C++
operazione Designazione Esempio Esempio equivalente Spiegazione
operazione assegna-aggiungi += variabile + = 16 var = var + 16 Aggiungi 16 al valore della variabile var, il risultato della sommatoria viene memorizzato nella variabile var
operazione di assegnazione-sottrazione -= variabile - = 16 var = var - 16 Sottrarre 16 da var, il risultato della sottrazione viene memorizzato in var
operazione di assegnazione-moltiplicazione *= variabile * = 16 var = var * 16 Moltiplichiamo il valore della variabile var per 16 volte, il risultato della moltiplicazione viene assegnato alla variabile var
operazione di assegnazione-divisione /= variabile / = 16 var = var / 16 Dividi il valore di var per 16, il risultato della divisione viene assegnato a var
operazione di assegnazione del resto %= var% = 16 var = var% 16 Trova il resto della divisione e memorizzalo nella variabile var

Sviluppiamo un programma che utilizzerà operazioni di assegnazione.

//Assegnazione.cpp: definisce il punto di ingresso per l'applicazione console. #include "stdafx.h" #include usando lo spazio dei nomi std; int main (int argc, char * argv) (int value = 256; cout<< "value = "<< valore << endl; valore + = 256; // espressione stenografica usando l'operatore di assegnazione - addizione cout <<"value += 256; >> " << value << endl; value -= 256; // сокращённое выражение с использованием операции присваивания - вычитания cout << "value -= 256; >> " << value << endl; value *= 2; // сокращённое выражение с использованием операции присваивания - умножения cout << "value *= 2; >> " << value << endl; value /= 8; // сокращённое выражение с использованием операции присваивания - деления cout << "value /= 8; >> " << value << endl; system("pause"); return 0; }

Per iniziare in riga 9è stata dichiarata una variabile valore , e viene inizializzato con un valore di 256. Nelle righe 11, 13, 15, 17 vengono scritte le operazioni di assegnazione: rispettivamente addizione, sottrazione, moltiplicazione e divisione. Dopo aver eseguito ogni incarico, l'operatore cout stampa il risultato. Il risultato del programma (vedi Figura 1).

Valore = 256 valore + = 256; >> valore 512 - = 256; >> 256 valore * = 2; >> valore 512 / = 8; >> 64 Premere un tasto qualsiasi per continuare. ... ...

Figura 1 - Operazioni di assegnazione in C++

La Figura 1 mostra chiaramente esempi di esecuzione di operazioni di assegnazione e mostra anche il risultato dell'esecuzione della corrispondente operazione di assegnazione.

Incarico- un meccanismo in programmazione che consente di modificare dinamicamente la relazione degli oggetti dati (di norma, variabili) con i loro valori. A rigor di termini, la modifica dei valori è un effetto collaterale dell'operazione di assegnazione, e in molti lingue moderne la programmazione dell'operazione stessa restituisce anche qualche risultato (solitamente una copia del valore assegnato). Sul livello fisico il risultato di un'operazione di assegnazione è scrivere e sovrascrivere celle di memoria o registri del processore.

L'assegnazione è uno dei costrutti centrali nei linguaggi di programmazione imperativi, è implementato in modo efficiente e semplice sull'architettura di von Neumann, che è la base dei computer moderni.

Impostato<целевая_переменная> <выражение>

Questa voce è equivalente a una chiamata di funzione. Allo stesso modo, nel vecchio stile COBOL:

MOLTIPLICARE 2 PER 2 DANDO QUATTRO.

Algoritmo di lavoro [ | ]

Designazione [ | ]

La scelta del carattere di assegnazione è oggetto di dibattito tra i progettisti del linguaggio. Si ritiene che l'uso del simbolo = per l'assegnazione confonda i programmatori e renda anche difficile per buona decisione la questione della scelta di un simbolo per l'operatore di confronto.

Il noto cattivo esempioè la scelta del segno di uguale per denotare un compito, tornando a lingua Fortran nel 1957 ed è ancora ripetuto alla cieca dalla massa degli sviluppatori di linguaggi. Questo cattiva idea rovescia l'antica tradizione di utilizzare il segno "=" per denotare un confronto di uguaglianza, predicato che assume i valori "vero" o "falso". Ma in Fortran, questo simbolo ha finito per significare l'assegnazione, l'imposizione dell'uguaglianza. In questo caso gli operandi sono in posizione disuguale: l'operando di sinistra, una variabile, deve essere uguale all'operando di destra, un'espressione. Pertanto, x = y non significa la stessa cosa di y = x.

Testo originale (ing.)

Un noto esempio di cattiva idea è stata la scelta del segno di uguale per indicare l'assegnazione. Risale a Fortran nel 1957 ed è stato copiato alla cieca da eserciti di designer linguistici. Perché è una cattiva idea? Perché rovescia una tradizione secolare lasciare che "=" denoti un confronto per l'uguaglianza, un predicato che è vero o falso. Ma Fortran voleva dire l'assegnazione, l'applicazione dell'uguaglianza. In questo caso, gli operandi sono disuguali: l'operando sinistro (una variabile) deve essere uguale all'operando destro (un'espressione). x = y non significa la stessa cosa di y = x.

La realizzazione di questa posizione di Wirth si può considerare che nel linguaggio Pascal, di cui è autore, l'operatore di assegnazione è: =, mentre per confronto si usa semplicemente =.

La scelta del simbolo dell'operatore di uguaglianza nella lingua quando si usa = come assegnazione è risolta:

  • Introduzione di un nuovo carattere della lingua per l'operatore di uguaglianza.
A = B = C

alla variabile A viene assegnato il valore booleano dell'espressione per la relazione B = C. Questa notazione porta a una diminuzione della leggibilità ed è usata raramente.

Caratteristiche semantiche[ | ]

Non sempre il modo "intuitivo" (per i programmatori di linguaggi imperativi) di interpretare un compito è l'unico corretto e possibile.

Dalla sintassi utilizzata nei linguaggi imperativi, non sempre è possibile capire come viene implementata la semantica di assegnazione se questa non è definita esplicitamente nel linguaggio.

A = b = a a = 1000

Dopodiché, b avrà un valore, semplicemente perché in realtà il suo valore è il valore di a. Il numero di riferimenti allo stesso oggetto dati è chiamato cardinalità e l'oggetto stesso muore (distrutto o restituito al Garbage Collector) quando la sua cardinalità raggiunge lo zero. Linguaggi di programmazione altro basso livello(ad es. C) consentono al programmatore di controllare esplicitamente se vengono utilizzate la semantica del puntatore o la semantica della copia.

Sostituzione operazione[ | ]

Molti linguaggi offrono la possibilità di sovrascrivere il significato di un'assegnazione: tramite il meccanismo delle proprietà o tramite l'overload dell'operatore di assegnazione. La sostituzione può essere necessaria per eseguire controlli di convalida sul valore assegnato o altre operazioni aggiuntive. Il sovraccarico dell'operatore di assegnazione viene spesso utilizzato per fornire una "copia profonda", ovvero la copia di valori, non di riferimenti, che vengono copiati per impostazione predefinita in molte lingue.

Tali meccanismi offrono comodità nel lavoro, quindi per il programmatore non c'è distinzione tra l'utilizzo dell'operatore integrato e l'operatore sovraccarico. Per lo stesso motivo, sono possibili problemi, poiché le azioni dell'operatore sovraccarico possono essere completamente diverse dalle azioni dell'operatore predefinito e la chiamata di funzione non è ovvia e può essere facilmente scambiata per un'operazione in linea.

Design avanzati[ | ]

Assegnazione costrutti in lingue differenti programmazione

Poiché l'operazione di assegnazione è ampiamente utilizzata, i progettisti di linguaggi di programmazione stanno cercando di sviluppare nuovi costrutti per notazione semplificata operazioni tipiche (aggiungere al linguaggio il cosiddetto "zucchero sintattico"). Inoltre, nei linguaggi di programmazione di basso livello, il criterio per includere un'operazione è spesso la capacità di compilare in un codice eseguibile efficiente. Il linguaggio C è particolarmente famoso per questa proprietà.

obiettivi multipli[ | ]

Una delle alternative operatore sempliceè la capacità di assegnare il valore di un'espressione a più oggetti. Ad esempio, nella lingua PL/1, l'operatore

SOMMA, TOTALE = 0

contemporaneamente assegna valore zero variabili SOMMA e TOTALE. Nel linguaggio Ada, anche l'assegnazione è un operatore, non un'espressione, quindi la notazione per l'assegnazione multipla è:

SOMMA, TOTALE: Intero: = 0;

Un'assegnazione simile in Python ha la seguente sintassi:

Somma = totale = 0

A differenza di PL/1, Ada e Python, dove l'assegnazione multipla è considerata solo una forma abbreviata di notazione, in C, Lisp e altri data sintassi ha una base rigorosa: l'operatore di assegnazione restituisce semplicemente il valore loro assegnato (vedi sopra). Quindi l'ultimo esempio è in realtà:

Somma = (totale = 0)

Una riga come questa funzionerà in C (se aggiungi un punto e virgola alla fine), ma genererà un errore in Python.

Assegnazione parallela[ | ]

L'ultima opzione funziona solo con i tipi che supportano operazioni sui bit(ad esempio, per il doppio, il compilatore del linguaggio non consentirà lo scambio di valori variabili in questo modo).

Implementazione [ | ]

Il lavoro dei computer moderni consiste nel leggere i dati da una memoria o un dispositivo in registri, eseguire operazioni su tali dati e scrivere su una memoria o un dispositivo. L'operazione principale qui è il trasferimento dei dati (da registri a memoria, da memoria a registro, da registro a registro). Di conseguenza, è espresso direttamente dai team di processori moderni. Quindi, per l'architettura x86 (tutti i comandi seguenti si applicano anche a questa architettura) questa è l'operazione mov e le sue varietà per il trasferimento dei dati misure differenti... L'operazione di assegnazione (trasferimento dei dati da una cella di memoria all'altra) è praticamente implementata direttamente da questo comando. In generale, sono necessarie due istruzioni per eseguire un trasferimento di dati in memoria: uno spostamento da memoria a registro e uno spostamento da registro a memoria, ma con l'ottimizzazione nella maggior parte dei casi il numero di istruzioni può essere ridotto.

Incarico

Incarico- un meccanismo in programmazione che consente di modificare dinamicamente la relazione degli oggetti dati (di norma, variabili) con i loro valori. A rigor di termini, la modifica dei valori è un effetto collaterale dell'operazione di assegnazione e in molti linguaggi di programmazione moderni l'operazione stessa restituisce anche qualche risultato (di solito una copia del valore assegnato). A livello fisico, il risultato di un'operazione di assegnazione è scrivere e sovrascrivere celle di memoria o registri del processore.

L'assegnazione è uno dei costrutti centrali nei linguaggi di programmazione imperativi, è implementato in modo efficiente e semplice sull'architettura di von Neumann, che è la base dei computer moderni.

Impostato<целевая_переменная> <выражение>

Questa voce è equivalente a una chiamata di funzione. Allo stesso modo, nel vecchio stile COBOL:

MOLTIPLICARE 2 PER 2 DANDO QUATTRO.

Algoritmo di lavoro

  • Calcola il valore sinistrorso del primo operando. A questo punto, diventa nota la posizione dell'oggetto target, il destinatario del nuovo valore.
  • Calcola il valore destrorso del secondo operando. Questa fase può essere lunga quanto vuoi e includere altri operatori (compresi gli incarichi).
  • Assegna il valore calcolato per la mano destra al valore per la mano sinistra. Innanzitutto, in caso di conflitto di tipo, deve essere eseguita la loro conversione (oppure deve essere emesso un messaggio di errore a causa della sua impossibilità). In secondo luogo, l'effettiva assegnazione del valore nei moderni linguaggi di programmazione può essere sovrascritta e includere non solo il trasferimento dei valori delle celle di memoria (ad esempio, nelle "proprietà" degli oggetti in, sovraccarico dell'operatore).
  • Restituisce il valore destrorso calcolato come risultato dell'operazione. Non richiesto in tutte le lingue (ad esempio, non richiesto in Pascal).

Designazione

La scelta del carattere di assegnazione è oggetto di dibattito tra i progettisti del linguaggio. Si ritiene che l'uso del simbolo = per l'assegnazione confonda i programmatori e sollevi anche la questione della scelta di un simbolo per un operatore di confronto, il che è difficile per una buona decisione.

Un esempio notoriamente negativo è la scelta del segno uguale per denotare l'assegnazione, che risale a Fortran nel 1957 ed è ancora ripetuta alla cieca da molti sviluppatori di linguaggi. Questa cattiva idea ribalta l'antica tradizione di usare il segno "=" per denotare un confronto di uguaglianza, un predicato che valuta vero o falso. Ma in Fortran, questo simbolo ha finito per significare l'assegnazione, l'imposizione dell'uguaglianza. In questo caso gli operandi sono in posizione disuguale: l'operando di sinistra, una variabile, deve essere uguale all'operando di destra, un'espressione. Pertanto, x = y non significa la stessa cosa di y = x.

Testo originale(Inglese)

Un noto esempio di cattiva idea è stata la scelta del segno di uguale per indicare l'assegnazione. Risale a Fortran nel 1957 ed è stato copiato alla cieca da eserciti di designer linguistici. Perché è una cattiva idea? Perché rovescia una tradizione secolare lasciare che "=" denoti un confronto per l'uguaglianza, un predicato che è vero o falso. Ma Fortran voleva dire l'assegnazione, l'applicazione dell'uguaglianza. In questo caso, gli operandi sono disuguali: l'operando sinistro (una variabile) deve essere uguale all'operando destro (un'espressione). x = y non significa la stessa cosa di y = x.

La scelta del simbolo dell'operatore di uguaglianza nella lingua quando si usa = come assegnazione è risolta:

  • Introduzione di un nuovo carattere della lingua per l'operatore di uguaglianza.
A = B = C

alla variabile A viene assegnato il valore booleano dell'espressione per la relazione B = C. Questa notazione porta a una diminuzione della leggibilità ed è usata raramente.

Caratteristiche semantiche

Non sempre il modo "intuitivo" (per i programmatori di linguaggi imperativi) di interpretare un compito è l'unico corretto e possibile.

Dalla sintassi utilizzata nei linguaggi imperativi, non sempre è possibile capire come viene implementata la semantica di assegnazione se questa non è definita esplicitamente nel linguaggio.

A = b = a a = 1000

Dopodiché, b avrà un valore, semplicemente perché in realtà il suo valore è il valore di a. Il numero di riferimenti allo stesso oggetto dati è chiamato cardinalità e l'oggetto stesso muore (distrutto o restituito al Garbage Collector) quando la sua cardinalità raggiunge lo zero. I linguaggi di programmazione di livello inferiore (come C) consentono al programmatore di controllare esplicitamente se vengono utilizzate la semantica del puntatore o la semantica della copia.

Sostituzione operazione

Molti linguaggi offrono la possibilità di sovrascrivere il significato di un'assegnazione: tramite il meccanismo delle proprietà o tramite l'overload dell'operatore di assegnazione. La sostituzione può rendersi necessaria per eseguire controlli di validazione sul valore assegnato o altre operazioni aggiuntive. Il sovraccarico dell'operatore di assegnazione viene spesso utilizzato per fornire una "copia profonda", ovvero la copia di valori, non di riferimenti, che vengono copiati per impostazione predefinita in molte lingue.

Tali meccanismi offrono comodità nel lavoro, quindi per il programmatore non c'è distinzione tra l'utilizzo dell'operatore integrato e l'operatore sovraccarico. Per lo stesso motivo, sono possibili problemi, poiché le azioni dell'operatore sovraccarico possono essere completamente diverse dalle azioni dell'operatore predefinito e la chiamata di funzione non è ovvia e può essere facilmente scambiata per un'operazione in linea.

Design avanzati

Costrutti di assegnazione in vari linguaggi di programmazione

Poiché l'operazione di assegnazione è ampiamente utilizzata, gli sviluppatori di linguaggi di programmazione stanno cercando di sviluppare nuove costruzioni per semplificare la scrittura di operazioni tipiche (aggiungere al linguaggio il cosiddetto "zucchero sintattico"). Inoltre, nei linguaggi di programmazione di basso livello, il criterio per includere un'operazione è spesso la capacità di compilare in un codice eseguibile efficiente. Il linguaggio C è particolarmente famoso per questa proprietà.

obiettivi multipli

Un'alternativa all'operatore semplice è la possibilità di assegnare il valore di un'espressione a più oggetti. Ad esempio, nella lingua PL/1, l'operatore

SOMMA, TOTALE = 0

assegna contemporaneamente un valore zero alle variabili SOMMA e TOTALE. Nel linguaggio Ada, anche l'assegnazione è un operatore, non un'espressione, quindi la notazione per l'assegnazione multipla è:

SOMMA, TOTALE: Intero: = 0;

Un'assegnazione simile in Python ha la seguente sintassi:

Somma = totale = 0

A differenza di PL/1, Ada e Python, dove l'assegnazione multipla è considerata solo una notazione abbreviata, in C, Lisp e altri, questa sintassi ha una base rigorosa: l'operatore di assegnazione restituisce semplicemente il valore loro assegnato (vedi sopra). Quindi l'ultimo esempio è in realtà:

Somma = (totale = 0)

Una riga come questa funzionerà in C (se aggiungi un punto e virgola alla fine), ma causerà un errore in Python.

Assegnazione parallela

un || = 10

Questa costruzione assegna un valore alla variabile a solo se il valore non è stato ancora assegnato o è uguale a false.

Operatori composti

L'operatore di assegnazione composto consente di abbreviare un modulo di assegnazione comunemente utilizzato. Utilizzando questo metodo, è possibile abbreviare la notazione dell'assegnazione, in cui la variabile di destinazione viene utilizzata come primo operando a destra dell'espressione, ad esempio:

A = a + b

La sintassi dell'operatore di assegnazione composto C è l'unione dell'operatore binario desiderato e dell'operatore =. Ad esempio, le seguenti voci sono equivalenti

somma + = valore; somma = somma + valore;

Nei linguaggi di programmazione che supportano gli operatori composti (C++, Python, Java, ecc.), di solito esistono versioni per la maggior parte degli operatori binari di questi linguaggi (+ =, - =, & =, ecc.) .

Operatori unari

Nel linguaggio di programmazione C e nella maggior parte dei suoi derivati, ci sono due speciali operatori aritmetici unari (cioè con un argomento), che sono in realtà assegnazioni abbreviate. Questi operatori combinano operazioni di incremento e decremento con l'assegnazione. Gli operatori ++ per incremento e - per decremento possono essere utilizzati come operatori prefissi (ovvero prima degli operandi) o come postfissi (ovvero dopo gli operandi), ovvero un diverso ordine di valutazione. L'operatore incremento prefisso restituisce il valore già aumentato dell'operando e l'operatore incremento postfisso restituisce quello originale.

Un esempio di utilizzo dell'operatore di incremento per formare un'istruzione di assegnazione completa:

Non sembra un compito, ma lo è. Il risultato della suddetta affermazione è lo stesso del risultato dell'incarico.

Gli operatori di incremento e decremento del C sono spesso scorciatoie per generare espressioni contenenti indici

Operatoreè una frase di un linguaggio di programmazione che specifica una descrizione completa di alcune azioni che devono essere eseguite. La parte principale di un programma Turbo Pascal è una sequenza di istruzioni. Gli operatori sono separati da punto e virgola. Tutti gli operatori del linguaggio Turbo Pascal possono essere suddivisi in due gruppi: semplici e strutturali.

Gli operatori che non contengono altri operatori vengono chiamati semplice... Questi includono l'assegnazione, il salto incondizionato, la chiamata di procedura e le istruzioni vuote.

Operatore di assegnazione

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

L'operatore di assegnazione viene eseguito come segue: prima viene valutata l'espressione a destra dell'assegnazione, quindi il suo valore viene assegnato alla variabile specificata a sinistra dell'operatore.

Ad esempio, per l'operatore

Rezult: = A div B;

prima, viene eseguita la divisione intera del valore della variabile UN dal valore della variabile V e quindi il risultato viene assegnato a una variabile Rezult.

Esempi di utilizzo dell'operatore di assegnazione:

UN:= 8;

S: = LA *V;

Ostatok: = A mod B;

Rapporto: = 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 determinato operatore, è necessario eseguire non il successivo in ordine, ma qualche altro operatore contrassegnato da un'etichetta.

Ricordiamo che un tag è dichiarato nella sezione di descrizione del tag e può contenere sia caratteri numerici che alfabetici.

Quando si utilizza l'operatore vai a va ricordato che la portata dell'etichettaè solo il blocco in cui è descritto. È vietato il trasferimento del controllo ad un altro blocco.

Regole per l'utilizzo dell'operatore di salto incondizionato. L'uso di trasferimenti di controllo incondizionati 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à di debug e manutenzione. Pertanto, si raccomanda un utilizzo minimo dell'operatore vai a nel rispetto delle seguenti regole:

Dovresti sforzarti di utilizzare gli operatori di salto (se sembra impossibile farne a meno) per trasferire il controllo solo in basso (in avanti) nel testo del programma; quando è necessario trasferire di nuovo il controllo, utilizzare le istruzioni del ciclo;

La distanza tra il segno e l'operatore per raggiungerlo non deve superare una pagina di testo (o l'altezza dello schermo di visualizzazione).

Un esempio di utilizzo dell'operatore di salto incondizionato:

etichetta Metka; (nella sezione di descrizione del tag, è stato descritto un tag con il nomeMetka}

inizio (programma principale)

(operatori del programma principale)

(operatori del programma principale contrassegnati da un'etichetta)

Ordine di lavoro

    Esplorare informazioni teoriche sull'argomento: "Scrivere un programma in Pascal utilizzando l'assegnazione e gli operatori di salto incondizionato".

    Ricevere compito individuale dall'insegnante e sviluppare un programma in conformità con il compito.

    Mostra il programma in esecuzione all'insegnante.

    Rispondere alle domande di sicurezza.

Domande di controllo

    Elementi di programmazione di base.

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

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

    Operatore di salto incondizionato. Formato, esempi. Regole di base per l'uso

Lavoro di laboratorio n. 7

Scrittura di un programma Pascal utilizzando operatori condizionali e selezionatiCaso

Obbiettivo : formazione di conoscenze e competenze per lavorare con gli operatori linguistici. Acquisire le abilità di scrittura di programmi utilizzando operatori di assegnazione e salto incondizionato.

Brevi informazioni teoriche

Operatori condizionali

Gli operatori condizionali sono progettati per selezionare uno dei seguenti azioni possibili(operatori) a seconda di una condizione (in questo caso, una delle azioni può essere vuota, cioè assente). Il valore dell'espressione logica viene utilizzato come condizioni di selezione.

Turbo Pascal ha due operatori condizionali: se e caso.

Se dichiarazione di condizione

Operatore di condizione Seè uno degli strumenti più popolari che modificano 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 <условие> POI <оператор1> ALTRIMENTI <оператор2>

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

Operatore di condizione Se viene eseguita come segue. Innanzitutto, viene valutata l'espressione scritta nella condizione. Come risultato della sua valutazione, si ottiene un valore booleano.

Nel primo caso, se il valore dell'espressione è Vero(vero), eseguito <оператор1>, specificato dopo la parola poi(tradotto come "quello"). Se il risultato della valutazione dell'espressione nella condizione è falso(falso), quindi viene eseguito <оператор2> .

Nel secondo caso, se il risultato dell'espressione Vero, eseguita <оператор>, Se falso- l'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 = "N" allora Parol: = True

else Parol: = Falso;

se Parol = True allora

se X = 100 allora Scrivi ("Password e codice sono corretti")

Writeln ("Errore nel codice");

In questo esempio, il valore di una variabile di tipo carattere viene letto dalla tastiera Ch... Quindi la condizione è verificata CONh=" n" ... Se viene eseguito, allora la variabile Parol al tipo booleano viene assegnato un valore Vero se la condizione non è soddisfatta, falso... Quindi il valore del codice viene letto dalla tastiera X... Quindi l'istruzione if verifica la condizione Parol = True. Se è importante Vero, quindi la password inserita viene verificata dall'operatore se X = 100... Se la condizione X = 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 fine se è importante falso, l'operatore composto dopo l'esecuzione della parola altro, che visualizza sullo schermo del monitor video il messaggio "Errore nel codice" e richiama la procedura standard Fermata (1) per interrompere il programma.

Caratteristica dell'operatoreSe. L'ambiguità sintattica può sorgere quando si utilizzano condizionali annidati, ad esempio:

se condizione1 allora se condizione2 allora<оператор1>altro<оператор2>

L'ambiguità risultante su 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 nel testo Se, che non è ancora associato a una parola di servizio altro.

Pertanto, è necessario prestare attenzione quando si scrivono istruzioni condizionali nidificate.

Esempio 1 . Scrivere un programma che calcoli il quoziente di due interi. Poiché è impossibile dividere per zero, è necessario organizzare il controllo sull'immissione dei dati.

Per controllare i valori dei divisori inseriti, usiamo l'operatore di salto condizionato se... allora... altro.

Il testo del programma potrebbe essere simile a questo:

programma Primer1;

A, B: intero;

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

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

se B = 0 (Controllo inserimento numeroB}

poi Writeln ("Non puoi dividere per zero") (Condizione soddisfatta)

(Condizione non soddisfatta)

Rezult: = A/B;

Writeln ("Numeri privati", A, "e", B, "=", Rezult);

Principali articoli correlati