Come configurare smartphone e PC. Portale informativo
  • casa
  • Windows 7, XP
  • Nel linguaggio pascal, il tipo di dati reali è. Tipi di dati dell'indirizzo

Nel linguaggio pascal, il tipo di dati reali è. Tipi di dati dell'indirizzo

Il più comune in matematica tipi numerici- esso totale numeri che rappresentano un numero infinito di valori discreti, e valido numeri che rappresentano un continuum illimitato di valori.

Descrizione di tipi di dati numerici (interi) Pascal

Diversi sottoinsiemi dell'insieme di interi possono essere implementati all'interno dello stesso linguaggio. L'intervallo di valori possibili per i tipi numerici interi dipende dalla loro rappresentazione interna, che può essere uno, due o quattro byte. Ad esempio, Pascal 7.0 utilizza i seguenti tipi di dati numerici interi:

Con intero tipi di dati numerici Pascal, puoi eseguire le seguenti operazioni:

  • Aritmetica:
    addizione (+);
    sottrazione(-);
    moltiplicazione(*);
    resto della divisione (mod);
    esponenziale;
    unario più (+);
    unario meno (-).
  • Operazioni di relazione:
    relazione di uguaglianza (=);
    relazione di disuguaglianza (<>);
    il rapporto è minore (<);
    il rapporto è maggiore (>);
    il rapporto non è inferiore (> =);
    rapporto non più (<=).

Quando si agisce con tipi di dati numerici interi il tipo del risultato corrisponderà al tipo degli operandi e, se gli operandi sono di tipo intero diverso, il tipo dell'operando con la cardinalità massima (intervallo massimo di valori). Il possibile overflow del risultato non è controllato in alcun modo (è importante!) che può portare a errori.

Particolare attenzione dovrebbe essere prestata all'operazione di divisione dei tipi di dati numerici interi. In Pascal sono consentite due operazioni di divisione, che sono rispettivamente indicate "/" e div... Devi sapere che il risultato della divisione "/" non è un tutto, ma numero reale(questo è vero anche se stai dividendo 8 per 2, cioè 8/2 = 4.0). Dividere la divisione è divisione intera, cioè. il tipo di risultato è intero.

Descrizione dei tipi di dati numerici (valido) Pascal

Il tipo di dati numerici reali è un sottoinsieme di numeri reali che possono essere rappresentati nel cosiddetto formato a virgola mobile con un numero fisso di cifre. Con la virgola mobile, ogni tipo di dati numerici è rappresentato come due gruppi di numeri. Il primo gruppo di numeri è chiamato mantissa, il secondo - l'ordine. In generale, un tipo di dato numerico in virgola mobile può essere rappresentato come segue: X = (+ | -) MP (+ | -) r, dove M è la mantissa di un numero; r è l'ordine del numero (r è un numero intero); P è la base del sistema numerico. Ad esempio, per la base decimale, la rappresentazione 2E-1 (qui E è la base del sistema numerico decimale) sarà simile a: 2 * 10 -1 = 0,2 e la rappresentazione 1.234E5 corrisponderà a: 1.234 * 10 5 = 123400.0.

In Pascal, vengono utilizzati i seguenti tipi di numeri reali, che definiscono un numero arbitrario solo con una certa precisione finita, a seconda del formato interno del numero reale:

Quando si descrive una variabile reale di tipo reale, nella memoria del computer verrà creata una variabile a 4 byte. In questo caso verranno assegnati 3 byte per la mantissa e uno per l'ordine.

È possibile eseguire le seguenti operazioni su tipi di dati numerici validi:

  • Aritmetica:
    addizione (+);
    sottrazione(-);
    moltiplicazione(*);
    divisione(/);
    esponenziale;
    unario più (+);
    unario meno (-).
  • Operazioni di relazione:
    relazione di disuguaglianza (<>);
    il rapporto è minore (<);
    il rapporto è maggiore (>);
    il rapporto non è inferiore (> =);
    rapporto non più (<=).

Come puoi vedere, Pascal è caratterizzato da una ricca gamma di tipi reali, ma accesso a tipi di dati numerici separare, Doppio e esteso possibile solo con modalità di compilazione speciali. Questi tipi di dati numerici sono progettati per il supporto hardware per l'aritmetica in virgola mobile e per il loro uso efficace, il PC deve includere un coprocessore matematico.

Una posizione speciale in Pascal è occupata dal tipo di dati numerico. comp, che viene trattato come un numero reale senza parti esponenziali e frazionarie. In realtà, compÈ un intero con segno "grande" che memorizza 19..20 cifre decimali significative. Allo stesso tempo, il tipo di dati numerici comp nelle espressioni, è completamente compatibile con altri tipi reali: tutte le operazioni reali sono definite su di esso, può essere usato come argomento di funzioni matematiche, ecc.

Informazioni sulla conversione dei tipi di dati numerici di Pascal

Le conversioni implicite (automatiche) di tipi di dati numerici sono quasi impossibili in Pascal. Un'eccezione è fatta solo per il tipo numero intero che può essere usato in espressioni come vero... Ad esempio, se le variabili sono descritte in questo modo:

Var X: intero; Y: reale;

Allora l'operatore

sarà sintatticamente corretto, sebbene ci sia un'espressione intera a destra del segno di assegnazione e una variabile reale a sinistra, il compilatore convertirà automaticamente i tipi di dati numerici. La conversione inversa è automaticamente come vero nel tipo numero intero in Pascal è impossibile. Ricordiamo quanti byte sono allocati per variabili del tipo numero intero e vero: per il tipo di dati intero numero intero Vengono allocati 2 byte di memoria e, in realtà, 6 byte. Convertire vero v numero intero ci sono due funzioni integrate: il giro(x) arrotonda la x reale all'intero più vicino, tronca(x) tronca il numero reale scartando la parte frazionaria.

In Pascal le variabili sono caratterizzate dalla loro genere... Un tipo è una proprietà di una variabile, per cui una variabile può assumere una varietà di valori consentiti da questo tipo e partecipare a un insieme di operazioni consentite su un determinato tipo.

Un tipo definisce l'insieme di valori validi che assume una variabile di un dato tipo. Definisce inoltre l'insieme delle operazioni consentite da una variabile di questo tipo e determina la rappresentazione dei dati nella RAM del computer.

Ad esempio:

n: intero;

