Fondamenti di programmazione parte 2. Elementi di informatica IGLP

Documenti analoghi
Tipi di dato primitivi

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

Il linguaggio C Variabili e tipi di dato primitivi

LINGUAGGI DI PROGRAMMAZIONE!

Linguaggio C: Espressioni

Programmare in C. Maurizio Palesi Salvatore Serrano. Valori. Operazioni. Un insieme di valori del tipo. Per operare su tali valori Tipi

1

Architettura degli Elaboratori e Laboratorio. Matteo Manzali Università degli Studi di Ferrara Anno Accademico

IL LINGUAGGIO C TIPI DI DATO

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

Conversioni fra Tipi di Dati. Informatica 1 / 15

Conversioni fra Tipi di Dati. Luca Abeni

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

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

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

Tipi elementari. Stefano Ferrari. Università degli Studi di Milano Programmazione. anno accademico

IL LINGUAGGIO C Un elaboratore è un manipolatore di simboli (segni) L'architettura fisica di ogni elaboratore è intrinsecamente capace

Operazioni artimetiche

Parte seconda: espressioni, operandi e operatori.

Rapida Nota sulla Rappresentazione dei Caratteri

Rappresentazione dei numeri

Informatica e Laboratorio di Programmazione Sistema Binario Alberto Ferrari. Alberto Ferrari Informatica e Laboratorio di Programmazione

TECNOLOGIA DIGITALE. TECNOLOGIA DIGITALE (segue)

Linguaggio C Espressioni e operatori

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

Corso di PHP. Prerequisiti. 2.2 Operatori. Conoscenza HTML Tecnica della programmazione Principi di programmazione web. M. Malatesta 2.

Rappresentazione e Codifica dell Informazione

Unita aritmetica e logica. Input e output della ALU. Rappresentazione degli interi. Rappresentazione in modulo e segno. Aritmetica del calcolatore

Espressioni con effetti collaterali

Rappresentazione dell informazione

Conversione binario-ottale/esadecimale. Conversione binario-ottale/esadecimale. Rappresentazione di Numeri Interi Positivi (numeri naturali)

Lab 02 Tipi semplici in C

Indice. Ordine di valutazione. Espressioni in C++ Le espressioni in C++ (CAP 4) Alberto Garfagnini e Marco Mazzocco A.A. 2014/ * 20 / 2

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

14. Tipi e conversioni di tipo. Andrea Marongiu Paolo Valente

Lab 02 Tipi semplici in C

Codifica dell informazione

Fondamenti di programmazione parte 1. Elementi di informatica IGLP

Tipi interi lo standard (1)

Tipi elementari, costanti. Tipi di dati. VALORI: un insieme dei valori del tipo OPERAZIONI: per operare su tali valori. Tipi. intero reale carattere

Notazione posizionale. Codifica binaria. Rappresentazioni medianti basi diverse. Multipli del byte

Per gli esercizi sulla algebra booleana, si consiglia di verificare tramite tabelle di verità le equivalenze logiche proposte sulle dispense.

Tipi di dati fondamentali. Tipi di dati fondamentali. Utilità dei tipi di dati nelle dichiarazioni. Il tipo di dati char. Codice ASCII.

Lab 02 Tipi semplici in C

Informatica. Stefano Lodi. 16 novembre in linguaggio C

Dalla precedente lezione: LABORATORIO DI PROGRAMMAZIONE Corso di laurea in matematica 3 LA RAPPRESENTAZIONE DEI DATI (1) 28/02/2016

Struttura di un programma C++

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

Char. Unità 2. Corso di Laboratorio di Informatica Ingegneria Clinica BCLR. Domenico Daniele Bloisi

Unità aritmetica e logica

Rappresentazione dell informazione

Caratteristiche di un linguaggio ad alto livello

Cenni alla rappresentazione dei tipi dato primitivi

Rappresentazione in virgola fissa (fixed-point) Rappresentazione di Numeri Reali. Conversione decimale-binario di numeri non interi

Primi esempi di programmi. Il tipo int Le variabili Altri tipi interi Operatori di assegnazione

Linguaggio C: Espressioni

L assegnamento. Andrea Marin. a.a. 2011/2012. Università Ca Foscari Venezia Laurea in Informatica Corso di Programmazione part-time

Corso: Fondamenti di Informatica 1 (gruppo 8-9) Corsi di laurea: Area dell'informazione Simulazione del Questionario a Risposte Multiple.

Appunti del corso di Informatica 1 (IN110 Fondamenti) 5 Rappresentazione delle informazioni

Laboratorio di informatica Ingegneria meccanica

La codifica. dell informazione. Codifica dei numeri. (continua) Codifica dei numeri. Codifica dei numeri: il sistema decimale

