Fondamenti di Programmazione

Slides:



Advertisements
Presentazioni simili
Introduzione al linguaggio C++
Advertisements

Lezione 12.1: Conclusione e Q&A
Tecniche e Linguaggi di Programmazione
Prof. Rebecca Montanari Anno accademico 2011/2012
Informatica Generale Marzia Buscemi IMT Lucca
Programma: main() { istruzioni } ; assegnazione condizione ciclo istruzione: ;
Dati, istruzione e pseudocodice
if (condizione.) { blocco_istruzioni } else
Corso di laurea in INFORMATICA RETI di CALCOLATORI A.A. 2003/2004 Presentazione del corso Alberto Polzonetti
Dipartimento di Matematica
Algoritmi e Programmazione
Informazioni sul Corso
Informatica Generale Marzia Buscemi
Docente: Eugenia Occhiuto web:
(sommario delle lezioni in fondo alla pagina)
INFORMATICA Strutture iterative
Elementi di Informatica
1 Istruzioni, algoritmi, linguaggi. 2 Algoritmo per il calcolo delle radici reali di unequazione di 2 o grado Data lequazione ax 2 +bx+c=0, quali sono.
Introduzione agli algoritmi. Definizione Sistema di regole e procedure di calcolo ben definite che portano alla soluzione di un problema con un numero.
1 Università della Tuscia - Facoltà di Scienze Politiche.Informatica 2 - a.a Prof. Francesco Donini Condizioni ed istruzioni condizionali.
Reti Logiche e Architettura dei Calcolatori Luciano Gualà home page
Corsi di Laurea triennale: Economia e professione –CLEP
Algebra di Boole ed elementi di logica
Introduzione alla programmazione
Analisi Statistica del Reddito e delle Condizioni di Vita
Informatica 2. Concetti fondamentali di programmazione Programmare vuol dire scrivere un algoritmo in un linguaggio che faccia funzionare un calcolatore.
1 Corso di Informatica (Programmazione) Lezione 10 (12 novembre 2008) Programmazione in Java: espressioni booleane e controllo del flusso (selezione)
Introduzione alla programmazione ll
Introduzione alla programmazione lll
DAL PROBLEMA ALL'ALGORITMO Problemi e Programmi Paolo Amico
Corso di Informatica A.A Corso di Informatica Laurea Triennale - Comunicazione&Dams Dott.ssa Adriana Pietramala Dott.ssa.
Ulteriori Abilità Informatiche
Fondamentidi Programmazione Corso: Fondamenti di Programmazione Classe: PARI-DISPARI Docente: Prof. Luisa Gargano Testo: Aho, Ulman, Foundations of Computer.
ITERAZIONE e RICORSIONE (eseguire uno stesso calcolo ripetutamente)
Unità Didattica 1 Algoritmi
Laboratorio di Calcolo I 1) Introduzione Università Roma Tre Corso di Studi in Fisica AA 2002/03.
Strutture di controllo in C -- Flow Chart --
CAPITOLO 7.
Fondamenti di Informatica Algoritmi
Lezione II Laboratorio di Programmazione. Sito del corso Lo trovate a:
Informatica a.a. 2009/2010 Modulo B - Corso di Laurea Triennale in Tecnologie per la Conservazione ed il Restauro.
Programmazione in Java Claudia Raibulet
Elementi di Informatica
Elementi di Informatica Simone Scalabrin a.a. 2008/2009.
Lezione 6 Strutture di controllo Il condizionale
Università del Salento Facoltà di Ingegneria Corso di Basi di dati I a.a
Università del Salento Facoltà di Ingegneria Corso di Basi di dati I a.a
Algoritmi e linguaggi per bioinformatica – MODULO ALGORITMI (2010/2011) Laurea magistrale in Bioinformatica e biotecnologie mediche.
Architettura degli Elaboratori
Fondamenti di Informatica e Informatica di base Prof.ssa Elisa Tiezzi
Programma di Informatica Classi Prime
Algoritmi e Strutture dati a.a. 2013/2014 Informazioni sul corso
Algoritmi e Strutture dati a.a. 2012/2013 Informazioni sul corso Dr Maria Federico.
Corso di Fisica Generale II (L-Z) 1mo modulo ing. Civile - ambientale
Algoritmi e Strutture Dati Introduzione agli algoritmi
Algebra di Boole.
Introduzione a Javascript
Fondamenti dell’Informatica A.A Prof. Vincenzo Auletta1 Presentazione del Corso Fondamenti dell’Informatica Docente Prof. Vincenzo Auletta.
Informatica B Allievi Elettrici - AA Fondamenti della programmazione in linguaggio C (II) Istruzioni e strutture di controllo.
Informatica 4 Funzioni. FUNZIONE: definizione MATEMATICA Relazione (o applicazione) binaria tra due insiemi A e B che associa a ogni elemento di A un.
1 Fabio Scotti – Università degli Studi di Milano Fabio Scotti ( ) Laboratorio di programmazione per la sicurezza Valentina Ciriani ( )
13 ottobre Decisioni F. Bombi 13 ottobre 2002.
PRIMI ELEMENTI DI PROGRAMMAZIONE
Linguaggio C: Le basi Stefano Cagnoni e Monica Mordonini
1 Metodologie di Programmazione §tecniche per la programmazione orientata ad oggetti §esemplificate utilizzando il linguaggio Java §testo di riferimento.
1 Metodologie di Programmazione §tecniche per la programmazione orientata ad oggetti §esemplificate utilizzando il linguaggio Java §testo di riferimento.
Algoritmi e Programmazione (in C) Stefano Cagnoni e Monica Mordonini
Informatica e Informatica di Base
Lezione n. Parole chiave: Corso di Laurea: Insegnamento: Docente: A.A Salvatore Cuomo La ricorsione 15 Approccio ricorsivo, esercizi sulla.
Transcript della presentazione:

Fondamenti di Programmazione Classe 2 (matricole congrue 1 mod 3) Docente: Prof. Luisa Gargano

Finalità: basi teoriche della programmazione Testo: Aho, Ulman, Foundations of Computer Science –C Edition W.H. Freeman and Company, NY, 1994

Informazioni Pratiche ORARIO: Martedì 16:00-18:00, Venerdì 9:00-11:00 N.B.: Tutte le lezioni sono ugualmente importanti! SITO WEB: http://www.dia.unisa.it/professori/lg/FP.html di riferimento per il materiale relativo al corso - copie delle slides, esercizi, - date delle prove, - comunicazioni varie, - etc.

Suggerimenti Avere già le slides a disposizione a lezione EVITARE di lasciare accumulare il lavoro Studiare volta per volta Chiarire i dubbi di volta in volta Fare gli esercizi

Prove di Esame Prova scritta con esercizi e teoria (nessun materiale ammesso) Eventuale prova orale Requisito minimo: 40% del totale

Efficienza di programmi Strutture dati elementari (liste, alberi) Progamma sintetico Tecniche di programmazione (iterative e ricorsive) Efficienza di programmi Strutture dati elementari (liste, alberi) Automi finiti

Elementi di base per semplici algoritmi e programmi Programmazione: Lavoro che si fa per costruire sequenze di istruzioni (operazioni) adatte a svolgere un dato calcolo INPUT: dati iniziali INPUT: x,y,z AZIONI esempio: Somma x ed y Somma z al risultato OUTPUT: risultato OUTPUT: x+y+z Algoritmo: Sequenza di azioni per svolgere il calcolo Programma: Algoritmo espresso in notazione formale (linguaggio di programmazione) Creazione programma: Fase 1 = algoritmo Fase 2 = implementazione in dato linguaggio (C) SCOPO del CORSO: Elementi di base per semplici algoritmi e programmi

Riepilogo del linguaggio C: Espressioni Espressione: formula (regola di calcolo) che specifica sempre un valore Esempio: espressione algebrica: z=x* y, (x+3)/5

Riepilogo del linguaggio C: Espressioni Espressione: formula (regola di calcolo) che specifica sempre un valore Esempio: espressione algebrica: z=x* y, (x+3)/5 Espressione composta da: Operatori Operandi (costanti, variabili,…)

Riepilogo del linguaggio C: Espressioni Espressione: formula (regola di calcolo) che specifica sempre un valore Esempio: espressione algebrica: z=x* y, (x+3)/5 Espressione composta da: Operatori Operandi (costanti, variabili,…) Operatori Algebrici: +, -, *, /, - unario, ++, --, % ( i%j= i modulo j= resto di i diviso j)

Riepilogo del linguaggio C: Espressioni Espressione: formula (regola di calcolo) che specifica sempre un valore Esempio: espressione algebrica: z=x* y, (x+3)/5 Espressione composta da: Operatori Operandi (costanti, variabili,…) Operatori Algebrici: +, -, *, /, - unario, ++, --, % ( i%j= i modulo j= resto di i diviso j) Operatori Logici: AND (&&), OR (||), NOT (!), (su variabili booleane - valore vero/falso) x AND y VERO se e solo se x,y VERE x OR y FALSO se e solo se x,y FALSE NOT x VERO se e solo se x FALSA

Espressioni Operatori di confronto: Uguale “==“: x==y da VERO sse x e y hanno stesso valore Diverso “!=“: x!=y da VERO sse x e y hanno dalori diversi Minore “<“ Minore o Uguale “<=“ Maggiore “>” Maggiore o uguale “>=“

ISTRUZIONI Assegnamento: x=E, Calcola il valore dell’espressione E e lo assegna alla variabile x Esempio: x=x+y calcola il valore di x+y e lo assegna ad x se x vale 5 e y vale 3, x=x+y da ad x valore 8

ISTRUZIONI Assegnamento: x=E, Calcola il valore dell’espressione E e lo assegna alla variabile x Esempio: x=x+y calcola il valore di x+y e lo assegna ad x se x vale 5 e y vale 3, x=x+y da ad x valore 8 Istruzioni Strutturate: 1) Composizione di Istruzioni: Esegui I1, quando e’ terminata esegui I2, quando e’ terminata … esegui Im. x=1; y=2; x=x+y; (x vale 3) y=x*y (y vale 6)

ISTRUZIONI Strutturate 2) Istruzioni Condizionali: If (C) I’ else I’’; C condizione, I’ ed I’’ composizioni di istruzioni Es. Poni z=0 se x<=y; poni z=x-y se x>y if (x<=y) z=0 else z=x-y

ISTRUZIONI Strutturate 2) Istruzioni Condizionali: If (C) I’ else I’’; C condizione, I’ ed I’’ composizioni di istruzioni Es. Poni z=0 se x<=y; poni z=x-y se x>y if (x<=y) z=0 else x=x-y Poni z=0 se x<=y; altrimenti lascia il valore di z inalterato if (x<=y) z=0 If (C) I;

x y 1 2 1+2=3 3 1+2+3=6 … n 1+2+…+n Istruzioni Ripetitive for (x=1, x<=n, x++) I; I e’ una composizione di istruzioni Poni x=1 esegui I Modifica x (x=2), esegui I … Modifica x (x=n), esegui I y=0; for (x=1, x<=n, x++) y=y+x; x=1 x y 1 2 1+2=3 3 1+2+3=6 … n 1+2+…+n FALSO, ESCI x<=n VERO I x++

x y 1 2 1+2=3 3 1+2+3=6 … n 1+2+…+n while ( C ) I; C e’ una condizione, I e’ una composizione di istruzioni x=1; y=0; while (x<=n) {y=y+x; x++} Falso, ESCI C Vero x y 1 2 1+2=3 3 1+2+3=6 … n 1+2+…+n I

y x 1 2 1+2=3 3 1+2+3=6 4 … 1+2+…+n n+1 (>n) do I while (C); x=1; do y=y+x; x++ while (x<=n) I Falso, ESCI C Vero y x 1 2 1+2=3 3 1+2+3=6 4 … 1+2+…+n n+1 (>n) n=0?

Scegliere astrazione: definire un Insieme di dati che rappresentano la realta’ (modello di dati) Scegliere rappresentazione della informazione (struttura dati) Algoritmo e programma Risolvere problema Es. Archivio impiegati contiene insieme di dati rilevanti (astrazione) su ogni impiegato Rilevanti: Nome, stipendio, mansione Non rilevanti: altezza, peso, colore occhi, colore capelli

Tipi di dati Variabile: e’ identificata da un nome ha associato un tipo (intero, reale,…) si possono conservare solo oggetti di tale tipo Tipi Base (in C): intero (int), reale (real), carattere (char) Definizioni di variabili int x definisce x come variabile di tipo intero