Il Pascal è un linguaggio statico, da ciò ne consegue che il tipo di una variabile è determinato durante la sua descrizione e non può essere modificato. Il linguaggio Pascal ha un sistema di tipi sviluppato: tutti i dati devono appartenere a un tipo di dati precedentemente noto (un tipo standard creato durante lo sviluppo del linguaggio o un tipo definito dall'utente definito dal programmatore). Il programmatore può creare i propri tipi con una struttura di complessità arbitraria basata su tipi standard o tipi già definiti dall'utente. Il numero di tipi creati è illimitato. I tipi definiti dall'utente nel programma sono dichiarati nella sezione TYPE per formato:

[nome] = [tipo]

Il sistema dei tipi standard ha una struttura gerarchica ramificata.

Primari nella gerarchia sono tipi semplici... Questi tipi si trovano nella maggior parte dei linguaggi di programmazione e sono chiamati semplici, ma in Pascal hanno una struttura più complessa.

Tipi strutturati sono costruiti secondo determinate regole da tipi semplici.

puntatori sono formati da tipi semplici e vengono utilizzati nei programmi per impostare gli indirizzi.

Tipi procedurali sono nuovi in ​​Turbo Pascal e consentono di trattare le subroutine come variabili.

oggetti sono anche nuovi e sono progettati per utilizzare il linguaggio come linguaggio orientato agli oggetti.

Ci sono 5 tipi di tipi interi in Pascal. Ciascuno di essi caratterizza la gamma di valori accettati e il loro spazio di memoria occupato.

Quando si utilizzano numeri interi, è necessario essere guidati dall'annidamento dei tipi, ad es. i tipi con un intervallo più piccolo possono essere nidificati all'interno di tipi con un intervallo più ampio. Il tipo Byte può essere annidato in tutti i tipi lunghi 2 e 4 byte. Allo stesso tempo, il tipo Short Int, che occupa 1 byte, non può essere annidato nel tipo Word, poiché non ha valori negativi.

Ci sono 5 tipi reali:

In un computer, i tipi interi sono rappresentati in modo assolutamente esatto. A differenza dei tipi interi, il valore dei tipi reali definisce un numero arbitrario solo con una precisione finita, a seconda del formato del numero. I numeri reali sono rappresentati in un computer con virgola fissa o mobile.

2358.8395

0.23588395*10 4

0.23588395 * E 4

Una posizione speciale in Pascal è occupata dal tipo Comp, infatti è un grande intero con segno. Questo tipo è compatibile con tutti i tipi reali e può essere utilizzato per numeri interi grandi. Quando si rappresentano numeri reali con virgola mobile, il punto decimale è sempre implicito prima della mantissa sinistra o alta, ma quando si agisce con un numero viene spostato a sinistra oa destra.

Tipi ordinali

I tipi ordinali combinano diversi tipi semplici. Questi includono:

  • tutti i tipi interi;
  • tipo di carattere;
  • tipo booleano;
  • tipo di intervallo;
  • tipo enumerato.

Le caratteristiche comuni per i tipi ordinali sono: ogni tipo ha un numero finito di possibili valori; il valore di questi tipi può essere ordinato in un certo modo e ad ogni numero può essere associato un certo numero, che è un numero ordinale; i valori adiacenti dei tipi ordinali differiscono di uno.

La funzione DISPARI (x) può essere applicata a valori di tipo ordinale, che restituisce il numero ordinale dell'argomento x.

Funzione PRED (x) - Restituisce il valore precedente del tipo ordinale. PRED (A) = 5.

Funzione SUCC (x) - Restituisce il valore successivo del tipo ordinale. SUCC (A) = 5.

Tipo di carattere

I valori del tipo di carattere sono 256 caratteri dal set consentito dalla tabella dei codici del computer in uso. L'area iniziale di questo set, ovvero l'intervallo da 0 a 127, corrisponde all'insieme di codici ASCII, in cui vengono caricati caratteri alfabetici, numeri arabi e caratteri speciali. I caratteri dell'area di inizio sono sempre presenti sulla tastiera del PC. L'area senior è chiamata alternativa, contiene simboli di alfabeti nazionali e vari caratteri speciali, e simboli pseudo-grafici che non corrispondono al codice ASCII.

Un valore di tipo carattere occupa un byte nella RAM. Nel programma, il valore è racchiuso tra apostrofi. Inoltre, i valori possono essere specificati sotto forma di codice ASCII. In questo caso, il segno # deve essere anteposto al numero con il codice carattere.

C: = 'A'

tipo booleano

Ci sono due valori booleani: True e False. Le variabili di questo tipo vengono specificate con la parola di servizio BOOLEAN. I valori booleani occupano un byte nella RAM. I valori True e False corrispondono ai valori numerici 1 e 0.

Tipo di intervallo

Esiste un sottoinsieme del suo tipo base, che può essere qualsiasi tipo ordinale. Il tipo di intervallo è definito dai limiti all'interno del tipo di base.

[valore min] ... [valore max]

Il tipo di intervallo può essere specificato nella sezione Tipo come tipo specifico o direttamente nella sezione Var.

Quando si definisce un tipo di intervallo, è necessario essere guidati da:

  • il bordo sinistro non deve superare il bordo destro;
  • range-type eredita tutte le proprietà del tipo base, ma con restrizioni relative alla sua cardinalità inferiore.

Tipo enumerato

Questo tipo appartiene ai tipi ordinali ed è specificato da un'enumerazione di quei valori che può enumerare. Ogni valore è denominato da un identificatore e si trova nell'elenco racchiuso tra parentesi. Un tipo enumerato è specificato in Type:

Popoli = (uomini, donne);

Il primo valore è 0, il secondo valore è 1 e così via.

Potenza massima 65535 valori.

Tipo di stringa

Il tipo stringa appartiene al gruppo dei tipi strutturati ed è costituito dal tipo base Char. Il tipo stringa non è un tipo ordinale. Definisce un insieme di stringhe di caratteri di lunghezza arbitraria fino a 255 caratteri.

Nel programma, il tipo di stringa è dichiarato dalla parola String. Poiché String è un tipo base, è descritto nel linguaggio e una variabile di tipo String è dichiarata in Var. Quando si dichiara una variabile di tipo stringa dietro String, è consigliabile indicare la lunghezza della stringa tra parentesi quadre. Viene utilizzato un numero intero compreso tra 0 e 255 per indicare.

Famiglia: Stringa;

La specifica della lunghezza della stringa consente al compilatore di allocare un numero specificato di byte nella RAM per la variabile. Se la lunghezza della stringa non è specificata, il compilatore allocherà il numero massimo possibile di byte (255) per il valore di questa variabile.

Agenzia federale per l'istruzione

astratto

"TIPI DI DATI IN PASCAL"

1. Tipi di dati

Qualsiasi dato, ad es. costanti, variabili, proprietà, valori di funzione o espressioni sono caratterizzati dai loro tipi. Un tipo definisce l'insieme di valori validi che un oggetto può avere, nonché l'insieme di operazioni valide applicabili ad esso. Inoltre, il tipo determina anche il formato della rappresentazione interna dei dati nella memoria del PC.

In generale, il linguaggio Object Pascal è caratterizzato da una struttura ramificata di tipi di dati (Fig. 1.1). Il linguaggio fornisce un meccanismo per la creazione di nuovi tipi, grazie al quale il numero totale di tipi utilizzati nel programma può essere grande quanto desiderato.

I dati elaborati nel programma sono suddivisi in variabili, costanti e letterali:

costanti sono dati i cui valori sono impostati nella sezione di dichiarazione delle costanti e non cambiano durante l'esecuzione del programma.

Variabili sono dichiarati nella sezione di dichiarazione delle variabili, ma a differenza delle costanti, ricevono i loro valori già durante l'esecuzione del programma e questi valori possono essere modificati. È possibile accedere alle costanti e alle variabili per nome.

Letterale non ha identificatore ed è rappresentato nel testo del programma direttamente dal valore.

Un tipo definisce l'insieme di valori che gli elementi di dati possono assumere e l'insieme di operazioni consentite su di essi.

Tutti i tipi sono descritti in dettaglio in questo e nei prossimi quattro capitoli.

1.1 Tipi semplici

I tipi semplici includono tipi ordinali, tipi reali e tipi di data e ora.

Tipi ordinali differiscono in quanto ciascuno di essi ha un numero finito di possibili valori. Questi valori possono essere ordinati in un certo modo (da cui il nome dei tipi) e, quindi, ciascuno di essi può essere associato a un numero intero - il numero ordinale del valore.

Tipi reali, in senso stretto, hanno anche un numero finito di valori, che è determinato dal formato della rappresentazione interna di un numero reale. Tuttavia, il numero di possibili valori dei tipi reali è così grande che non è possibile associare un numero intero (il suo numero) a ciascuno di essi.

Tipo di data e ora destinato alla memorizzazione di data e ora. In effetti, utilizza un formato reale per questi scopi.

1.1.1 Tipi ordinali

I tipi ordinali includono (vedere la Figura 1.1) il tipo intero, booleano, carattere, enumerato e intervallo. La funzione Ord (x) è applicabile a ognuna di esse, che restituisce il valore ordinale dell'espressione X.


Riso. 1.1 - Struttura del tipo di dati

Per totale di tipi, la funzione ord (x) restituisce il valore di x stesso, ovvero Ord (X) = x per x appartenente a qualsiasi totale genere. Applicazione di Ord (x) a logico , simbolico ed enumerabile type fornisce un numero intero positivo nell'intervallo da 0 a 1 ( tipo booleano), da 0 a 255 ( simbolico), da 0 a 65535 ( enumerabile). Tipo di intervallo conserva tutte le proprietà del tipo ordinale di base, quindi il risultato dell'applicazione della funzione ord (x) dipende dalle proprietà di questo tipo.

Puoi anche applicare funzioni ai tipi ordinali:

pre (x)- restituisce il valore precedente del tipo ordinale (il valore che corrisponde al numero ordinale ord (x) -1, ovvero оrd (рred (х)) = оrd (х) - 1;

successo (x)- restituisce il successivo valore di tipo ordinale, che corrisponde al numero ordinale ord (х) +1, ovvero оrd (Succ (х)) = оrd (х) + 1.

Ad esempio, se il programma definisce la variabile

quindi la funzione PRED (c) restituirà il carattere "4", e la funzione SUCC (c) restituirà il carattere "6".

Se immaginiamo qualsiasi tipo ordinale come un insieme ordinato di valori che aumentano da sinistra a destra e occupano un certo segmento sull'asse numerico, allora la funzione pred (x) non è definita per la sinistra e succ (x) - per l'estremità destra di questo segmento.

Tipi interi ... L'intervallo di valori possibili per i tipi interi dipende dalla loro rappresentazione interna, che può essere uno, due, quattro o otto byte. Tavolo 1.1 elenca i nomi dei tipi interi, la lunghezza della loro rappresentazione interna in byte e l'intervallo di valori possibili.

Tabella 1.1 - Tipi di numeri interi

Nome Lunghezza, byte Gamma di valori
Cardinale 4 0. .. 2 147 483 647
Byte 1 0...255
Shortint 1 -128...+127
Smallint 2 -32 768...+32 767
Parola 2 0...65 535
Numero intero 4
Longint 4 -2 147 483 648...+2 147 483 647
Int64 8 -9*1018...+9*1018
parola lunga 4 0. . .4 294 967 295

tipi parola lunga e Int64 sono stati introdotti per la prima volta nella versione 4 e i tipi Smallint e Cardinale non disponibile in Delphi 1. Tipo numero intero per questa versione richiede 2 byte e ha un intervallo di valori da -32768 a +32767, ovvero è lo stesso di Smallint .

Quando si utilizzano procedure e funzioni con parametri interi, è necessario essere guidati dal "nidificazione" dei tipi, ad es. ovunque possa essere utilizzato parola, l'uso è consentito Byte(ma non viceversa), in Longint"Incluso" Smallint che a sua volta include Shortint .

L'elenco delle procedure e delle funzioni applicabili ai tipi interi è riportato nella tabella. 1.2. Le lettere b, s, w, i, l denotano espressioni, rispettivamente, del tipo Byte , Shortint, Word, Integer e Longint ,

x è un'espressione di uno di questi tipi; le lettere vb, vs, vw, vi, vl, vx denotano variabili dei tipi corrispondenti. Un parametro opzionale è indicato tra parentesi quadre.

Tabella 1.2 - Procedure e funzioni standard applicabili ai tipi interi

Appello Tipo di risultato Azione
addominali (x) X Restituisce il modulo x
chr (b) Char Restituisce un carattere tramite il suo codice
dic (vx [, i]) - Diminuisce il valore di vx di i, e in assenza di i - di 1
inc (vx [, io]) - Aumenta il valore di vx di i, e in assenza di i, di 1
ciao (w) Byte Restituisce l'arco di ordine superiore dell'argomento
ciao (io) Anche Restituisce il terzo byte
Lo (i) Restituisce il byte meno significativo dell'argomento
Basso) Anche
dispari (l) booleano Restituisce True se l'argomento è un numero dispari
Casuale (w) Uguale al parametro Restituisce un numero pseudocasuale distribuito uniformemente nell'intervallo 0 ... (w-l)
sqr (x) X Restituisce il quadrato dell'argomento
scambiare (i) Numero intero Scambia i byte in una parola
scambiare (w) Parola Pure

Per le operazioni con interi, il tipo del risultato corrisponderà al tipo degli operandi e, se gli operandi sono di tipi interi diversi, il tipo comune, che include entrambi gli operandi. Ad esempio, quando si agisce con breve e parola comune sarà il tipo numero intero... Nell'impostazione predefinita, il compilatore Delphi non genera codice che controlla la possibilità di verificare se un valore è fuori intervallo, il che può creare confusione.

Tipi booleani ... I tipi booleani includono Boolean, ByteBool, Bool, wordBool e LongBool... Nel Pascal standard, viene definito solo il tipo booleano, il resto dei tipi booleani sono introdotti in Object Pascal per compatibilità con Windows: tipi booleano e ByteBool occupano un byte ciascuno, bool e WordBool- 2 byte ciascuno, LongBool- 4 byte. I valori booleani possono essere una delle costanti precedentemente dichiarate False o True.

Poiché il tipo booleano è un tipo ordinale, può essere utilizzato in un operatore di ciclo di tipo numerabile. In Delphi 32 per booleano senso

Ord (Vero) = +1, mentre per altri tipi ( Bool, WordBool eccetera.)

Ord (Vero) = -1, quindi questo tipo di operatore dovrebbe essere usato con cautela! Ad esempio, per Delphi 6, l'istruzione eseguibile showMessage ("---") nel ciclo seguente per non verrà eseguito nemmeno una volta:

per L: = da falso a vero do

Mostra messaggio ("-);

Se sostituiamo il tipo del parametro di ciclo L nell'esempio precedente con booleano, il ciclo verrà eseguito e il messaggio apparirà due volte sullo schermo. [Per Delphi versione 1 e 2, ord (True) = + 1 per qualsiasi tipo booleano.]

Tipo di carattere ... I valori del tipo di carattere sono l'insieme di tutti i caratteri del PC. Ad ogni carattere viene assegnato un numero intero nell'intervallo 0 ... 255. Questo numero serve come codice per la rappresentazione interna del simbolo e viene restituito dalla funzione ord.

Windows utilizza il codice ANSI per la codifica (dal nome dell'American National Standard Institute - l'American Standards Institute che ha proposto questo codice). La prima metà dei caratteri PC con codici 0 ... 127 corrisponde alla tabella 1.3. La seconda metà dei caratteri con i codici 128 ... 255 varia per i diversi caratteri. I caratteri standard di Windows Arial Cyr, Courier New Cyr e Times New Roman per rappresentare i caratteri cirillici (senza le lettere "ё" e "Ё") utilizzano gli ultimi 64 codici (da 192 a 256): "A" ... "Z" sono i valori codificati 192..223, "a" ... "i" - 224 ... 255. I simboli "Ё" e "ё" hanno rispettivamente i codici 168 e 184.

Tabella 1.3 - Codifica dei caratteri secondo lo standard ANSI

Il codice Simbolo Il codice. Simbolo Il codice. Simbolo Il codice Simbolo
0 NUL 32 BL 64 @ 96 "
1 ZONA 33 ! 65 UN 97 un
2 STX 34 66 V 98 B
3 ETX 35 # 67 CON 99 Con
4 EOT 36 $ 68 D 100 D
5 ENQ 37 % 69 E 101 e
6 ACK 38 & 70 F 102 F
7 BEL 39 " 71 G 103 D
8" BS 40 ( 72 n 104 h
9 Ht 41 ) 73 io 105 io
10 LF 42 * 74 J 106 J
11 VT 43 + 75 A 107 K
12 FF 44 F 76 l 108 1
13 CR 45 - 77 m 109 m
14 COSÌ 46 78 n 110 n
15 SI 47 / 79 0 111 oh
16 DEL 48 0 80 R 112 P
17 DC1 49 1 81 Q 113 Q
18 DC2 50 2 82 R 114 R
19 DC3 51 3 83 S 115 S
20 CC 4 52 4 84 T 116 T
21 NAK 53 5 85 tu 117 tu
22 SYN 54 6 86 V 118 v
23 ETB 55 7 87 W 119 W
24 POTERE 56 8 88 X 120 X
25 EM 57 9 89 121 Ho
26 SUB 58 : 90 Z .122 z
27 ESC 59 ; 91 T 123 {
28 FS 60 < 92 \ 124 1
29 GS 61 = 93 ] 125 }
30 Rs 62 > 94 l 126 ~
31 noi 63 F 95 127 R

