(docente) Fabio Aiolli Web: (docenti laboratorio)

Slides:



Advertisements
Presentazioni simili
Linguaggio C e C++.
Advertisements

© 2007 SEI-Società Editrice Internazionale, Apogeo Unità F1 Primi programmi.
Introduzione al linguaggio C++
I Linguaggi di programmazione
INFORMATICA Strutture condizionali
Introduzione al linguaggio C
© 2007 SEI-Società Editrice Internazionale, Apogeo Unità F2 Selezione.
Linguaggi algoritmici
Introduzione alla programmazione A. Ferrari. Il linguaggio C Nel 1972 Dennis Ritchie nei Bell Laboratories progettò il linguaggio C Il linguaggio possiede.
I DATI LE ISTRUZIONI LE STRUTTURE FONDAMENTALI
I linguaggi di programmazione
Algoritmi e Programmazione
Massa Laura Mela Enrica
Informatica Generale Marzia Buscemi
Informatica Generale Susanna Pelagatti
Programmazione Procedurale in Linguaggio C++
Indirizzi delle variabili A ogni variabile sono associati tre concetti fondamentali: il valore memorizzato; il tipo dati di appartenenza; lindirizzo. Il.
FUNZIONI DI BIBLIOTECA
Caratteri e stringhe di caratteri
Prof.ssa Chiara Petrioli -- Fondamenti di programmazione, a.a. 2009/2010 Corso di Fondamenti di programmazione a.a. 2009/2010 Prof.ssa Chiara Petrioli.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab 2 – Info B Marco D. Santambrogio – Riccardo Cattaneo –
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Algoritmi e basi del C Marco D. Santambrogio – Ver. aggiornata al 3 Ottobre 2013.
Informatica di base A.A. 2003/2004 Algoritmi e programmi
PROGRAMMAZIONE Introduzione
Calcolatori Elettronici III
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.
1 Corso di Laurea in Biotecnologie Informatica (Programmazione) Introduzione a JAVA Anno Accademico 2009/2010.
Corso di Laurea in Biotecnologie Informatica (Programmazione)
Corso di Informatica (Programmazione)
1 Corso di Laurea in Biotecnologie Informatica (Programmazione) Problemi e algoritmi Anno Accademico 2009/2010.
Unità Didattica 2 I Linguaggi di Programmazione
Organizzazione del corso
Primi Elementi di Programmazione in C++
Strutture di controllo in C -- Flow Chart --
Dichiarazioni e tipi predefiniti nel linguaggio C
I File.
Il Linguaggio C.
Espressioni condizionali
Corso di PHP.
Programmazione in Java
Elementi di Informatica
4 Tipi di dati & variabili
Laboratorio di informatica 1
PROGRAMMAZIONE: linguaggi
Lezione 1 Linguaggi di programmazione – Algoritmi –Istruzioni
CODIFICA Da flow-chart a C++.
Prof.ssa Chiara Petrioli -- Fondamenti di programmazione, a.a. 2009/2010 Corso di Fondamenti di programmazione a.a. 2009/2010 Prof.ssa Chiara Petrioli.
Fopndamenti di programmazione. 2 La classe String Una stringa è una sequenza di caratteri La classe String è utilizzata per memorizzare caratteri La classe.
1Piero Scotto - C14. Finalità del corso Programma Materiale Requisiti Spendibilità 2Piero Scotto - C14.
Linguaggi per COMUNICARE
Programma di Informatica Classi Prime
IO E LA MATEMATICA PROCEDURALE
Dal problema all’ algoritmo
Variabili Numeriche –Interi (byte, short, int, long): complemento a 2 –A virgola mobile (float, double): IEEE 745 Alfanumeriche –Carattere (char): Unicode.
Parte 3 Lo stato: variabili, espressioni ed assegnazioni
1 LABORATORIO DI INFORMATICA Ingegneria Informatica Dott. Giorgio Cicerchia a.a ° Ciclo.
Corso di Algoritmi e Strutture Dati APPUNTI SUL LINGUAGGIO C
1 Il linguaggio C Precisazioni sull’esperienza in laboratorio.
Introduzione Laboratorio di Calcolo Corso di Laurea in Fisica Università degli Studi di Roma “La Sapienza”
Programmazione Attività di progettazione ed implementazione di programmi I programmi permettono di realizzare funzioni complesse su un hardware in grado.
Concetti Fondamentali sulla Programmazione
Linguaggio C: Le basi Stefano Cagnoni e Monica Mordonini
Fondamenti di Informatica
FI - Algoritmi e Programmazione 1 Variabili Consentono di aumentare notevolmente la potenza espressiva. Una variabile è caratterizzata da:  Un nome 
Problemi, algoritmi e programmazione
Informatica B Allievi Elettrici - AA Fondamenti della programmazione in linguaggio C (III)
Programmazione dei Calcolatori Elettronici
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Algoritmi e basi del C Marco D. Santambrogio – Ver. aggiornata al 24 Agosto 2015.
Lezione n. Parole chiave: Corso di Laurea: Insegnamento: Docente: A.A Salvatore Cuomo La ricorsione 15 Approccio ricorsivo, esercizi sulla.
Transcript della presentazione:

