APPUNTI SUL LINGUAGGIO C

Slides:



Advertisements
Presentazioni simili
Informatica B Allievi Elettrici - AA Fondamenti della programmazione in linguaggio C (IV)
Advertisements

Dati strutturati C++.
Introduzione al linguaggio C Dr. Francesco Fabozzi Corso di Informatica.
Fondamenti di Informatica II Ingegneria Informatica / Automatica (A-I) Meccanica Prof. M.T. PAZIENZA a.a – 3° ciclo.
Struct, enum, Puntatori e Array dinamici
2000 Prentice Hall, Inc. All rights reserved. Capitolo 10 (Deitel) Strutture, unioni ed enumerazioni Sommario Introduzione Definire le strutture.
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.
Lezione 9 e 10 - Segmenti di memoria e puntatori - Aritmetica dei puntatori - Formattazione dei dati - Significato ed impiego del cast - Tipi di dato strutturato.
1 Elementi DI INFORMATICA Università degli Studi di Cagliari Corso di Laurea in Ingegneria Elettronica Linguaggio C A.A. 2011/2012
Fondamenti di Informatica A - Massimo Bertozzi I PUNTATORI.
1 ELEMENTI DI INFORMATICA Università degli Studi di Cagliari Corso di Laurea in Ingegneria Elettronica Linguaggio C A.A. 2011/2012
Fondamenti di Informatica A - Massimo Bertozzi LE RAPPRESENTAZIONI CONCATENATE.
.  I tipi di dati non primitivi sono gli array, le struct e le union.  Gli array sono degli aggregati di variabili dello stesso tipo.  La dichiarazione.
Process synchronization
Process synchronization
Gestione della memoria
Ereditarietà Uno dei principi della programmazione orientata agli oggetti (OOP) è il riuso Le classi dovrebbero essere progettate come componenti riutilizzabili.
Rileaborato da M. Lenzerini - Basi di dati
Java World Introduzione.
ODMG.
Java: concetti e costrutti base
Introduzione al linguaggio C
Strutture 1 Gli array permettono di raccogliere sotto un unico nome più variabili omogenee e sono solitamente utilizzati quando bisogna operare su più.
Struct, enum, Puntatori e Array dinamici
Process synchronization
PRINCIPALI STRUTTURE DEI DATI
Il linguaggio C Strutture Moreno Marzolla
Array n-dimensionali e tipi di dati strutturati
Array n-dimensionali e tipi di dati strutturati
Commenti Ogni riga che comincia con il simbolo # non viene letta dall’interprete per cui rappresenta un modo per commentare il listato # Questo è un esempio.
Strutture classi e oggetti
Process synchronization
Process synchronization
Record.
L’AMBIENTE CODE BLOCKS E L’IO
TIPI PRIMITIVI TIPI STRUTTURATI
Tipo di dato: array Un array è un tipo di dato usato per memorizzare una collezione di variabili dello stesso tipo. Per memorizzare una collezione di 7.
Ambienti di Programmazione per il Software di Base
Corso Java Introduzione.
Corso Java Esercitazione.
APPUNTI SUL LINGUAGGIO C Strutture Dati e Puntatori
© 2007 SEI-Società Editrice Internazionale, Apogeo
Programmazione e Laboratorio di Programmazione
© 2007 SEI-Società Editrice Internazionale, Apogeo
APPUNTI SUL LINGUAGGIO C
APPUNTI SUL LINGUAGGIO C
Gestione di un banco di magliette
Process synchronization
Gestione di un ristorante
APPUNTI SUL LINGUAGGIO C
Esercizio 1 Scrivete un programma C "creaproc" che crea (mediante fork) il numero di processi specificati in input. ad esempio: $> creaproc 7 crea 7 nuovi.
comprensione e modifica di codice
APPUNTI SUL LINGUAGGIO C Implementazioni di Liste Concatenate
APPUNTI SUL LINGUAGGIO C Esercizi sugli array e strutture
La struttura dei primi programma in C
APPUNTI SUL LINGUAGGIO C Esercizi su File e Alberi Binari
Le stringhe in C++ Laboratorio 26 Aprile Dott. Serena Villata
Lucidi della Pof.ssa Pazienza
APPUNTI SUL LINGUAGGIO C
APPUNTI SUL LINGUAGGIO C
APPUNTI SUL LINGUAGGIO C Allocazione dinamica della memoria
APPUNTI SUL LINGUAGGIO C Simulazione Prima Prova Intermedia
Corso di Algoritmi e Strutture Dati APPUNTI SUL LINGUAGGIO C
Array n-dimensionali e tipi di dati strutturati
Java Introduzione.
Programmazione e Laboratorio di Programmazione
Programmazione e Laboratorio di Programmazione
Array e Stringhe Linguaggio C.
Corso di Fondamenti di Informatica
Transcript della presentazione:

APPUNTI SUL LINGUAGGIO C Corso di Algoritmi e Strutture Dati APPUNTI SUL LINGUAGGIO C Strutture dati

int, double, char, “boolean”, … Tipi di dato Tipi di dato elementare: int, double, char, “boolean”, … Tipi di dati complessi : Array monodimensionali Stringhe Array multidimensionali Matrici Puntatori

