On Amazon.it: https://www.amazon.it/Complete-Concordances-James-Bible-Azzur/dp/B0F1V2T1GJ/


Pascal (linguaggio) - Wikipedia

Pascal (linguaggio)

Da Wikipedia, l'enciclopedia libera.

bussola Nota disambigua - Se stai cercando altri significati della parola, vedi Pascal (disambigua).

In informatica, il Pascal è un linguaggio di programmazione creato da Niklaus Wirth.

Il Pascal si basa sul linguaggio ALGOL e fu così chiamato in onore del matematico e filosofo francese Blaise Pascal, inventore della prima macchina calcolatrice automatica.

Wirth era un docente di programmazione e sentiva la mancanza di un vero linguaggio di programmazione adatto alla didattica e che fosse dotato di strutture dati avanzate. Il BASIC, creato nel 1964, era facile da imparare ma non aveva strutture dati avanzate e soprattutto non incoraggiava affatto ad analizzare il problema da risolvere prima di scrivere il codice. Perciò, Wirth creò da zero il Pascal, inserendo nel linguaggio il concetto di programmazione strutturata.

La prima implementazione del linguaggio divenne operativa nel 1970, ma raggiunse una discreta diffusione nel campo industriale nel 1973 con la pubblicazione del testo: "Pascal user manual and Report". Questo è il testo di riferimento standard per il linguaggio.

TeX e buona parte delle prime versioni del sistema operativo del Macintosh furono scritte in Pascal.

Le caratteristiche principali del Pascal sono una sintassi molto chiara e molto rigida, l'obbligo di dividere il programma in sezioni ben definite (uses, declaration, implementation) e di dichiarare in anticipo tutte le variabili usate nel programma; permette l'uso di tipi di dati complessi e definibili dal programmatore (i record); permette (con alcune limitazioni) l'uso dei puntatori e l'allocazione dinamica della memoria (new e dispose). Il Pascal è pertanto classificato come linguaggio semidinamico, in quanto gestisce i puntatori, permettendo di creare liste di variabili di dimensione non nota all'atto della compilazione, ma questi possono essere solo di un tipo alla volta, il tipo usato per definire la variabile puntatore stessa. Al posto delle subroutine di uso comune nei linguaggi di allora, il Pascal introduce le procedure e le funzioni, che estendono il concetto di subroutine incapsulando al loro interno le variabili e i dati locali, ed esponendo solo i valori in ingresso ed in uscita. Inoltre, nella sua formulazione originale, era privo dell'istruzione GOTO, aggiunta poi in seguito con riluttanza.

Essendo un linguaggio pensato per degli utenti inesperti, spesso i compilatori Pascal hanno un atteggiamento materno nei confronti del programmatore, partendo dal presupposto che qualunque irregolarità del codice scritto sia un errore, che infastidisce un po' gli esperti. In cambio è un linguaggio completo e potente, e soprattutto educa fin dall'inizio ad adottare un buono stile di programmazione e ad analizzare a fondo il problema prima di cominciare a scrivere il codice, cosa che rende i programmi Pascal più chiari e più facili da leggere.

Data la diffusione negli ambienti scolastici, ne sono state create versioni ad oggetti, come il Turbo Pascal e l'Object Pascal (utilizzato nell'ambiente di sviluppo Delphi di Borland).

Indice

[modifica] Compilatori gratuiti

  • Free Pascal Un compilatore con licenza GPL, con sintassi compatibile con Object Pascal
  • Lazarus Nato come sottoprogetto di Free Pascal, un clone GPL di Borland Delphi
  • Dev-Pascal una soluzione completa che si basa sul compilatore freepascal includendo molte altre migliorie

[modifica] Programma di esempio

[modifica] Hello, world!

Il seguente esempio stampa il testo "Hello world".

program hello(input, output);
begin
  writeln('Hello World');
  readln;
end.

[modifica] Parole chiave di base