I simboli con codici 0 ... 31 si riferiscono ai codici di servizio. Se questi codici vengono utilizzati nel testo dei caratteri del programma, sono considerati spazi.

Tipi di dati Pascal

Tutti i dati (costanti, variabili, valori di funzioni o espressioni) in Turbo Pascal sono caratterizzati dai loro tipi. Un tipo definisce l'insieme di valori validi che un oggetto può avere, nonché l'insieme di operazioni valide applicabili ad esso. Il tipo determina anche il formato della rappresentazione interna dei dati nella memoria del computer.

In Turbo Pascal esistono i seguenti tipi di dati.

1) Tipi semplici:

- vero;

- simbolico;

- booleano (logico);

- elencato;

- Raggio limitato).

2) Tipi compositi (strutturati):

- regolare (array);

- combinato (record);

- file;

- multiplo;

- corda;

- oggetti.

3) Tipi di riferimento (puntatori tipizzati e non tipizzati).

4) Tipi procedurali.

Turbo Pascal fornisce un meccanismo per la creazione di nuovi tipi di dati, grazie al quale il numero totale di tipi utilizzati nel programma può essere grande quanto desiderato.

Tipo intero... I valori interi sono gli elementi di un sottoinsieme di interi. Ci sono cinque tipi interi in Turbo Pascal. I loro nomi, l'intervallo di valori, la lunghezza della rappresentazione in byte sono riportati nella tabella. 6.

