Laboratorio di programmazione Corso A - A.A. 2000/2001 Docente: A. Lanza Il tipo boolean Il tipo real Tipi definiti dall utente: il tipo enumerato

Documenti analoghi
Tipi di dato primitivi

modificato da andynaz Cambiamenti di base Tecniche Informatiche di Base

Caratteristiche di un linguaggio ad alto livello

Corso di Programmazione I dati nei linguaggi di programmazione Tipi Semplici. I dati nei linguaggi di programmazione. Dati. Dott.

La codifica binaria. Informatica B. Daniele Loiacono

La codifica binaria. Fondamenti di Informatica. Daniele Loiacono

Somma di numeri binari

La codifica binaria. Informatica B. Daniele Loiacono

Programmazione in Java (I modulo)

Argomenti trattati. Informazione Codifica Tipo di un dato Rappresentazione dei numeri Rappresentazione dei caratteri e di altre informazioni

Il Modello di von Neumann (2) Prevede 3 entità logiche:

Corso di Fondamenti di Informatica Il sistema dei tipi in C++

Rappresentazione di dati: numerazione binaria. Appunti per la cl. 3 Di A cura del prof. Ing. Mario Catalano

Descrizione delle operazioni di calcolo. Espressioni costanti semplici

Il potere espressivo di un linguaggio è caratterizzato da: PROGRAMMA = DATI + CONTROLLO

Tipi di dato. Il concetto di tipo di dato viene introdotto per raggiungere due obiettivi:

Progettazione di algoritmi: componenti di base e metodologie di sviluppo. Variabili e costanti. Variabili e costanti A = 2. Algoritmo PASCAL-LIKE

LINGUAGGI DI PROGRAMMAZIONE!

Corso di Laurea in Scienze e Tecnologie Chimiche corso di Informatica Generale

Programmazione. 1 Introduzione. Tutto per la gloria di Dio.

LA CODIFICA DELL INFORMAZIONE. Introduzione ai sistemi informatici D. Sciuto, G. Buonanno, L. Mari, McGraw-Hill Cap.2

Rappresentazione delle Informazioni. Prof. Francesco Accarino IIS Altiero Spinelli Via Leopardi 132 Sesto San Giovanni

La codifica. dell informazione

Rappresentazione di Numeri Reali. Rappresentazione in virgola fissa (fixed-point) Rappresentazione in virgola fissa (fixed-point)

VARIABILI E COSTANTI

Linguaggio C - sezione dichiarativa: costanti e variabili

La "macchina" da calcolo

Tipi di dato. Le variabili in C. Problema: dato in input un carattere, se esso è una lettera minuscola, trasformarla in maiuscola.

Corso di Laurea Ingegneria Civile Fondamenti di Informatica

La codifica dei caratteri di un testo

1) definizione di una rappresentazione 2) specificazione di un algoritmo (dipendente dalla rappresentazione) 3) traduzione in un linguaggio

Elementi lessicali. Lezione 4. La parole chiave. Elementi lessicali. Elementi lessicali e espressioni logiche. Linguaggi di Programmazione I

La codifica. dell informazione

Rappresentazione dell informazione

PASCAL standard. Il linguaggio PASCAL nasce come evoluzione del linguaggio ALGOL60 (ALGOrithmic Language) nel 1968 ad opera di N. Wirth.

Il Linguaggio C. Caratteristiche. Caratteristiche. Esempio di programma in C. Tipi di dato primitivi in C. Dati

Array in Fortran 90. Ing. Luca De Santis. Anno accademico 2006/2007. DIS - Dipartimento di informatica e sistemistica

Aritmetica dei Calcolatori Elettronici

Codici. Introduzione. Sia A un insieme finito di simboli e C=A n l insieme di tutte le parole composte da n simboli di A

Pag. 1. La Rappresentazione e la Codifica delle informazioni (parte 2) Tipi di dati. Informatica Facoltà di Medicina Veterinaria

Sistemi di Numerazione Binaria

La Rappresentazione dell Informazione

Rappresentazione dell informazione

Unità Didattica 2 Rappresentazione dei Dati

