Informatica B. Sezione D. Scuola di Ingegneria Industriale Laurea in Ingegneria Energetica Laurea in Ingegneria Meccanica



Documenti analoghi
Informatica B. Sezione D. Scuola di Ingegneria Industriale Laurea in Ingegneria Energetica Laurea in Ingegneria Meccanica

Breve riepilogo della puntata precedente:

Definire all'interno del codice un vettore di interi di dimensione DIM, es. int array[] = {1, 5, 2, 4, 8, 1, 1, 9, 11, 4, 12};

Caratteri e stringhe Esercizi risolti

Funzioni in C. Violetta Lonati

Esame del 3 febbraio 2010

Corso di Fondamenti di Informatica

Corso di Informatica Medica Esercitazione 1I ! Alessandro A. Nacci - alessandronacci.com

[MANUALE VISUAL BASIC SCUOLA24ORE PROF.SSA PATRIZIA TARANTINO] 14 dicembre 2008

Algoritmi di Ricerca. Esempi di programmi Java

Introduzione al linguaggio C Gli array

Vettori Algoritmi elementari di ordinamento

Le stringhe. Le stringhe

Le funzioni in C. I programmi C sono costituiti da definizioni di variabili e funzioni.

Linguaggio C - Stringhe

Programmazione C Massimo Callisto De Donato massimo.callisto@unicam.it

Esempio: Array di struct

10 - Programmare con gli Array

RICERCA DI UN ELEMENTO

Strutture. Strutture e Unioni. Definizione di strutture (2) Definizione di strutture (1)

Matematica - SMID : Programmazione Febbraio 2009 FOGLIO RISPOSTE

OTTAVA ESPERIENZA DI LABORATORIO. L elaborazione dei files in C

Corso di Informatica Corso di Laurea in Ingegneria Gestionale a.a Secondo Compitino 17 Dicembre 2005