typedef < tipo > < nuovo_nome_tipo > ; Il C permette di definire esplicitamente nomi nuovi per i tipi di dati, tramite la parola chiave typedef. L'uso di typedef consente di rendere il codice più leggibile. Il formato dell'istruzione typedef è il seguente: typedef < tipo > < nuovo_nome_tipo > ; in questo modo assegnamo al tipo tipo il nuovo nome nuovo_nome_tipo. Da questo momento in avanti potremo riferirci al tipo di dato tipo sia con il nome tipo sia con il nome nuovo_nome_tipo. Es: typedef int intero; intero i; /* definisce una variabile i di tipo int. */

Struct (record) Le strutture sono collezioni di variabili correlate sotto un unico nome. Le strutture possono contenere variabili di diversi tipi di dato (contrariamente ai vettori, che contengono soltanto elementi dello stesso tipo di dato) Le strutture sono un tipo di dato derivato (sono cioè costruite usando oggetti di altri tipi).

Tipi di dato Struct (record) Puntatori Liste concatenate

In C i record si definiscono mediante il costrutto struct. Struct (record) In C i record si definiscono mediante il costrutto struct. La parola chiave struct introduce la definizione della struttura, e l’identificatore persona è la structure tag (l’etichetta della struttura) /* definizione del record persona */ struct persona { stringa nome; stringa cognome; stringa CF; int eta; } ... /* dichiarazione di variabili di tipo persona */ struct persona pino,gino,nina; Le variabili dichiarate all’interno delle parentesi graffe della definizione sono i campi della struttura.

In C i record si definiscono mediante il costrutto struct. Struct (record) In C i record si definiscono mediante il costrutto struct. /* definizione del record persona */ struct persona { stringa nome; stringa cognome; stringa CF; int eta; } ... /* dichiarazione di variabili di tipo persona */ struct persona pino,gino,nina; Per dichiarare le variabili di quel tipo struttura bisogna utilizzare l’etichetta della struttura con anteposta la parola chiave struct

Per accedere a un campo del record si usa l’operatore punto. Struct (record) Per accedere a un campo del record si usa l’operatore punto. struct <nome_record> { <tipo> nome1; <tipo> nome2; … <tipo> nome3; } struct <nome_record> st; … st.nome2;

struct <nome_record> { <tipo> nome1; <tipo> nome2; … Struct (record) Se abbiamo un puntatore al record possiamo accedere ai sui campi attraverso l’operatore ->. struct <nome_record> { <tipo> nome1; <tipo> nome2; … <tipo> nome3; } struct <nome_record> *st; … st->nome2;

Struct (record) ... struct persona tizio; struct persona *p; struct persona amici[10]; scanf(“%s”, tizio.nome); tizio.eta++; printf(“%s”, amici[3].cognome); p = &tizio; printf(“%s”,p->cognome);

Definizioni alternative di record Ci sono vari modi per definire record oltre quello visto. /* dichiarazione di variabili record contestuale alla definizione del record corrispondente */ struct contocorrente { int numero; char cognome[20]; char indirizzo[30]; long int saldo; } uno,due,tre;

Definizioni alternative di record Ci sono vari modi per definire record oltre quello visto. /* dichiarazione di variabili record senza definizione del record corrispondente */ struct { int codice; char descrizione[20]; float dato; } a,b,c;

Definizioni alternative di record Ci sono vari modi per definire record oltre quello visto. /* definizione di tipi di record mediante il costrutto typedef */ typedef struct { char nome[20]; char cognome[20]; char CF[16]; int eta; } persona; … persona maria, marco;

È permessa la nidificazione di record. Proprietà dei record È permessa la nidificazione di record. struct persona { char nome[20]; char cognome[20]; struct { int giorno; int mese; int anno; } datanascita; char indirizzo[20]; } squadra[20]; ... printf(“%d”,squadra[2].datanascita.anno);

È permesso l’autoriferimento mediante i puntatori. Proprietà dei record È permesso l’autoriferimento mediante i puntatori. struct persona { char nome[20]; char cognome[20]; struct persona *coniuge; } io; struct elemento { int info; struct elemento *next; } lista;

Inizializzare i record struct card { char face[20]; char suit[20]; } … struct card a = {“Three”, “Hearts”};

Stamperà: 1 2 a Copia di record #include <stdio.h> typedef struct { int a; int b; char c; } prova; int main(int argc, const char * argv[]){ prova p1,p2; p1.a = 1; p1.b = 2; p1.c = 'a'; p2 = p1; printf("%d %d %c\n",p2.a,p2.b,p2.c); return 0; } Stamperà: 1 2 a

Stamperà: 1 2 ciao Copia di record #include <stdio.h> #include <string.h> typedef struct { int a; int b; char c[20]; } prova; int main(int argc, const char * argv[]){ prova p1,p2; p1.a = 1; p1.b = 2; strcpy(p1.c,"ciao”); p2 = p1; printf("%d %d %s\n",p2.a,p2.b,p2.c); return 0; } Stamperà: 1 2 ciao

APPUNTI SUL LINGUAGGIO C Corso di Algoritmi e Strutture Dati APPUNTI SUL LINGUAGGIO C Strutture dati FINE