1 Informatica Generale Susanna Pelagatti Ricevimento: Mercoledì ore 14.30-17.30 presso Dipartimento di Informatica, Via Buonarroti,

Slides:



Advertisements
Presentazioni simili
INFORMATICA Altre Istruzioni di I/O
Advertisements

Informatica Generale Marzia Buscemi
LINGUAGGIO DI PROGRAMMAZIONE C
INFORMATICA Algoritmi fondamentali
Informatica Generale Susanna Pelagatti
Informatica Generale Marzia Buscemi IMT Lucca
Nel C non esiste un dato primario di tipo stringa; queste sono rappresentate con un array monodimensionale di caratteri (tipo char). Così per definire.
Dati strutturati A. Ferrari.
Stringhe di caratteri In linguaggio C.
Algoritmi e Programmazione
Informatica Generale Marzia Buscemi
Informatica Generale Susanna Pelagatti
Informatica Generale Alessandra Di Pierro
Introduzione al linguaggio C Dr. Francesco Fabozzi Corso di Informatica.
Anno accademico Array e puntatori in C.
INFORMATICA Strutture iterative
Programmazione Procedurale in Linguaggio C++
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.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 1 Usa la tecnica del.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 1 Usa la tecnica del.
Tail recursion: esempio
Algoritmi Politecnico di Milano C Primi programmi Politecnico di Milano.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab 2 – Info B Marco D. Santambrogio – Riccardo Cattaneo –
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Stringhe e Puntatori Marco D. Santambrogio – Ver. aggiornata al 18 Marzo 2013.
Process synchronization
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Tipi di dati strutturati Marco D. Santambrogio – Ver. aggiornata al 4 Marzo 2013.
Laboratorio di Linguaggi P R I M O C O M P I T I N O Marco Tarini Università dellInsubria Facoltà di Scienze Matematiche, Fisiche e Naturali di Varese.
1 Corso di Informatica (Programmazione) Esercitazione 1 (26 novembre 2008)
1 Corso di Informatica (Programmazione) Lezione 13 (21 novembre 2008) Programmazione in Java: stringhe e array.
1 Corso di Laurea in Biotecnologie Informatica (Programmazione) Problemi e algoritmi Anno Accademico 2009/2010.
1 Corso di Informatica (Programmazione) Raffaella Rizzi DISCO Dipartimento di Informatica Sistemistica e Comunicazione Edificio U14 - primo piano - stanza.
1 Corso di Informatica (Programmazione) Esercitazione 3 (5 dicembre 2008)
Il linguaggio Fortran 90: 4. Array: Vettori e Matrici
Introduzione alla programmazione lll
Corso di Informatica A.A Corso di Informatica Laurea Triennale - Comunicazione&Dams Dott.ssa Adriana Pietramala Dott.ssa.
1 Implementazione di Linguaggi 2 Implementazione di Linguaggi 2 Federico Bernardi Type checking 2° parte Type checking 2° parte - Equivalenza di type expressions.
Informatica Generale Susanna Pelagatti
Struct, enum, Puntatori e Array dinamici
Strutture di controllo in C -- Flow Chart --
Esercizi C sui tipi definiti dall’utente
Politecnico di Milano Esercizi Stringhe Ricerca binaria.
Esercizi Puntatori, struct con campi puntatore, puntatori a struct, rapporto tra array e puntatori. FUNZIONI Passaggio di parametri per indirizzo, passaggio.
Politecnico di Milano Esercizi Preparazione alla prima prova intermedia.
File di testo, file binari
Esercizi C su array e matrici
Dichiarazioni e tipi predefiniti nel linguaggio C
I File.
Le funzioni.
Espressioni condizionali
Algoritmi e Programmazione (in C) Stefano Cagnoni e Monica Mordonini
Elementi di Informatica
Sistemi e Tecnologie Informatiche
Radix-Sort(A,d) // A[i] = cd...c2c1
Massimo Comun Divisore
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Array e stringhe Marco D. Santambrogio – Ver. aggiornata al 9 Agosto 2013.
Fopndamenti di programmazione. 2 La classe String Una stringa è una sequenza di caratteri La classe String è utilizzata per memorizzare caratteri La classe.
1Piero Scotto - C14. Finalità del corso Programma Materiale Requisiti Spendibilità 2Piero Scotto - C14.
Sviluppare un programma in C che, dato un array da 100 elementi interi caricato con numeri casuali compresi tra [10,100], sia in grado di cercare il valore.
Tail recursion: esempio
CORSO DI PROGRAMMAZIONE II
1 Il linguaggio C Precisazioni sull’esperienza in laboratorio.
1 Sistemi Operativi … e altro. Susanna Pelagatti Dipartimento di Informatica, Via Buonarroti, 2 stanza 346 DE Tel
Operatori di incremento e decremento
1 Informatica Generale Alessandra Di Pierro Ricevimento: Giovedì ore presso Dipartimento di Informatica, Via Buonarroti,
1 Sommario lez 1 Concetti principali, domande ed esercizi Concetti principali –algoritmo, programma –struttura di controllo: condizionale (if …), iterativa.
1 Informatica Generale Marzia Buscemi Ricevimento: Giovedì ore , Dipartimento di Informatica, stanza 306-PS o per posta.
Linguaggio C: Le basi Stefano Cagnoni e Monica Mordonini
1 Informatica Generale Marzia Buscemi Ricevimento: Giovedì ore , Dipartimento di Informatica, stanza 306-PS o per posta.
“ Pseudocodice ” Un programma per computer lavorerà su in insieme di “ variabili ” contenenti i dati del problema, soluzioni intermedie, soluzioni finali.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Algoritmi e basi del C Marco D. Santambrogio – Ver. aggiornata al 24 Agosto 2015.
Transcript della presentazione:

