Algoritmi e Programmazione (in C) Stefano Cagnoni e Monica Mordonini

Slides:



Advertisements
Presentazioni simili
Introduzione al linguaggio C
Advertisements

© 2007 SEI-Società Editrice Internazionale, Apogeo Unità F2 Selezione.
Algoritmi e Programmazione
Informatica Generale Marzia Buscemi
1 Informatica Generale Susanna Pelagatti Ricevimento: Mercoledì ore presso Dipartimento di Informatica, Via Buonarroti,
3. Programmazione strutturata (testo di riferimento: Bellini-Guidi)
Corso di Laurea in Biotecnologie corso di Informatica Paolo Mereghetti DISCo – Dipartimento di Informatica, Sistemistica e Comunicazione.
INFORMATICA Strutture iterative
Programmazione Procedurale in Linguaggio C++
Programmazione Procedurale in Linguaggio C++
1 Istruzioni, algoritmi, linguaggi. 2 Algoritmo per il calcolo delle radici reali di unequazione di 2 o grado Data lequazione ax 2 +bx+c=0, quali sono.
Introduzione agli algoritmi. Definizione Sistema di regole e procedure di calcolo ben definite che portano alla soluzione di un problema con un numero.
Informatica Problema Algoritmo Programma
Algebra di Boole ed elementi di logica
Informatica 2. Concetti fondamentali di programmazione Programmare vuol dire scrivere un algoritmo in un linguaggio che faccia funzionare un calcolatore.
1 Corso di Laurea in Biotecnologie Informatica (Programmazione) Introduzione a JAVA Anno Accademico 2009/2010.
1 Corso di Informatica (Programmazione) Lezione 11 (19 novembre 2008) Programmazione in Java: controllo del flusso (iterazione)
1 Corso di Informatica (Programmazione) Lezione 10 (12 novembre 2008) Programmazione in Java: espressioni booleane e controllo del flusso (selezione)
1 Corso di Laurea in Biotecnologie Informatica (Programmazione) Problemi e algoritmi Anno Accademico 2009/2010.
1 Corso di Laurea in Biotecnologie Informatica (Programmazione) Le stringhe di caratteri in Java Anno Accademico 2009/2010.
1 Corso di Informatica (Programmazione) Raffaella Rizzi DISCO Dipartimento di Informatica Sistemistica e Comunicazione Edificio U14 - primo piano - stanza.
Corso di Laurea in Biotecnologie Informatica (Programmazione)
Definizione di Algoritmo
Programmazione Un programma descrive al computer, in estremo dettaglio, la sequenza di passi necessari a svolgere un particolare compito L’attività di.
Introduzione alla programmazione ll
Introduzione alla programmazione lll
DAL PROBLEMA ALL'ALGORITMO Problemi e Programmi Paolo Amico
Unità Didattica 1 Algoritmi
Unità Didattica 2 I Linguaggi di Programmazione
Istruzioni Iterative Nicola Fanizzi
Strutture di controllo in C -- Flow Chart --
Dichiarazioni e tipi predefiniti nel linguaggio C
Fondamenti di Informatica Algoritmi
Il Linguaggio C.
Espressioni condizionali
Gli algoritmi.
Elementi di Informatica
Elementi di Informatica
ELEMENTI DI PROGRAMMAZIONE
Elementi di Informatica di base
Algoritmi e Programmazione strutturata
INFORMATICA MATTEO CRISTANI.
PROGRAMMAZIONE: linguaggi
CODIFICA Da flow-chart a C++.
Lezione 6 Strutture di controllo Il condizionale
PROBLEMA ALGORITMO PROGRAMMA LINGUAGGI di PROGRAMMAZIONE
ECDL Patente europea del computer
Informatica e Algoritmi
COME RAGIONA UN COMPUTER
Dal problema all’ algoritmo
Rappresentazione degli algoritmi
Parte 3 Lo stato: variabili, espressioni ed assegnazioni
Corso di Algoritmi e Strutture Dati APPUNTI SUL LINGUAGGIO C
1 Parte 2 Fondamenti di programmazione. 2 Definizione intuitiva di algoritmo Elenco finito di istruzioni che specificano una serie di operazioni, eseguendo.
Tecnologie Informatiche ed Elettroniche per le Produzioni Animali
13 ottobre Decisioni F. Bombi 13 ottobre 2002.
Linguaggio C: Le basi Stefano Cagnoni e Monica Mordonini
Linguaggio C: Le basi Stefano Cagnoni e Monica Mordonini
Realizzazione software
1 Informatica Generale Marzia Buscemi Ricevimento: Giovedì ore , Dipartimento di Informatica, stanza 306-PS o per posta.
L’ELABORATORE ELETTRONICO uno strumento in grado di eseguire insiemi di azioni (“mosse”) elementari le azioni vengono eseguite su oggetti (dati) per produrre.
Algoritmi e Programmazione (in C) Stefano Cagnoni e Monica Mordonini
Diagrammi a blocchi.
Informatica e Informatica di Base
Problemi, algoritmi e programmazione
ALGORITMI Dal problema al programma Definizione di algoritmo
Il computer ragiona? Problemi e algoritmi. Paola Pianegonda2 Cos’è un problema?  Problema è qualsiasi situazione della quale non conosciamo la soluzione.
Programmazione dei Calcolatori Elettronici
GLI ALGORITMI Appunti preparati dalla prof.ssa Maria D’Angelo.
Unità di apprendimento 6
Transcript della presentazione:

