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

I tipi strutturati sono caratterizzati dalla molteplicità di elementi che formano questo tipo di elemento, ad es. hanno diversi componenti. Ogni componente, a sua volta, può appartenere a un tipo strutturato, ad es. è consentita la nidificazione di tipi.

Array rappresentano un'unione formale di più oggetti dello stesso tipo (numeri, caratteri, stringhe, ecc.), considerati come un singolo insieme. Tutti i componenti dell'array sono dati dello stesso tipo.

Vista generale della definizione dell'array:

Tipo A \u003d matrice [tipo di indice di matrice] di [tipo di componente di matrice]

Ad esempio, M1 \u003d array di real;

stringheÈ una matrice di caratteri, ma il numero di caratteri in una stringa può variare. Una stringa viene considerata come una stringa di caratteri di lunghezza arbitraria. Il numero massimo di caratteri non è superiore a 255. Ogni carattere in una stringa ha il proprio indice (numero).

Disco È una struttura di dati costituita da un numero fisso di componenti chiamati campi record. A differenza di un array, possono essere componenti di registrazione (campi) vari tipi. I record consentono di combinare valori di vari tipi.

Mese: (gennaio, febbraio, marzo, aprile, maggio, giugno, luglio, agosto, settembre, ottobre, novembre, dicembre);

Anno: 2000..2050;

Molti - Si tratta di insiemi di oggetti dello stesso tipo, logicamente collegati tra loro. Il numero di elementi in un set può variare da 0 a 256. È proprio l'incostanza dei loro elementi che imposta differisce da array e record.

Cifre \u003d Set di 1..5;

File - area denominata memoria esterna. Un file contiene componenti dello stesso tipo, ad eccezione dei file (ovvero, non è possibile creare un "file di file"). La lunghezza del file non è specificata ed è limitata solo dalla capacità dei dispositivi di memoria esterni.

F: File di intero;

Conosceremo i tipi strutturati in modo più dettagliato durante ulteriori studi sulla lingua.

      1. Puntatore (tipo di riferimento)

Contiene l'indirizzo del byte di memoria in cui si trova il valore dei dati di un determinato tipo. Questo tipo è anche chiamato referenziale. Il carattere ^ e l'identificatore di tipo vengono utilizzati per la descrizione. Ad esempio, P \u003d ^ intero;

L'uso dei puntatori è un mezzo flessibile per gestire la memoria dinamica e offre la possibilità di elaborare grandi quantità di matrici di dati.

    1. costanti

Costante nominare un valore il cui valore non cambia durante l'esecuzione del programma.

    Numericole costanti vengono utilizzate per scrivere numeri. Si distinguono i seguenti tipi:

Totale numeri: sono scritti con un segno + o - o non firmati, secondo le normali regole aritmetiche: -10 +5 5

Vero i numeri possono essere scritti in una delle due forme:

registrazione regolare : 2.5 -3.14 2. - notare che la parte intera è separata dal simbolo del punto frazionario;

esponenziale forma: in questo record il numero reale è rappresentato come m * 10 p, dove m è mantissa o la base di un numero, 0.1≤ | m | ≤1, p - ordine numeri, questa è una costante intera. In effetti, qualsiasi numero reale può essere rappresentato in forma esponenziale:

153.5 -0.1535*10 3

99.005 0.99005*10 2

In tutti i computer compatibili con IBM, i numeri reali sono memorizzati come una combinazione di mantissa e ordine, il che ci consente di semplificare le operazioni su di essi utilizzando un'aritmetica speciale che elabora la mantissa e l'ordine separatamente. Per scrivere a livello di codice un numero in forma esponenziale, anziché "moltiplicare per 10 alla potenza", la notazione E o e (latino):

153,5 -0,1535 * 10 3 -0,1535E3 o -1,535E02

99.005 0.99005 * 10 2 0.99005E + 2 o 9.9005e + 01

Senza misure speciali, il programma in Pascal mostrerà numeri reali nel modulo sullo schermo e sulla stampante. Inoltre, questo modulo è conveniente per scrivere numeri molto piccoli e molto grandi:

Dal momento che la dimensione della memoria allocata alla mantissa e all'ordine è limitata, allora i numeri reali sono sempre rappresentati nella memoria del computer con qualche errore. Ad esempio, la frazione reale più semplice 2/3 fornisce in rappresentazione decimale 0.666666 ... e, indipendentemente dalla dimensione della memoria allocata per la memorizzazione del numero, è impossibile memorizzare tutti i suoi segni nella parte frazionaria. Uno dei problemi di programmazione tipici è tenere conto dei possibili errori quando si lavora con numeri reali.

I numeri esadecimali sono cifre esadecimali precedute dal segno $. L'intervallo di numeri esadecimali è compreso tra $ 00000000 e $ FFFFFFFF.

Oltre alle costanti numeriche, ne esistono altri tipi:

    rompicapo costanti.

Serve per verificare la verità o la falsità di determinate condizioni nel programma e può solo accettare uno dei due significati: parola di servizio vero denota la verità e falso - Falso;

    Simbolico costanti.

Possono assumere il valore di qualsiasi carattere stampato e sono scritti come un carattere racchiuso in apostrofi ("virgolette singole"):

In quest'ultimo caso, il valore della costante di carattere è uguale al carattere di spazio. Se vuoi scrivere il simbolo dell'apostrofo stesso come costante simbolica, raddoppia all'interno degli apostrofi esterni: "" ""

I simboli includono anche costanti della forma #X, dove X è un valore numerico compreso tra 0 e 255 incluso, che è un decimale Ascii-codice carattere. Le tabelle dei codici ASCII utilizzati dai sistemi operativi DOS e Windows sono riportate nell'Appendice 1. Ad esempio, il valore # 65 corrisponderà al codice di carattere latino "A".

    Corda costanti.

Queste sono eventuali sequenze di personaggi racchiuse in apostrofi. Di norma, le costanti di stringa vengono utilizzate per registrare i prompt per immettere i dati emessi dal programma, emettere messaggi diagnostici, ecc .:

"Inserisci il valore di X:"

Se è necessario scrivere il simbolo dell'apostrofo stesso in una costante di stringa, questo viene fatto come per le costanti simboliche.

Le costanti in Turbo Pascal possono essere nominate. Senza nome le costanti vengono utilizzate, ad esempio, quando si visualizza il testo del messaggio nell'esempio precedente. Costanti nominate sono descritti nella sezione di descrizione del programma da un operatore nel seguente formato:

const Nome1 \u003d Valore1;

Nome2 \u003d Valore2;

NomeN \u003d ValoreN;

Qui, la parola chiave const mostra l'inizio della sezione descrizioni delle costanti nominate. È chiaro che spesso è più conveniente accedere a una costante per nome piuttosto che riscrivere ogni volta il suo valore numerico o stringa. Esempio di sezione di costanti:

const e \u003d 2.7182818285;

lang \u003d "Turbo Pascal 7.1";

Qui descriviamo la costante numerica e con il valore di base del logaritmo naturale e una costante di stringa con il nome lang contenente la stringa "Turbo Pascal 7.1".

Ogni nome dato dal programmatore deve essere unico all'interno di un programma. Se includiamo questa sezione nel nostro programma, non saremo più in grado di creare altri oggetti in essa con i nomi e e lang.

algoritmo di programmazione discreto

I dati reali che il programma elabora sono numeri interi e numeri reali, simboli e quantità logiche. Questi semplici tipi di dati vengono chiamati di base. Tutti i dati elaborati dal computer sono archiviati nelle celle di memoria del computer, ognuna delle quali ha il proprio indirizzo. Al fine di non monitorare a quale indirizzo verranno registrati determinati dati, il concetto di variabile viene utilizzato nei linguaggi di programmazione , permettendoti di distrarti dall'indirizzo della cella di memoria e accedervi usando il nome ( identificatore).

Variabile - esiste un oggetto denominato (cella di memoria) che può modificarne il valore. Nome la variabile indica valore, e il suo metodo e indirizzo di memorizzazione rimangono nascosti al programmatore. Oltre al nome e al valore, la variabile ha un tipo, determinare quali informazioni sono in memoria. Un tipo insiemi di variabili:

  • * Il metodo usato per registrare le informazioni nelle celle di memoria;
  • * La quantità richiesta di memoria per memorizzarla.

La quantità di memoria per ciascun tipo viene determinata in modo che possa adattarsi a qualsiasi valore da un intervallo accettabile di valori di questo tipo. Ad esempio, il tipo "byte" può assumere valori compresi tra 0 e 255, che nel codice binario (255 \u003d 11111111 2) corrisponde a una cella di memoria lunga 8 bit (o 1 byte).

Negli algoritmi sopra descritti, tutti i dati sono memorizzati come variabili. Ad esempio, l'istruzione "Immettere due numeri e, b " significa che l'utente introduce i valori di due variabili e l'istruzione "K \u003d K + 1" indica un aumento del valore della variabile K di una.

Se le variabili sono presenti nel programma, per tutto il tempo del suo funzionamento, vengono chiamate statico. Vengono chiamate variabili create e distrutte in diverse fasi dell'esecuzione del programma dinamico.

Tutti gli altri dati nel programma, i cui valori non cambiano durante il suo funzionamento, vengono chiamati costanti o permanente. Le costanti, come le variabili, sono di tipo. Possono essere indicati esplicitamente, ad esempio, nell'istruzione "K \u003d K + 1" 1 è presente una costante oppure, per comodità, può essere indicata da identificatori: pi = 3,1415,926536 millions. Solo valore pi non può essere modificato poiché è una costante, non una variabile.

Per aumentare la produttività e la qualità del lavoro, è necessario disporre di dati il \u200b\u200bpiù vicino possibile a controparti reali. Viene chiamato un tipo di dati che consente di memorizzare più variabili insieme con lo stesso nome strutturato. Ogni linguaggio di programmazione ha i suoi tipi strutturati. Considera una struttura che combina gli elementi di un tipo di dati: un array .

Un array Viene chiamato un insieme ordinato di quantità omogenee con un nome comune, i cui elementi sono indirizzati (distinti) da numeri di serie (indici). A titolo illustrativo, puoi immaginare un armadietto contenente molte caselle numerate (la totalità è "Casella n. 1", "Casella n. 2", "Casella n. 3", ecc.; "Casella" è il nome comune di tutti i suoi elementi). L'accesso al contenuto di una casella specifica (elemento array) viene effettuato dopo aver selezionato la casella in base al suo numero (indice). Gli elementi dell'array nella memoria del computer sono memorizzati nelle vicinanze, singoli elementi di un tipo semplice non implicano una tale disposizione di dati nella memoria. Le matrici differiscono nel numero di indici che definiscono i loro elementi.

Matrice unidimensionale (armadio di caselle in una riga) presuppone che ogni elemento abbia un solo indice. Esempi di matrici unidimensionali sono sequenze aritmetiche e geometriche che definiscono file di numeri finiti. Viene chiamato il numero di elementi dell'array dimensione. Quando si definisce un array monodimensionale, la sua dimensione viene scritta tra parentesi accanto al suo nome. Ad esempio, se dice: "è specificato l'array A (10)", significa che gli elementi sono indicati: e r e 2 ,…, un' ig . Consideriamo gli algoritmi per l'elaborazione di elementi di array unidimensionali.

L'immissione degli elementi di un array monodimensionale viene eseguita in base agli elementi, nell'ordine necessario per risolvere un problema specifico. Di solito, quando si desidera inserire l'intero array, l'ordine di input degli elementi non è importante e gli elementi vengono inseriti in ordine crescente dei loro indici.

Il metodo degli algoritmi strutturali è uno dei metodi di sistema per lo sviluppo di algoritmi. Si basa sulla rappresentazione visiva di algoritmi sotto forma di sequenze di frammenti strutturali di controllo.