Tabella 6

Tipi di dati interi

Le variabili intere sono descritte usando le parole riservate sopra:

i, j, k: intero;

I dati interi vengono archiviati in memoria esattamente. Ad esempio, le variabili intere occupano 2 byte (16 bit) in memoria, che vengono allocati come segue: 1 bit viene allocato per memorizzare il segno del numero (0 se il numero è positivo e 1 se il numero è negativo) e 15 bit per memorizzare il numero nel calcolo del sistema binario. Il numero decimale massimo che può essere scritto come binario a 15 bit è 32767.

Quando si utilizzano procedure e funzioni con parametri interi, è necessario essere guidati dal "nidificazione" dei tipi, ad es. ovunque si usi word, è consentito byte (ma non viceversa), longint "include" integer, che a sua volta include shortint.

Per un tipo intero, sono definite cinque operazioni di base che risultano anche in un intero: +, -, *, div, mod (addizione, sottrazione, moltiplicazione, divisione intera e resto dalla divisione intera). Nelle espressioni aritmetiche, le operazioni *, div, mod hanno la precedenza sulle operazioni +, -. Esempi di espressioni di scrittura:

L'elenco delle procedure e delle funzioni applicabili ai tipi interi è riportato nella tabella. 7. Le lettere b, s, w, i, l denotano espressioni dei tipi byte, shortint, word, integer e longint, rispettivamente; x è un'espressione di uno di questi tipi; gli identificatori vb, vs, vw, vi, vl, vx denotano variabili dei tipi corrispondenti. Un parametro opzionale è indicato tra parentesi quadre.