Corso Programmazione 2009-2010 (docente) Fabio Aiolli E-mail: aiolli@math.unipd.it Web: www.math.unipd.it/~aiolli (docenti laboratorio) A. Burattin, E. Caniato, A. Ceccato Dipartimento di Matematica Pura ed Applicata Torre Archimede, Via Trieste 63

Orario delle lezioni e esercitazioni ~36 ore di lezioni in aula P200 Martedi’ Ore 11:30 - 13:15 Venerdi’ Ore 10:30 – 12:15 ~32 ore di esercitazioni in laboratorio Proposte.. Martedi’, Mercoledi’, ore 14:00 – 17:00 Aula Informatica C dell’ ex Dipartimento di Matematica Pura ed Applicata (Paolotti) Prima esercitazione in laboratorio il 20/04/09 Fabio Aiolli PROGRAMMAZIONE Introduzione al corso e Fondamenti

Introduzione al corso e Fondamenti Risorse per il corso Kelley, I. Pohl. "C Didattica e programmazione", IV edizione, Pearson, 2004. Altri libri consigliati, slide ed esercizi saranno disponibili sul sito web del corso: http://www.math.unipd.it/~aiolli/corsi/0910/prgxmat/prg.html Il GOOGLE GROUP del corso: http://groups.google.it/group/prxmat10atunipd Fabio Aiolli PROGRAMMAZIONE Introduzione al corso e Fondamenti

Introduzione al corso e Fondamenti Il GOOGLE GROUP del corso: http://groups.google.it/group/prxmat10atunipd ISTRUZIONI x GLI STUDENTI Nickname: <Nome><InizialeCognome> (per esempio, FabioA) Inserire indirizzo di posta elettronica Fabio Aiolli PROGRAMMAZIONE Introduzione al corso e Fondamenti

Introduzione al corso e Fondamenti Esame Scritto Prima Parte Domande riguardanti la sintassi del linguaggio C e semplici programmi Seconda Parte Analisi e implementazione di algoritmi in C Colloquio (per esame da 8 crediti) Contenuti di Introduzione alla Programmazione Fabio Aiolli PROGRAMMAZIONE Introduzione al corso e Fondamenti

Introduzione al corso e Fondamenti Contenuti del corso Panoramica sul C Strutture dati ed algoritmi Programmi x il calcolo scientifico Fabio Aiolli PROGRAMMAZIONE Introduzione al corso e Fondamenti

Introduzione al corso e Fondamenti Molto Importante Imparare a programmare NON e’ facile e NON si impara sui libri ma necessita di MOLTA pratica (e curiosita’) RENDETEMI IL COMPITO + FACILE Qualsiasi tipo di interazione con lo studente e’ ben accetta da parte mia Richiedete spesso chiarimenti e partecipate attivamente alle lezioni e ai laboratori Fabio Aiolli PROGRAMMAZIONE Introduzione al corso e Fondamenti

Introduzione al corso e Fondamenti Iniziamo.. Fabio Aiolli PROGRAMMAZIONE Introduzione al corso e Fondamenti

Definizioni Fondamentali PARTE 1 Definizioni Fondamentali Fabio Aiolli PROGRAMMAZIONE Introduzione al corso e Fondamenti