Ogni algoritmo è costituito da passaggi elementari che possono essere combinati in costrutti algoritmici specifici: lineare (sequenziale) ramificazione , ciclico .

Definizione 1

Lineare il design dell'algoritmo è chiamato implementazione della sequenza di azioni (step), e ogni azione (step) viene eseguita solo 1 volta, dopo ogni azione (step), l'azione (step) viene aumentata di 1 fino a quando il valore diventa più grande del parametro finale dell'algoritmo .

Utilizzando algoritmi lineari, sono rappresentati i processi lineari. Algoritmi di questo tipo vengono utilizzati nella descrizione di una soluzione generalizzata di problemi sotto forma di sequenze di moduli.

Definizione 2

Branching (branching) chiamano un disegno algoritmico che offre una scelta tra 2 soluzioni a seconda dei valori dei dati di input.

I rami sono di due tipi: incompleto (se qualcosa) e completare (se diversamente) Utilizzando la ramificazione completa, puoi organizzare 2 rami nell'algoritmo ( poi o altrimenti), ciascuno dei quali porterà a un punto comune della loro fusione, l'algoritmo verrà eseguito indipendentemente da quale strada sia andata la soluzione. In presenza di ramificazioni incomplete, si presuppongono alcune azioni dell'algoritmo su un solo ramo ( poi), poiché il secondo è assente, non è necessario eseguire un'azione per uno dei risultati del controllo dell'azione, il controllo passerà immediatamente al punto di unione. Esistono 4 opzioni di base per la struttura delle ramificazioni:

  1. Branching di tipo incompleto "Se poi », In base al quale tutte le azioni saranno condizioni vere.
  2. Branching di tipo completo "Se - allora - altrimenti" in cui verranno eseguite 2 azioni a seconda della verità della condizione.
  3. Digitare ramificazione "Quello" in base al quale l'azione 1 verrà eseguita in condizione 1, l'azione 2 in condizione 2, ecc.
  4. Digitare ramificazione "Altrimenti" in cui in condizione 1, verrà eseguita l'azione 1, in condizione 2, azione 2, ecc., altrimenti verranno eseguite tutte le altre azioni.

Di seguito sono riportati i diagrammi di flusso degli algoritmi di diramazione.

Definizione 3

Ciclico (o ciclo) Viene chiamata una costruzione di algoritmo in cui un determinato gruppo di azioni consecutive (passaggi) viene eseguito più volte, a seconda delle condizioni del problema e dei dati di input.

Definizione 4

Viene chiamato questo gruppo di azioni ripetute in ogni fase del ciclo ciclo del corpo .

Qualsiasi struttura ciclica contiene elementi della struttura ramificata dell'algoritmo.

Esistono 3 tipi di algoritmi ciclici:

  • un ciclo con un parametro (ciclo aritmetico);
  • ciclo precondizionato;
  • loop con un postcondition (gli ultimi due sono chiamati iterativi).

Ciclo aritmetico

In un ciclo di questo tipo, il numero di passaggi è determinato in modo univoco dalla regola per la modifica del parametro, specificata con l'aiuto dei suoi valori iniziali e finali, nonché dalla fase di modifica. Cioè, ad ogni fase del ciclo, il valore del parametro cambia in base alla fase del ciclo fino a raggiungere un valore uguale al valore finale del parametro.

Ciclo precondizionato

In questo ciclo, il numero di passaggi non è determinato in anticipo, dipende dai dati di input. In questa struttura ciclica, viene prima verificato il valore dell'espressione condizionale (condizione) prima del passaggio successivo del ciclo. Con il vero valore dell'espressione condizionale, verrà eseguito il corpo del loop. Dopo di che la condizione verrà ricontrollata. Queste azioni verranno ripetute fino a quando il valore dell'espressione condizionale diventa falso, quindi il ciclo termina.

Una caratteristica di questo tipo di ciclo è che con la falsità iniziale del valore dell'espressione condizionale, il corpo del ciclo non verrà eseguito affatto.

Postcondition Loop

In questa costruzione ciclica, come nella precedente, il numero di ripetizioni del corpo del ciclo non è determinato in anticipo, dipenderà dai parametri di input. Una caratteristica distintiva di un ciclo con una precondizione è che il corpo di un ciclo con una postcondizione sarà comunque eseguito almeno 1 volta e solo successivamente verrà verificata la condizione. In questa costruzione, il corpo del loop viene eseguito fino a quando il valore dell'espressione condizionale è falso. Non appena diventa vero, l'esecuzione dei comandi si interromperà.

In compiti reali, di regola, è presente un numero qualsiasi di cicli.

Di seguito sono riportati i diagrammi di flusso degli algoritmi ciclici.

Tipi di dati: semplici e strutturati

I dati reali che vengono elaborati dal programma includono numeri interi e numeri reali, quantità logiche e simboli. Appartengono a tipi di dati semplici e sono chiamati di base. Tutti i dati elaborati dal computer sono archiviati nelle sue celle di memoria, ognuna delle quali ha il proprio indirizzo. Nei linguaggi di programmazione, ci sono variabili che ti permettono di non prestare attenzione agli indirizzi delle celle di memoria e accedervi usando un nome (identificatore).

Definizione 5

Variabile rappresenta un oggetto denominato (cella di memoria) che modifica il suo valore.

Il nome della variabile indica il valore e l'indirizzo e il metodo di memorizzazione rimangono nascosti al programmatore. Oltre al nome e al valore, le variabili hanno il loro tipo, che aiuta a determinare quale tipo di informazione è in memoria.

Il tipo di variabile è impostato:

  • il metodo usato per registrare le informazioni nelle celle di memoria;
  • la quantità necessaria di memoria per memorizzarla.

Per ciascun tipo, viene determinata la quantità di memoria in modo che possa adattarsi a qualsiasi valore da un intervallo accettabile di valori per questo tipo.

Definizione 6

Vengono chiamate le variabili presenti nel programma durante l'intero periodo del suo lavoro statico .

Definizione 7