Tabella 7

Procedure e funzioni standard applicabili ai tipi interi

Appello Tipo di risultato Azione
addominali (x) X Restituisce il modulo x
Cr (b) Char Restituisce un carattere tramite il suo codice
Dic (vx [, i]) - Diminuisce il valore di vx di i, e in assenza di i - di 1
Inc (vx [, io]) - Aumenta il valore di vx di i, e in assenza di i - di 1
ciao (io) Byte Restituisce il byte alto dell'argomento
ciao (io) Byte Anche
Lo (i) Byte Restituisce il byte meno significativo dell'argomento
Basso) Byte Anche
Dispari (l) Byte Restituisce vero se l'argomento è un numero dispari
Casuale (w) Uguale al parametro Restituisce un numero pseudocasuale distribuito uniformemente nell'intervallo 0 ... (w-1)
Mq (x) X Restituisce il quadrato dell'argomento
Scambia (i) Numero intero
Scambia (w) Parola Scambia i byte in una parola
Successo (x) Uguale al parametro Restituisce il successivo valore intero, ad es. x + 1
Pred (x) Uguale al parametro Restituisce il valore intero precedente, ad es. x-1

Per le operazioni con interi, il tipo del risultato corrisponderà al tipo dell'operando e, se gli operandi sono di tipi interi diversi, il tipo dell'operando che ha il massimo intervallo di valori. Il possibile overflow del risultato non è controllato, il che può portare a errori di programma.

Tipo reale. I valori dei tipi reali definiscono un numero arbitrario con una precisione finita, a seconda del formato interno del numero reale. Ci sono cinque tipi reali in Turbo-Pascal (Tabella 8).

Tabella 8

Tipi di dati reali

Le variabili reali sono descritte usando le parole riservate sopra:

Un numero reale nella memoria del computer è composto da 3 parti:

Cifra firmata di un numero;

parte esponenziale;

Numeri di Mantissa.

La mantissa ha una lunghezza da 23 (singola) a 63 (estesa) cifre binarie, che fornisce una precisione di 7-8 per singole e 19-20 per cifre decimali estese. Il punto decimale (virgola) è implicito prima del bit sinistro (più significativo) della mantissa, ma quando si manipola un numero, la sua posizione viene spostata a sinistra o a destra secondo l'ordine binario del numero memorizzato nella parte esponenziale, quindi le operazioni sui numeri reali sono chiamate aritmetiche in virgola mobile (virgola) ...

I tipi Single, Double ed Extended sono accessibili solo in modalità di compilazione speciali. Per abilitare queste modalità, seleziona la voce di menu Opzioni, compilatore... e abilita l'opzione 8087/80287 in gruppo Elaborazione numerica.

Una posizione speciale in Turbo Pascal è occupata dal tipo Comp, che viene trattato come un numero reale senza parti esponenziali e frazionarie. In effetti, Comp è un grande intero con segno che memorizza 19 ... 20 cifre decimali significative. Allo stesso tempo, Comp è completamente compatibile con qualsiasi altro tipo reale nelle espressioni: tutte le operazioni reali sono definite su di esso, può essere usato come argomento di operazioni matematiche, ecc.



I numeri reali sono specificati in notazione decimale in uno dei due forme.

V forma punto fisso il record è composto da parti intere e frazionarie, separate tra loro da un punto, ad esempio:

0.087 4.0 23.5 0.6

V virgola mobile il record contiene la lettera E, che significa "moltiplicare per dieci alla potenza", e la potenza è un numero intero, ad esempio:

7E3 6.9E-8 0.98E-02 45E + 04

Su oggetti di tipo reale vengono definite le seguenti operazioni: +, -, *, /.

Le operazioni "*" e "/" hanno una priorità maggiore rispetto alle operazioni "+" e "-".

Se almeno un operando è reale, le operazioni +, -, *, / portano a un risultato reale. L'operatore di divisione / porta ad un risultato reale anche nel caso di due operandi interi, ad esempio: 9/3 = 3.0.

Per lavorare con dati reali, possono essere utilizzate funzioni matematiche standard, presentate in tabella. 9. Anche il risultato di queste funzioni è reale.

Tabella 9

Funzioni matematiche che lavorano con dati reali

È vietato utilizzare variabili e costanti di tipo REAL:

- nelle funzioni pred (x), succ (x), ord (x);

- come indici di array;

- come etichette negli operatori di trasferimento di controllo;

- come variabili di controllo (parametri di ciclo).