Lezione 6 Introduzione al C++ Mauro Piccolo

Codifica di informazioni numeriche

Dichiarazioni e tipi predefiniti nel linguaggio C

Lezione 5 e 6. Fabio Scotti ( ) Laboratorio di programmazione per la sicurezza. Valentina Ciriani ( ) Laboratorio di programmazione

Rappresentazione della informazione

Tipi elementari, costanti. Tipi di dati. VALORI: un insieme dei valori del tipo OPERAZIONI: per operare su tali valori. Tipi. intero reale carattere

Espressioni ed operatori in C

Espressioni ed operatori in C

Lab 02 Tipi semplici in C

Aritmetica dei Calcolatori Elettronici

Espressioni matematiche. #include <math.h>

Lezione 2. La conoscenza del mondo

Linguaggio C: Espressioni

Rappresentazione numeri reali

La codifica delle informazioni numeriche ed alfanumeriche.

Tipi di dato e variabili. Walter Didimo

La codifica. dell informazione

Fondamenti di Informatica L-A. Esercitazione 2

Corso sul linguaggio Java

Laboratorio di Programmazione 1. Docente: dr. Damiano Macedonio Lezione 5 31/10/2013

Fondamenti di C++ Input/Output di base

IL LINGUAGGIO C Un elaboratore è un manipolatore di simboli (segni) L'architettura fisica di ogni elaboratore è intrinsecamente capace

La "macchina" da calcolo

Linguaggio C - sezione dichiarativa: costanti e variabili

Laboratorio Informatico di Base. Concetti di base sull informatica

#include <stdio.h> /* l esecuzione comincia dalla funzione main */ int main()

IL LINGUAGGIO C Un elaboratore è un manipolatore di simboli (segni) L'architettura fisica di ogni elaboratore è intrinsecamente capace

IL LINGUAGGIO JAVA. Input, Tipi Elementari e Istruzione Condizionale. Primo esempio di un programma Java

IL LINGUAGGIO JAVA. Input, Tipi Elementari e Istruzione Condizionale. Fondamenti di Informatica - D. Talia - UNICAL 1. Fondamenti di Informatica

Fondamenti di informatica

Fondamenti di Informatica T-1

ELEMENTI DI INFORMATICA L-B. Ing. Claudia Chiusoli

Transcript:

Fondamenti di programmazione parte 2 Elementi di informatica IGLP

Questo insieme di trasparenze è stato ideato e realizzato dai ricercatori e professori del Dipartimento di Informatica e Sistemistica dell Università di Napoli. Esse possono essere impiegate liberamente per fini didattici esclusivamente senza fini di lucro, a meno di un esplicito consenso scritto degli Autori. Nell uso dovrà essere esplicitamente riportata la fonte e gli Autori. Gli Autori non sono responsabili per eventuali imprecisioni contenute in tali trasparenze né per eventuali problemi, danni o malfunzionamenti derivanti dal loro uso o applicazione

Istruzioni di assegnamento Esistono anche altri operatori che hanno come effetto collaterale l'assegnazione di un valore La maggior parte di essi sono delle utili abbreviazioni Esempi: Pippo += 5; // equivale a Pippo = Pippo + 5; Pippo -= 10; // equivale a Pippo = Pippo - 10; Pippo *= 3; // equivale a Pippo = Pippo * 3; si tratta cioè di operatori derivanti dalla concatenazione dell'operatore di assegnamento con un altro operatore binario

Autoincremento e autodecremento Gli altri operatori che hanno come effetto laterale l'assegnamento sono quelli di autoincremento e autodecremento Esempi Pippo++; // cioè Pippo += 1; ++Pippo; // sempre Pippo += 1; Pippo--; // Pippo -= 1; --Pippo; // Pippo -= 1; Questi due operatori possono essere utilizzati sia in forma prefissa (righe 2 e 4) che in forma postfissa (righe 1 e 3) Il risultato comunque non è proprio identico poiché la forma postfissa restituisce come risultato il valore della variabile e poi incrementa tale valore e lo assegna alla variabile, la forma prefissa invece prima modifica il valore associato alla variabile e poi restituisce tale valore

Esempio

Esercizi Scambio del valore di due variabili Esempio Input: a = 10, b = 20 Output: a = 20, b = 10 Scambio del valore di tre variabili Esempio Input : a = 10, b = 20, c = 30 Output: a = 20, b = 30, c = 10

Il tipo bool bool serve a rappresentare i valori di verità: «true (vero) «false (falso) bool = {true, false} Originariamente il tipo booleano non faceva parte del C++. I valori di verità venivano rappresentati tramite valori interi: 0 (zero) indicava falso e un valore diverso da 0 indicava vero

