Perché scriviamo programmi Abbiamo un problema da risolvere



Scaricare 0.56 Mb.
02.02.2018
Dimensione del file0.56 Mb.





Perché scriviamo programmi

  • Abbiamo un problema da risolvere

  • Dobbiamo progettare una soluzione: progettiamo un algoritmo

  • Vogliamo far eseguire tale algoritmo dal nostro elaboratore: scriviamo un programma



Linguaggi macchina, assembley e di alto livello

  • Linguaggi macchina: lingua naturale di un particolare computer, esso consiste di sequenze di numeri (1 o 0) e dipende dalla macchina

  • 0000111101

  • 1111110001

  • 0011001111

  • Linguaggi assembly: abbreviazioni simili all’inglese, per rappresentare le operazioni elementari del computer

  • LOAD N

  • ADD X

  • Linguaggi ad alto livello: singole istruzioni contenenti notazioni matematiche utilizzate comunemente

  • x = n + 2;



Il linguaggio C

  • Il C fu progettato ed implementato da Dennis Ritchie ed è un linguaggio imperativo ad alto livello, sviluppato nei laboratori della AT&T Bell Laboratories, adatto per lo sviluppo dei sistemi operativi.

  • Benché implementato su un sistema operativo UNIX, questo linguaggio non fu scritto per un particolare sistema operativo ma può essere utilizzato sotto sistemi operativi diversi come UNIX, DOS, OS, POWER PC, ecc