1 Informatica Generale Susanna Pelagatti Ricevimento: Mercoledì ore presso Dipartimento di Informatica, Via Buonarroti, 2 stanza 346 DE Tel o per posta elettronica Pagina web del corso: /

2 La scorsa lezione … Abbiamo introdotto le strutture dati array Abbiamo iniziato a vedere un esempio di utilizzo di array : lalgoritmo per ordinare N numeri Oggi : –completiamo lesempio –parliamo di record –riprendiamo il discorso della codifica dei programmi in C

3 Usiamo gli array... Costruiamo una versione dellalgoritmo che ordina N numeri che usa un array int X[N] per memorizzare i numeri della sequenza da ordinare Vediamo prima 2 sottoalgoritmi –leggi_Na che legge i numeri da ordinare e li inserisce nellarray X –max_Na che trova il valore del massimo numero in X e la sua posizione

4 Esempio di leggi_Na 8 Inizialmente X è vuoto Passo 1, leggo il primo numero I=0Leggo 8 e lo scrivo nella posizione 0, cioè X[0]=8 Termina Sequenza di numeri da leggere : 8, 1, 9, 7 quindi N=4 Passo 2, leggo il secondo numero 81 I=1Leggo 1 e lo scrivo nella posizione 1, cioè X[1]= Passo 3, leggo il terzo numero I=2 Leggo 9 e lo scrivo nella posizione 2, cioè X[2]=9 819 Passo 4, leggo il quarto numero I=3Leggo 7 e lo scrivo nella posizione 3, cioè X[3]=7 X = posizione I=4, quindi I< N non è più verificata

5 I < N ? Inizio Fine Si No Leggi il nuovo numero in X[I] Sottoalgoritmo per la lettura di N numeri (leggi_Na) Leggi il valore di N I = 0 I = I + 1 Strutture dati: Int X[N] // la sequenza Input : vuoto (void) Output : Int X[N] // la sequenza letta Int N // la sua lunghezza

6 Esempio di max_Na Passo 1, esamino X[0], I=0 m = 8Imax = 0 Termina Trova il valore m del massimo in X e la sua posizione Imax, la lunghezza di X è N=4 Passo 2, esamino X[1], I= Passo 3, esamino X[2], I= Passo 4, esamino X[3], I=3 X = posizione I=4, quindi I< N non è più verificata (Valore e posizione del massimo trovato fra gli elementi già esaminati) m = 8Imax = 0 m = 9Imax = 2 m = 9Imax = 2

7 I < N ? Inizio Fine Si No Sottoalgoritmo per la trovare il massimo di N numeri in un array (max_Na) Imax = 0, I = 0 I = I + 1 Strutture dati: Int X[N] // la sequenza m = X[0] Input: Int X[N], Int N Output: Int m // il valore del massimo Int Imax // lindice del massimo m > X[i] ? Si No m = X[i], Imax = I

8 Ordinare N numeri interi N=4 Max_Na = 8 in posizione 1 Scambio la posizione 1 e 4 N=3 Max_Na = 7 in posizione 2 Scambio la posizione 1 e 3 N=2 Max_Na = 3 in posizione 2 Nessuno scambio 1378 Termina 1378 N=1

9 Ordinare N numeri interi (2) Algoritmo ordina_Na 1. Leggi il valore di N dallesterno 2. Leggi gli N numeri della sequenza nellarray X 3. Trova il maggiore (m, imax) fra i primi N numeri dellarray X (con max_Na ) 4. Scambia fra loro X[imax] e X [N] 5. Considera adesso solo i primi N-1 numeri dellarray (N=N-1) 6. Se N = 1 continua, altrimenti vai al passo 3 7. Stampa X, termina

10 N > 1 ? Inizio Fine Si No (X,N)=leggi_Na() (m,I) = max_Na(X,N) DF per il problema del ordinare di N numeri ( ordina_Na ) Strutture dati: Int X[N] // la sequenza T = X[N] X[N] = X[I] Input : vuoto (void) Stampa(X,Lung) X[I] = T N = N-1 Lung=N Output : vuoto (void) Scambio dei due valori