Il tipo bool Su di esso sono definite le usuali operazioni logiche && per l'and per l'or! per la negazione

Il tipo bool Non bisogna confondere le operazioni logiche (&&,,!...) con le operazioni logiche su bit (rispettivamente &,, ~...) Gli operatori di relazione sono applicabili a tutti gli operandi di tipo ordinato e producono quale risultato un valore di tipo booleano In sostanza, le relazioni definiscono un valore booleano

Il tipo char Il tipo char è utilizzato per rappresentare singoli caratteri e piccoli interi (e quindi su di esso si possono eseguire le usuali operazioni aritmetiche) I caratteri sono rappresentati con il codice ASCII a 8 bit permette di rappresentare 2^8 = 256 caratteri (=cardinalità del tipo) tipo carattere = {A,B,,Z,0,1..,9,/,x,+,-,.} Il tipo può essere considerato ordinato secondo le tradizionali convenzioni dell ordinamento alfabetico, ampliato per considerare anche la presenza delle cifre e dei simboli speciali (+,-,*,/, ) Esempi di costanti char: A, =, a

Il tipo wchar_t wchar_t serve a memorizzare caratteri non rappresentabili con char (ad esempio i caratteri unicode)

Il tipo intero Per rendere finita la cardinalità del tipo intero si fissano due estremi m e M I valori di m e M dipendono dal particolare tipo di compilatore Es.: interi a 16 bit m = -2^15 = - 32768; M = 2^15 1 = 32767; La cardinalità del tipo intero è dunque 65536 Nella maggior parte dei linguaggi esistono differenti tipi interi caratterizzati da un diverso intervallo (m, M): i qualificatori unsigned, short, long impostano tali valori

Il tipo reale Un elaboratore non tratta l insieme di tutti i numeri reali, ma soltanto un sottoinsieme finito di questi, ovvero un sottoinsieme discreto dei numeri reali Un tipo reale concreto è definito da un intervallo (m,m) e da un valore prefissato epsilon che rappresenta l errore di rappresentazione

Il tipo reale Il tipo reale concreto è dunque in grado di fornire valori approssimati dei numeri reali appartenenti all intervallo (m, M) ammettendo un certo un errore L eguaglianza tra due numeri reali va definita entro i limiti di tale errore di approssimazione In quasi tutti i linguaggi di programmazione sono disponibili più tipi reali caratterizzati da differente precisione (float, double, long double) La cardinalità del tipo reale non è definita al livello del linguaggio, in quanto il numero di valori distinti rappresentabili dipende dalla specifica implementazione (m, M, epsilon )

Il tipo reale Ad esempio, in una determinata implementazione float i; I dati di questo tipo (32 bit) sono compresi nell intervallo (3.4x10^-38, 3.4 x10^+38 ) con epsilon = 2^-25 double i; I dati di questo tipo (64 bit) sono compresi nell intervallo (1.7x10^-308, 1.7 x10^+308 ) con epsilon = 2^-54 Le costanti reali possono essere espresse nella notazione decimale o in quella cosiddetta scientifica: 1.0, 138.25, -0.101145E-2 (= -0.10145 10-2)

Overflow ed underflow Gli insiemi di numeri rappresentabili su di un calcolatore hanno cardinalità finita. Il tentativo di rappresentare un numero esterno all intervallo di numeri rappresentabili si dice overflow Nel caso di numeri reali oltre alla limitatezza dell intervallo è presente anche l approssimazione epsilon. Se, a causa dell approssimazione, il numero viene rappresentato da uno 0 pur non essendo nullo, si ha una situazione di underflow

Operatori bit a bit Il C++ può, a differenza da altri linguaggi, operare sulle variabili intere a livello del bit L'operatore binario >> produce lo scorrimento a destra (right-shift) dei bit del left-operand, in quantità pari al right-operand. In pratica esegue una divisione intera (con divisore uguale a una potenza di 2) Es. a >> n equivale a a / 2 n L'operatore binario << produce lo scorrimento a sinistra (left-shift) dei bit del left-operand, in quantità pari al rightoperand. In pratica esegue una moltiplicazione per una potenza di 2 Es. a << n equivale a a * 2 n

Operatori bit a bit Gli operatori binari &,, e ^ eseguono operazioni logiche bit a bit fra i due operandi, e precisamente: & esegue l'and fra i corrispondenti bit dei due operandi esegue l'or inclusivo fra i corrispondenti bit dei due operandi ^ esegue l'or esclusivo (XOR) fra i corrispondenti bit dei due operandi L'operatore unario ~ inverte i bit dell'operando, cioè calcola il suo complemento a uno

Esempio

Esercizi Calcolo del fattoriale di un intero Somma degli elementi di una sequenza terminata dallo 0 Conversione da numero binario a numero decimale