Per convertire un numero reale in un intero, puoi utilizzare le funzioni:

trunc (x) - parte intera di x (x è reale);

round (x) - arrotonda all'intero più vicino (x è reale).

Tipo di carattere. Le variabili simboliche sono descritte utilizzando la parola riservata char:

I valori di questo tipo sono selezionati da un insieme ordinato di caratteri (dal set ASCII) di 256 caratteri. Ad ogni carattere viene assegnato un numero intero compreso tra 0 e 255. Ad esempio, le lettere maiuscole dell'alfabeto latino A..Z hanno codici 65..90 e lettere minuscole - codici 97..122.

Il valore di una variabile di tipo carattere è un carattere racchiuso tra apostrofi, ad esempio:

'F '' 8 '' * '

Le variabili simboliche possono essere confrontate tra loro, mentre i codici simbolo vengono confrontati.

Esistono funzioni che stabiliscono una corrispondenza tra un simbolo e il suo codice:

ord (с) - fornisce il numero del carattere con;

chr (i) - produce il carattere con il numero i.

Queste funzioni sono inverse tra loro.

tipo booleano... Le variabili booleane sono descritte utilizzando la parola riservata booleana:

p1, p2: booleano;

Le variabili booleane assumono due valori: vero(vero), falso(Giacente).

Questi valori sono ordinati come segue: false< true. false имеет порядковый номер 0, true имеет порядковый номер 1.

È possibile assegnare un valore direttamente alle variabili di tipo booleano oppure utilizzare un'espressione booleana. Ad esempio,

a, d, g, b: booleano;

Operazioni di relazione (<, <=, >, >=, =, <>) applicati a variabili intere, reali e simboliche danno un risultato logico.

Anche le operazioni booleane su operandi di tipo booleano danno un risultato booleano (le operazioni sono elencate in ordine decrescente di priorità) (per maggiori dettagli, vedere le Tabelle 3 e 5):

not - negazione (operazione NOT);

e - moltiplicazione logica (operazione AND);

oppure - addizione logica (operazione OR);

xor - OR esclusivo.

L'espressione (non a) ha il significato opposto a a.

L'espressione (aeb) restituisce true se sia a che b sono true, altrimenti questa espressione restituisce false.

L'espressione (aob) restituisce false se sia a che b sono false, altrimenti il ​​risultato è vero.

Tipo enumerato... Un tipo enumerato non standard è specificato da un'enumerazione sotto forma di nomi di valori che una variabile può assumere. Ogni valore è denominato da un identificatore e si trova in un elenco racchiuso tra parentesi. Vista generale della descrizione di un tipo enumerato:

x = (w1, w2, ..., wn);

dove x è il nome del tipo, w1, w2, ..., wn sono i valori che può assumere una variabile di tipo x.

Questi valori sono ordinati w1

Le seguenti funzioni standard si applicano all'argomento di tipo enumerato w:

succ (w), pred (w), ord (w).

colore = (rosso, nero, giallo, verde)

ww = (sinistra, su, destra, giù);

f: matrice di ww;

succ (d) = giallo;

Le variabili a e b sono di tipo w. possono assumere uno dei tre valori e su

Le operazioni della relazione sono applicabili ai valori del tipo enumerato: =,<>, <=, >=, <, >.

È consentito specificare le costanti del tipo enumerato direttamente nella sezione varia senza usare una sezione genere, Per esempio

c, d: (rosso, nero, giallo, verde);

Tipo di intervallo (limitato)... Quando si definisce un tipo limitato, vengono specificati i valori iniziale e finale che può assumere una variabile di un tipo intervallo. I valori sono separati da due punti.

La descrizione del tipo limitato è

Qui a è il nome del tipo, min, max sono costanti.

Quando si specifica un tipo limitato, è necessario seguire le seguenti regole:

- entrambe le costanti al contorno min e max devono essere dello stesso tipo;

- viene creato un tipo limitato dai dati del tipo base, che può essere un numero intero, un carattere o un tipo enumerato. Ad esempio:

col = rosso..giallo;

lettera = 'a' .. 'f';

- le variabili di tipo limitato possono essere descritte nella sezione var senza fare riferimento alla sezione type:

- un tipo limitato eredita tutte le proprietà del tipo base da cui è stato creato;

- il limite minimo deve essere sempre inferiore al limite massimo.

matrici... Un array è un tipo complesso ovvero una struttura costituita da un numero fisso di componenti dello stesso tipo. Il tipo di componente è chiamato tipo di base. Tutti i componenti di un array possono essere facilmente ordinati e ad ognuno di essi è possibile accedere semplicemente specificando il suo numero ordinale. Descrizione dell'array nella sezione varia sembra:

un: Vettore di t2;

dove a è il nome dell'array, Vettore, di- parole di servizio (significa "array from ..."), t1 - tipo di indice; t2 - tipo di componente (tipo di base).

Il numero di indici determina la dimensione dell'array. Gli indici possono essere di tipo intero (eccetto longint), carattere, booleano, enumerato e intervallo. Gli indici sono separati da virgole e racchiusi tra parentesi quadre. I componenti dell'array possono essere di qualsiasi tipo tranne il tipo di file.

Esempio 1. Considera un array unidimensionale C, i cui valori sono cinque numeri reali:

4.6 6.23 12 -4.8 0.7

La descrizione di questo array è la seguente:

c: matrice di reale;

Con un valore di indice specifico, è possibile selezionare un componente specifico dell'array (ad esempio, C indica il terzo elemento dell'array C, ovvero il numero 12).

Esempio 2. Consideriamo un array bidimensionale B (matrice B), il cui valore è una tabella di interi:

La descrizione di questo array è la seguente:

b di intero;

Qui b è il nome dell'array, il primo indice è il numero di riga e assume valori da 1 a 2, il secondo è il numero di colonna e assume valori da 1 a 4. Per valori specifici degli indici , è possibile selezionare un componente specifico dell'array (ad esempio, b indica un elemento della tabella nella prima riga e nella terza colonna, ovvero il numero -4).

Gli indici possono essere espressioni arbitrarie corrispondenti al tipo di indici dalla descrizione dell'array:

a: matrice di reale;

a [(i + 1) * 2]: = 24;

L'insieme delle operazioni sugli elementi dell'array è completamente determinato dal tipo di questi elementi.