Definizioni di Variabili ARRAY formato da componenti dello stesso tipo le componenti sono individuate da un indice int A[n] :array di n componenti di tipo intero A[0] A[1] A[2] … A[n-1] Si accede ad una componente alla volta specificando l’indice int X[5] X[0]=10; X[1]=7; X[2]=4; X[3]=3; X[4]=8; Crea l’array di interi X: 10 7 4 3 8

Es. cerca il numero di una componenti di un array A[n] avente valore w. idea: confronta w con A[0], A[1],… finche’ non hai esaminato tutto l’array, incrementa contatore ad ogni confronto positivo int A[n] int c=0; for(i=0,i<n,i++) if (A[i]==w) c++;} Assumiamo n=5 e w=3 A[0]=3 A[1]=2 A[2]=3 A[4]=5 A[n-1]=A[5]=2 c=0 A[0]=w=3 , c=1

Es. cerca il numero di una componenti di un array A[n] avente valore w. idea: confronta w con A[0], A[1],… finche’ non hai esaminato tutto l’array, incrementa contatore ad ogni confronto positivo int A[n] int c=0; for(i=0,i<n,i++) if (A[i]==w) c++;} Assumiamo n=5 e w=3 A[0]=3 A[1]=2 A[2]=3 A[4]=5 A[n-1]=A[5]=2 i=1 A[1]!=3 c=1

Es. cerca il numero di componenti di un array A[n] avente valore w. idea: confronta w con A[0], A[1],… finche’ non hai esaminato tutto l’array, incrementa contatore ad ogni confronto positivo int A[n] int c=0; for(i=0,i<n,i++) if (A[i]==w) c++;} Assumiamo n=5 e w=3 A[0]=3 A[1]=2 A[2]=3 A[3]=5 A[n-1]=A[4]=2 A[0]=w A[1]!=w A[2]=w A[3]!=w i=4=n-1 c=1 c=1 c=2 c=2 A[i]!=w c=2 i++ i++ i++ i++ i++, i=n, esci

STRUCT Permette di “unire” elementi di tipi differenti. Struct S {T1 M1; T2 M2; … Tn Mn} Definisce una struttura con n campi (M1, M2, …, Mn) Di tipo T1,T2,…,Tn, rispettivamente. Es. Vogliamo descrivere persone usando 3 campi: (NOME, COGNOME, DATA-NASCITA)

STRUCT Es. Vogliamo descrivere persone usando 3 campi: (NOME, COGNOME, DATA-NASCITA) 1) typedef char alfa[10] definisce il tipo alfa come un array di 10 caratteri 2) Struct data {int giorno; int mese; int anno} 3) Struct persona {alfa cognome; alfa nome; data data-nascita} Struct persona P P= (Mario, Rossi,(10,3,1980))

STRUCT La componente i-ma di nome Mi della struttura S, S=(M1,…,Mi,…,Mn), si indica con S.Mi Es. Struct persona P= (Mario, Rossi,(10,03,1980)) P.nome e’ l’array contenete Mario P.nome[1] e’ il carattere a P.data-nascita e’ la struttura di tipo data (10,3,1980) P.data-nascita.mese e’ l’intero 3

E’ possibile combinare array e strutture Es. Array di struct di tipo persona persona A[n] array di n componenti A[0],…,A[i],…,A[n-1] A[i] e’ una struct di tipo persona

E’ possibile combinare array e strutture Es. Array di struct di tipo persona persona A[n] array di n componenti A[0],…,A[i],…,A[n-1] A[i] e’ una sruct di tipo persona Cerca il numero di persone nate a maggio {int c; c=0; for(i=0,i<n,i++) if (A[i].data-nascita.mese==5) c++;}

PUNTATORI Una variabile di tipo puntatore contiene un indirizzo di memoria int x *p Definisce p come un puntatore alla variabile di tipo intero x P x

PUNTATORI Una variabile di tipo puntatore contiene un indirizzo di memoria int x *p definisce p come un puntatore alla variabile di tipo intero x P=&x assegna a p l’indirizzo di memoria di x y=*p assegna a y il contenuto della variabile puntata da p Es. {p=&x; y=*p} risulta valore di x = valore di y