Il linguaggio pascal, come tutti gli altri linguaggi di programmazione impone che si rispettino delle regole lessicali e sintattiche per produrre un codice sorgente conforme al linguaggio.
Program Identificatore Opzionale, seguito dal nome del programma che viene posto all'inizio del file sorgente.
Type Dichiarazioni di tipo: il programmatore definisce un tipe di variabile non esistente.
Var Da questo punto in poi vengono dichiarate le variabili.
Begin Dopo aver dichiarato eventuali varibili, tipi,procedure, funzioni e tutto il resto, da questo punto si inizi a programmare.
end. l'end. chiude tutte le applicazioni in pascal

[modifica] Variabili

Il Pascal mette a disposizione molti tipi di variabili:

  • Tipi interi, utilizzati per memorizzare valori interi, possono consentire di memorizzare o meno numeri negativi. In Pascal sono:
    • integer: variabile di tipo intero (numeri da -32768 a 32767), non consentono numeri con la virgola. È il tipo intero più utilizzato. Per la memorizzazione sono utilizzati solitamente 2 byte di memoria, equivalenti a 16 bit, da cui 216 = 65536
    • word: copre i valori da 0 a 65535; si tratta quindi di soli valori positivi e come il tipo precedente occupa solitamente 2 byte in memoria.
    • byte: come già suggerisce il nome, questo tipo occupa 1 byte in memoria e consente 28 = 256 differenti valori, nel dettaglio da 0 a 255. Questo tipo è completamente compatibile con il tipo char, l'unica differenza consiste nel fatto che un tipo byte ha come visualizzazione predefinita quella di un numero, mentre il char quella di un carattere.
    • short: come il precedente occupa un solo byte ma i valori possono variare da -128 e 127.
    • longint: è il tipo intero più grande messo a disposizione dal Pascal. In memoria occupa 4 byte (e quindi 4x8=32 bit) e permette quindi di gestire 232 = 4294967296 diversi valori, compresi fra -2147483648 e 2147483647.
  • Tipi reali:
    • real: numero reale (numeri da -2.9E-39 a 1.7E38), se nel stampare a video risultati reali ottenete numeri incomprensibili è perché essi sono scritti notazione scientifica o esponeziale. Se si inseriscono da tastiera numeri real, bisogna scriverli in notazione esponenziale. Per ovviare a questo problema durante l'output sullo schermo utilizzare la segunete sintassi:
... {Altre istruzioni}
Var R:Real;
... {Altre istruzioni}
Writeln('Il numero reale è ',R:10:3);
... {Altre istruzioni}

In questo caso vengono visualizzate in tutto 10 cifre, di cui 3 decimali, mentre le restanti 7 sono intere.

  • Tipo carattere (char): variabile carattere, contiene 1 solo carattere.
  • Tipo boolean: variabile binaria(falso vero, false true).
  • Tipi strutturati:
    • string: stringa di caratteri, utilizzata per l'input di più carattere, come un testo.

[modifica] Input e output

L'input di datida tastiera, viene effettuato tramite l'utilizzo del comando readln(nome_variabile).
L'output invece usa il comando writeln(nome_variabile); la stampa a video usa lo stesso il comando writeln, però il testo è tra apici ' ' (writeln('ciao mondo');)
I/O di interi:

program input_output(input, output);
var 
     n1,n2,ris:integer;               {Dichiarazione tipo intero}