Programma del corso. Rappresentazione delle Informazioni. Introduzione agli algoritmi. Architettura del calcolatore. Elementi di Programmazione

Programmazione Procedurale in Linguaggio C++

Calcolatori Elettronici Parte III: Sistemi di Numerazione Binaria

Codifica. Rappresentazione di numeri in memoria

Introduzione al linguaggio Fortran 90

Codice binario. Codice. Codifica - numeri naturali. Codifica - numeri naturali. Alfabeto binario: costituito da due simboli

Codifica di informazioni numeriche

Fondamenti di Programmazione. Sistemi di rappresentazione

Programma del corso. Rappresentazione delle Informazioni. Introduzione agli algoritmi. Architettura del calcolatore

Tipi di dati scalari (casting e puntatori) Alessandra Giordani Lunedì 10 maggio 2010

Informazione e sua rappresentazione: codifica

Corso di Fondamenti di Programmazione canale E-O. Tipi di dato. Un esempio

UD 3.2b: Programmazione in Pascal (1)

Variabili e Istruzioni

LESSICO E SINTASSI DEL PASCAL

Rappresentazione binaria

Lezione 4. Sommario. L artimetica binaria: I numeri relativi e frazionari. I numeri relativi I numeri frazionari

Laboratorio di Informatica Ingegneria Clinica Lezione 9/11/2011. Prof. Raffaele Nicolussi

MATLAB I/O. Informatica B - A.A. 2012/2013 ACQUISIZIONE DI INPUT DA TASTIERA

Almerico Murli - Le variabili strutturate (array) VARIABILI STRUTTURATE (ARRAY)

Informazione e sua rappresentazione: codifica

Linguaggio C. Tipi predefiniti e operatori. Università degli Studi di Brescia. Docente: Massimiliano Giacomin

7 2 =7 2=3,5. Casi particolari. Definizione. propria se < impropria se > e non è multiplo di b. apparente se è un multiplo di. Esempi.

Linguaggio C: introduzione

Sistemi di numerazione. Sistema binario, o1ale, esadecimale Rappresentazione delle informazioni

Introduzione al Linguaggio C

Un elaboratore è un manipolatore di simboli (segni) intrinsecamente capace di trattare vari. caratteri char caratteri ASCII unsigned char

Calcolatori: Rappresentazione dei Dati e Aritmetica binaria