Vengono chiamate variabili create e distrutte in diverse fasi dell'esecuzione del programma dinamico Definizione 10

Un array chiamano una raccolta ordinata dello stesso tipo di quantità che hanno un nome comune, numeri di serie di elementi (indici).

Gli elementi dell'array sono archiviati nella memoria del computer nelle vicinanze, a differenza dei singoli elementi. Le matrici si distinguono per il numero di indici degli elementi.

Un array monodimensionale è caratterizzato dalla presenza di un solo indice per ciascun elemento. Esempi di matrici unidimensionali sono sequenze geometriche e aritmetiche che definiscono righe di numeri finite.

Definizione 11

Viene chiamato il numero di elementi dell'array dimensione .

In una matrice unidimensionale, la sua dimensione è scritta accanto al nome tra parentesi.

Gli elementi di una matrice unidimensionale vengono introdotti in modo elementale, nell'ordine necessario per risolvere un problema specifico. Se è necessario immettere l'intero array, gli elementi vengono inseriti in ordine di indice crescente.

Capitolo 6. STRUTTURATO
TIPI DI DATI I tipi di dati strutturati definiscono insiemi di componenti simili o eterogenei. I tipi di componenti sono formati da altri tipi (semplici, strutturati, puntatori, ecc.) Di dati. In Pascal esistono i seguenti tipi strutturati: - array-type; - tipo di registrazione; - set di tipi; - tipo di file. NEL Turbo pascal Esistono altri due tipi strutturati: - stringa di tipo stringa e - PChar di tipo stringa, che sono varietà dell'array. In futuro, gli oggetti di tipi strutturati per brevità saranno chiamati gli stessi nomi dei loro tipi, senza specificare la parola "tipo": array, record, set, file, string. Esistono tipi strutturati impacchettati e spacchettati nello standard linguistico. In Turbo Pascal, la parola imballata, che caratterizza un tipo impacchettato, non ha alcun effetto; quando possibile, i dati vengono impacchettati automaticamente. 6.1. Array Type-array è un numero fisso di componenti ordinati dello stesso tipo, dotato di indici. Può essere monodimensionale e multidimensionale. Per specificare un tipo di array, viene utilizzato l'array di parole riservato, dopo di che il tipo di indice (i) del componente (in parentesi quadre) e dopo la parola - il tipo dei componenti stessi: tipo<имя типа> \u003d array [<тип индекса(индексов)>] di<тип компонент>; Esempio. digitare Arr \u003d array di Real; (tipo di array di 3 numeri reali) Matrix \u003d array of Integer; (un tipo - matrice bidimensionale numeri interi, composti da 3 righe e 2 colonne) Inserendo un tipo di array, è possibile specificare variabili o costanti digitate di questo tipo. Le dimensioni dell'array possono essere qualsiasi, i componenti dell'array possono essere di qualsiasi tipo, incluso quello strutturato, gli indici possono essere di qualsiasi tipo ordinale, ad eccezione del tipo di Longint. Quando si specificano i valori per un array costante, i componenti sono indicati tra parentesi e separati da virgole, e se l'array è multidimensionale, le parentesi esterne corrispondono all'indice sinistro, le parentesi racchiuse in esse corrispondono all'indice successivo, ecc. Quindi, per i tipi immessi sopra, è possibile specificare ad esempio, le seguenti variabili e costanti: var Ml, M2: Arr; Matr: Matrix; const M3: Arr \u003d (1, 2, 3); Mat: Matrix \u003d ((1, 2), (3, 4), (5, 6)); L'ultima costante corrisponde alla seguente struttura: 1 2 3 4 5 6 Nota. Un tipo di array può anche essere inserito direttamente durante la definizione delle variabili corrispondenti o delle costanti digitate. Ad esempio: var Ml, M2: array di Real; Matr: matrice di numeri interi; Gli array sono definiti qui come nell'esempio precedente. Con una tale dichiarazione di array, si dovrebbe ricordare che i loro tipi non saranno identici a nessun altro tipo, anche se hanno la stessa struttura. Pertanto, non è possibile passarli come parametri alla subroutine (vedere la sezione 10.3), non è inoltre possibile assegnare loro i valori di altri array (e viceversa), anche se le loro strutture coincidono. L'accesso ai componenti dell'array viene effettuato specificando il nome dell'array, seguito dal valore dell'indice (i) del componente tra parentesi quadre. Nel caso generale, ciascun indice di componente può essere specificato da un'espressione del tipo corrispondente, ad esempio: M1, Matrix, M2, ecc. Ad un array può essere assegnato il valore di un altro array, ma solo dello stesso tipo. Quindi, se vengono forniti i seguenti array: var A, B: array di Integer; C: matrice di numeri interi; supponiamo quindi il seguente operatore: A: \u003d B; D'altra parte, l'operatore C: \u003d A; inaccettabile, perché le matrici A e C non sono tipi identici. Vi sono alcune differenze nel lavorare con matrici unidimensionali di caratteri (da non confondere con i valori di tipo stringa - vedere la sezione 6.2). Quindi, alle costanti digitate di questo tipo possono essere assegnati valori come le normali costanti di stringa, che indicano una stringa di caratteri in apostrofi, ad esempio const A: array di Char \u003d "aaaaa"; B: matrice di Char \u003d "bbb"; Per tali array, oltre che per le stringhe, è possibile utilizzare le operazioni di confronto (anche se non sono di tipo identico e anche se hanno dimensioni diverse) e la concatenazione (unione) - vedere Sezione 6.2. Possono essere utilizzati nelle istruzioni di output Write e WriteLn. Ad esempio, per le matrici introdotte sopra, è possibile scrivere se A\u003e B quindi WriteLn (A) altrimenti WriteLn (B); 6.2. Stringa di tipo stringa In Turbo Pascal, il tipo di stringa (tipo di stringa standard) è una sequenza di caratteri di lunghezza arbitraria (fino a 255 caratteri). Una stringa può essere considerata come una matrice di caratteri, tuttavia, a causa dell'ampio uso di stringhe e di alcune funzionalità rispetto alle matrici standard, vengono assegnate a un tipo di dati separato. Un tipo di stringa tra parentesi quadre può indicare la sua dimensione (da 1 a 255). Se la dimensione della stringa non viene specificata, viene considerata uguale a 255, ad esempio: var Str: string; MaxStr: stringa; (stringa di 255 caratteri) const gennaio: string \u003d "gennaio"; Le operazioni di concatenazione (+) e confronto sono applicabili alle stringhe. L'operazione di concatenazione aggiunge un secondo alla prima riga. Esempio. Unire due linee. Str, Strl, Str2: stringa; inizia Strl: \u003d "Turbo"; Str2: \u003d "Pascal"; Str: \u003d Strl + Str2; (nella variabile Str - "Turbo Pascal") fine. Puoi confrontare stringhe di diverse lunghezze. Il confronto viene eseguito da sinistra a destra in conformità con i codici ASCII dei caratteri corrispondenti. I caratteri mancanti in una riga più breve sono considerati avere un codice inferiore al codice di qualsiasi carattere valido. Ad esempio, "XS" è maggiore di "X". Esempio. Controlla se il set di caratteri inserito è il nome del mese in russo. programma ESEMPIO11; const Instance: array of string! 10] \u003d ("GENNAIO", "FEBBRAIO", "MARZO", "APRILE", "MAGGIO", "GIUGNO", "LUGLIO", "AGOSTO", "SETTEMBRE", "OTTOBRE , "NOVEMBRE DICEMBRE"); Mese: Booleano \u003d Falso; var Str: string; i: intero; begin Writeln ("Inserisci caratteri maiuscoli:"); ReadLn (Str); per i: \u003d da 1 a 12 fare se Str \u003d Instance [i] then Month: \u003d True; se Month, quindi WriteLn ("Il nome del mese è stato inserito") altrimenti WriteLn ("Il nome del mese non è stato inserito") termina. In effetti, una stringa di N caratteri è una matrice di N + 1 caratteri: stringa [N] \u003d arrau di Char. Un carattere nullo viene utilizzato per indicare il numero di caratteri utilizzati in una stringa e può variare da un carattere con codice 0 a un carattere con codice N. È possibile lavorare con esso come con il resto dei caratteri nella stringa (scrivere e leggere il suo valore, ecc.), Ma non dimenticare di il suo scopo principale. 6.3. Stringa ASCIIZ Nella versione 7.0, per la compatibilità con altri linguaggi di programmazione e l'ambiente Windows, viene introdotto un altro tipo di stringa - stringhe che terminano con zero byte - un carattere con codice 0 (le cosiddette stringhe ASCIIZ). A differenza delle stringhe di tipo string, queste stringhe non impongono un limite alla loro dimensione (in effetti, la dimensione può arrivare a 65535 byte). A queste linee viene assegnato il tipo standard PChar. In realtà, questo tipo è un puntatore a un carattere (per i puntatori, vedere il paragrafo 7): PChar \u003d ^ Char; Tuttavia, l'uso della sintassi estesa (chiave (X +) - vedi p. 17.7.1) consente di utilizzare una variabile come una stringa equivalente a una matrice di tipo pChar \u003d matrice di Char, dove K è il numero di caratteri nella stringa, senza contare il carattere finale con il codice 0 A differenza del tipo di stringa, il carattere con indice 0 qui è il primo carattere della stringa e l'ultimo carattere con indice K è il carattere finale con il codice 0. Quando si lavora con stringhe ASCIIZ, è consigliabile specificare la sintassi estesa; in questo caso, non ci sono difficoltà quando si usano varie routine standard che funzionano con le stringhe. Esempio. Utilizzo di stringhe di tipo PChar con sintassi estesa. programma ESEMPIO12; ($ X +) (non necessario in quanto viene utilizzato per impostazione predefinita) tipo Т \u003d array di Char; (array per una stringa di 7 caratteri) var Str: PChar; const A: T \u003d "ciao!" # 0; begin Str: \u003d "CIAO!"; WriteLn (Str); (uscita linea: CIAO Str:= @А; {допустимо также: Str:=A} WriteLn(Str); {вывод строки: привет!} WriteLn(Str);{вывод символа "р"} ReadLn end. Если используется ключ {$Х-}, переменная типа PChar в этом случае рассматривается как указатель на один единственный символ. В этом случае ни один из операторов предыдущего примера, за исключением операторов Str:!} [e-mail protetta]; e ReadLn non sono validi e l'istruzione WriteLn (Str ^) eseguita dopo l'istruzione Str è: [e-mail protetta];, produrrà un carattere "p". Per lavorare con le stringhe ASCIIZ nella versione 7.0, vengono utilizzati i moduli standard speciali Stringhe (vedere la sezione 16.2) e WinDos (vedere la sezione 16.6). 6.4. Record Un tipo di record include un numero di componenti chiamati campi, che possono essere di diversi tipi. Quando si definisce un tipo di record dopo il record di parole riservato, è necessario elencare tutti i campi del tipo di record con due punti che indicano i loro tipi e completare la definizione del tipo con la fine della parola. I campi sono separati da un punto e virgola. Il numero di campi record può essere qualsiasi. Esempio. type Complex \u003d record (Tipo di numeri complessi) Re: Real; Im: Fine reale; Dati \u003d record (Tipo - Data di nascita) Anno: intero; Mese: 1..12; Giorno: 1..31 fine; Persona \u003d record (Tipo - informazioni sui dipendenti) Nome: stringa; Sesso: (maschio, femmina); Età: intero; Sposato: fine booleana; Nota. Se più campi del tipo di record sono dello stesso tipo, i loro nomi possono essere elencati con una virgola e quindi specificare questo tipo comune. Quindi, il tipo di numeri complessi considerati nell'esempio può essere introdotto in un altro modo: type Complex \u003d record Re, Im: Real end; Dopo aver introdotto un tipo di record, è quindi possibile impostare variabili o costanti digitate di questo tipo: record. Quando si impostano i valori per una costante, i suoi campi vengono scritti tra parentesi attraverso un punto e virgola. Per impostare il valore di ciascun campo, prima indica il nome del campo, quindi attraverso i due punti - il suo valore. Quindi, per i tipi introdotti sopra, è possibile impostare, ad esempio, le seguenti variabili e costanti: var X, Y, Z: Complex; Dat: data; const Compleanno: Dati \u003d (Anno: 1971; Mese: 12; Giorno: 9); Ivanov: Person \u003d (Nome: "Ivanov"; Sesso: maschio; Età: 40; Sposato: Vero); Nota. Un tipo di record può anche essere inserito direttamente durante la definizione di variabili o costanti digitate. Ad esempio, il frammento var X, Y, Z: record Re, Im: Real end; definisce le stesse variabili complesse dell'esempio precedente. L'accesso ai campi del record viene effettuato specificando il nome della variabile (costante) e il nome del campo scritto attraverso il punto, ad esempio: Ivanov.Age, X.Re, Dat.Day, ecc. Esempio. Uso dei campi record. X.Re:\u003d 1.5; X.Im:\u003d1.7; Y.Re:\u003d -X.Re; Y.Im:\u003d -X.Im; Ivanov.Married: \u003d False; Per non scrivere il nome del record ogni volta che si accede ai suoi campi, è possibile utilizzare l'operatore sui record WITH. La sua struttura è la seguente: con<имя записи> fare<оператор>; In questo caso, all'interno dell'operatore è possibile specificare solo il campo record. Ad esempio, un frammento: con X inizia Re: \u003d 1.5; Im: \u003d 1,7; Y.Re:\u003d -Re; Y.Im:\u003d -Im end; con Ivanov do Married: \u003d False; equivalente allo snippet dell'esempio precedente. Un tipo di record può avere una parte variante che varia con diverse implementazioni, ad esempio, nel tipo record di parametri di figure geometriche, viene specificato un lato per un quadrato, due lati e un angolo tra loro per un triangolo, un raggio per un cerchio, ecc. La parte variante può essere solo uno e dovrebbe trovarsi alla fine della registrazione. Esempio. Uso della parte variante. type Figure \u003d (Quadrato, Triangolo, Cerchio); Param \u003d record X, Y: reale; (coordinate del punto di ancoraggio) caso Fig: Figura di (parametri della figura) Quadrato: (Lato: reale); Triangolo: (Sidel, Side2, Angle: Real); Cerchio: fine (raggio: reale); var MySquare, MyCircle: Param; La parte della variante inizia con la parola case, seguita dalla variabile di selezione della variante (nell'esempio di Fig) con un'indicazione del tipo. Di seguito sono riportate le costanti del valore che la variabile della scelta della variante può assumere (nell'esempio Quadrato, Triangolo, Cerchio). Ogni costante è seguita da due punti tra parentesi. questa opzione record che indicano i loro tipi. Le parentesi sono necessarie anche se non esiste una parte variante per questa variante. Va notato che la parte variante non termina con la sua estremità della staffa dell'operatore, come nel solito costrutto CASE, poiché segue la fine della staffa dell'operatore finale dell'intero tipo. Nello standard linguistico Pascal, prima di utilizzare una delle opzioni di registrazione, è necessario assegnare il valore appropriato alla variabile di selezione delle opzioni: Fig: \u003d Square; MySquare.Side: \u003d 5.0; Fig: \u003d Cerchio; MyCircle.Radius: \u003d 7.5; In Turbo Pascal, questa operazione è facoltativa, anche se se la variabile di selezione è impostata, è quindi possibile cercare nel programma per determinare quale opzione è impostata. Inoltre, l'impostazione del valore della variabile di selezione non ha alcun effetto su nulla e il frammento seguente è equivalente a quello considerato sopra: Fig: \u003d Cerchio; MySquare.Side: \u003d 5.0; Fig: \u003d Quadrato; MyCircle.Radius: -7,5; È consentito non inserire una variabile di scelta nel tipo di record, ma elencare solo diverse opzioni, ad esempio: Transf \u003d record case Numero intero 1: (_Word: Word); 2: (_TwoSymb: array di Char) fine; 6.5. L'insieme In Pascal, l'insieme-tipo è l'insieme-grado dell'insieme originale di oggetti di tipo ordinale, ovvero l'insieme di tutti i tipi di combinazioni di oggetti dell'insieme originale. Il numero di elementi nel set originale in Turbo Pascal non può essere superiore a 256 e i numeri di serie degli elementi (ovvero il valore della funzione Ord) devono essere compresi tra 0 e 255. Per specificare il tipo di set, utilizzare le parole riservate set e of, e quindi specifica gli elementi di questo set, di solito sotto forma di enumerazione o intervallo, ad esempio: type Alfa \u003d set of "A" .. "Z"; Conteggio \u003d set di (Più, Meno, Mult, Dividi); Dieci \u003d set di 0..9; Numero \u003d set di "0" .. "9"; Inserendo un tipo di set, è possibile specificare variabili o costanti digitate di questo tipo di set. Quando si impostano i valori su un set costante, i suoi elementi sono elencati con una virgola (è consentito specificare intervalli) e sono posti tra parentesi quadre. Ad esempio, per i tipi introdotti sopra, è possibile impostare tali variabili e costanti tipizzate: var CharVal: Alfa; Operazione: Conteggio; indice const: Dieci \u003d; Cifra: Numero \u003d ["0" .. "9"]; Nota. Come con altri tipi strutturati, un tipo di set può essere inserito direttamente quando si definiscono variabili o costanti digitate: var CharVal: set di "A" .. "Z"; Operazione: set di (Più, Meno, Mult, Dividi); indice const: set di 0..9 \u003d; Cifra: set di "0" .. "9" \u003d ["0" .. "9"]; A molti è possibile assegnare un valore particolare nel programma. In genere, un valore viene impostato utilizzando il costruttore set. Il costruttore definisce un insieme di elementi elencando tra parentesi quadre le espressioni i cui valori danno gli elementi di questo insieme. È accettabile utilizzare intervalli di elementi. Esempio. Le seguenti strutture sono costruttori di set: il cosiddetto set vuoto che non contiene elementi. Il costruttore di insiemi può anche essere usato direttamente nelle operazioni sugli insiemi. Le seguenti operazioni sono definite per gli insiemi: + - unione di insiemi; - - la differenza dei set; * - intersezione di molti; \u003d - verifica dell'equivalenza di due serie;<> - verifica della non equivalenza di due serie;<= - проверка, является ли левое множество подмножеством правого множества; > \u003d - controlla se il set destro è un sottoinsieme del set sinistro; in - controlla se l'elemento indicato a sinistra è incluso nel set indicato a destra. Il risultato dell'operazione unione, differenza o intersezione è l'insieme corrispondente, le operazioni rimanenti danno un risultato di tipo logico. Esempio. Immettere una stringa di caratteri composta da lettere latine, numeri e spazi. Esegue la convalida dei caratteri inseriti. programma EXAMPLE13; var Str: string; L: byte; Vero: booleano; begin WriteLn ("Immettere una stringa"); ReadLn (Str); L: \u003d Lunghezza (str); (numero di caratteri inseriti) Tru: \u003d L\u003e 0; (vero, se non una riga vuota) mentre Tru e (L\u003e 0) fanno (controlla dalla fine della riga) iniziano Tru: \u003d Str [L] in ["0" .. "9", "A"., "Z" , "a" .. "z", ""]; (validazione caratteri) Dec (L) (carattere precedente) fine; se Tru quindi WriteLn ("La linea corretta") altrimenti WriteLn ("La linea corretta") fine. 6.6. File Un file di tipo è una sequenza di componenti dello stesso tipo situati su un dispositivo esterno (nello standard linguistico, la posizione dei dati sui nastri magnetici viene presa come base). I componenti possono essere di qualsiasi tipo, ad eccezione del tipo di file (o contenente componenti del tipo di file) e del tipo di oggetto. Il numero di componenti nel file non è dichiarato. Per specificare un tipo di file, utilizzare il file di parole riservato e of, quindi specificare il tipo di componenti del file. Esempio. digitare Number \u003d file of Integer; (tipo di file di numeri interi) Symb \u003d file di "A" .. "Z"; (tipo di file di lettere latine maiuscole) Il tipo standard Testo definisce un tipo di file contenente caratteri combinati in stringhe. Tieni presente che il tipo di testo in Turbo Pascal non è equivalente al file di tipo Char. Inserendo il tipo di file, è possibile definire le variabili del tipo di file: var Fl, F2: Number; F3: testo; FF4: Symb; In Turbo Pascal, è possibile utilizzare un file senza un tipo, la cui definizione non indica il tipo di componente. In questo caso, il lavoro con il file viene eseguito a livello fisico in conformità con il formato interno dei suoi dati. In questo caso, i componenti reali del file possono avere un tipo diverso. Esempio. digitare UnTyp \u003d file; Il tipo di file può anche essere determinato direttamente quando si dichiarano le variabili di file: var Fl, F2: file di Integer; Le variabili di file hanno un uso specifico. Nessuna operazione può essere eseguita su di essi (assegnare un valore, confrontare, ecc.). Possono essere utilizzati solo per eseguire operazioni con file (lettura, scrittura, eliminazione di un file, ecc.). Il lavoro con i file sarà discusso nel paragrafo 11. Inoltre, tramite una variabile di file è possibile ottenere informazioni su un file specifico (tipo, parametri, nome del file, ecc.). d.)

Un tipo di dati definisce un set di valori validi e un set di operazioni valide.

Tipi semplici.

I tipi semplici sono divisi in ORDINE e MATERIA.

1. TIPI DI ORDINE , A loro volta, ci sono:

un'intera

In Pascal sono definiti 5 tipi interi, che sono determinati in base al segno e al valore che la variabile prenderà.

Digita il nome

Lunghezza (in byte)

Intervallo di valori

32 768...+32 767

2 147 483 648...+2 147 483 647

b) logico