begin
     writeln('Inserisci n1');         {viene visualizzato il testo tra ' '}
     readln(n1);                      {comando di input, la variabile introdotta viene messa in n1}
     writeln('Inserisci n2');
     readln(n2);
     ris:=n1+n2;                      {fa la somma di n1 e n2 e il risultato vine messo in ris}
     writeln('La somma e'' uguale a ',ris);     {stampa il messaggio tra ' ' e la variabile ris}
     readln;     {evita che il programma si chiuda senza che sia possibile leggere l'ultima riga}
end.

I/O reali: per l'input di numeri reali il metodo resta sempre lo stesso( readln(varibile)),
invece per l'output, per vedere numeri comprensibili bisogna usare una sintassi diversa nel writeln

program input_output(input, output);
var 
     n1,n2,ris:real;                  {Dichiarazione tipo reale}
begin
     writeln('Inserisci n1');         {viene visualizzato il testo tra ' '}
     readln(n1);                      {comando di input, la variabile introdotta viene messa in n1}
     writeln('Inserisci n2');
     readln(n2);
     ris:=n1+n2;                      {fa la somma di n1 e n2 e il risultato vine messo in ris}
     writeln('La somma e'' uguale a ',ris:3:2);  {stampa il messaggio tra ' ' e la variabile ris, con 3 numeri prima della , e 2 dopo}
     readln;
end.

Nella stampa a video abbiamo usata una 'modifica' del comando writeln: la modifica sta nell'aggiungere var:n:m dove var è il nome
della variabile da visualizzare, n è il numero di cifra prima della virgola da visualizzare e m è quella dopo la virgola.
Se ci sono più cifre da visualizzare di quelle indicate, esse non vengono fatte vedere.

I/O caratteri: l'input e l'output di caratteri(numeri, lettere, simboli), è molto semplice da effettuare, per il semplice motivo che è lo stesso metodo di i/o dei numeri interi

program input_output(input, output);
var 
      ch:char;               {Dichiarazione tipo carattere}
begin
     writeln('Inserisci il carattere');         {viene visualizzato il testo tra ' '}
     readln(ch);                      {comando di input, la variabile introdotta viene messa in ch}
     writeln('Il carattere inserito è'' ',ch);     {stampa il messaggio tra ' ' e la variabile ch}
     readln;
end.

I/O stringhe: le variabili stringhe in effetti non sono altro che array di char (vettori di caratteri). Questo esempio è veramente semplice in confronto alle potenzialità del Pascal, difatti con questo linguaggio si possono creare vere e proprie applicazioni.

[modifica] Voci correlate

[modifica] Altri progetti

Principali linguaggi di programmazione (tutti)

Ada | ALGOL | APL | Awk | BASIC | C | C++ | C# | COBOL | Delphi | Eiffel | Fortran | Haskell | IDL | Java | JavaScript | J# | Lisp | LOGO | ML | Objective C | O'Caml | Pascal | Perl | PHP | PL/I | PLaSM | Prolog | Python | Ruby | SAS | Scheme | sh | Simula | Smalltalk | SQL | Transact-SQL | Visual Basic

Static Wikipedia March 2008 on valeriodistefano.com

aa   ab   af   ak   als   am   an   ang   ar   arc   as   ast   av   ay   az   ba   bar   bat_smg   bcl   be   be_x_old   bg   bh   bi   bm   bn   bo   bpy   br   bs   bug   bxr   ca   cbk_zam   cdo   ce   ceb   ch   cho   chr   chy   co   cr   crh   cs   csb   cv   cy   da   en   eo   es   et   eu   fa   ff   fi   fiu_vro   fj   fo   fr   frp   fur   fy   ga   gd   gl   glk   gn   got   gu   gv   ha   hak   haw   he   hi   ho   hr   hsb   ht   hu   hy   hz   ia   id   ie   ig   ii   ik   ilo   io   is   it   iu   ja   jbo   jv   ka   kab   kg   ki   kj   kk   kl   km   kn   ko   kr   ks   ksh   ku   kv   kw   ky   la   lad   lb   lbe   lg   li   lij   lmo   ln   lo   lt   lv   map_bms   mg   mh   mi   mk   ml   mn   mo   mr   ms   mt   mus   my   mzn   na   nah   nap   nds   nds_nl   ne   new   ng   nl   nn   nov  

Static Wikipedia (no images)

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - en - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu -

Static Wikipedia 2007 (no images)

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - en - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu -

Static Wikipedia 2006 (no images)

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu

Static Wikipedia February 2008 (no images)

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - en - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu