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

Il tipo di dati numerico più semplice in Pascal sono tipi interi per la memorizzazione di numeri interi. I numeri interi in Pascal sono generalmente divisi in due tipi: firmato e non firmato. I numeri con segno sono un tipo intero che include sia numeri positivi che negativi, i numeri senza segno sono solo positivi.

Di seguito sono due tabelle con tipi interi. Prima scriviamo tipi interi con segno:


Un tipoByteIntervallo di valori
shortint1 -128 ... 127
smallint2 -32768 ... 32767
intero, longint4 -2147483648 ... 2147483647
int648 -9223372036854775808 ... 9223372036854775807

E questo tipi interi senza segno:


Un tipoByteIntervallo di valori
byte1 0 ... 255
parola2 0 ... 65535
cardinale longword4 0 ... 4294967295
uint648 0 ... 18446744073709551615

Come puoi vedere, nella prima colonna è il nome del tipo, nella seconda - il numero di byte occupati dai numeri di questo tipo nella memoria, nella terza - rispettivamente, l'intervallo di valori possibili. I numeri firmati hanno due tipi: intero e longint (letteralmente "intero" e "intero lungo"), che sono sinonimi. Cioè, puoi usare sia un nome che un altro nella sezione descrizione.

Allo stesso modo, nella seconda tabella (numeri interi non negativi in \u200b\u200bPascal) ci sono anche due tipi di sinonimo di numero intero a 4 byte - longword e cardinal, quindi usa l'uno o l'altro.