Il nome di questo tipo è BOOLEANO. I valori di un tipo logico possono essere una delle costanti logiche: TRUE (true) o FALSE (false).

c) simbolico

Il nome di questo tipo è CHAR - occupa 1 byte. Il valore del tipo di carattere è l'insieme di tutti i caratteri del PC. A ciascun carattere viene assegnato un numero intero nell'intervallo 0 ... 255. Questo numero funge da codice per la rappresentazione interna del personaggio.

2. TIPI REALI .

A differenza dei tipi ordinali, i cui valori sono sempre confrontati con una serie di numeri interi e, quindi, sono rappresentati nel PC in modo assolutamente preciso, i valori dei tipi reali determinano un numero arbitrario con solo una certa precisione finita, a seconda del formato interno del numero reale.

Lunghezza del tipo di dati numerico, byte

Nome del tipo di dati numerico

Numero di cifre significative di un tipo di dati numerico

Intervallo decimale di un tipo di dati numerico

2*1063 +1..+2*1063 -1

TIPI DI STRUTTURA

I tipi di dati strutturati definiscono un insieme ordinato di variabili scalari e sono caratterizzati dal tipo dei loro componenti.

I tipi di dati strutturati, a differenza di quelli semplici, specificano molti valori complessi con un nome comune. Possiamo dire che i tipi strutturali determinano un modo per formare nuovi tipi da quelli esistenti.