Tipo di stringa... Un tipo stringa è un insieme di stringhe di caratteri di lunghezza arbitraria (da zero a un numero specificato). Le variabili di tipo stringa sono descritte utilizzando una parola di servizio corda:

B: corda ;

Peculiarità:

- il valore di una variabile stringa può essere inserito da tastiera, assegnato in un operatore di assegnazione, letto da un file. In questo caso, la lunghezza della stringa inserita può essere qualsiasi (inferiore alla dimensione specificata, uguale alla dimensione o superiore, in quest'ultimo caso vengono scartati i caratteri extra); a: = 'Risultati';

- è consentito utilizzare l'operazione di concatenazione nell'operatore di assegnazione, poiché le stringhe possono cambiare dinamicamente la loro lunghezza: a: = a + 'calcoli';

- la lunghezza massima di una variabile stringa è di 255 caratteri, questa indicazione di lunghezza può essere omessa:

un: corda;

a1: corda ;

Le variabili a e a1 sono le stesse (descrizione equivalente).

- la memoria per le variabili di tipo stringa viene allocata al massimo, ma viene utilizzata solo una parte della memoria attualmente occupata da caratteri stringa. Per descrivere una variabile stringa di lunghezza n, vengono utilizzati n + 1 byte di memoria: n byte - per memorizzare i caratteri della stringa, n + 1 –esimo byte - per memorizzare la lunghezza corrente.

- le operazioni di confronto sono definite sui valori dei tipi di stringa:< <= > >= = <>... Una stringa corta è sempre più corta di una lunga. Se le stringhe hanno la stessa lunghezza, vengono confrontati i codici dei caratteri.

- è possibile accedere ai singoli elementi di una stringa nello stesso modo in cui si accede agli elementi dell'array: a, a. Le parentesi quadre indicano il numero dell'elemento di linea.

Procedure e funzioni orientate alle stringhe.

concatenazione (s1, s2, ...)- funzione di unione di linee, s1, s2,… - righe, il numero di righe può essere arbitrario. Il risultato della funzione è una stringa. Se la lunghezza della stringa risultante è superiore a 255 caratteri, la stringa viene troncata a 255 caratteri.

copia (s, indice, conteggio)- funzione di selezione di una riga dalla riga originale S la lunghezza contare caratteri che iniziano con il carattere sotto il numero indice.

elimina (s, indice, conteggio)- la procedura per rimuovere dalla stringa s una sottostringa di lunghezza contare caratteri che iniziano con il carattere con il numero indice.

inserire (s1, s2, indice)- procedura di inserimento riga s1 in linea s2 iniziando con il carattere con il numero indice.

lunghezza (e)- funzione per determinare la lunghezza della stringa corrente, restituisce un numero uguale alla lunghezza della stringa corrente.

posizione (s1, s2)- funzione di ricerca di stringhe s2 sottostringhe s1... fornisce il numero di posizione del primo carattere di una sottostringa s1 in linea s2(o 0 se questa riga non è presente).

val (st, x, codice)- la procedura per convertire una stringa s in una variabile intera o reale X... Parametro codice contiene 0 se la conversione è andata a buon fine (e in X viene posizionato il risultato della conversione), o il numero di posizione della riga in cui è stato trovato il carattere errato (in questo caso, il valore X non cambia).

Compatibilità e conversione del tipo... Turbo Pascal è un linguaggio tipizzato. È costruito sulla base della stretta aderenza al concetto di tipi, secondo il quale tutte le operazioni utilizzate nel linguaggio sono definite solo su operandi di tipi compatibili.

Due tipi sono considerati compatibili se:

- entrambi sono dello stesso tipo;

- entrambi sono reali;

- entrambi sono interi;

- un tipo è un tipo di intervallo del secondo tipo;

- entrambi sono tipi di gamma dello stesso tipo di base;

- entrambi sono insiemi composti da elementi dello stesso tipo di base;

- entrambe sono stringhe impacchettate (definite con la parola impacchettata precedente) della stessa lunghezza massima;

- uno è tipo-stringa e l'altro è tipo-stringa o carattere;

- un tipo è un puntatore qualsiasi e l'altro è un puntatore a un oggetto correlato;

- entrambi sono tipi procedurali con lo stesso tipo di risultato (per un tipo di funzione), il numero di parametri e il tipo di parametri reciprocamente corrispondenti.

La compatibilità dei tipi assume particolare importanza negli operatori di assegnazione. Sia t1 il tipo della variabile e t2 il tipo dell'espressione, ovvero viene eseguita l'assegnazione t1: = t2. Questa assegnazione è possibile nei seguenti casi:

- t1 e t2 sono dello stesso tipo e questo tipo non si applica a file, array di file, record contenenti campi di file o array di tali record;

- t1 e t2 sono tipi ordinali compatibili e il valore di t2 si trova nell'intervallo dei possibili valori di t1;

- t1 e t2 sono tipi reali e il valore di t2 si trova nell'intervallo dei possibili valori di t1;

- t1 - tipo reale e t2 - tipo intero;

- t1 è una stringa e t2 è un carattere;

- t1 è una stringa e t2 è una stringa compressa;

- t1 e t2 - stringhe imballate compatibili;

- t1 e t2 sono insiemi compatibili e tutti i membri di t2 appartengono all'insieme dei possibili valori di t1;

- t1 e t2 sono puntatori compatibili;

- t1 e t2 sono tipologie procedurali compatibili;

- t1 è un oggetto e t2 è suo figlio.

In un programma, i dati di un tipo possono essere convertiti in dati di un altro tipo. Questa conversione può essere esplicita o implicita.

Le conversioni di tipo esplicite chiamano funzioni di conversione speciali i cui argomenti sono di un tipo e valori di un altro. Un esempio sono le funzioni già considerate ord, trunc, round, chr.

La conversione implicita è possibile solo in due casi:

- nelle espressioni composte da variabili reali e intere, queste ultime vengono convertite automaticamente in un tipo reale e l'intera espressione diventa un tipo reale;

- la stessa area di memoria viene alternativamente interpretata come contenente dati di uno o di un altro tipo (combinando in memoria dati di diverso tipo).

Il concetto di tipo è uno dei concetti fondamentali di qualsiasi linguaggio di programmazione. Gli oggetti (costanti, variabili, funzioni, espressioni) su cui opera il programma sono di un tipo specifico.

Un tipo è un insieme di valori che gli oggetti del programma possono assumere e un insieme di operazioni consentite su questi valori.

ad esempio, i valori 1 e 2 sono di tipo intero, possono essere sommati, moltiplicati e possono essere eseguite altre operazioni aritmetiche. I valori "monitor" e "Pascal" sono di natura linguistica, hanno il proprio insieme di operazioni consentite. Nei linguaggi più diffusi è possibile utilizzare solo tipi predefiniti e ben definiti. Pascal, insieme ai tipi standard che si trovano in altri linguaggi di alto livello, consente al programmatore di generare i propri tipi.

Tutti i tipi consentiti nel linguaggio Pascal sono divisi in due grandi gruppi: semplice e complesso (strutturato).

Un tipo Gamma Mantissa, segni Memoria richiesta (byte)
VERO 2.9 * 10E-39..1.7 * 10E38 11-12
SEPARARE 1.5 * 10E-45..3.4 * 10E38 7-8
DOPPIO 5.0 * 10E-324..1.7 * 10E308 15-16
ESTESA 1.9 * 10E-4951..1.1 * 10E4932 19-20
COMP -2E + 63 + 1..2E + 63-1 10-20

L'utilizzo effettivo dei tipi SINGLE, DOUBLE, EXTEND, COMP è possibile solo con la direttiva ($ N +) abilitata. Per impostazione predefinita, è disattivato. Per risolvere problemi ingegneristici ed economici sono sufficienti i valori del tipo REAL.

Esempio

Var Res, Summa, Itog: reale;

Boolevsky il tipo di dati è descritto dall'identificatore BOOLEAN. Variabili e costanti di questo tipo possono assumere solo uno di due valori: TRUE o FALSE.

Esempio

Var Sel1, Sel2: booleano;

A, B, C, D: booleano;

Le espressioni di tipo booleano occupano 1 byte in memoria e vengono utilizzate nelle espressioni logiche e di relazione, nonché per controllare l'ordine di esecuzione delle istruzioni del programma.

Letterale (personaggio) il tipo è descritto dall'identificatore CHAR standard. Costanti e variabili di questo tipo possono assumere uno dei valori della tabella dei codici ASCII. Il valore di una costante o variabile di questo tipo è racchiuso tra apostrofi.

ad esempio, Var Bukva, Znak, Simvol: char;

Bukka: = 'A'; Znak: = '+'; Simvol: = '!'

Le variabili di tipo carattere occupano 1 byte in memoria. L'uso di dati char nelle espressioni aritmetiche è proibito. Le operazioni di confronto possono essere applicate a valori letterali, il risultato dipende dal numero della variabile letterale o della costante nella tabella dei codici.

Oltre ai tipi di dati standard, Pascal supporta i tipi scalari, definito dall'utente... Questi includono enumerabile e intervallo tipi. Questi tipi di dati occupano 1 byte in memoria, quindi qualsiasi tipo definito dall'utente non può contenere più di 255 elementi. Il loro utilizzo migliora notevolmente la chiarezza del programma, facilita la ricerca di errori e consente di risparmiare memoria.

Tipo enumerato viene impostato direttamente dall'enumerazione di tutti i valori che una variabile di questo tipo può assumere. I singoli valori sono separati da virgole e l'intero elenco è racchiuso tra parentesi.

Formato

Tipo<имя типа>=(<значение1, значение2, ..., значениеN>);

Var<идентификатор, ...>: < имя типа>;

Esempio

Tipo Stagione = (Primavera, Estate, Autunno, Inverno);

Var S1, S2: Stagione;

Autunno: (settembre, ottobre, novembre);

Questo esempio mostra il tipo di dati esplicitamente descritto per l'utente Season. Definiti i loro significati - designazioni delle stagioni. Le variabili S1 e S2 possono assumere solo uno dei valori elencati. Il tentativo di assegnare loro qualsiasi altro valore causerà un'interruzione del software. Il terzo tipo di enumerazione è anonimo (non ha nome) ed è specificato dall'enumerazione dei valori nella sezione Var. L'autunno è una variabile di questo tipo e può assumere i valori di settembre, ottobre, novembre. Pertanto, è possibile specificare qualsiasi tipo, ma ciò non è sempre accettabile. Il primo modo è decisamente più diretto e più in linea con la natura della lingua pascal.

Tipo di intervallo consente di specificare due costanti che definiscono l'intervallo di valori per una determinata variabile. Per ogni operazione su una variabile di tipo intervallo, il compilatore genera routine di test per determinare se il valore della variabile rimane all'interno dell'intervallo specificato. Entrambe le costanti devono essere di uno dei tipi standard diverso da reale. Il valore della prima costante deve essere inferiore al valore della seconda.

Formato

Tipo<имя типа> = <константа1> .. <константа2>;

Var<идентификатор>: < имя типа>;

Esempio

Tipo Giorni = 1 .. 31;

Var Work_d, Free_d: giorni;

In questo esempio, le variabili Lavoro_d, Libero_d sono di tipo giorni e può assumere qualsiasi valore dall'intervallo 1. ... 31.

Fuori portata attiva un interrupt software.

Puoi definire un tipo di intervallo impostando i limiti dell'intervallo non in base ai valori delle costanti, ma in base ai loro nomi:

Costante Min = 1; Massimo = 31;

Tipo Giorni = Min .. Max;

Var Work_d, Free_d: giorni;

Tipi strutturati i dati sono basati su tipi scalari e possono contenere varie combinazioni di essi. Definiscono un insieme ordinato di elementi scalari e si caratterizzano per la tipologia dei loro componenti. I seguenti tipi di dati strutturati sono rappresentati in Pascal:

linea - una sequenza di caratteri racchiusa tra apostrofi;

Vettore - tipo di dato strutturato costituito da un numero fisso di elementi dello stesso tipo, accessibili tramite indice ;

un mucchio di - un insieme di oggetti selezionati in base a qualche attributo o gruppo di attributi, che possono essere considerati nel loro insieme;

entrata - un insieme di un numero fisso di componenti di diverso tipo;

file- una sequenza di componenti dello stesso tipo e lunghezza.

Gli altri due tipi strutturati, il tipo procedurale e il tipo oggetto, sono difficili da mappare ai dati nella rappresentazione normale.

Immagine 1- Un insieme di tipi di base del linguaggio Pascal

Principali articoli correlati