Puoi anche notare che se i numeri della prima tabella vengono spostati condizionalmente sul lato destro rispetto a zero (sposta l'intervallo a destra in modo che il numero minimo sia 0), allora otteniamo gli intervalli di numeri interi della seconda tabella che si trovano nelle righe corrispondenti. Quindi, se nel tipo 1 byte la scorciatoia ai bordi sinistro e destro aggiunge 128, allora otteniamo il tipo byte (0..255); se nel tipo smallint a 2 byte aggiungiamo 32768 ai bordi, otteniamo il tipo corrispondente a 2 byte senza segno di parola (0..65535), ecc.

Tutto ciò accade perché nei tipi interi senza segno i numeri possono essere divisi esattamente in due: metà dei numeri sono nella parte negativa, metà nella parte positiva. E perché, quindi, in numeri con un segno, il bordo sinistro in valore assoluto è 1 maggiore del bordo destro? - tu chiedi. Ad esempio, nel tipo di abbreviazione, il minimo è -128, mentre il massimo è solo 127 (1 in meno in valore assoluto). E questo perché il lato destro include anche 0, e questo deve essere conosciuto e ricordato.

Quindi perché dividere numeri interi in Pascal in così tanti tipi? Perché non gestire, ad esempio, il più grande dei tipi interi in PascalABC.Net e Free Pascal - int64 - questo è quasi 9 quintilioni e mezzo (!) Con meno e più? Sì, per un semplice motivo banale (?): Risparmiare memoria. Se hai bisogno di aggiungere due piccoli numeri positivi a byte singolo (0..255) e hai descritto questi numeri come int64 (8 byte), allora ci è voluto 8 volte più memoria. E se il programma è grande e ci sono molte variabili, il risparmio di memoria aumenta molto rapidamente. E non ha senso usare tipi interi con segno se nell'attività è su valori come lunghezza, massa, distanza, tempo, ecc.

Nella sezione del sito Zadachnik Abrahamyan (sottosezione Intero), osservare l'uso di vari tipi interi in Pascal.

Ogni tipo indica un sottoinsieme di numeri interi:

Tipo Range Range
ShortInt -128..127 Firmato 8 bit
Numero intero -32768 .. Firmato a 16 bit
LongInt -2147483648 .. Firmato 32 bit
Byte 0..255 8 bit senza segno
Parola 0..65535 senza segno a 16 bit

Tutti i tipi di numeri interi sono ordinale. I valori massimi di Integer e LongInt corrispondono alle costanti MaxInt e MaxLongInt. I valori massimo e minimo di altri tipi di numeri interi possono essere ottenuti utilizzando le funzioni Bassa e Alta.

Ada

Pacchetto interfacce:

Questo pacchetto dichiara tipi interi con intervalli indipendenti dal compilatore e dall'ambiente operativo.

Tipo Range Range
Integer_8 -128..127 Firmato 8 bit
Integer_16 -32768..32767 Firmato a 16 bit
Integer_32 -2147483648..2147483647 Firmato a 32 bit
Numero intero_64 -2 ** 63 .. 2 ** 63 - 1 Firmato a 64 bit
Unsigned_8 0..255 Unsigned 8 bit
Unsigned_16 0..65535 Unsigned 16 bit
Unsigned_32 0..4294967296 Unsigned 32 bit
Unsigned_64 0 .. 2 ** 64 - 1 64 bit senza segno

Pacchetto standard (si collega automaticamente):

Questo pacchetto definisce tipi interi standard. Secondo lo standard, l'intervallo di ciascun tipo successivo non dovrebbe essere più stretto di quello precedente. Inoltre, due di questi tipi hanno limiti di bit minimi espliciti.

Tipo Non più stretto di quello di ... Di solito è ...
Short_Short_Integer Integer_8
Short_Integer Integer_16
Integer Integer_16 Integer_32
Long_Integer Integer_32 Integer_32
Long_Long_Integer Integer_64

Nonostante il fatto che nella colonna di destra ho scritto il testimone di ogni tipo, raccomando di usare solo Integer e Long_Integer. Per tutti gli altri bit, sono preferiti i tipi Integer_x. Un compilatore è come un investigatore privato. Più disaccordi da lui, meno sarà utile. Chissà quali bit avranno i tipi standard sulla piattaforma Win128.

Oltretutto tipi specificati, in Standard ci sono spesso usati:

Natural is Integer range 0 .. Integer "Ultimo;
Positivo è Intero intervallo 1 .. Intero "Ultimo;

Il sistema di tipi di lingua Ada è pensato meglio che in Borland Pascal. Non è possibile compilare un programma come questo in Borland Pascal:

programma Test_Word;

var
I: Word; (Buone intenzioni)

inizio
per I: \u003d 0 a -1 do (Costante fuori intervallo)
inizio
fine;
fine.

L'indice -1 è un evento comune quando si lavora con array il cui indice iniziale è 0. Se l'array è vuoto, il limite superiore per loop (lunghezza della matrice meno una) risulta solo -1. Invece di causare un errore, questo ciclo non dovrebbe fare nulla. Nella lingua dell'Inferno, tali problemi non sorgeranno. Usa Naturale e Positivo per la salute.

I dati sono concetto generale per tutto ciò con cui opera il computer.

Le variabili utilizzate per archiviare i dati in Pascal possono essere vari tipi. Ciò, in particolare, è associato al desiderio di ottenere programmi più compatti e più veloci che utilizzano meno memoria nel loro lavoro.

Ad esempio, la memorizzazione di piccoli numeri richiede meno memoria rispetto alla memorizzazione di numeri grandi. I numeri interi compresi nell'intervallo 0-255 occupano solo 1 byte di memoria, mentre numeri più alti richiedono più byte. Se secondo la logica del programma è noto che il risultato non supererà 255, quindi per la sua memorizzazione è sufficiente utilizzare una variabile a byte singolo.

D'altra parte, i processori moderni di solito elaborano numeri interi e numeri reali in modo diverso. Ad esempio, le istruzioni aritmetiche intere nei processori i80x86 vengono eseguite direttamente nell'ALU principale e richiedono un tempo di processore relativamente ridotto. Considerando che le operazioni con numeri reali sono eseguite da un coprocessore matematico, che, sebbene abbia grandi capacità di elaborazione, ma richiede molto più tempo per ottenere il risultato.

Pertanto, se la logica dell'algoritmo non richiede l'uso di numeri reali, non ha senso usare un'aritmetica "fluttuante" ingombrante. Avendo indicato nel programma che questa variabile è intera, il programmatore in realtà istruisce il compilatore a elaborarlo con ALU veloce del processore principale, senza dover utilizzare inutilmente il coprocessore.

Inoltre, è possibile definire varie operazioni per diversi tipi di dati. Ad esempio, non ha senso eseguire l'operazione di divisione per stringhe di caratteri o aggiungere una variabile reale con una logica. Se il tipo di variabile viene specificato durante la dichiarazione della variabile, il compilatore ha l'opportunità di monitorare la correttezza delle espressioni in cui verrà utilizzata questa variabile. Ciò consente di ridurre leggermente il numero di errori nel programma.

Pascal ha tipi di dati semplici, composti e di riferimento. Ora impareremo in dettaglio solo con il primo di essi, e parleremo del resto nelle lezioni seguenti.

PER tipi semplici in relazione:

- logico

- tipi interi

- tipi reali

- carattere

1. Tipo booleano (tipo booleano)

Un valore booleano è uno dei due valori di verità indicati da nomi riservati. falso e vero.

Il tipo booleano è definito in modo che falso < vero. Le operazioni di relazione danno sempre un risultato logico. Ad esempio, il rapporto



per x \u003d 0, y \u003d 0 dà falso; at x \u003d 0, y \u003d 10 - il valore vero.

2. Tipi di dati interi

I valori delle variabili di tipo intero sono elementi di un sottoinsieme limitato di numeri interi; questo sottoinsieme è determinato da una particolare implementazione.

NEL standard Pascal è definito solo un tipo di dati intero - tipo numero intero. Digitare il numero numero intero occupa due byte di memoria; mentre il bit zero determina il segno del numero.

Nell'attuazione di Pascal, con cui lavoreremo, in digitare variabili numero intero numeri interi possono essere memorizzati nell'intervallo da –32768 a +32767.

Inoltre, Turbo Pascal ha altri tipi di dati interi:

1) tipo shortint - un numero intero breve lungo un byte con un segno (il segno occupa uno zero), i limiti di variazione sono -128 .. 127;

2) tipo byte - un numero intero breve con una lunghezza di un byte senza segno (tutti gli otto bit sono cifre binarie), i limiti di modifica sono 0 .. 255;

3) tipo parola - un numero intero di due byte (parola) senza segno, i limiti di modifica sono 0 .. 65535;

4) tipo longint - un numero intero lungo 4 byte con un segno, i limiti di variazione sono 2.147.483.648 .. 2.147.483.647.

Le seguenti operazioni aritmetiche sono consentite per i valori interi:

Inoltre;

- sottrazione;

* moltiplicazione;

div divisione interamente (si noti che il segno di divisione tradizionale “/” restituisce un numero frazionario in Pascal, quindi il risultato di tale operazione non può essere assegnato a una variabile intera).

mod resto della divisione.

In termini aritmetici, due segni operativi non possono stare fianco a fianco. Ad esempio, non è possibile scrivere un * -b. Qui devi scrivere un * (-b).

Anzianità operativa:

1) espressioni tra parentesi;

2) *, div, mod (operazioni moltiplicative);

3) +, - (operazioni additive).

Le operazioni della stessa anzianità vengono eseguite da sinistra a destra.

Le operazioni di aumento di potenza in Pascal non lo sono. Per esponenti interi, questa operazione può essere sostituita da una moltiplicazione multipla.

Le seguenti funzioni predefinite danno l'intero risultato:



1) abs (i) è il valore assoluto dell'argomento intero i;

2) sqr (i) - il quadrato del valore dell'argomento intero i;

3) trunc (R) - il tutto risultante dallo scartare la parte frazionaria del numero R;

4) round (R) - un numero intero ottenuto arrotondando R.

trunc (3.3) \u003d 3; tondo (3.3) \u003d 3;

trunc (3.5) \u003d 3; tondo (3.5) \u003d 4;

trunc (3.8) \u003d 3; tondo (3.8) \u003d 4;

trunc (-3.3) \u003d -3; round (-3.3) \u003d -3;

trunc (-3,8) \u003d -3; tondo (-3,8) \u003d -4.

3. Tipi reali

I numeri reali sono numeri in virgola mobile. Il loro uso diffuso è caratteristico dei problemi di ingegneria.

In assenza di un coprocessore, viene implementato solo un tipo reale: il tipo vero; in presenza di un coprocessore, vengono implementati anche i tipi singolo, doppio, esteso, comp. I tipi reali differiscono l'uno dall'altro nel numero di cifre allocate per rappresentare la mantissa e l'ordine.

