Process synchronization

Slides:



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

Process synchronization
Dati strutturati A. Ferrari.
Stringhe di caratteri In linguaggio C.
© 2007 SEI-Società Editrice Internazionale, Apogeo Unità G1 Dati strutturati.
Ripasso R1 Dati strutturati.
Array (vettori) In linguaggio C / C++.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Costrutti iterativi Marco D. Santambrogio – Ver. aggiornata al 20 Marzo 2013.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Costrutti iterativi Marco D. Santambrogio – Ver. aggiornata al 9 Agosto 2013.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab 2 – Info B Marco D. Santambrogio – Riccardo Cattaneo –
Process synchronization
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Tipi di dati strutturati Marco D. Santambrogio – Ver. aggiornata al 4 Marzo 2013.
Esercizi Puntatori, struct con campi puntatore, puntatori a struct, rapporto tra array e puntatori. FUNZIONI Passaggio di parametri per indirizzo, passaggio.
TIPI DI DATO Un tipo di dato T è definito come: un dominio di valori, D un insieme di funzioni F 1,..,F n sul dominio D un insieme di predicati P 1,..,P.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Array e stringhe Marco D. Santambrogio – Ver. aggiornata al 9 Agosto 2013.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Costrutti iterativi Marco D. Santambrogio – Ver. aggiornata al 26 Marzo 2014.
Algoritmi e basi del C Struttura di un programma
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Array e “stringhe” Marco D. Santambrogio – Ver. aggiornata al 8 Aprile 2015.
Algoritmi e basi del C Struttura di un programma
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Array e “stringhe” Marco D. Santambrogio – Ver. aggiornata al 26 Marzo 2014.
Linguaggio C: Le basi Stefano Cagnoni e Monica Mordonini
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Recap su: array e puntatori Marco D. Santambrogio – Ver. aggiornata al 20 Aprile.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Array e “stringhe” Marco D. Santambrogio – Ver. aggiornata al 14 Marzo 204.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab 3 – Info B Marco D. Santambrogio – Riccardo Cattaneo –
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Array e “stringhe” Marco D. Santambrogio – Ver. aggiornata al 28 Ottobre 2014.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Algoritmi e basi del C Marco D. Santambrogio – Ver. aggiornata al 24 Agosto 2015.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Costrutti iterativi Marco D. Santambrogio – Ver. aggiornata al 22 Marzo 2016.
Un semplice programma C /* Programma che stampa un saluto */ #include main() { printf(“Hello World!\n”); }
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab 3 – Info B Marco D. Santambrogio – Matteo Ferroni –
.  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
Java: concetti e costrutti base
Introduzione al linguaggio C
7. Strutture di controllo Ing. Simona Colucci
Array n-dimensionali e tipi di dati strutturati
Array n-dimensionali e tipi di dati strutturati
Process synchronization
Process synchronization
I FILES AD ACCESSO SEQUENZIALE
Process synchronization
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.
Process synchronization
Recap su: array e puntatori
Process synchronization
Secondo Programma in C.
Programmazione e Laboratorio di Programmazione
Programmazione e Laboratorio di Programmazione
Process synchronization
Process synchronization
APPUNTI SUL LINGUAGGIO C
Process synchronization
Process synchronization
La struttura dei primi programma in C
Le stringhe in C++ Laboratorio 26 Aprile Dott. Serena Villata
Process synchronization
Programmazione e Laboratorio di Programmazione
Process synchronization
Array n-dimensionali e tipi di dati strutturati
Programmazione e Laboratorio di Programmazione
Fondamenti di Informatica
Process synchronization
Programmazione e Laboratorio di Programmazione
Array e Stringhe Linguaggio C.
Array (vettori) In linguaggio C / C++.
Process synchronization
Programmazione e Laboratorio di Programmazione
Process synchronization
Programmazione e Laboratorio di Programmazione
Process synchronization
Transcript della presentazione:

Process synchronization Operating System Array e “stringhe” Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 6 Aprile 2016 © 2005 William Fornaciari

Logistica Laboratori

Logistica Laboratori @DrepssedDarth

Logistica Laboratori Lunedì (3.30pm – 6pm) EG7 (No portatili e basta) L26.1.3 (portatili)

