Array multidimensionali e stringhe

Documenti analoghi
Puntatori e array. Violetta Lonati

C: panoramica. Violetta Lonati

Introduzione al linguaggio C Puntatori

ARRAY DI PUNTATORI. ARRAY DI PUNTATORI Non ci sono vincoli sul tipo degli elementi di un vettore Possiamo dunque avere anche vettori di puntatori

Indirizzi e puntatori

Non ci sono vincoli sul tipo degli elementi di un vettore Possiamo dunque avere anche vettori di

Linguaggio C: Array Valeria Cardellini

Tipi strutturati in C. Stringhe

Array. Aggragati di variabili omogenee...

definisce un vettore di 4 puntatori a carattere (allocata memoria per 4 puntatori)!

Esercitazione di Reti degli elaboratori

ARRAY E TYPEDEF. A volte è utile definire un nuovo tipo di dato come array. Si usa la solita sintassi del linguaggio C

Cicli annidati ed Array multidimensionali

Programmazione a Oggetti e JAVA. Prof. B.Buttarazzi A.A. 2012/2013

Lezione 8: Stringhe ed array multidimensionali

Linguaggio C. Vettori, Puntatori e Funzioni Stringhe. Università degli Studi di Brescia. Prof. Massimiliano Giacomin

I tipi strutturati e i record in C++

Università degli Studi di Cassino Corso di Fondamenti di Informatica Tipi strutturati: Array. Anno Accademico 2010/2011 Francesco Tortorella

Corso Programmazione

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

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE. Array, matrici. Marco D. Santambrogio Ver. aggiornata al 21 Marzo 2013

Strutture dati. Operatori di incremento e decremento. Strutture di dati. Strutture di dati. ++ e -- Esempi. Vettori e matrici.

I puntatori. Un puntatore è una variabile che contiene l indirizzo di un altra variabile. puntatore

Array Tipi di dato semplici e strutturati strutturati array elementi omogenei numero d ordine indice lunghezza dimensione

Gli array. slides credit M. Poneti

Introduzione a Matlab

Tipi di dato strutturati: Array

Primi passi col linguaggio C

Tipi di dato strutturati: Array

Le Funzioni in C. Fondamenti di Informatica Anno Accademico 2010/2011. Corso di Laurea in Ingegneria Civile Politecnico di Bari Sede di Foggia

Gli Array. Dichiarazione di un array

Problema. Vettori e matrici. Vettori. Vettori

Matricola Nome Cognome Aula Fila (dalla cattedra) Posto (dalla porta)

Elementi di Informatica

Programmazione Procedurale in Linguaggio C++

Gli array Libro cap. 6 Moreno Marzol a Dipartimento di Informatica Scienza e Ingegneria (DISI) Università di Bologna

Laboratorio di Informatica I

I Vettori (Array) Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni

Le strutture. UNIVERSITÀ DEGLI STUDI DEL SANNIO Benevento DING DIPARTIMENTO DI INGEGNERIA

Puntatori in C. Fondamenti di Informatica. Daniele Loiacono

array: vettori, matrici e stringhe

Matrici (array bidimensionali)

Lezione 6: Array e puntatori

Elementi di Informatica A. A. 2016/2017

TIPI DI DATO. T = { D, {F 1,...,F n }, {P 1,...,P m } } Un tipo di dato T è definito come:

Fondamenti di Informatica 12. Linguaggio C -4

Introduzione al C Lez. 4

char *s; s = (char *) malloc(5*sizeof(char)); scanf( %s, s); Stringhe

Allocazione dinamica della memoria

Esercizio 1: parole nel testo

RICORSIONE, PUNTATORI E ARRAY. Quarto Laboratorio

Strutture dati e loro organizzazione. Gabriella Trucco

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE. Array e stringhe. Marco D. Santambrogio Ver. aggiornata al 6 Aprile 2016

PROGRAMMAZIONE AVANZATA JAVA E C

Gli array, le stringhe e le strutture

Fondamenti di Programmazione

Introduzione al C Lez. 4. Allocazione Dinamica della memoria

Lezione 12: Allocazione Dinamica della Memoria

T = { D, {F 1,...,F n }, {P 1,...,P m } }

Unità Didattica 4 Linguaggio C. Vettori. Puntatori. Funzioni: passaggio di parametri per indirizzo.

Linguaggio C - Array. Array: tipo nome_array[num_elementi]

Fondamenti di Programmazione

Capitolo 5. Array e collezioni. c 2005 Pearson Education Italia Capitolo 5-1 / 61

9 - Array. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

passaggio di vettori come parametri di funzioni/procedure. I Quando si passa un vettore come parametro ad una funzione, in

Corso INFORMATICA ED ELEMENTI DI INFORMATICA MEDICA

Esercitazione 6. Array

STRINGHE: ARRAY DI CARATTERI STRINGHE: ARRAY DI CARATTERI. a p e \0

Introduzione ai puntatori in C Definizione

Le basi del linguaggio Java

Laboratorio di Calcolatori 1 Corso di Laurea in Fisica A.A. 2007/2008

Informatica B Esercitazione 5

Introduzione al linguaggio C Puntatori

Tutorato Elementi di Informatica 2018

Programmazione I - Laboratorio

Lab 2 Info B. Diego Carrera Ing. Gian Enrico Conti 7 Novembre 2016

Esercizi. La funzione swapint() primo tentativo

Tipi di dato strutturati: Array

Lezione 6 programmazione in Java

Introduzione al linguaggio C Funzioni

Fondamenti di Informatica 1. Prof. B.Buttarazzi A.A. 2010/2011

Strutturare il codice: sottoprogrammi

Allocazione dinamica della memoria

Stringhe di caratteri