Per tipo vero sono definite quattro operazioni aritmetiche:

Aggiunta - Sottrazione

* moltiplicazione / divisione

Il risultato delle operazioni “+”, “-”, “*” è un valore reale se almeno uno degli operandi è di tipo vero. L'operazione "/" fornisce un valore reale nel caso in cui entrambi i suoi operandi siano di tipo intero.

Le funzioni standard abs (x) e sqr (x) danno un risultato reale se il loro argomento x è di tipo vero. Indipendentemente dal tipo di argomento, quanto segue caratteristiche standard dà sempre un risultato reale: sin (x), cos (x), ln (x), exp (x), arctan (x), sqrt (x) (radice quadrata).

Il risultato reale con un argomento reale è anche dato dalle funzioni

Int (x) è la parte intera del valore reale di x;

Frac (x) è la parte frazionaria del valore reale di x.

4. Tipo di dati dei caratteri (tipo di carattere)

I valori delle variabili di carattere sono elementi di un set di caratteri finito e ordinato. Questo set potrebbe non essere lo stesso su computer diversi.

Il valore di una variabile del tipo di carattere è indicato da un singolo carattere racchiuso in apostrofi.

"A" "a" "8" "" "" (l'apostrofo è scritto due volte)

Indipendentemente dall'implementazione, i seguenti presupposti sono validi per il tipo di carattere.

1) Le cifre decimali da "0" a "9" sono ordinate in base ai loro valori e scritte una dopo l'altra.

2) Ci sono tutte le lettere maiuscole dell'alfabeto latino da "A" a "Z". Questo set è ordinato in ordine alfabetico, ma non necessariamente collegato. Pertanto, in qualsiasi implementazione, "I" deve essere eseguito.< "J".

3) Potrebbero esserci lettere minuscole dell'alfabeto latino da "a" a "z". In tal caso, questo set di lettere è ordinato in ordine alfabetico, ma non necessariamente collegato.

Per un tipo di carattere, sono definite due funzioni di trasformazione reciprocamente inverse ord e chr:

k \u003d ord (ch) - numero di serie del carattere ch;

ch \u003d chr (k) - carattere con numero seriale k.

Per un tipo di carattere, vengono definite tutte le operazioni di relazione.

Si ritiene che ch1< ch2, если ord(ch1) < ord(ch2).

Struttura del programma Pascal

Un programma pascal è costituito da un'intestazione del programma e un blocco:

Titolo del programma;

Bloccare .

Titolo è composto dalla parola chiave del programma e dal nome del programma:

Esempio di programma;

Bloccare contiene sezioni di descrizioni in cui sono definiti tutti gli oggetti locali al programma dato e una sezione di operatori, in cui sono specificate le azioni da eseguire su questi oggetti. Il blocco è costituito dalle seguenti sezioni:

1. Sezione della descrizione dell'etichetta.

2. Sezione per la descrizione delle costanti

3. Digitare la sezione descrizione

4. Sezione che descrive le variabili.

5. Sezione che descrive le procedure e le funzioni.

6. Operatori di sezione.

Nel blocco potrebbe mancare una qualsiasi delle sezioni tranne la sezione operatore.

1. Sezione Descrizione etichetta

Qualsiasi operatore nel programma può essere contrassegnato con un'etichetta. L'etichetta è posizionata davanti all'operatore ed è separata da due punti. Tutte le etichette devono essere descritte nella sezione di descrizione dell'etichetta.

Etichetta 10, 20, Met15;

2. Sezione per la descrizione delle costanti

Questa sezione definisce alcuni identificatori come sinonimi di costanti.

TextString \u003d "Premi Invio";

La costante pi è predefinita ed è uguale a

pi \u003d 3.1415926536.

L'uso di identificatori costanti migliora la leggibilità del programma e ne facilita la modifica.

3. Digitare la sezione descrizione

I tipi di dati real, integer, boolean, char sono predefiniti e vengono utilizzati nella sezione di descrizione delle variabili. Se un programmatore deve introdurre un nuovo tipo di dati, deve essere descritto nella sezione di descrizione del tipo.