Esistono diversi metodi di strutturazione. Le seguenti varietà si distinguono per il metodo di organizzazione e il tipo di componenti in tipi di dati complessi: tipo regolare (array); tipo combinato (record); tipo di file (file); tipo / i plurale; tipo di stringa (stringhe); in Turbo Pascal versione 6.0 e successive, viene introdotto un tipo di oggetto (oggetti).

A differenza dei tipi di dati semplici, i dati di un tipo strutturato sono caratterizzati da una pluralità di elementi che formano questo tipo di dati, ad es. Una variabile o costante di un tipo strutturato ha sempre diversi componenti. Ogni componente, a sua volta, può appartenere a un tipo strutturato, ad es. la nidificazione di tipi è possibile.

1. Matrici

Le matrici in Turbo Pascal sono per molti versi simili a tipi di dati simili in altri linguaggi di programmazione. Una caratteristica distintiva degli array è che tutti i loro componenti sono dati dello stesso tipo (possibilmente strutturati). Questi componenti possono essere facilmente ordinati e forniti con accesso a ciascuno di essi semplicemente indicando il numero di serie.

La descrizione dell'array è definita come segue:

<имя типа> \u003d array [<сп.инд.типов>] di<тип>

Qui<имя типа> - l'identificatore corretto;

Matrice, di - parole riservate (matrice, da);