ESERCIZIO allochi staticamente un vettore V1 di 10 float e allochi dinamicamente un vettore V2 di 10 double;

Dati strutturati in C

Linguaggio C - Stringhe

Puntatori. Obiettivi: Richiamare quanto noto sui puntatori dal modulo A Presentare l analogia tra puntatori e vettori e l aritmetica dei puntatori

Fondamenti di Informatica 2

Puntatori. Obiettivi: Richiamare quanto noto sui puntatori dal modulo A Presentare l analogia tra puntatori e vettori e l aritmetica dei puntatori

Struttura dei programmi e Variabili

Funzioni in C. Funzioni. Strategie di programmazione. Funzioni in C. Come riusare il codice? (2/3) Come riusare il codice? (1/3)

ELEMENTI DI INFORMATICA. Linguaggio C

Linguaggio C Vettori e stringhe

Transcript:

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

Array uni-dimensionali (richiami) Dichiarazione: int vet[100]; float x[50]; Gli elementi sono indicizzati da 0 a N 1 dove N è la dimensione dell array (N = 100 nei precedenti casi) vett[i] denota l elemento in posizione i del vettore i deve essere un numero intero compreso tra 0 e N 1 x[i] è una variabile di tipo float vet[i] è uunidimensionalena variabile di tipo int Negli array multi-dimensionali possiamo usare più indici per indicare un elemento

Esempio Si vogliono memorizzare i livelli di inquinamento in una città mediante delle sonde Nella città sono presente 100 sonde rilevatrici Ciascuna sonda rileva il livello di inquinamento ogni 15 minuti Come memorizzare le rilevazioni di una giornata? Una giornata ha 24 ore, quindi genera 24 4 = 96 rilevazioni Possiamo usare una tabella di 100 righe (una per ogni sonda) e 96 colonne (un per ogni rilevazione) Ci sono in totale 96 100 = 9600 dati misurati Per accedere ad una particolare rilevazione bisogna specificare L indice i della sonda 0 i 99 L indice j della rilevazione desiderata 0 j 95

Dichiarazione in C #define NSONDE 100 #define NRILIEVI 96 f l o a t l i v e l l o i n q u i n a m e n t o [NSONDE ] [ NRILIEVI ] ; La direttiva #define può essere usata per dichiarare costanti L uso delle quadre può essere esteso ad oltre 2 dimensioni. Ad esempio: double molte dimensioni[100][20][23][50]; Nel caso di due dimensione possiamo parlare di matrice Nell esempio NSONDE è convenzionalmente considerato il numero di righe e NRILIEVI il numero di colonne

Scorrere una matrice: esempio di stampa #d e f i n e RIGHE 50 #d e f i n e COLONNE 60 f l o a t m a t r i c e [ RIGHE ] [ COLONNE ] ; i n t main ( ) { i n t r, c ;... f o r ( r =0; r<righe ; r=r +1) { f o r ( c =0; c<colonne; c=c+1) { p r i n t f ( % f, m a t r i c e [ r ] [ c ] ) ; } p r i n t f ( / n ) ; } r e t u r n 0 ; }

Passaggio di un array multi-dimensionale ad una funzione Quando si dichiara una funzione che prende come parametro un array multi-dimensionale, solo la prima dimensione può essere lasciata non specificata Esempio: void stampa matrice(int mat[][colonne]); La dimensione specificata nel parametro formale deve coincidere con quella specificata nella dichiarazione del parametro attuale Approfondimenti... : come rappresentare un array bi-dimensionale con un array uni-dimensionale?

Esercizi 1. Scrivere una funzione che data una matrice di interi e un vettore di interi metta nella cella i del vettore la somma degli elementi pari della riga i della matrice: void somma righe(int matrice[][colonne], int dim, int vett[]); 2. Scrivere una funzione che scambi le righe e le colonne di una matrice 3. Scrivere una funzione che decida se due matrici di interi se sono uguali

Le stringhe in C Definizione (Stringa in C) In C una stringa è una sequenza contigua di caratteri che termina con il carattere \0. Le stringhe sono implementate come array di caratteri char Come per gli array la dimensione è decisa in fase di compilazione Il carattere di terminazione denota la porzione (inizale) dell array che contiene i caratteri significativi della stringa

Dichiarazione di una stringa Stringa con al massimo 99 caratteri (posizioni 0-98): char s t r i n g a [ 1 0 0 ] ; Inizializzazione di una stringa char m i o s a l u t o [ 1 0 0 ] = H e l l o world! ; Attenzione: l operatore = può essere usato in fase di inizializzazione ma non di assegnamento

Passaggio di una stringa ad una funzione Il passaggio di una stringa ad una funzione segue le regole dell array Attenzione: non è necessario passare la dimensione perchè c è il carattere di fine stringa Esempio: void stampa stringa(char str[]);

Esempio: Stampa di una stringa carattere per carattere void s t a m p a s t r i n g a ( char s [ ] ) { i n t i =0; while ( s [ i ]!= \0 ) { p r i n t f ( % c, s [ i ] ) ; i = i +1; } } Nota: normalmente si usa printf( %s, stringa);;

Calcolare la lunghezza di una stringa i n t s t r l e n ( char s [ ] ) { i n t l e n =0; while ( s [ l e n ]!= \0 ) { l e n = l e n + 1 ; } return l e n ; }

Alcune note L operatore == non può essere usato per stabilire se due stringhe contengono gli stessi carattero L operatore = non può essere usato per copiare il contenuto di una stringa in un altra Per facilitare queste operazioni si usa la librerira standard string.h

Esercizi 1. Scrivere una funzione che decida se due stringhe sono identiche 2. Scrivere una funzione che decida se una stringa contiene almeno una vocale minuscola 3. Scrivere una funzione che decida se una stringa ha più di tre consonanti consecutive