Algoritmi e Programmazione (in C) Stefano Cagnoni e Monica Mordonini Dipartimento di Ingegneria dell’Informazione Università degli Studi di Parma Fondamenti di Informatica Laurea in Ingegneria Civile e Ingegneria per l’ambiente e il territorio Algoritmi e Programmazione (in C) Stefano Cagnoni e Monica Mordonini

FI - Algoritmi e Programmazione Il problema di fondo Descrizione di un problema individuazione di una soluzione Quale è il giusto punto di partenza? Cioè, di quali dati abbiamo bisogno ? Quali metodologie o tecniche utilizzare? In quale ordine eseguire le operazioni consentite da tali tecniche ? FI - Algoritmi e Programmazione

FI - Algoritmi e Programmazione Algoritmo Dall'arabo al-Khuwarizmi, a sua volta dal greco arithmós Un algoritmo è un metodo generale che risolve in un tempo finito e con una sequenza finita di passi qualsiasi istanza di un dato problema di elaborazione. FI - Algoritmi e Programmazione

FI - Algoritmi e Programmazione Algoritmo E’ possibile “trovare” algoritmi anche per la risoluzione di problemi non strettamente informatici Esempi: Spiegare un percorso stradale Istruzioni per il montaggio di un mobile Istruzioni per la realizzazione di una torta Un algoritmo può non essere l’unica soluzione al problema FI - Algoritmi e Programmazione

Codifica di un algoritmo Fase di descrizione (scrittura) di un algoritmo attraverso un insieme ordinato di codici (istruzioni), appartenenti a un qualche linguaggio di programmazione, che specificano le azioni da compiere Il prodotto della codifica è un programma FI - Algoritmi e Programmazione

FI - Algoritmi e Programmazione Testo scritto in accordo alla sintassi e alla semantica di un linguaggio di programmazione Un programma può non essere un algoritmo (basta che la sequenza di mosse non sia finita cioè che il programma non termini)... ... e tuttavia può essere molto utile (es. gestione semafori) Un programma rappresenta l’insieme delle istruzioni che descrivono un processo espresse in un qualche linguaggio Un processo trasforma un insieme di dati iniziali nei risultati finali mediante una successione di azioni elementari FI - Algoritmi e Programmazione

FI - Algoritmi e Programmazione Esecuzione L’esecuzione delle azioni nell’ordine specificato dall’algoritmo consente di ottenere i risultati che risolvono il problema a partire dai dati in ingresso Problema:  algoritmo  programma Codifica in un linguaggio di programmazione Metodo risolutivo FI - Algoritmi e Programmazione

FI - Algoritmi e Programmazione Algoritmo Un algoritmo deve avere le seguenti proprietà: Finitezza: composto da un numero finito di passi elementari. Non ambiguità (determinismo): i risultati non variano in funzione della macchina/persona che esegue l'algoritmo. Realizzabilità: deve essere eseguibile con le risorse a disposizione. Efficienza (auspicabile): eseguire il numero minimo di operazioni FI - Algoritmi e Programmazione

FI - Algoritmi e Programmazione Algoritmo Per definire un algoritmo è necessario: Condurre un'attenta analisi del problema ed eventualmente suddividere il problema in sottoproblemi più piccoli. Individuare i possibili ingressi e precisare le uscite (definizione dei dati). Definire completamente e dettagliatamente la sequenza dei passi che portano alla soluzione. FI - Algoritmi e Programmazione

FI - Algoritmi e Programmazione Il crivello di Eratostene Si vogliono trovare tutti i numeri primi compresi fra 2 e n (in modo efficiente). Si costruisca una sequenza ordinata dei numeri fra 2 e n. Si estragga il primo numero dalla sequenza. E’ necessariamente un numero primo. Si eliminino dalla sequenza tutti i multipli del numero estratto al passo 2). Se la sequenza non è vuota si torna la passo 2) altrimenti si termina. FI - Algoritmi e Programmazione