Parleremo più della descrizione di nuovi tipi in seguito.

4. Sezione per la descrizione delle variabili

Ogni nome di una variabile, di un array o di un altro oggetto programma deve essere indicato nella sezione di descrizione della variabile.

Var i, j, k: intero;

5. Sezione che descrive le procedure e le funzioni

Lo scopo e la struttura della sezione saranno delineati quando si considerano le procedure e le funzioni.

6. Sezione degli operatori

La sezione contiene operatori che implementano l'elaborazione delle informazioni nel programma. Una sezione di istruzione è un caso speciale di un'istruzione composta che include una o più istruzioni racchiuse tra "parentesi di istruzioni" inizio ... fine. Il separatore tra operatori è un punto e virgola. Nelle lezioni successive, studieremo gli operatori di base della lingua pasquale.

Sezione n. 9 (2 ore)

Operatore di assegnazione. Input Output
nei programmi Pascal

Operatore di assegnazione. Scrivere espressioni aritmetiche

Procedure di immissione dei dati da tastiera

Procedure di visualizzazione dello schermo

Nozioni di base di programmazione
Ogni professionista era una volta un bollitore. Sicuramente hai familiarità con uno stato in cui "non sai come iniziare a pensare, a pensare a una cosa del genere". Sicuramente ti trovi di fronte a una situazione in cui semplicemente non sai da dove cominciare. Questo libro si rivolge specificamente a tali persone che vorrebbero diventare programmatori, ma non sanno assolutamente come iniziare questo percorso. ...

Quasi tutti i tipi di dati interi sono relativi a. Questi tipi di dati rappresentano numeri interi in un intervallo specifico. I nomi specifici di tipi interi e intervalli di valori dipendono dal particolare linguaggio di programmazione, dal compilatore e dalla modalità di compilazione. Ulteriori informazioni al riguardo nella documentazione del compilatore.

Ad esempio, un tipo di dati Numero intero a Delfi ha un intervallo di -2147483648 ... 2147483647, mentre in Turbo Pascal il tipo di dati è Numero intero rappresenta i numeri nell'intervallo -35768 ... 32767. Free Pascal ha una gamma di valori di tipo Numero intero determinato dalla modalità selezionata.

Poiché Lazarus utilizza il compilatore Free Pascal, tutto ciò che viene detto sui tipi di dati rispetto a Free Pascal è vero anche per Lazarus.

Pertanto, i tipi di dati interi di Free Pascal sono elencati nella Tabella 13.1.

Tabella 13.1 Tipi di dati interi Free Pascal (Lazarus).

Un tipo Dimensione, byte Intervallo di valori
Byte 1 0…255
Shortint 1 -128…127
smallint 2 -35768…32767
parola 2 0…65535
Numero intero 2 o 4 Dipende dalla modalità di compilazione
Cardinale 4 0…4294967295
longint 4 -2147483648…2147483647
longword 4 0...4294967295
Int64 8 -9223372036854775808...9223372036854775807
QWord 8 0...18446744073709551615

NOTA
In Free Pascal Tipi Int64 e QWord non sono! Ciò significa che non è possibile utilizzarli, ad esempio, per le variabili di indice nei loop. Tuttavia, li ho portati qui, in modo da non descrivere separatamente in futuro e raccogliere in un unico posto tutti i tipi interi di Free Pascal. Se non capisci alcune parole, non aver paura. A tempo debito parlerò di tutto in modo più dettagliato.

E ora alcune spiegazioni al tavolo.

In una colonna UN TIPO sono indicati identificatori del tipo di dati ( parole chiave, che indicano al compilatore a quale tipo appartengono questi o quei dati). Imparerai come utilizzare questi identificatori nelle seguenti lezioni.

In una colonna LA DIMENSIONE È indicata la dimensione del tipo di dati nella memoria del computer. Ad esempio, un numero intero positivo può essere rappresentato da diversi tipi: Byte, parola, Cardinale ecc. Tuttavia, il numero del tipo Cardinale occuperà 4 byte in memoria, mentre un numero di tipo Byte - solo 1 byte. Pertanto, se sai per certo che il numero con cui lavori non avrà mai un valore maggiore di 255, è meglio definirlo come un tipo Byte, poiché ciò risparmierà spazio nella memoria del computer. Anche se questo non è così semplice (le sfumature di allocazione della memoria e di altre risorse del computer vanno oltre lo scopo).

