i Vettori Alessandra Giordani Lunedì 15 aprile

Documenti analoghi
Stringhe in C. Alessandra Giordani Lunedì 23 aprile 2012

I/O da tastiera e direttive processore. Alessandra Giordani Lunedì 3 maggio

Corso di Informatica A.A

Nuovi tipi di dato e. Alessandra Giordani Lunedì 26 marzo

Array. Aggragati di variabili omogenee...

Puntatori e array. Tipo puntatore Vettori

PUNTATORI. Ivan Lanese

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

Esercitazione di Reti degli elaboratori

Caratteri e stringhe

Le stringhe. Le stringhe sono sequenze di caratteri,

Strutture. Array dei nomi degli esami (MAX ESAMI è il massimo numero degli esami). Array con i crediti degli esami.

Caratteri e stringhe

Le stringhe. Le stringhe sono sequenze di caratteri,

Corso di Informatica A.A

I puntatori. Il C ci permette di conoscere tale indirizzo, ovvero di determinare dove la variabile sia stata effettivamente memorizzata.

Esercitazione 11. Liste semplici

Introduzione al C Lez. 3. Puntatori

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

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

JAVA. import java.util.*; #include <stdio.h> public static class test { int variable; private int variable; int main (int argc, char *argv[]) {

Puntatori. Fondamenti di Programmazione

Ingresso ed Uscita in C. Informatica 1 / 15

I tipi strutturati e i record in C++

ERRATA CORRIGE. void SvuotaBuffer(void); void SvuotaBuffer(void) { if(getchar()!=10) {svuotabuffer();} }

Lab 03 Scanf e tempo di vita delle variabili

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

Tipi derivati: Array

Tipi strutturati in C. Stringhe

puntatori Lab. Calc. AA 2006/07 1

Array k-dimensionali

I/O da tastiera + Alessandra Giordani Lunedì 2 maggio

Ingresso ed Uscita in C. Luca Abeni

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

Variabili intere, funzioni e input/ Alessandra Giordani Lunedì 19 marzo

Gli array. slides credit M. Poneti

Programmazione I - Laboratorio

I CARATTERI E LE STRINGHE

Variabili e tipi di. Alessandra Giordani Lunedì 11 aprile

Introduzione ai puntatori in C Definizione

Introduzione al linguaggio C Puntatori

Quando è necessario elaborare una certa quantità di dati omogenei si possono usare variabili indicizzate: int a0, a1, a2;

Introduzione al C. Lez. 2. Funzioni e Puntatori

Stringhe e allocazione dinamica della memoria

Lettura da tastiera e scrittura su monitor

Esercitazione 4. Comandi iterativi for, while, do-while

C: panoramica. Violetta Lonati

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE. Array e stringhe. Marco D. Santambrogio Ver. aggiornata al 28 O0obre 2014

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

Introduzione al C Lez. 4. Allocazione Dinamica della memoria

I costrutti del C. Strutture condizionali Strutture iterative Introduzione alle funzioni

Esercitazione 6. Array

Errori frequenti Cicli iterativi Array. Cicli e array. Laboratorio di Programmazione I. Corso di Laurea in Informatica A.A.

Laboratorio di Informatica

La Programmazione. Cos è la programmazione? Concetti preliminari

ELEMENTI DI INFORMATICA. Linguaggio C

C array. Problema: scrivere un programma che, ricevuto in input un intero n ed n interi positivi, li stampi in ordine inverso.

Esercizi per la preparazione. Alessandra Giordani Lunedì 13 maggio 2013

Allocazione Dinamica della Memoria

I puntatori. DD Cap.7 pp KP Cap.6 pp

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE. Puntatori. Marco D. Santambrogio Ver. aggiornata al 20 Aprile 2016

Applicando lo stesso meccanismo al tipo puntatore, possiamo dichiarare un array di puntatori:

array: vettori, matrici e stringhe

Introduzione al C. Lez. 2 Funzioni e Puntatori

Problema. Vettori e matrici. Vettori. Vettori

Linguaggio C: Stringhe Valeria Cardellini

La copia di un file. contare di quanti caratteri sia composto il file (e quindi determinare la dimensione del file di origine)

Una stringa di caratteri in C è un array di caratteri terminato dal carattere '\0' a p e \0

Array e Matrici. Perchè usare gli array?

Variabili e input/ Alessandra Giordani Lunedì 18 marzo

Dati strutturati in C

Inside C : Puntatori. Indirizzo: operatore & p = &v; x = a; Puntatori Referenziazione e Dereferenziazione Arrays

Corso di Informatica A.A

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

Introduzione al linguaggio C Puntatori

Introduzione al C Lez. 4

Puntatori in C. Fondamenti di Informatica. Daniele Loiacono

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

Informatica 1. Corso di Laurea Triennale in Matematica. Gianluca Rossi

Le strutture. Una struttura C è una collezione di variabili di uno o più tipi, raggruppate sotto un nome comune.

Programmazione C. Puntatori Array come puntatori