11 Record Finora abbiamo visto solo variabili di tipo intero Normalmente è possibile avere variabili di tipo diverso che rappresentano informazioni di natura diversa : –interi, reali … –caratteri (a,b, …) –sequenze di caratteri (dette stringhe, gatto, oggi piove ! …) I record sono aggregati di variabili di tipo diverso e permettono di definire nuovi tipi

12 Record (2) A cosa possono servire…... –A rappresentare le schede della biblioteca Nome Autore Cognome Autore Titolo Scaffale Posizione … altre informazioni ….. stringa intero Campi del record Costo reale

13 Record (3) Il tipo record scheda espresso in C struct scheda { char nome [100]; //stringa di al più //100 caratteri char cognome [100]; char titolo [300]; int scaffale ; int posizione ; double costo ; } ;

14 Record (4) //Come dichiaro che voglio //una variabile di tipo scheda struct scheda nuovo_libro; // come assegno valori ai diversi campi nuovo_libro.nome =Jorge" ; nuovo_libro.cognome =Amado" ; nuovo_libro.titolo =Dona Flor e i suoi due mariti" ; nuovo_libro.scaffale =8" ; nuovo_libro.posizione =356" ;

15 Record (5) Si possono definire array di record –questo può servire, ad esempio a definire linsieme delle schede di una biblioteca: struct scheda archivio[100000] –possiamo quindi formalizzare il nostro algoritmo stupido per la ricerca nello schedario

16 I < ? Inizio Fine Si No Ricerca stupida (ricerca) I = 0 I = I + 1 Strutture dati: struct scheda archivio // larray di schede Input : struct scheda archivio Output : la scheda cercata e un valore (si/no) che dice se cè Leggi Nome, Cognome e Titolo del libro cercato archivio[I].nome = Nome archivio[I].cognome = Cognome archivio[I].titolo = Titolo ? Si Fine No Lho trovata! Non lho trovata!

17 DF e programmi DF Codifica in un linguaggio di programmazione (C, Java etc) Programma Compilatore Input : programma Output : rappresentazione comprensibile alla macchina Eseguibile

18 DF e programmi (2) Leseguibile dipende dalla macchina che dobbiamo specializzare (es. processore Intel, o processore SUN), dal sistema operativo (es. Windows, Linux …) e dal linguaggio usato (es: C o Java) Gli eseguibili di alcuni linguaggi (come Java) contengono operazioni complesse che non possono essere eseguite direttamente! In questo caso si utilizza un programma interprete (es Java Virtual Machine) che realizza le operazioni elementari complesse

19 DF di max d > 0 ? Inizio Fine Leggi x e y Si No d = x - y Scrivi max è x Scrivi max è y

20 DF e programmi : max in C main() /* calcola max */ { int x, y, d; //def. Delle variabili scanf ("%d %d, &x, &y) ; //lettura x,y d = x - y ; if (d > 0) //scrittura risultati printf (il max è %d, &x) ; else printf (il max è %d, &y) ; return ; //terminazione }

21 I < N ? Inizio Fine Leggi i primi due numeri x1 e x2 e memorizzali nelle variabili a e b Si No Leggi il nuovo numero in a Scrivi max è m m = max(a,b) m = max(a,m) DF per il problema del massimo di N numeri (seconda versione) Leggi N I = 2 I = I + 1 Supponiamo N almeno 2

22 DF e programmi : max_N in C (1) main() /* calcola max_N */ { int m, i, a, b; i = 2 ; scanf ("%d %d, &a, &b); m = max(a,b); while (i < N) { scanf ("%d, &a) ; m = max(a,m); } printf (il max è %d, &m) ; return ; }

23 DF e programmi : max_N in C (2) int max(int x, int y) /* sottoprogramma che calcola max */ { int d; d = x - y ; if (d > 0) return x; else return y; }

24 DF e programmi : ordina_Na in C main() /* calcola max_N */ { int m, i, t, X[N], N, lung; leggi_Na (N, X) ; m = X[0]; lung = N ; while (N > 1) { max_Na(X,N,&m,&i) ; t = X[N]; X[N] = X[i] ; X[i] = t ; N = N - 1 ; } stampa_Na (X,lung) ; return ;}

25 Esercizi proposti Dare il DF per il sottoalgoritmo stampa_Na Trovare un algoritmo (e fornire il DF) per i seguenti problemi : –trovare la somma dei primi K numeri (K letto dallesterno) –trovare la media di una sequenza di numeri positivi (la sequenza viene letta dallesterno e si interrompe al primo numero negativo letto) –leggere una data (un record che indica giorno, mese ed anno) e stampare il numero di giorni passati dallinizio dellanno