Logistica Laboratori Lunedì (3.30pm – 6pm) Giovedì (2pm – 4pm) EG7 (No portatili e basta) L26.1.3 (portatili) Giovedì (2pm – 4pm) EG7 (20 dei 31 gruppi del progetto)

BESTIARIO

Bestiario… Assegnamento di un valore ad una variabile

Bestiario… Assegnamento di un valore ad una variabile x = 5; (int x) dato = ‘x’; (char dato) d = y/3.14; (float d, y or float d; int y)

Bestiario… Assegnamento di un valore ad una variabile Confronto/test x = 5; (int x) dato = ‘x’; (char dato) d = y/3.14; (float d, y or float d; int y) Confronto/test

Bestiario… Assegnamento di un valore ad una variabile Confronto/test x = 5; (int x) dato = ‘x’; (char dato) d = y/3.14; (float d, y or float d; int y) Confronto/test x == 5 (e.g., if (x == 5)) dato == ‘x’; (e.g., if (dato == ‘x’))

Bestiario… L’uso del punto e virgola!

Bestiario… L’uso del punto e virgola! if (x == 5); printf (“\n Vero”); else printf (“\n Falso!”);

Bestiario…

Bestiario… L’uso del punto e virgola! if (x == 5) printf (“\n Vero”); else printf (“\n Falso!”);

Passaggio di dati “alla printf”

Passaggio di dati “alla printf” int dato=3; printf(“il dato vale %d”, &dato);

Passaggio di dati “alla printf” int dato=3; printf(“il dato vale %d”, &dato); Dato è passato per copia!!!!

Passaggio di dati “alla printf” int dato=3; printf(“il dato vale %d”, &dato); Dato è passato per copia!!!! printf(“il dato vale %d”, dato);

Problema: sequenza di interi Mostrare una sequenza di 10 interi nell'ordine inverso rispetto a quello con cui è stata introdotta dall’utente

La gara di nuoto: con salvataggio Problema Si hanno10 giudici 1 giudice = 1 voto Si vogliono memorizzare i 10 voti, per poterli rileggere Ogni voto è nell’itervallo 0-10 Dato un tuffo, calcolare La media dei voti Il voto massimo ed il voto minimo

Obiettivi Gli array, questi sconosciuti Gli array in C Array particolari: le stringhe

Gli array Gruppi di celle consecutive -45 6 72 1543 -89 62 -3 1 6453 78 dichiarazione v[0] v[1] v[2] v[3] v[11] v[10] v[9] v[8] v[7] v[5] v[4] posizione elemento int v[12]; nome array Gruppi di celle consecutive Rappresentano gruppi di variabili con lo stesso nome e lo stesso tipo Per riferirsi a un elemento, si specificano: Il nome dell’array La posizione dell’elemento (indice) Sintassi: <nomearray>[<posizione>] Il primo elemento ha indice 0 L’n° elemento dell’array v è v[n-1]

Gli array Gli elementi di un array sono normali variabili: vett[0]  3; printf("%d", vett[0]); > 3 scanf("%d", &vett[1]); > 17 vett[1] assume valore 17 Si possono usare espressioni come indici: se x  3 vett[52] è equivalente a vett[3] ed è equivalente a vett[x]

La gara di nuoto: con salvataggio Problema Si hanno10 giudici 1 giudice = 1 voto Si vogliono memorizzare i 10 voti, per poterli rileggere Ogni voto è nell’itervallo 0-10 Dato un tuffo, calcolare La media dei voti Il voto massimo ed il voto minimo

Come salvare i voti... La dichiarazione

Come salvare i voti... L’inserimento Problema 1: devo salvare i dati nel mio array (int voto[10];) Problema 2: devo definire un ciclo che mi permetta di scorrere N elementi

Come salvare i voti... L’inserimento Problema 1: devo salvare i dati nel mio array (int voto[10];) scanf(&voto[posix]); *pseudo-codice

Come salvare i voti... L’inserimento Problema 2: devo definire un ciclo che mi permetta di scorrere N elementi for(index = 0, index < N, index++){ } *pseudo-codice

Come salvare i voti... L’inserimento Problema 1 + Problema 2 for(index = 0, index < N, index++){ scanf(&voto[posix]); } Non va bene!!! Scrivo sempre in voto[posix] Quanto vale posix??? *pseudo-codice

