Fondamenti di Informatica

Slides:



Advertisements
Presentazioni simili
Puntatori Linguaggio C.
Advertisements

INFORMATICA Altre Istruzioni di I/O
Funzioni e procedure Ogni linguaggio di programmazione ad alto livello mette a disposizione del programmatore questi strumenti, ed il C non è da meno!
Uso avanzato di C.
Puntatori in C e C++.
LE FUNZIONI IN C Sommario 1 Introduzione 2 Moduli di programma in C
Liste di Interi Esercitazione. Liste Concatenate Tipo di dato utile per memorizzare sequenze di elementi di dimensioni variabile Definizione tipicamente.
Fondamenti di Informatica I CDL in Ingegneria Elettronica - A.A CDL in Ingegneria Elettronica - A.A Strutture dati dinamiche.
Fondamenti di Informatica I CDL in Ingegneria Elettronica - A.A CDL in Ingegneria Elettronica - A.A Strutture dati dinamiche.
Introduzione al linguaggio C
Introduzione al linguaggio C Dr. Francesco Fabozzi Corso di Informatica.
Argomenti dalla linea dei comandi Gli argomenti possono essere passati a qualsiasi funzione di un programma, compresa la main(), direttamente dalla linea.
Fondamenti di Informatica II Ingegneria Informatica / Automatica (A-I) Meccanica Prof. M.T. PAZIENZA a.a – 3° ciclo.
Esercizi su alberi binari
Tail recursion: esempio
Alberi binari Definizione della struttura dati: struct tree { };
Prof.ssa Chiara Petrioli -- Fondamenti di programmazione, a.a. 2009/2010 Corso di Fondamenti di programmazione a.a. 2009/2010 Prof.ssa Chiara Petrioli.
Esercizi su strutture dinamiche Fondamenti di Programmazione Canale AD a.a. 2009/2010.
Prof.ssa Chiara Petrioli -- Fondamenti di programmazione, a.a. 2009/2010 Corso di Fondamenti di Programmazione a.a.2009/2010 Prof.ssa Chiara Petrioli Corso.
Prof.ssa Chiara Petrioli -- corso di programmazione 1, a.a. 2007/2008 Corso di Programmazione 1 a.a.2007/2008 Prof.ssa Chiara Petrioli Corso di Laurea.
Informatica 2. Concetti fondamentali di programmazione Programmare vuol dire scrivere un algoritmo in un linguaggio che faccia funzionare un calcolatore.
Allocazione dinamica della memoria
Laboratorio di Linguaggi lezione VI: puntatori 2/3 Marco Tarini Università dellInsubria Facoltà di Scienze Matematiche, Fisiche e Naturali di Varese Corso.
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.
Esercizi su alberi binari
memoria gestita staticamente:
Struct, enum, Puntatori e Array dinamici
1 Strutture Dinamiche Corso di Informatica A Vito Perrone.
Esercizi FUNZIONI Passaggio di parametri per valore, variabili e tipi locali e globali, prototipo.
Esercizi di riepilogo sul linguaggio C: file, puntatori, liste
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.
I File.
Le funzioni.
1.Scrivere una funzione per cercare un numero x in una lista circolare di interi. La funzione deve restituire NULL se il numero non esiste. 2.Scrivere.
1 ListaDiElem Cancella( ListaDiElem lista, TipoElemento elem ) { ListaDiElem puntTemp; if( ! ListaVuota(lista) ) if( lista–>info == elem ) { puntTemp =
Corso di informatica Athena – Periti Informatici
2000 Prentice Hall, Inc. All rights reserved. Capitolo 10 (Deitel) Strutture, unioni ed enumerazioni Sommario Introduzione Definire le strutture.
Prof.ssa Chiara Petrioli -- Fondamenti di programmazione, a.a. 2009/2010 Corso di Fondamenti di programmazione a.a. 2009/2010 Prof.ssa Chiara Petrioli.
Unità Didattica 3 Linguaggio C
C. Gaibisso Programmazione di Calcolatori Lezione XXII La struttura di dati lista di variabili strutturate Programmazione di Calcolatori: le liste di.
Prof.ssa Chiara Petrioli -- corso di programmazione 1, a.a. 2007/2008 Corso di Programmazione 1 a.a.2007/2008 Prof.ssa Chiara Petrioli Corso di Laurea.
Esercizi su File.
Esercizi Liste.
Esercizi su File e Liste
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.
Grafi Rappresentazione mediante liste di adiacenza:
Tail recursion: esempio
Esercizi su alberi binari di ricerca
Alberi binari Definizione della struttura dati: struct tree { };
Prof.ssa Chiara Petrioli -- corso di programmazione 1, a.a. 2006/2007 Corso di Programmazione 1 a.a.2006/2007 Prof.ssa Chiara Petrioli Corso di Laurea.
Fondamenti di Informatica II Ingegneria Informatica / Automatica (A-I) Meccanica Prof. M.T. PAZIENZA a.a – 3° ciclo.
Ugo de'Liguoro - Informatica 2 a.a. 03/04 Lez. 5 Le strutture informative Corso di Informatica 2 a.a. 2003/04 Lezione 5.
1 Fabio Scotti ( ) Laboratorio di programmazione per la sicurezza Valentina Ciriani ( ) Laboratorio di programmazione Lezione 11 e 12 -
Esercitazioni su liste
#include void main() { int a,b,c,; float s, x,x1,x2,delta,alfa,beta; int num[3]; int i; printf("La forma classica dell'equazione di 2° grado è: a*x^2+b*x+c=0\n.
Fondamenti di Informatica 2 Ingegneria Informatica Docente: Giovanni Macchia a.a
Prof.ssa Chiara Petrioli -- corso di programmazione 1, a.a. 2006/2007 Corso di Programmazione 1 a.a.2006/2007 Prof.ssa Chiara Petrioli Corso di Laurea.
Fondamenti di Informatica II Ingegneria Informatica (A-I) Prof. M.T. PAZIENZA a.a – 3° ciclo.
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 Il linguaggio C Precisazioni sull’esperienza in laboratorio.
Il linguaggio C Puntatori e dintorni.
Copyright © Istituto Italiano Edizioni Atlas
APPUNTI SUL LINGUAGGIO C
Corso di Algoritmi e Strutture Dati APPUNTI SUL LINGUAGGIO C Esercizi su Alberi.
Il C `e un linguaggio di programmazione di uso generale, originariamente sviluppato per la scrittura del sistema operativo Unix, ed oggi disponibile su.
Conio.h contiene la dichiarazione di funzioni usate per richiamare alcune routine DOS di gestione del video e della tastiera. NECESSARIA PER system(‘’cls’’)
13. Strutture dati dinamiche Ing. Simona Colucci Informatica - CDL in Ingegneria Industriale- A.A
Linguaggio C: Funzioni e Puntatori Laboratorio di Programmazione Gruppo 1.
1 MODULO STRUTTURE DATI FONDAMENTALI: Strutture dinamiche classe 4° INDUSTRIALE INFORMATICA Focus on.
Transcript della presentazione:

Fondamenti di Informatica Riassunto Funzioni Passaggio di parametri Funzioni ricorsive Puntatori come valore di ritorno da funzione 17/04/2017

Esercitazione 5 Cosa vedremo oggi? Strutture Lista di strutture 17/04/2017

Strutture Cos’è una struttura? Una struttura è una collezione contenente una o più variabili, di uno o più tipi, raggruppate da un nome comune. Le strutture consentono di trattare come un unico oggetto un insieme di variabili correlate 17/04/2017

Strutture Come si definisce una struttura? Un punto nel piano cartesiano è definito da due valori: uno per le ascisse e l’altro per le ordinate. Definisco una struttura di tipo elemento Struct elemento{ float ascissa; float ordinata; }; typedef struct elemento Punto; Nella struttura deifnisco due variabili float struct elemento=Punto 17/04/2017

Strutture Come uso una struttura? Posso usare una struttura come una qualunque altra variabile. Posso definire una variabile di tipo Punto Punto elemento_del_piano; Oppure definire un’array di variabili Punto Punto punti[2]; E far riferimento ai campi come: punti[0].ascissa punti[0].ordinata Inoltre posso passare le variabili Punto come parametri ad una funzione distanza(punti[0],punti[1]); 17/04/2017

Strutture Scriviamo un programma che, dati due punti sul piano cartesiano,ne calcola la distanza L’utente inserirà i valori x e y dei due punti che verranno gestiti tramite una struttura e il programma restituirà la distanza fra P e Q Vediamo il codice… 17/04/2017

Strutture #include <stdio.h> scanf("%f",&punti[0].ordinata); #include <math.h> /*includo la libreria per SQRT*/ /*definisco una struttura formata da due campi float*/ struct elemento { float ascissa; float ordinata; }; typedef struct elemento Punto; /*questo TIPO di struttura la chiamo Punto*/ float distanza(Punto, Punto); /*il prototipo funzione*/ void main(void) { Punto punti[2]; /*def un vettore di due elementi*/ /*ogni elemento è una struttura Punto*/ float dist; /*definisco la varibile dist */ system("cls"); /*pulisco lo schermo*/ /*metto i valori nei campi delle strutture*/ printf("Inserisci l'ascissa del primo punto: \n"); scanf("%f",&punti[0].ascissa); printf("Inserisci l'ordinata del primo punto: \n"); scanf("%f",&punti[0].ordinata); printf("Inserisci l'ascissa del secondo punto: \n"); scanf("%f",&punti[1].ascissa); printf("Inserisci l'ordinata del secondo punto: \n"); scanf("%f",&punti[1].ordinata); dist=distanza(punti[0],punti[1]); /*chiamo distanza*/ /*passando le strutture come parametri*/ printf("La distanza fra i due punti e': %f\n",dist); system("pause"); } float distanza(Punto p1, Punto p2) { float delta1 = p1.ascissa - p2.ascissa; float delta2 = p1.ordinata - p2.ordinata; return sqrt((delta1*delta1)+(delta2*delta2)); 17/04/2017

Strutture e liste Cos’è una lista? Una lista è una struttura dati astratta che denota una collezione ordinata di oggetti 17/04/2017

Strutture e liste Implementiamo una lista di punti Definisco una struttura, di tipo elemento, formata da 3 campi typedef struct elemento{ int ascissa; int ordinata; struct elemento *next; }; typedef struct elemento punto; I primi due campi sono variabili intere Il terzo campo è un puntatore ad una struttura elemento struct elemento=punto 17/04/2017

Strutture e liste Possiamo immaginare una lista composta in questo modo: 3 45 4 2 32 Ogni elemento della lista è una struttura 17/04/2017

Strutture e liste Scriviamo un programma che permetta di inserire, visualizzare e cancellare delle coppie di punti da una lista in modo da implementare il funzionamento di uno stack Input 23,5 Output 32,65 0,7 2,4 17/04/2017

Strutture e liste #include <stdio.h> struct elemento{ /*definisco una struttura formata da tre campi*/ int ascissa; int ordinata; struct elemento *next; /*questo campo contiene un ptr ad una struttura*/ }; typedef struct elemento punto; punto* inserisci(punto *); /*prototipi di funzione*/ punto *cancella(punto *first); void stampa(punto *first); void main(void){ int scelta; punto *primo=NULL; /*Puntatore a punto, inizializzato a NULL*/ do{ printf("Scegli la tua opzione\n"); printf("1) Inserisci nuovo punto\n"); printf("2) Cancella ultimo punto\n"); printf("3) Stampa lista corrente dei punti\n"); printf("4) Termina programma\n"); scanf("%d",&scelta); switch(scelta){ case 1: primo=inserisci(primo); /*chiamo inserisci passando il puntatore "primo"*/ break; case 2: primo=cancella(primo); /*chiamo cancella passando il puntatore "primo"*/ case 3: stampa(primo); /*chiamo stampa passando il puntatore "primo"*/ case 4: default: printf("Scelta non corretta; inserisci nuovamente\n\n"); } }while (scelta!=4); Strutture e liste 17/04/2017

punto* inserisci(punto *first){ int asc,ord; punto *q; /*dichiaro un puntatore a struttura punto*/ printf("\nInserisci le coordinate del nuovo punto\n"); printf("Ascissa="); scanf("%d",&asc); printf("Ordinata="); scanf("%d",&ord); q=(punto *)malloc(sizeof(punto)); /*allocazione dinamica memoria per il nuovo elemento*/ if (q==NULL) { /*verifico che l'allocazione abbia avuto successo*/ printf("\nMemoria esaurita!\n"); return(first); } q->ascissa=asc; /*inserisco nei campi della struttura puntata da q i valori*/ q->ordinata=ord; q->next=first; /*inserimento in testa*/ printf("Punto (%d,%d) inserito con successo.\n",q->ascissa,q->ordinata); return q; /******************************************************************************/ punto *cancella(punto *first){ punto *p; /*dichiaro un puntatore alla struttura punto*/ if (first==NULL) printf("\nNessun elemento nella lista.\n\n"); else{ p=first->next; /*metto in p il valore next della strutt. puntata da first*/ free(first); /*deallocazione della memoria*/ return p; 17/04/2017

void stampa(punto *first){ int cont=1; punto *q; /*dichiaro un puntatore alla struttura punto*/ if (first==NULL) printf("La lista e' vuota.\n"); else for(q = first; q != NULL; q = q-> next){ printf("%d -- (%d,%d)\n",cont,q->ascissa,q->ordinata); cont++; } 17/04/2017