<сп.инд.типов> - un elenco di uno o più tipi di indice, separati da virgole; le parentesi quadre che circondano l'elenco sono requisiti di sintassi;

<тип> - qualsiasi tipo di Turbo Pascal.

In Turbo Pascal, è possibile utilizzare qualsiasi tipo ordinale come tipo di indice eccetto LongInt e tipi di intervallo con il tipo di base LongInt.

La profondità di annidamento dei tipi strutturati in generale, e quindi degli array, è arbitraria, quindi il numero di elementi nell'elenco degli indici dei tipi (dimensione dell'array) non è limitato, tuttavia, la lunghezza totale della rappresentazione interna di qualsiasi array non può essere superiore a 65520 byte.

2. Voci

Un record è una struttura di dati costituita da un numero fisso di componenti chiamati campi record. A differenza di un array, i componenti (campi) di registrazione possono essere di vari tipi. Per poter fare riferimento a uno o un altro componente del record, i campi vengono denominati.

La struttura di una dichiarazione di tipo di posta è la seguente:

< nomedi tipo\u003e \u003d REGISTRA< cn. i campi\u003e END

Qui<имя типа> - l'identificatore corretto;

RECORD, END - parole riservate (record, end);

<сп.полей> - elenco dei campi; rappresenta una sequenza di sezioni di un record tra cui viene inserito un punto e virgola.