Il crivello di Eratostene Esempio Sequenza iniziale (da 2 a 20): 2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,19,20 2 è primo; lo elimino con tutti i suoi multipli: 3,5,7,9,11,13,15,17,19 3 è primo; lo elimino con tutti i suoi multipli: 5,7,11,13,17,19 5 è primo; lo elimino con tutti i suoi multipli: … 19 è primo, la sequenza e’ vuota, termino. FI - Algoritmi e Programmazione

Diagrammi di flusso (Flow-Chart) I diagrammi di flusso sono un formalismo grafico per descrivere gli algoritmi. I diagrammi di flusso scompongono in passi successivi gli algoritmi. Un diagramma di flusso è una descrizione più efficace e meno ambigua di una descrizione a parole. FI - Algoritmi e Programmazione

FI - Algoritmi e Programmazione Diagrammi di flusso Operazioni rappresentabili con un diagramma di flusso Ingresso/Uscita dati (rappresentate come schede) Operazioni sui dati (rappresentate come rettangoli) Trasferimento di informazione (Assegnamenti) Calcolo di espressioni aritmetiche e logiche Assunzione di decisioni (rappresentate come rombi) Esecuzione di iterazioni, o cicli (combinazioni di rettangoli e rombi) Possono contenere costanti e variabili FI - Algoritmi e Programmazione

FI - Algoritmi e Programmazione Diagrammi di flusso Un diagramma di flusso è costituito da due tipi di entità: Nodi rappresentano le operazioni e gli stati di inizio e fine dell’algoritmo Archi orientati rappresentano con frecce il ‘flusso’ dei dati, quindi la sequenza delle operazioni: il risultato prodotto da un nodo è successivamente elaborato dal nodo a cui punta l’arco uscente dal primo nodo Una struttura di questo tipo è detta grafo (orientato) FI - Algoritmi e Programmazione

Elaborazione / Assegnamento Tipi di Nodi Lettura dati Var1 Var1  Espr1 Inizio Start Elaborazione / Assegnamento Scrittura dati Var1 Espr1 = Espr2 Espr1  Espr2 Espr1 > Espr2 Espr1  Espr2 Espr1 < Espr2 Espr1  Espr2 Fine Stop Si No Decisione FI - Algoritmi e Programmazione

Strutture di Controllo While - Do Repeat - Until If - Then - Else C O Sì No No C O1 O2 Sì C No Sì O Ripete una stessa operazione O finché la condizione C resta vera Ripete una stessa operazione O finché la condizione C non diventa vera Se C è vera esegue O1, altrimenti esegue O2 FI - Algoritmi e Programmazione

Programmazione Strutturata Si compone di sequenze di azioni, decisioni (if then, if then else) e cicli (while-do, repeat until). Ogni diagramma ha esattamente un ingresso ed una uscita. Ogni azione può essere una operazione semplice una azione composta da altri diagrammi strutturati FI - Algoritmi e Programmazione

Esempio: Somma di Tre Numeri Start Somma  Var1 +Var2 + Var3 Var1 Somma Var2 Stop Var3 FI - Algoritmi e Programmazione

Esempio: Somma di N Numeri Start No Sì Var I < N N Somma  Somma + Var I  I + 1 Somma Stop I  0 Somma  0 FI - Algoritmi e Programmazione

Il Linguaggio C

FI - Algoritmi e Programmazione Caratteristiche Linguaggio sequenziale (lineare), imperativo, strutturato a blocchi usabile anche come linguaggio di sistema software di base sistemi operativi compilatori ... FI - Algoritmi e Programmazione

FI - Algoritmi e Programmazione Caratteristiche basato su pochi concetti elementari dati (tipi primitivi, tipi di dato) espressioni dichiarazioni/definizioni funzioni istruzioni/blocchi FI - Algoritmi e Programmazione

Esempio di programma in C #include <stdio.h> int main() { printf(" Hello World!! "); return 0; } FI - Algoritmi e Programmazione

FI - Algoritmi e Programmazione Dati Un elaboratore è un manipolatore di simboli L’architettura fisica di ogni elaboratore è intrinsecamente capace di trattare vari domini di dati detti tipi primitivi dominio dei numeri interi dominio dei caratteri dominio dei numeri reali dominio delle stringhe di caratteri FI - Algoritmi e Programmazione

Tipi di dato primitivi in C Caratteri char caratteri ASCII (A<->65, {<->123, ..), interi ([0,255], [-127,128] Interi con segno (più lunghi di 8 bit) short int long Naturali (interi senza segno) unsigned short unsigned unsigned long Reali float double long double I dati Booleani non esistono in C come tipo primitivo, si usano gli interi: 0 indica falso 1 indica vero (in realtà qualsiasi valore diverso da 0 indica vero) FI - Algoritmi e Programmazione