Introduzione al corso e Fondamenti Algoritmo DEFINIZIONE Insieme completo delle regole che permettono la soluzione di un determinato problema DEFINIZIONE OPERATIVA Procedura effettiva che indica le istruzioni (passi) da eseguire per ottenere i risultati voluti a partire dai dati di cui si dispone Fabio Aiolli PROGRAMMAZIONE Introduzione al corso e Fondamenti

Introduzione al corso e Fondamenti Algoritmo: Esempi Esempio Culinario: Ricetta x cucinare gli spaghetti Esempi sui numeri: Insieme di passi per verificare se un numero è dispari, pari, primo, ecc. Altri esempi: MCD(a,b), mcm(a,b) Per esempio l’algoritmo di Euclide per il calcolo del MCD (che può essere usato anche per il calcolo del mcm!) Fabio Aiolli PROGRAMMAZIONE Introduzione al corso e Fondamenti

Algoritmo: Caratteristiche Esprimibile con un numero finito di istruzioni Istruzioni eseguibili da un elaboratore Insieme di istruzioni di cardinalità finita Tempo di esecuzione di ogni istruzione finito Elaboratore ha una memoria Calcolo per passi discreti Non esiste limite alla lunghezza dei dati di ingresso Non c’e’ un limite alla memoria disponibile Numero di passi esecuzione eventualmente illimitato Fabio Aiolli PROGRAMMAZIONE Introduzione al corso e Fondamenti

Introduzione al corso e Fondamenti Linguaggi LINGUAGGI NON FORMALI (ambigui) Linguaggio Naturale Linguaggio della musica Linguaggio del corpo Ecc. LINGUAGGI FORMALI (di programmazione) Linguaggi NON ambigui, regolati da regole grammaticali precise Possono essere classificati in base al loro livello di astrazione Fabio Aiolli PROGRAMMAZIONE Introduzione al corso e Fondamenti

Linguaggi di Alto Livello (LAL) ESEMPI FAMOSI Imperativi: PASCAL, FORTRAN,COBOL, C Ad oggetti: CPP, JAVA Appositi software (compilatori) si occupano di tradurre le istruzioni scritte in questi linguaggi (cosiddetto codice sorgente, un file di testo), nell’equivalente codice eseguibile dalla macchina (cosiddetto codice eseguibile, binario) Fabio Aiolli PROGRAMMAZIONE Introduzione al corso e Fondamenti

Caratteristiche LAL strutturati SEQUENZA Le istruzioni vengono eseguite in sequenza nell’ordine in cui compaiono in un blocco di istruzioni SELEZIONE Strutture di controllo decisionali: P.e. Se <espressione> esegui <BloccoIstruzioniV> altrimenti esegui <BloccoIstruzioniF> ITERAZIONE Strutture di controllo iterative: P.e. Fintanto che <espressione> esegui <BloccoIstruzioni> Oppure, Esegui <BloccoIstruzioni> fintanto che <espressione> Fabio Aiolli PROGRAMMAZIONE Introduzione al corso e Fondamenti

Complessita’ degli Algoritmi Complessita’ Polinomial (P) : Il numero di passi e’ proporzionale in modo polinomiale alla cardinalita’ dell’input Complessita’ Non-Deterministic Polinomial (NP) : Sono noti algoritmi che terminano in un numero di passi polinomiale usando un numero indeterminato di macchine in parallelo, oppure utilizzando l’algoritmo di Gastone Fabio Aiolli PROGRAMMAZIONE Introduzione al corso e Fondamenti

Introduzione al corso e Fondamenti Algoritmi di Ricerca Ricerca MIN e MAX Ricerca di un valore in una collezione Ricerca di un valore in una collezione ordinata Ricerca degli zeri di una funzione Fabio Aiolli PROGRAMMAZIONE Introduzione al corso e Fondamenti

Algoritmi di Ordinamento Ordinamento degli elementi in una generica collezione Fondere due collezioni ognuna di esse gia’ ordinata Ordinare senza usare confronti Fabio Aiolli PROGRAMMAZIONE Introduzione al corso e Fondamenti

Algoritmi di Ottimizzazione Problema del Commesso Viaggiatore (TSP) Problema dei Cammini Minimi (SP) Fabio Aiolli PROGRAMMAZIONE Introduzione al corso e Fondamenti

Il processo di programmazione PARTE 2 Il processo di programmazione Fabio Aiolli PROGRAMMAZIONE Introduzione al corso e Fondamenti