Esempio: dest = parolagigante, lettere = PROVA dest (dopo l'invocazione di tipo pari ) = pprrlogvgante

Programmazione I / Informatica generale Prova scritta 11 Giugno 2008

Introduzione alla programmazione in C

INFORMATICA - I puntatori Roberta Gerboni

ESAME SCRITTO DI ELEMENTI DI INFORMATICA E PROGRAMMAZIONE. 27 Gennaio 2015

Gli array. Gli array. Gli array. Classi di memorizzazione per array. Inizializzazione esplicita degli array. Array e puntatori

MATLAB. Caratteristiche. Dati. Esempio di programma MATLAB. a = [1 2 3; 4 5 6; 7 8 9]; b = [1 2 3] ; c = a*b; c

Lezione 5. Fogli di calcolo

Algebra di Boole: Concetti di base. Fondamenti di Informatica - D. Talia - UNICAL 1. Fondamenti di Informatica

3. La sintassi di Java

Studente (Cognome Nome): Corso di Informatica Corso di Laurea in Ingegneria Gestionale a.a Secondo Compitino 21 Dicembre 2006

Esercizi di programmazione in C

EXCEL FUNZIONI PRINCIPALI

ESERCIZI DI PROBLEM SOLVING E COMPOSIZIONE DEI DIAGRAMMI DI FLUSSO per le classi terza

Fondamenti di Informatica 2

Per scrivere una procedura che non deve restituire nessun valore e deve solo contenere le informazioni per le modalità delle porte e controlli

Fondamenti di Informatica T-1, 2009/2010 Modulo 2 Prova d Esame 5 di Giovedì 15 Luglio 2010 tempo a disposizione 2h30'

ESAME SCRITTO DI ELEMENTI DI INFORMATICA E PROGRAMMAZIONE. 9 Settembre 2015

Java:Struttura di Programma. Fabio Scanu a.s. 2014/2015

Gian Luca Marcialis studio degli algoritmi programma linguaggi LINGUAGGIO C

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 2

Arduino: Programmazione

Allocazione dinamica della memoria - riepilogo

Quotazione compareto( ) Quotazione piurecente( ) Quotazione Quotazione Quotazione non trovato count( )

Calcolare il massimo di una lista

PROBLEMA DELLA RICERCA DI UN ELEMENTO IN UN ARRAY E ALGORITMI RISOLUTIVI

Record in C: il costruttore struct.

Esercitazione Informatica I AA Nicola Paoletti

Inizializzazione, Assegnamento e Distruzione di Classi

Università di Torino Facoltà di Scienze MFN Corso di Studi in Informatica. Programmazione I - corso B a.a prof.

void funzioneprova() { int x=2; cout<<"dentro la funzione x="<<x<<endl; }

La selezione binaria

LABORATORIO DI PROGRAMMAZIONE 1 CORSO DI LAUREA IN MATEMATICA UNIVERSITÀ DEGLI STUDI DI MILANO V Indice

Scrivere uno script php che, dato un array associativo PERSONE le cui chiavi sono i

Concetto di Funzione e Procedura METODI in Java

Studente (Cognome Nome): Corso di Informatica Corso di Laurea in Ingegneria Gestionale a.a Primo scritto 11 Gennaio 2008

Corso di Laurea in Ingegneria Gestionale Esame di Informatica a.a settembre 2011

Esercitazione 7. Procedure e Funzioni

puntatori Lab. Calc. AA 2007/08 1

Corso di Laurea in Ingegneria Gestionale Esame di Informatica - a.a luglio 2013

Laboratorio di Programmazione 1. Docente: dr. Damiano Macedonio Lezione 18 31/03/2014

PROGRAMMA SVOLTO DI INFORMATICA ANNO SCOLASTICO 2013/2014. DOCENTE: Villani Chiara

3 - Variabili. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

Codifica: dal diagramma a blocchi al linguaggio C++

Appello di Informatica B

Lezione 8. La macchina universale

4. Operazioni elementari per righe e colonne

Ricerche, ordinamenti e fusioni. 5.1 Introduzione. 5.2 Ricerca completa

Linguaggio C: Array Valeria Cardellini

Lab 11 Gestione file di testo"

Cosa è un foglio elettronico

Matlab: Strutture di Controllo. Informatica B

(Esercizi Tratti da Temi d esame degli ordinamenti precedenti)

Introduzione al MATLAB c Parte 2

Corso di Laurea in Matematica

Introduzione al Linguaggio C

Excel. Excel. Videata iniziale Fogli elettronici. Fogli elettronici. Come si inserisce un dato

Test Excel conoscenze di Base

Esercizio 1. Esercizio 1

Elementi di Architettura e Sistemi Operativi

ESERCIZIO 1 (Definizione funzioni passaggio parametri per copia)

DI D AGRA R MM M I M A BLOCC C H C I TEORI R A E D D E SERC R I C ZI 1 1

Fondamenti di Informatica e Laboratorio T-AB Ingengeria dell Automazione a.a. 2008/2009. Lab 13 File Binari

Tipi primitivi. Ad esempio, il codice seguente dichiara una variabile di tipo intero, le assegna il valore 5 e stampa a schermo il suo contenuto:

Dall Algoritmo al Programma. Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni

Plate Locator Riconoscimento Automatico di Targhe

Introduzione al Foglio Elettronico

Laboratorio di Informatica

15 febbraio Soluzione esame di geometria - 12 crediti Ingegneria gestionale - a.a COGNOME... NOME... N. MATRICOLA...

Lab 04 Istruzioni, cicli e array"

Esercizi sulla definizione di classi (Fondamenti di Informatica 1 Walter Didimo) Soluzioni

Richiesta pagina PHP (es: index.php)

ESEMPI DI QUERY SQL. Esempi di Query SQL Michele Batocchi AS 2012/2013 Pagina 1 di 7

Università degli Studi di Cassino Corso di Fondamenti di Informatica Puntatori. Anno Accademico 2010/2011 Francesco Tortorella

Le variabili. Olga Scotti

2. Spiegare brevemente qual è la funzione del compilatore e la sua importanza per il programmatore.

La gestione dell input/output da tastiera La gestione dell input/output da file La gestione delle eccezioni

Transcript:

Scuola di Ingegneria Industriale Laurea in Ingegneria Energetica Laurea in Ingegneria Meccanica Dipartimento di Elettronica, Informazione e Bioingegneria Informatica B Sezione D Franchi Alessio Mauro, PhD alessiomauro.franchi@polimi.it

Esercizio 24 2 Scrivere un programma che definisca un sequenza di numeri interi (=array) e la stampi a video, prima in ordine di inserimento, poi al contrario.

Esercizio 24 - Soluzione 3 In c una sequenza di numeri, caratteri è un array Un array è un gruppo di celle di memoria consecutive; Hanno tutte stesso nome e tipo; Per riferirsi a un elemento, si specificano: Il nome dell array La posizione dell elemento (indice) Formato: nomearray[posizione] Il primo elemento ha indice 0 L n elemento dell array v è v[n-]

Esercizio 24 - Soluzione 4 Esempio di array: char parola[2]; È un array di 2 elementi di tipo char, vale a dire un vettore di 2 caratteri La lunghezza dell array è comunque decisa durante la compilazione del programma Non si usano variabili per specificare, nella dichiarazione, la dimensione degli array int i = 0; char parola[i] = {'a','b'}; Non compila!

Esercizio 24 - Soluzione 5 Un array si può dichiarare in diversi modi: questi sono tutti equivalenti! int main() { int i; //variabile contatore per i cicli for /*questi sono tre modi identici di dichiarare un array*/ int seq[5] = {,4,2,6,0}; int seq[] = {7,3,,23}; int seq2[4]; seq2[0] = ; seq2[] = 0; seq2[2] = 90; seq2[3] = 4;

Esercizio 24 - Soluzione 6 Sugli array si lavora sempre elemento per elemento; ogni elemento è una normale variabile Esempio: stampa di un array int i, seq[5] = {,2,3,4,5}; for (i = 0; i < 5; i++ ) { printf("%d ", seq[i]); } Esempio: come inizializzo un array? int i; for (i = 0; i < 20; i++) a[i] = 0; Pongo tutti gli elementi del vettore a pari a 0;

Esercizio 24 - Soluzione 7 Il problema chiede di stampare gli array anche in ordine inverso. Utilizzo un ciclo for che parte dalla fine dell'array e arrivi all'inizio! L'indice i parte da 3 e non da 4 (l'ultimo elemento hai indice 3 perchè parto a contare da 0) for (i = 3; i >= 0; i-- ) { printf("%d ", seq[i]); } Scorro l'array al contrario, quindi ciclo fino a quando l'indice è pari a 0 (0 compreso!) Decremento l'indice

Esercizio 25 8 Scrivere un programma che definisca una sequenza di numeri di lunghezza massima MAXLEN definita a priori e ne calcoli il massimo, il minimo e il valore medio.

Esercizio 25 9 Anche in questo caso ci serve un array. Definisco prima anche una define per la lunghezza massima dell'array. #define MAXLEN 5 int main() { int arr[maxlen] = {,4,2,6,0}; Questa volta non è richiesto l'input da tastiera; inizializzo il mio array nel codice int max,min,i; float mean,sum; sum = arr[0]; max = arr[0]; min = arr[0]; Ricordatevi di inizializzare la variabile somma! Per calcolare il massimo e il minimo di un array inizializzo due variabili pari al primo elemento dell'array (che potrebbe essere sia il massimo che il minimo!)

Esercizio 25 0 Ora devo calcolare minimo, massimo e valore medio. Devo scorrere tutto l'array (del quale conosco la lunghezza): uso un ciclo for! Il primo elemento è già stato considerato, parto dal secondo, quindi i= for(i=; i<maxlen;i++) { sum +=arr[i]; if (arr[i]>max) max = arr[i]; if (arr[i]<min) min = arr[i]; } mean = sum/maxlen; Per calcolare la media devo prima di tutto sommare tutti gli elementi. += significa sum =sum +arr[i] Mantengo aggiornata la variabile max; se l'elemento attuale è maggiore del max attuale, aggiorno il max. Stesso discorso per il minimo Calcolo la media aritmetica printf("la media del vettore è %f\n",mean); printf("il massimo del vettore è %d\n",max); printf("il minimo del vettore è %d",min);

Esercizio 26, 27, 28 Scrivere un programma che legga una sequenza di numeri interi (- per terminare) e la stampa in ordine invertito. La lunghezza massima della sequenza deve essere minore od uguale a 50. (attenzione: cosa succede se l'utente inserisce 5 numeri?). Data una sequenza di caratteri, scrivere un programma che chieda all'utente di inserire un carattere da tastiera e verifichi se è presente nella sequenza. In caso positivo stampare a video l'indice della prima occorrenza, - altrimenti. Dato un array di caratteri non ordinato, ordinarlo in ordine crescente e stamparlo a video.

Esercizio 29 2 Scrivere un programma che definisca una matrice quadrata di interi di dimensione N e la stampi a video.

Esercizio 29 - Soluzione 3 Ripasso: un array è una collezione di elementi; sono tutti dello stesso tipo e hanno tutti lo stesso nome. Ha una sola dimensione (è tutto su una sola riga) quindi mi basta un solo indice per selezionare i vari elementi. Una matrice è un array con due dimensioni, le righe e le colonne. Quindi mi servono due indici per selezione un elemento, la riga e la colorra. E' come la battaglia navale!

Esercizio 29 - Soluzione 4 Definisco la mia matrice: #include <stdio.h> #define ROW 3 #define COL 3 Ho bisogno di due define, una per ciascuna dimensione int main() { int matrix[row][col] = {{0,,2},{3,4,5},{6,7,8}}; Ognuna di queste è una riga e va racchiusa tra graffe; le righe assieme vanno racchiuse tra graffe più esterne! La variabile matrix ha due dimensioni: uso due [ ] [ ] per specificarne la lunghezza massima

Esercizio 29 - Soluzione Devo stampare a video la matrice; la devo scansionare tutta. Avendo due dimensioni mi servono due cicli for, uno dentro l'altro; in questo modo quello più esterno scansiona le righe, quello più interno le colonne 5 Il ciclo esterno fissa la riga attuale: l'indice i for(i=0;i<row;i++) { Il ciclo esterno, avendo fissato la riga, la for(j=0;j<col;j++) scansiona tutta, colonna per colonna: l'indice j printf("%d\t",matrix[i][j]); printf("\n"); } \t inserisci quattro spazi bianchi return 0; Notate la sua posizione subito dopo il ciclo interno. Quando ho stampato a video tutta una riga, vado a capo e stampo la riga successiva!

Esercizio 30 Scrivere un programma che definisca una matrice quadrata di dimensione N e stampi a video se la matrice è simmetrica o no. (Prima pensate all'algoritmo, poi pensate se può essere ottimizzato in qualche modo) 6

Esercizio 3 Scrivere un programma che definisca una stringa di lunghezza LEN e la stampi a video prima normale e poi al contrario. (Ricordatevi che una stringa è un array di caratteri!) 7

Esercizio 3 Una stringa è un array di char, terminata dal carattere speciale \0 Per definire una stringa ci sono due modi totalmente equivalenti: 8 char c[len] = {'H','e','l','l','o','\0'}; char c[len] = "Hello world"; Come un vero e proprio array, e devo specificare io stesso il carattere di terminazione \0 Con i doppi apici stringa, non serve in questo specificare il \0 Essendo a tutti gli effetti un array, si lavora come sugli array, quindi elemento per elemento.

Esercizio 3 9 Ad esempio, stampare una stringa, due modi differenti ma con medesimo risultato: for(i=0; i<len;i++) { printf("%c",c[i]); } i = 0; while(c[i]!='\0') { printf("%c",c[i]); i++; } printf("la stringa è: %s\n",varstringa); %s denota una stringa; questo stampa tutta la stringa, senza doverla scorrere elemento per elemento a mano

Esercizio 32, 33, 34 2 0 Scrivere un programma che chieda all'utente di inserire una parola e la ristampi a video con tutti i caratteri mauiscoli. Scrivere un programma che verifichi se due stringhe inserite dall'utente da tastiera sono uguali. Creare un registro di cognomi. L'utente da tastiera può inserire un nuovo cognome (la lista non deve contenere duplicati), leggere la lista di tutti i cognomi inseriti e verificare se un cognome esiste, restituendone a video l'indice.