Utilizza i tipi di dati comuni a tutto il framework.net Accesso nativo ai tipi.net (C# è nato con.net) Concetti fondamentali:

Lezione 3. I numeri relativi

Linguaggio C. Tipi predefiniti. Università degli Studi di Brescia. Prof. Massimiliano Giacomin. Prof. M. Giacomin

Fondamenti di Programmazione. Sistemi di rappresentazione

ESECUZIONE DI PROGRAMMI C SU MACCHINE REALI. Docente: Giorgio Giacinto AA 2008/2009. formalizzazione degli algoritmi in linguaggio C

= < < < < < Matematica 1

unità didattica 2 Le prime istruzioni notevoli in Pascal

Informatica Generale 1 - Esercitazioni Flowgraph, algebra di Boole e calcolo binario

Insegnamento Informatica CdS Scienze Giuridiche

Sviluppare un programma in FORTRAN

La codifica binaria. Sommario

Nozioni introduttive e notazioni

La Rappresentazione Dell Informazione

Codifica dell Informazione

DISPENSE SU TEORIA DEGLI INSIEMI E NUMERI

Variabili. Unità 2. Domenico Daniele Bloisi. Corso di Programmazione e Metodi Numerici Ingegneria Aerospaziale BAER

Precorso di Matematica

Corso di Matematica per la Chimica. Dott.ssa Maria Carmela De Bonis a.a

1.2 Concetti base dell Informatica: Informazione

Espressioni. Espressione = meccanismo fondamentale per esprimere computazioni in un LP importante comprenderne la semantica!

Espressioni ed operatori in C

L intero è o il valore zero o una stringa di cifre che inizia con una cifra diversa sa zero.

Codifica dell Informazione

Abilità Informatiche e Telematiche

Analogico vs. Digitale. LEZIONE II La codifica binaria. Analogico vs digitale. Analogico. Digitale

Fondamenti di Informatica - 1. Prof. B.Buttarazzi A.A. 2011/2012

Fondamenti di Informatica - 1. Prof. B.Buttarazzi A.A. 2011/2012

CORSO DI AZZERAMENTO DI MATEMATICA

Transcript:

Laboratorio di programmazione Corso A - A.A. 2000/2001 Docente: A. Lanza Il tipo boolean Il tipo real Tipi definiti dall utente: il tipo enumerato Editazione a cura di A. Cappelli, N. Alba, R. De Palo 1

TIPI PREDEFINITI: Tipo BOOLEAN: Operatori relazionali Tutti gli operatori relazionali danno un valore booleano quando vengono usati con espressioni (compatibili) di ogni tipo in cui sia definito un ordine. = uguaglianza <> disuguaglianza < minore di > maggiore di <= minore di o uguale >= maggiore di o uguale IN appartenenza ad un insieme Es. 2<3 è true 3<-5 è false A < Z true FUNZIONE BOOLEANA STANDARD odd Tipo dell argomento Tipo della funzione odd ritorna true integer boolean se l argomento è dispari, false altrimenti eof(f) eoln(f) end_of_file su f end_of_line su f 2

TIPI PREDEFINITI Tipo CHAR: Un valore di tipo char è un elemento dell insieme finito ed ordinato del set di caratteri dipendente dall implementazione (*). Un carattere racchiuso tra apici denota una costante di tipo char. Ad ogni carattere corrisponde un distinto numero ordinale che appartiene ad un sottoinsieme dei numeri naturali. Il tipo char contiene un carattere di spazio (invisibile) b Es. * A a b blank 3 (*) alcuni caratteri possono non avere una forma stampabile Sicuramente ci sono le cifre, le lettere e i simboli di punteggiatura, oltre a b ASCII = American Standard Code for Information Interchange Se assumiamo il sistema di codifica ASCII, si hanno 128 caratteri. Ogni carattere è codificato da un numero compreso fra 0 e 127 detto il suo codice ASCII 3

FUNZIONI PREDEFINITE PER IL TIPO CHAR: Ordinali Sia i un espressione integer e c un espressione ordinale ord(c) (tipo integer) fornisce il numero ordinale (codice ASCII) di c (n 10 d ordine nella tavola di codifica) Ord: char 0..127 X<=Y SSE ord(x)<=ord(y) X<Y SSE ord(x)<ord(y) X>=Y SSE ord(x)>=ord(y) X>Y SSE ord(x)>ord(y) X<>Y SSE ord(x)<>ord(y) a b ord(a) R ord(b) N.B. chr(ord(c))= c ord(chr(x))= x x integre Sia il set di caratteri che il loro ordinamento dipendono dall implementazione. chr(i) fornisce il carattere avente numero ordinale (codice (tipo char) ASCII) i. (dà errore se non esiste il valore di tipo char corrispondente chr(300) ) chr è usata per indicare i caratteri non denotati da costanti Es: chr(13) è il carriage return succ(c) successore di c (dà errore se non esiste) ord (succ(x)) = ord(x)+1 4

pred(c) predecessore di c (dà errore se non esiste) ord (pred(x)) = ord(x) 1 Lo standard Pascal prevede per i valori (*) ordinali del tipo char, le seguenti relazioni: ø < 1 A < B a < b 1 < 2 B < C b < c............ 8 < 9 W < Z w < z i valori ordinali sono consecutivi non necessariamente contigue A dati di tipo char si possono applicare i 6 operatori relazionali : = <> < <= >= >. Il risultato di una relazione avente operandi di tipo char è determinata applicando la relazione matematica ai numeri ordinali corrispondenti agli operandi. Così per qualunque operatore relazionale R e operandi c1 e c2 di tipo char: c1 R c2 è equivalente a: ord(c1) R ord(c2) c1 >= c2 A < C ord( A ) < ord( C ) (*) rispettate oltre che da ASCII anche da EBCDIC (Extended Binary Coded Decimal Information Code) 5

STAMPA DEL SET DI CARATTERI DELL ELABORATORE CHE SI STA UTILIZZANDO PROGRAM CharacterSet ( output); VAR i: 0..127 ; BEGIN Writeln( :20, ASCII Character Set from Code 32 ); FOR i: = 32 to 127 do BEGIN write ( i: 5, chr(i):2); IF I mod 10 = 0 THEN writeln; END; END. I primi 32 non sono visualizzabili: caratteri speciali e di controllo Linefeed, Carriage Return, Bell, etc. chr (32) è il blank 128 7 bit 256 8bit dopo il codice 127 ci sono caratteri/lettere accentate, con dieresi, cediglie, simboli matematici :,,, (non standardizzato) 6

ESEMPIO: 2 char 2 integer - Per convertire dalla rappresentazione interna di caratteri numerici in sequenze di cifre e viceversa, si usano: ord(c) - ord(0) è la posizione di c (variabile di tipo char) tra le cifre. Chr(i + ord(0)) è l i-esima cifra (i è di tipo intero) ES: 7 7 integer Char - Conversione di una lettera da maiuscola in minuscola IF ch IN [ A.. Z ] THEN Minus:= chr(ord(ch) ord( A ) + ord( a )); Questa formula è generale poiché non richiede la conoscenza né dei valori ordinali di A e di a, né del fatto che le lettere minuscole seguono quelle maiuscole 7

TIPI PREDEFINITI TIPO REALE (real) Un valore di tipo real è un elemento del sottoinsieme (finito e limitato) dei numeri reali definito dall implementazione. Un valore reale in Pascal è rappresentato come una sequenza di cifre contenente un punto decimale (in tal caso il punto decimale deve essere preceduto e seguito da almeno una cifra) oppure in notazione scientifica. Sono applicabili gli operatori aritmetici e gli operatori relazionali. Sono definite numerose funzioni standard. ES: 3.1415-0.015-2.345E2 (valore di 234.5) -15E-04 (valore di 0.0015) N.B. Questo tipo primitivo non è ordinale le funzioni prec, succ e ord non sono applicabili ai real. Sebbene i reali sono inclusi nei tipi scalari, non possono essere usati nello stesso contesto degli altri tipi scalari. Valori di tipo reale non possono essere usati come indici di vettori, né nel controllo di istruzioni di tipo FOR, né per definire il tipo base di un SET, né per definire tipi SUBRANGE. I valori reali che possono essere gestiti da un elaboratore sono solo un approssimazione dei loro corrispondenti matematici. 8

REALI Grandezze numeriche per calcoli scientifici valori più grandi/più piccoli dell intervallo degli INTEGER. Costante reale Notazione decimale 0.000001 Notazione scientifica 0.1E-5 (E rappresenta la base 10) INTERVALLO DI DEFINIZIONE Se 32 bit esponente Segno segno mantissa mantissa esponente SINGOLA PRECISIONE Esponente: compreso fra 38 e +38 Numero di cifre di precisione: 6 Due valori che differiscono per la settima cifra decimale non sono distinguibili una volta memorizzati. 9

OPERATORI ARITMETICI + addizione - sottrazione * moltiplicazione / divisione (tra numeri reali e produce un risultato reale) integer real Tipo del risultato degli operatori integer integer real + - e * (è intero se ambedue gli gli operandi sono interi, altrimenti real real real è real) integer real Tipo del risultato dell operatore / integer real real (è sempre real) real real real I simboli + e sono usati anche per indicare gli operatori unari di identità e di inversione di segno che danno risultati dello stesso tipo dell operando a cui sono applicati. N.B. Se il divisore è 0 sia per DIV che per / viene segnalato errore. Osservazione: Il Pascal non prevede un operatore predefinito per l elevamento a potenza: Y yln(x) x = e = exp(y*ln(x)) 10

ESEMPIO ln(a) e = a b ln a =b ln a Se y è un intero, si può eseguire l elevamento a potenza con un loop: x*x*x* *x y volte LETTURA E SCRITTURA DI VALORI REAL Read e readln consentono di leggere valori reali espressi in una qualsiasi delle 2 forme permesse. Ogni valore deve essere separato dal successivo tramite almeno un b o linea vuota. Write e writeln se non specificata una formattazione tramite ampiezza di campo, il valore è stampato in notazione esponenziale, altrimenti il primo valore specifica l ampiezza per il numero completo, il secondo valore specifica le posizioni decimali. ES: writeln(pi:5:3) 3.142 writeln(pi:7) 3.142E0 (notazione floating) writeln(10/3*3).999e1 writeln(10/3*3:8:1) 10.0 (produce per arrotondamento in fase di stampa) 11

Sintassi della parte dichiarativa di tipo TYPE TYPE identification tipo ; 12

TIPI DEFINITI DALL UTENTE In Pascal si ha la possibilità di definire nuovi tipi (elementari e non) e di assegnare esplicitamente dei nomi ai nuovi tipi (per appositi costrutti linguistici Algol68, Pascal, Ada) Si possono definire nuovi tipi ordinali in due modi: - per enumerazione di tutti i valori possibili - specificando un sotto-intervallo di valori di un tipo ordinale esistente TIPO ORDINALE In Pascal un tipo ordinale è un insieme totalmente ordinato posto in corrispondenza con un intervallo del tipo integer dalla funzione iniettiva ord. Ogni elemento di un tipo ORDINALE ha un unico predecessore ed un unico successore. Sono tipi ordinali i seguenti: integer char sono pre-definiti boolean ENUMERATI INTERVALLO ord : TO integer Tipo Ordinale succ: TO TO succ(x) succ ( A ) = B 13

ESEMPIO: < < < TYPE semi = ( cuori, quadri, fiori, picche ) VAR carta : semi ord ( cuori ) vale 0 ord ( quadri ) vale 1 ord ( fiori ) vale 2 ord ( picche ) vale 3 succ ( quadri ) è fiori pred ( picche ) è fiori danno errore succ ( picche ) pred ( cuori ) non sono definiti 14

TIPO ENUMERATO: Un tipo enumerato è definito semplicemente elencando gli identificatori mediante i quali devono essere denotati i valori del tipo. Gli identificatori sono racchiusi in parentesi tonde e separati da virgole. Esempi. Maggiore leggibilità dei programmi. 1. I semi delle carte da gioco francesi potrebbero essere definiti come : ( cuori, quadri, fiori, picche ). 2. I giorni della settimana potrebbero essere definiti come: ( Lun, Mart, Merc, Giov, Ven, Sab, Dom ). Nota: l ordine in cui sono elencati i valori del pito definisce anche il loro ordinamento. Esempio: Ord ( cuori ) < ord ( picche ) Cuori < picche da true Mart >= Ven da false TYPE t = ( w0, w1,,wn ) Per ogni tipo t deve valere 1. wi wj per i j relazione di ordinamento 2. wi < wj per i < j tra le costanti 3. solo wi per i= 0,1,,n appartiene al tipo t. wi sono identificatori sono tutte e sole le costanti del tipo t 15

OPERATORI E FUNZIONI DEL TIPO ENUMERATO: Ord : t integer ha immagine 0 n ed è così definita Ord ( wi ) = i per i 0 n succ pred operazioni funzionali per il confronto assegnamento Nessun identificatore wi può appartenere a più di un tipo! ESEMPIO: TYPE giorni = ( lunedi, martedi, mercoledi,, domenica ) FUNCTION giorno_dopo ( g : giorni ) : giorni ; BEGIN IF END g = domenica THEN giorno_dopo := lunedi ELSE giorno_dopo := succ ( g) 16

LETTURA E SCRITTURA CON IL TIPO ENUMERATO: Operazioni di lettura e di scrittura di valori appartenenti al tipo enumerato (è un tipo interno ) indirettamente: ES: VAR semaforo: (verde, giallo,rosso); LETTURA (per codifica) fornendo da INPUT valori interi del tipo: 1, verde; 2, giallo; 3, rosso. Read(num); CASE num OF END 1: semaforo=verde; 2: semaforo=giallo; 3: semaforo=rosso SCRITTURA Sul file OUTPUT dobbiamo far corrispondere le tre stringhe verde, giallo e rosso. CASE semaforo OF END verde: write( verde ); giallo: write( giallo ); Rosso: write( rosso ) 17