In una colonna GAMMA viene specificato l'intervallo di valori specificato dal tipo di dati. Ad esempio, un numero come Byte può assumere valori compresi tra 0 e 255.

E ora pratica. Scriveremo un programma che visualizza gli intervalli di valori di tutti i tipi di dati interi. Il codice sorgente per questo programma è mostrato di seguito:

Listato 13.1. Un programma per la visualizzazione di intervalli di numeri interi. programma td; ($ mode objfpc) ($ H +) usa ($ IFDEF UNIX) ($ IFDEF UseCThreads) cthreads, ($ ENDIF) ($ ENDIF) Classi (puoi aggiungere unità dopo questo); iniziare Writeln ("Byte:", Low (Byte), "..", High (Byte)); Writeln ("Shortint:", Low (Shortint), "..", High (Shortint)); Writeln ("Smallint:", Low (Smallint), "..", High (Smallint)); Writeln ("Word:", Low (Word), "..", High (Word)); Writeln ("Numero intero:", Basso (numero intero), "..", Alto (numero intero)); Writeln ("Cardinale:", Basso (Cardinale), "..", Alto (Cardinale)); Writeln ("Longint:", Low (Longint), "..", High (Longint)); Writeln ("Longword:", Low (Longword), "..", High (Longword)); Writeln ("Int64:", Basso (Int64), "..", Alto (Int64)); Writeln ("QWord:", Low (QWord), "..", High (QWord)); readln fine.

Funzione standard Basso definisce il valore minimo del tipo di dati. Funtsia alto definisce il valore massimo. Con funzionalità writeln e readln sai già un po '. Parleremo di più dei sottoprogrammi (procedure e funzioni) nella sezione corrispondente.

Alla fine, dirò come i dati interi sono scritti nel programma. Sì, così come ovunque: basta scrivere un numero, senza virgolette e senza caratteri aggiuntivi. Ad esempio, così

10
178
35278

È vero, questo vale per i numeri nel sistema decimale. Sicuramente sai già che ci sono altri sistemi. I più comuni sistemi numerici binari, decimali ed esadecimali.

Free Pascal supporta quattro formati di registrazione interi:

  1. Record decimale. Solo un numero, come 10.
  2. Notazione esadecimale. Un numero con prefisso $. Ad esempio, il numero esadecimale $ 10 è uguale al decimale 16.
  3. Record ottale. Un numero con il prefisso &. Ad esempio, il numero ottale e 10 è il numero decimale 8.
  4. Record binario. Numero preceduto da%. Ad esempio, il numero binario% 10 è uguale al decimale 2.

Compiti a casa:

Crea un programma che visualizzi intervalli di valori interi (Listato 13.1). Compilare il programma ed eseguirlo. Assicurarsi che questi valori siano indicati nella tabella 13.1.

NEL codice sorgente programmi, trova la riga che imposta la modalità di compilazione:

($ mode objfpc) ($ H +)

In questa riga, invece della parola objfpc scrivi la parola tp. Cioè, la riga finale dovrebbe apparire così:

($ mode tp) ($ H +)

Esegui il programma. Vedi la gamma di valori di tipo Numero intero. Trarre conclusioni.

Impara a pensare come un programmatore, cioè logicamente. Nessuno ti masticherà tutti fino alla pensione, come faccio ora. Devi abituarti a pensare da solo. Altrimenti, entrerai nel "principio scimmia dell'apprendimento", e quindi le tue possibilità di diventare un programmatore interessante si avvicineranno allo zero. Per aiutarti a non scivolare nel livello di “stipare”, periodicamente lascerò delle lacune nel tuo allenamento in modo da provare a pensare ad alcune cose da solo.

Molto meglio se pensi a te stesso decisione sbagliata, troverai tu stesso l'errore e lo correggerai tu stesso, che userà sempre le decisioni corrette di qualcun altro e li copierà stupidamente.

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