Array. Walter Didimo

Dati due punti sul piano calcolare la loro distanza

Laboratorio di Programmazione

Stringhe in C. Luca Abeni. Informatica Luca Abeni 1 / 10

Elementi di Informatica A. A. 2016/2017

Esercitazioni di Fondamenti di Informatica - Lez. 4 23/10/2018

&v restituisce l indirizzo della zona di memoria allocata per v.

Array e puntatori in C

Gestione dei File. Credits Prof. Campi

Introduzione al linguaggio C Puntatori

Sono variabili il cui valore corrisponde ad un indirizzo di memoria. Puntatori

APPELLO SCRITTO DI PROGRAMMAZIONE 1 CORSO DI LAUREA IN MATEMATICA UNIVERSITÀ DEGLI STUDI DI MILANO VI.2014

Transcript:

i Vettori Alessandra Giordani agiordani@disi.unitn.it Lunedì 15 aprile 2013 http://disi.unitn.it/~agiordani/

Dichiarazione di un Array La dichiarazione di un array di n elementi di tipo T causa l'allocazione contigua di n variabili di tipo T. Ad es: int myarr[7]; dichiara un array di 7 interi chiamato myarr. Il nome dell array (myarr) è un puntatore alla prima variabile / cella di memoria allocata L'indirizzo del 2 elemento dell'array e dato da myarr + 1 L'indirizzo del 3 elemento dell'array e dato da myarr + 2 e così via, ma lo vedremo meglio più avanti! Attenzione: il 1 elemento dell array ha indice 0, non 1!

Array e Puntatori In C gli array sono intrinsecamente legati al concetto di puntatore Per capire veramente come funzionano gli array (e per sfruttarli a dovere) bisogna capire i puntatori L'utilizzo dei puntatori (e dell'allocazione dinamica della memoria) consentono un uso molto più flessibile degli array MA LO VEDREMO PIU AVANTI QUANTO PARLEREMO DI PUNTATORI

Accesso ad elementi di array Le parentesi quadre [n] si utilizzano: Per dichiarare un array di un n elementi int a[10]; //n deve essere un intero! Per accedere al n-esimo elemento dell array Sia in lettura (se a dx di un = o in printf) Sia in scrittura (se a sx di un = o in scanf) a[5] = a[5] + 1;

Inizializzazione di un vettore Valori indefiniti in alcuni elementi dell array possono provocare errori difficili da rilevare Occorre inizializzare il vettore: Dichiarare l array static (gli elementi del vettore non inizializzati vengono posti a zero) Valori diversi possono essere specificati, facendoli seguire alla dichiarazione dell array, racchiusi fra parentesi graffe

Copia del vettore a in vettore b Non si può fare a=b Provate! Se dichiariamo b senza static.. Cosa stampa? Cosa succede al valore 4.5 assegnato 4 elemento di a?

Lettura di un vettore da stdin Mediante scanf() Interpreta gli spazi e gli acapo come separatori //o equivalentemente scanf( %d,&a[i]);

Dati n numeri trova il minimo Non è essenziale usare i vettori per implementare tale programma Avevamo visto lo stesso esempio con i flow chart Provare a farlo per casa Ma vediamo quale sarebbe il programma che trova il minimo in un vettore di numeri Il vettore è inizializzato in fase di dichiarazione Si potrebbe leggere i dati da stdin con scanf() O se fossero digit [0..9] con getchar

Dati n numeri trova il minimo Non occorre dichiarare la dimensione tra [] Ma specificando la dimensione n e un numero di elementi <n i rimanenti elementi verranno inizializzati a 0 se il vettore è dichiarato static conterrano valori a caso, altrimenti

Inverti una lista di numeri Supponiamo siano digit [0..9] usiamo getchar() conversione già vista sfruttando ascii Possiamo implementarlo SENZA usare i vettori? NO perché dobbiamo leggerli e memorizzarli tutti per poi stamparli in ordine inverso MENTRE il minimo lo calcolavamo mano a mano che li leggevamo

Inversione di un vettore Leggo dim numeri (dim<10) Li inserisco via via nel vettore a Inserisco in b gli elementi di a in ordine inverso Stampo vettori PARTIAMO DA 0

Esercizio: leggi in vettore e trova il massimo Scrivere un main che legga un vettore di interi lo memorizzi correttamente stampi il vettore letto stampi il valore massimo

Input di stringhe Queste considerazioni sono particolarmente delicate nel caso in cui vogliamo usare scanf per leggere stringhe La sequenza %s all'interno di un template consuma qualunque sequenza di caratteri che non contenga spazi Per leggere una stringa, dobbiamo prima avere allocato un buffer (cioe un array di caratteri) abbastanza capiente. Ad esempio: char buf [256]; // crea un buffer scanf("%s", buf); Se la stringa immessa dall'utente è piu lunga del buffer (nell'esempio la lunghezza massima è 255, tenendo conto del null character \0 ) abbiamo un errore di segmentation fault (violazione di accesso in memoria)