Introduzione al corso e Fondamenti Problemi e algoritmi La programmazione e' la disciplina che si occupa della risoluzione di problemi tramite programmi scritti in qualche linguaggio di programmazione Il problema e' una definizione sintetica di cio' che il programma deve realizzare dal punto di vista dell'utente La soluzione fornisce un'idea dell'approccio che deve essere seguito per risolvere il problema, tenendo anche in considerazione quale software gia' esistente potrebbe essere riutilizzato L'algoritmo e' una descrizione precisa e non ambigua di una sequenza di passi da seguire per risolvere un problema. L'algoritmo e' quindi un raffinamento della soluzione. Gli algoritmi possono essere espressi in molti modi Il programma e' una (possibile) descrizione dell'algoritmo espressa usando un particolare linguaggio di programmazione. Si intende che il programma debba essere completo ed eseguibile Per i banali problemi che vedremo, useremo direttamente il linguaggio C per descrivere gli algoritmi. Quindi, per noi, algoritmi=programmi Fabio Aiolli PROGRAMMAZIONE Introduzione al corso e Fondamenti

Il processo di programmazione Il processo di programmazione comprende tutte le attivita' necessarie per sviluppare dei programmi in modo che siano memorizzati e preparati per l'esecuzione Per sviluppare programmi su un computer e' necessario un ambiente di sviluppo che almeno comprenda, oltre al sistema operativo, un editor ed un compilatore Fabio Aiolli PROGRAMMAZIONE Introduzione al corso e Fondamenti

Introduzione al corso e Fondamenti Editor e compilatori Un programma e' un testo che consiste in una sequenza di istruzioni scritte in un particolare linguaggio di programmazione. Tale "testo" viene creato e salvato come un file su disco tramite un editor. Una volta che e' stato scritto e memorizzato, il (testo del) programma viene dato in input al compilatore Il compilatore ha una duplice funzione: Controlla la validita' del programma: segnala gli errori di sintassi. Questi errori devono essere corretti tramite l'editor ed il programma corretto deve quindi essere nuovamente compilato Se il programma non contiene errori, il compilatore traduce il programma in linguaggio macchina Fabio Aiolli PROGRAMMAZIONE Introduzione al corso e Fondamenti

Esecuzione dei programmi Il compilatore naturalmente non e' in grado di scoprire gli errori logici o di esecuzione (i ben noti bug) del programma: in tali casi, il programma risulta essere sintatticamente corretto ma non si comporta come ci si aspetta Il programma viene eseguito (o "fatto girare") attraverso un comando al sistema operativo che lo carica in memoria e quindi diventa un processo in esecuzione Gli errori logici possono essere prevenuti seguendo delle buone regole di programmazione Spesso gli errori logici si individuano mandando in esecuzione il programma ed osservandone il comportamento tramite degli insiemi di test affidabili Una volta rilevato e corretto un errore logico, si dovrebbero nuovamente eseguire i test sul suo comportamento, in quanto le presunte "correzioni" potrebbero aver introdotto nuovi errori Il processo di rilevazione e correzione degli errori logici di un programma viene chiamato debugging Fabio Aiolli PROGRAMMAZIONE Introduzione al corso e Fondamenti

Introduzione al corso e Fondamenti Fabio Aiolli PROGRAMMAZIONE Introduzione al corso e Fondamenti

PROGRAMMAZIONE Introduzione al corso e Fondamenti HelloWorld in C Nome file: helloword.c #include<stdio.h> main() { printf(“Hello World!\n”); } gcc helloword.c -o helloword.exe PROGRAMMAZIONE Introduzione al corso e Fondamenti Fabio Aiolli

PROGRAMMAZIONE Introduzione al corso e Fondamenti Token I token sono unita’ sintattiche di base del C Parole chiave Identificatori Costanti Costanti stringa Operatori Simboli di interpunzione Fabio Aiolli PROGRAMMAZIONE Introduzione al corso e Fondamenti

Parole chiave (Keyword) del C auto double int struct break else long switch case enum register typedef char extern return union const float short unsigned continue for signed void default goto sizeof volatile do if static while Fabio Aiolli PROGRAMMAZIONE Introduzione al corso e Fondamenti