3. I set

Gli insiemi sono un insieme dello stesso tipo di oggetti logici collegati tra loro. La natura delle connessioni tra gli oggetti è solo implicita dal programmatore e non è controllata in alcun modo da Turbo Pascal. il numero di elementi inclusi nel set può variare da 0 a 256 (un set che non contiene elementi è chiamato vuoto). È con l'incostanza del numero dei suoi elementi che i set differiscono da array e record.

Due insiemi sono considerati equivalenti se e solo se tutti i loro elementi sono uguali e l'ordine degli elementi dell'insieme è indifferente. Se tutti gli elementi di un set sono inclusi anche in un altro, dicono che il primo set è incluso nel secondo.

La descrizione del tipo di set ha la forma:

< nomedi tipo\u003e \u003d SET DI< basi. un tipo>

Qui<имя типа> - l'indicatore corretto;

SET, OF - parole riservate (set, out);

<баз.тип> - il tipo di base degli elementi dell'insieme, che può essere utilizzato come qualsiasi tipo ordinale, ad eccezione di WORD, INTEGER e LONGINT.

Per specificare un set, viene utilizzato il cosiddetto costruttore di set: un elenco di specifiche di elementi di set separati da virgole; l'elenco è racchiuso tra parentesi quadre. Le specifiche dell'elemento possono essere costanti o espressioni di un tipo di base, nonché un tipo di intervallo dello stesso tipo di base.

4. File

Un file indica un'area denominata della memoria esterna di un PC o un dispositivo logico, una potenziale fonte o destinatario di informazioni.

Ogni file ha tre caratteristiche uniche.

    ha un nome, che consente al programma di lavorare contemporaneamente con diversi file.

    contiene componenti dello stesso tipo. Il tipo di componenti può essere qualsiasi tipo di Turbo Pascal, ad eccezione dei file. In altre parole, non è possibile creare un "file file".

    di nuovo lunghezza file in fase di creazione Non è specificato in alcun modo al suo annuncio ed è limitato solo dalla capacità dei dispositivi di memoria esterni.

Un tipo di file o una variabile del tipo di file può essere impostato in tre modi:

< nome\u003e \u003d FILE DI< un tipo>;

< nome\u003e \u003d TESTO;

<имя> \u003d FILE;

Qui<имя> - nome del tipo di file (identificativo valido);

FILE, OF - parole riservate (file, da);

TESTO - nome tipo standard file di testo;

<тип> - qualsiasi tipo di Turbo Pascal, ad eccezione dei file.

Si possono distinguere tre tipi di file, a seconda del metodo di dichiarazione:

· File digitati (specificati dalla clausola FILE OF ...);

· file di testo (definito dal tipo TEXT);

· File non tipizzati (definiti dal tipo FILE).

Informazioni sulla conversione dei tipi di dati numerici di Pascal

In Pascal, le conversioni (automatiche) implicite di tipi di dati numerici sono quasi impossibili. Viene fatta un'eccezione solo per il tipo intero, che può essere utilizzato nelle espressioni di tipo reale. Ad esempio, se le variabili sono descritte come segue:

Var X: intero; Y: reale;

quindi l'operatore

sarà sintatticamente corretto, sebbene alla destra del segno di assegnazione sia presente un'espressione intera e alla sinistra sia una variabile reale, il compilatore eseguirà automaticamente la conversione dei tipi di dati numerici. In Pascal la conversione inversa automatica del tipo da reale a tipo intero non è possibile. Ricorda quanti byte sono allocati per le variabili di tipo intero e reale: sotto tipo intero dati interi allocati 2 byte di memoria e in real - 6 byte. Esistono due funzioni integrate per la conversione da reale a intero: round (x) arrotonda la x reale all'intero più vicino, trunc (x) tronca il numero reale eliminando la parte frazionaria.

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