Come salvare i voti... L’inserimento Problema 1 + Problema 2 posix = 0; for(index = 0, index < N, index++){ scanf(&voto[posix]); posix++; } Come crescono index e posix? *pseudo-codice

Come salvare i voti... L’inserimento Problema 1 + Problema 2 for(index = 0, index < N, index++){ scanf(&voto[index]); } *pseudo-codice

Come salvare i voti... L’inserimento

Come salvare i voti... La stampa

Mettiamo tutto insieme

Array: collezione di dati omogenei Un piccolo riassunto… Array: collezione di dati omogenei Dichiare il tipo dei suoi dati Dichiarare la sua dimensione Come si accede ai dati di un array? Come a normali variabili Esempio di scrittura Esempio di lettura

Inizializzazione di un array Sintassi compatta: int n[5]  {1, 2, 3, 4, 5}; Inizializzazione parziale: gli elementi più a destra sono posti a 0 int n[5]  {13}; tutti gli altri elementi sono posti a 0 Specificare troppi elementi tra le graffe è un errore di sintassi Se la lunghezza dell’array è omessa, gli inizializzatori la determinano: int n[]  {5, 47, 2, 0, 24}; è equivalente a: int n[5]  {5, 47,  2, 0, 24}; In tal caso la dimensione è inferita automaticamente, e si avranno 5 elementi nell’array

Operazioni sugli array Si opera sui singoli elementi, uno per volta Non è possibile operare sull’intero array, agendo su tutti gli elementi simultaneamente / come ricopiare array1 in array2 / int array1[10], array2[10]; int i; . . . array2  array1; / ERRATO /  for( i  0; i  10; i )  array2[i]  array1[i]; / CORRETTO / 

WAT

WAT CI TORNEREMO… I PUNTATORI

I NON HO CAPITO MOLTO A COSA SERVANO GLI ARRAY…

Problema: sequenza di interi Mostrare una sequenza di 10 interi nell'ordine inverso rispetto a quello con cui è stata introdotta dall’utente

Provate senza array

Provate senza array

Provate senza array

Provate con gli array…

Provate con gli array…

Sequenza: possibile soluzione

Sequenza: possibile soluzione E se ora volessi 100 numeri?

Sequenza: possibile soluzione E se ora volessi 100 numeri?

"Generalizziamo" con la direttiva #define In testa al programma: #define LUNG_SEQ 100 Così possiamo adattare la lunghezza del vettore alle eventuali mutate esigenze senza riscrivere la costante 100 in molti i punti del programma Il preprocessore sostituisce nel codice LUNG_SEQ con 100 prima della compilazione La lunghezza dell’array, quindi, anche in questo caso è decisa al momento della compilazione del programma Nella dichiarazione degli array non si usano mai variabili per specificarne la dimensione

Sequenza con define

Sequenza con define E se ora volessi 17 numeri?

Sequenza con define E se ora volessi 17 numeri?

Frase… insieme di caratteri Che cosa è una frase? Un insieme di caratteri Come la rappresento? Un insieme, di tante variabili carattere? Una variabile, insieme di caratteri? supercali fragili stiche spiralidoso

Le stringhe Array di caratteri: spesso chiamati stringhe Quando rappresentano “caratteri da leggersi in fila” Dichiarazione+inizializzazione di una stringa: char stringa[]  "word"; Il carattere nullo '\0' termina le stringhe Perciò l’array stringa ha 5 elementi (non 4): Dichiarazione equivalente: char stringa[]  {'w', 'o', 'r', 'd', '\0'}; d r o w \0

Problema: inserisci nome

Stringhe e caratteri Qual è la differenza tra 'x' e "x"? 'x' è una costante di tipo char, rappresentata in memoria da un intero "x" è una stringa costante, rappresentata in memoria da un array che contiene i caratteri: 'x' e '\0' ATTENZIONE Le stringhe non sono propriamente un tipo di dato (non sono un tipo base!) Non hanno operatori nativi, ma una serie di funzioni nella libreria standard che permettono di manipolarle

scanf: stringhe Vs char

Fonti per lo studio + Credits Informatica arte e mestiere, S. Ceri, D. Mandrioli, L. Sbattella, McGrawHill Capitolo 5 Credits Daniele Braga - http://home.dei.polimi.it/braga/