<table width="700" border="0" cellspacing="2" cellpadding="2"> <tbody> <tr> <td height="2"> <p><br> </p> <table width="95%" border="0" cellspacing="2" cellpadding="2" align="center"> <tbody> <tr> <td width="49%" align="left" valign="top" height="369"> <table border="0" width="100%" cellspacing="0" cellpadding="0"> <tbody> <tr> <td width="100%" colspan="2"> <h1><font color="#000000" face="arial,helvetica"> Programmazione I (P-Z) a.a. 2007/2008 </font></h1> </td> </tr> <tr> <td width="4%"><br> </td> <td width="96%"> <h3><i><b><font face="arial,helvetica"> Docente R. Silvestri </font></b></i></h3> </td> </tr> <tr> <td width="100%" colspan="2"><br> </td> </tr> </tbody> </table> <p></p> <h2><b><font face="arial,helvetica">Finalità</font></b></h2> <p></p> <div align="right"> <table border="0" width="90%"> <tbody> <tr> <td width="100%"><font face="Arial, Helvetica"> <p align="justify">L'obiettivo del corso è fornire le basi della programmazione dei calcolatori tramite linguaggi imperativi. Tali basi sono esemplificate mediante l'apprendimento del linguaggio C. </p> </font> </td> </tr> </tbody> </table> </div> <p></p> <h2><b><font face="arial,helvetica">Programma</font></b></h2> <p></p> <div align="right"> <table border="0" width="90%"> <tbody> <tr> <td width="100%"><font face="Arial, Helvetica"> <p align="justify"> </p> <h3><b>I calcolatori e la programmazione</b></h3> Cenni sulla struttura e funzionamento di un calcolatore. Esecuzione di un programma. Linguaggi assemblativi e linguaggi ad alto livello. Compilatori e interpreti. Gli algoritmi, lo pseudocodice, i diagrammi di flusso. Cenni storici sul linguaggio C. <h3><b>Le basi del linguaggio C</b></h3> Dichiarazione di variabili numeriche. Operatori matematici, operatori relazionali, operatori logici. Assegnamenti. Conversioni implicite e conversioni esplicite. Istruzioni di selezione. Istruzioni iterative. Contatori e sentinelle. Formattazione dell'input con <font face="Courier">printf</font>. Formattazione dell'output con <font face="Courier">scanf</font>. I vantaggi della programmazione strutturata. <h3><b>Funzioni</b></h3> Definizione di funzione e passaggio di parametri. Prototipo di funzione e la direttiva <font face="Courier">#include</font>. Il tipo <font face="Courier">void</font>. Regole di visibilità. Funzioni ricorsive. <h3><b>Tipi semplici e tipi strutturati</b></h3> Il tipo carattere e il tipo stringa. Dichiarazione, inizializzazione e utilizzo di vettori. La direttiva <font face="Courier">#define</font>. Vettori multidimensionali. Vettori a dimensione variabile. Dichiarazione, inizializzazione ed utilizzo di strutture (<font face="Courier">struct</font>). Dichiarazione, inizializzazione ed utilizzo di unioni (<font face="Courier">union</font>). Strutture che contengono altre strutture od unioni. Strutture che contengono vettori. Vettori di strutture. Le enumerazioni (<font face="Courier">enum</font>). La parola chiave <font face="Courier">typedef</font>. <h3><b>Puntatori e allocazione dinamica</b></h3> Dichiarazione, inizializzazione e utilizzo di puntatori. Passaggio di parametri per riferimento: l'operatore di indirizzo <font face="Courier">&</font> e l'operatore di deriferimento <font face="Courier">*</font>. Il qualificatore <font face="Courier">const</font>. Allocazione dinamica della memoria: <font face="Courier">sizeof</font>, <font face="Courier">malloc</font>, <font face="Courier">free</font>. Il tipo <font face="Courier">void *</font>. La relazione tra puntatori e vettori. I vettori di puntatori. L'aritmetica dei puntatori. <h3><b>I file su disco</b></h3> I file ad accesso sequenziale e i file ad accesso diretto. Le funzioni <font face="Courier">fopen</font>, <font face="Courier">fclose</font>, <font face="Courier">fflush</font>, <font face="Courier">fgetc</font>, <font face="Courier">fputc</font>, <font face="Courier">fgets</font>, <font face="Courier">fputs</font>, <font face="Courier">rewind</font>. Lettura e scrittura formattata con <font face="Courier">fprintf</font> e <font face="Courier">fscanf</font>. Lettura e scrittura di file ad accesso diretto: <font face="Courier">fseek</font>, <font face="Courier">fwrite</font>, <font face="Courier">fread</font>. <h3><b>Implementazione di algoritmi e strutture dati di base</b></h3> Alcuni algoritmi di ordinamento: per inserzione, per selezione, a bolle. L'algoritmo della ricerca binaria. Strutture dati lineari: liste, pile, code. Implementazione tramite strutture e puntatori. Linee guida per la realizzazione di piccole librerie: decomposizione in moduli, separazione interfaccia-implementazione, compilazione di più file e compilazione separata. I specificatori <font face="Courier">static</font> ed <font face="Courier">extern</font>. <p></p> </font></td> </tr> </tbody> </table> </div> <p></p> <h2><b><font face="arial,helvetica">Testi</font></b></h2> <p></p> <div align="right"> <table border="0" width="90%"> <tbody> <tr> <td width="100%"><font face="Arial, Helvetica"> <p align="justify"> </p> <h3><b>Testi consigliati</b></h3> <ul> <li> <p><font color="#3c0eb7"> <a href="http://www.apogeonline.com/libri/88-503-2633-5/scheda"> H.M. Deitel, P.J. Deitel <i>C: Corso completo di programmazione</i></a> Apogeo, III edizione, 2007.</font></p> </li> <li> <p><font color="#3c0eb7"> <a href="http://hpe.pearsoned.it/site/show.php?curr_sec=catalogo&sub_sec=cat_sk_libro&ISBN=8871922190">A. Kelley, I. Pohl <i>C: Didattica e programmazione</i></a> Pearson (Addison Wesley), IV edizione, 2004.</font></p> </li> </ul> <h3><b>Testi di approfondimento</b></h3> <ul> <li> <p style="margin-bottom: 0in;"><font color="#3c0eb7"> <a href="http://hpe.pearsoned.it/site/show.php?curr_sec=catalogo&sub_sec=cat_sk_libro&ISBN=887192200x"> B.W. Kernighan, D.M. Ritchie <i>Il linguaggio C - Principi di programmazione e manuale di riferimento</i></a> Pearson (Prentice Hall), 2004.</font></p> </li> Il classico manuale del linguaggio C, più conciso ed agile dei libri di Kelley&Pohl e Deitel&Deitel però meno adatto per il principiante. </ul> <ul> <li> <p style="margin-bottom: 0in;"><font color="#3c0eb7"> <a href="http://www.CAReferenceManual.com/"> S.P. Harbison III, G.L. Steele Jr <i>C: A Reference Manual</i></a> Prentice Hall, 2002.</font></p> </li> Un manuale di riferimento per il linguaggio C estremamente curato e preciso. Utilissimo per risolvere dubbi circa: ciò che è C standard (ANSI/ISO) e ciò che non lo è, portabilità, compatibilità con il C++, ecc. Fortemente consigliato a chiunque voglia fare un uso non occasionale del linguaggio C. </ul> <ul> <li> <p style="margin-bottom: 0in;"><font color="#3c0eb7"> <a href="http://cm.bell-labs.com/cm/cs/tpop/index.html"> B.W. Kernighan, R. Pike <i>The Practice of Programming</i></a> Addison Wesley.</font></p> </li> Tratta in modo sintetico e significativo tutti gli aspetti della programmazione. Dalle strutture dati ed algoritmi al debugging e testing, dallo stile di programmazione alla progettazione di librerie, passando per l'analisi delle prestazioni e i metodi per migliorare la portabilità. I linguaggi considerati sono: C, C++ e Java. </ul> <ul> <li> <p style="margin-bottom: 0in;"><font color="#3c0eb7"> <a href="http://www.cs.bell-labs.com/cm/cs/pearls/"> J. Bentley <i>Programming Pearls</i></a> Addison Wesley.</font></p> </li> Molti dei temi trattati nel libro di Kernighan e Pike sono qui elaborati in modo originale e stimolante. Pieno di divertenti ed istruttivi aneddoti che mostrano la reale differenza tra la teoria e la pratica della programmazione e financo dell'ingegneria del software. Usa i linguaggi C e C++. </ul> <p></p> </font> </td> </tr> </tbody> </table> </div> </td> </tr> </tbody> </table> </td> </tr> </tbody> </table> <br> <br> <br> <br> <br> -- Users.RiccardoSilvestri - 23 Sep 2007
This topic: Programmazione1
>
WebHome
>
Prog1PZ
>
ProgrammaPZ0708
Topic revision: r1 - 2007-09-23 - RiccardoSilvestri
Copyright © 2008-2024 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki?
Send feedback