Sistema operativo

  • è un programma di controllo che svolge operazioni fondamentali al funzionamento dell’elaboratore

  • risiede in una memoria interna permanente e interpreta i comandi di utente che richiedono diversi servizi (es. la visualizzazione, la stampa o la copiatura di un file, il raggruppamento logico dei file in una directory o l'esecuzione di un programma).

  • si occupa di gestire tutte le periferiche del nostro pc, tutti i processi, e tutti i dati di input/output.



Paradigmi di programmazione



Programma Java



Il linguaggio C



Le librerie in C

  • I programmi scritti in C consistono in moduli chiamati funzioni; esiste una ricca collezione di funzioni già esistenti chiamata libreria standard del C.

  • Obiettivo riusabilità del software: approccio di costruzione a blocchi per creare programmi; inutile ricostruire funzioni già esistenti, ma riusare ciò che già esiste fondendolo con ciò che viene costruito ex-novo.

  • Obiettivo efficienza: utilizzare le funzioni della libreria ANSI potrà migliorare l’efficienza del programma.

  • Obiettivo portabilità: utilizzare le funzioni ANSI invece di scrivere le proprie versioni.



Il linguaggio C

  • Il C è un tipico linguaggio di programmazione strutturata: scrittura di programmi chiari, dalla correttezza dimostrabile e semplici da modificare.

  • Il linguaggio C permette di scrivere programmi molto compatti

  • Il linguaggio C permette di accedere e gestire direttamente le risorse hardware dell’elaboratore (in maniera indipendente dall’architettura)



L’ambiente C



Un semplice programma C



Un semplice programma C



Un semplice programma C



Un semplice programma C



Un semplice programma C



Caratteri speciali



Variabili in C



Variabili in C



Tipi di dato elementari



Input/Output



Argomenti di printf e scanf



Input/Output



Argomenti di printf e scanf

  • Il primo è una stringa di caratteri (da stampare per la printf) nella quale ogni % indica il punto in cui vanno sostituiti, nell’ordine, gli argomenti che seguono;

  • Il carattere che segue il simbolo % indica il tipo dell’argomento (d indica un valore intero);

  • Gli altri argomenti specificano le variabili di input/output (quelle di input sono precedute dal simbolo speciale &).





Argomenti di printf e scanf



Assegnazione in C



Blocchi in C



Operatori ed espressioni in C



Operatori ed espressioni in C



Operatori ed espressioni in C



Operatori ed espressioni in C



Istruzioni di controllo condizionali

  • Istruzione condizionale if

  • if ( )

  • else

  • Se è vera viene eseguito altrimenti verrà

  • eseguito

  • Es. if (a>b)

  • printf(“il maggiore è %d”, a);

  • else

  • printf(“il maggiore è %d”, b);



Istruzioni di controllo condizionali

  • Istruzione condizionale switch

  • switch ( ) {

  • case : [break;]

  • case : [break;]

  • ….

  • default : ;

  • }

  • Se vale vera viene eseguito ; in tutti gli altri casi (caso di default) verrà eseguito .

  • Per convenzione dopo l’istruzione che si vuole eseguire si usa il comando break per uscire dall’istruzione condizionale.



Istruzioni di controllo condizionali

  • Es.

  • Vogliamo impostare il numero di giorni n di cui è fatto ogni mese:

  • switch ( mese ) {

  • case 2: n=28; break;

  • case 4 : case 6:

  • case 9 : case 11: n=30; break;

  • default : n=31;

  • }



Istruzioni di controllo iterative

  • Istruzione while

  • while ( )

  • oppure

  • do

  • while ( )

  • Fino a che è vera viene eseguito .



Istruzioni di controllo iterative

  • Es.

  • Calcoliamo il fattoriale di un numero i:



Istruzioni di controllo iterative

  • Istruzione for

  • for ( ; ; )

  • corrisponde a:

  • while ( ) {

  • ;

  • }

  • Es. for ( i=n; i>1; i-- ) fat *= i;



Costanti simboliche in C

  • #define

  • Si definiscono facendo uso della direttiva define che va messa nell’intestazione del programma.

  • Es.

  • #define PIGRECO 3.14

  • #define N 100

  • #define TRUE 1

  • #define FALSE 0

  • main() {

  • ….

  • }



Esempio di programma C

  • Lettura ed analisi del problema: deduzione dei dati di input

  • Costruzione di un procedimento risolutivo: algoritmo

  • Traduzione delle istruzioni dell’algoritmo in

  • linguaggio C



Esempio di programma C

  • Lettura ed analisi del problema: deduzione dei dati di input



Esempio di programma C

  • Costruzione di un procedimento risolutivo: algoritmo



Esempio di programma C

  • Traduzione delle istruzioni dell’algoritmo in

  • linguaggio C



Esempio di programma C

  • Traduzione delle istruzioni dell’algoritmo in

  • linguaggio C



Esempio di programma C

  • Traduzione delle istruzioni dell’algoritmo in

  • linguaggio C





Funzioni in C

  • Una funzione è un blocco di istruzioni, che ha parametri in ingresso (parametri formali) e restituisce un risultato.

  • (lista parametri) {

  • blocco istruzioni

  • return

  • }

  • Lista parametri: ( , , …)



Funzioni in C

  • Es.

  • int Fatt(int n) {

  • int ris;

  • ris = 1;

  • while (n>=1) {

  • ris = ris*n;

  • n--;

  • }

  • return ris;

  • }



Funzioni in C



Visibilità delle variabili



Puntatori



Operazioni sui Puntatori



Operazioni sui Puntatori



Come ovviare ai limiti delle funzioni



Gestione della memoria













Ricorsione



Array

  • Un array è una sequenza di elementi omogenei.

  • Un array viene dichiarato in C scrivendo, nell’ordine, il

  • tipo degli elementi, il nome dell’array, e le sue

  • dimensioni.

  • int c[12]; /*vettore*/



Array

  • Un vettore è un gruppo di posizioni (o locazioni) di memoria correlate dal fatto che tutte hanno lo stesso nome e tipo di dato.



Regole generali su gli Array

  • Il primo elemento di ogni vettore è l’elemento zero.

  • Il numero di posizione contenuto all’interno delle parentesi quadre è detto indice.

  • non c’è controllo sull’accesso a elementi non esistenti.



Dichiarazione e inizializzazione dei vettori

  • I vettori occupano dello spazio in memoria. Il programmatore specificherà il tipo di ogni elemento e il numero di quelli richiesti da ognuno dei vettori, così che il computer possa riservare l’appropriata quantità di memoria.



Dichiarazione e inizializzazione dei vettori

  • I vettori occupano dello spazio in memoria. Il programmatore specificherà il tipo di ogni elemento e il numero di quelli richiesti da ognuno dei vettori, così che il computer possa riservare l’appropriata quantità di memoria.



Array come parametri di funzioni

  • E’ possibile passare un array come parametro formale di una funzione.



Programma sui vettori



Programma sui vettori



Programma sui vettori



Utilizzo degli Array

  • Ordinamento di vettori: l’ordinamento dei dati è una delle applicazioni più importanti nel campo dell’elaborazione; si richiede la sistemazione dei dati in un ordine particolare.

  • 1) Insertion sort

  • 2) Quick sort

  • 3) Merge sort

  • 4) Bubble sort

  • Ricerca nei vettori: i programmatori lavoreranno spesso con grandi quantità di dati immagazzinati in vettori. A volte potrà essere necessario determinare se un vettore contenga un elemento che corrisponda a un dato valore chiave.



I vettori multidimensionali

  • E’ possibile definire strutture dati complesse: array multimensionali, che si muovono su più indici.

  • < tipo > < nome dell’array > [ ] [ ] … [ ]





Dinamica dei puntatori



Dinamica dei puntatori



Linguaggio C: Puntatori



































I vettori multidimensionali













Condividi con i tuoi amici:


©astratto.info 2019
invia messaggio

    Pagina principale