PROGRAMMAZIONE Introduzione al corso e Fondamenti La libreria standard Input e Output <stdio.h> Test dei caratteri <ctype.h> Funzioni su stringhe <string.h> Funzioni Matematiche <math.h> Funzioni Utilita’ <stdlib.h> Funzioni Diagnostiche <assert.h> Liste argiomenti variabile <stdarg.h> Salti non locali <setjmp.h> Segnali <signal.h> Funzioni Date e Ore <time.h> Limiti dei tipi di variabile <limits.h> Fabio Aiolli PROGRAMMAZIONE Introduzione al corso e Fondamenti

PROGRAMMAZIONE Introduzione al corso e Fondamenti Tipi di Dato Un singolo byte char Numero Intero int Numero Intero corto short Numero Intero lungo long int Numero in virgola mobile (singola precisione) float Numero in virgola mobile (doppia precisione) double Numero in virgola mobile (precisione estesa) long double Interi con segno signed {char/int} Interi senza segno unsigned {char/int} Fabio Aiolli PROGRAMMAZIONE Introduzione al corso e Fondamenti

PROGRAMMAZIONE Introduzione al corso e Fondamenti Sequenze di Escape \a bell \\ backslash \b backspace \? punto interrogativo \f formfeed \' apice singolo \n a capo \” apice doppio \r ritorno carrello \ooo carattere ottale \t tabulazione orizzontale \xhh carattere esadecimale \v tabulazione verticale Fabio Aiolli PROGRAMMAZIONE Introduzione al corso e Fondamenti

PROGRAMMAZIONE Introduzione al corso e Fondamenti Dichiarazioni di variabili tipo nome_della_variabile [ = inizializzazione]; Esempi: ● int a; ● int a = 2; ● int a, b; ● float f = 2.345; ● char c = 'X'; ● char messaggio[] = “Questa e' una stringa”; Facendo precedere il tipo dal qualificatore const, si ottiene una “variabile costante”, il cui valore non potrà essere cambiato const double pi = 3,141592653; Fabio Aiolli PROGRAMMAZIONE Introduzione al corso e Fondamenti

PROGRAMMAZIONE Introduzione al corso e Fondamenti Operatori Operatori ● Aritmetici: +, -, *, /, % ● Relazionali: >, >=, <, <=, ==, != ● Logici: &&, ||, ! ● Incremento e decremento: ++, -- ● bitwise: &, |, ^, <<, >>, ~ ● Assegnazione: =, +=, -=, *=, ecc. ● Condizionale ternario: expr1 ? expr2 : expr Fabio Aiolli PROGRAMMAZIONE Introduzione al corso e Fondamenti

PROGRAMMAZIONE Introduzione al corso e Fondamenti Conversioni di Tipo Quando un'espressione coinvolge valori di tipo diverso, essi vengono convertiti ad un tipo comune: automaticamente ad un tipo “più grande”, che quindi non fa perdere informazione esplicitamente, mediante un operazione di cast. Obbligatoria se non e' possibile una conversione implicita automatica. Fabio Aiolli PROGRAMMAZIONE Introduzione al corso e Fondamenti

PROGRAMMAZIONE Introduzione al corso e Fondamenti If (else) if (condizione) { /* blocco eseguito se la condizione e' vera */ } else { condizione e' falsa */ } Fabio Aiolli PROGRAMMAZIONE Introduzione al corso e Fondamenti

PROGRAMMAZIONE Introduzione al corso e Fondamenti Operatori Logici Expr1 Expr2 Expr1 && Expr2 Expr1 || Expr2 ! Expr1 Zero 1 Non Zero Fabio Aiolli PROGRAMMAZIONE Introduzione al corso e Fondamenti

Valutazione short-circuit La valutazione degli operatori logici && e || avviene in maniera short-circuit, cioè da sinistra verso destra e si interrompe non appena il risultato diventa noto. (a != 0) && (++i < 10) (a!=0) || (++i < 10) Fabio Aiolli PROGRAMMAZIONE Introduzione al corso e Fondamenti

PROGRAMMAZIONE Introduzione al corso e Fondamenti Switch Case switch (espressione) { case espr-costante1: istruzioni1 case espr-costante2: istruzioni2 case espr-costante3: istruzioni3 case espr-costante4: istruzioni4 ... default: istruzioni_default } Fabio Aiolli PROGRAMMAZIONE Introduzione al corso e Fondamenti