Laboratorio di Algoritmi e strutture dati

docente: M. A. Alberti


Linguaggi a confronto
Un problema semplice trattato in diversi linguaggi: sommare i numeri dispari in un insieme di numeri dati e riportane la somma.
somma_dispari.p, in Pascal
somma_dispari.apl, in APL
somma_dispari.th, in FORTH
somma_dispari.lo, in LOGO
somma_dispari.li, in Lisp

Confronto tra Pascal e C nel problema di conteggio delle parole in un testo:
conta_parole.p, in Pascal
conta_parole.c, in C

Si legga The Development of the C Language, articolo sulla storia di C scritto da Dennis M. Ritchie, uno degli autori del famoso testo K&R

Tabella di conversione delle temperature
Sapendo che la formula per convertire le temperature espresse in gradi Fahrenheit e in gradi Celsius e' data da: C = (5/9) (F - 32) calcolare una tavola di conversione. Esempi tratti da K&R.
temp_conv.c. Tipi di dato integer, primitive di stampa printf()
temp_conv2.c. Tipo di dato float, primitive di stampa printf()

Rappresentazione di interi e precisione di macchina
Test su overflow e underflow di interi. interi.c
Dimensione dei tipi fondamentali per la rappresentazione di numeri. sizeof.c
Detto anche zero di macchina è definito come il più piccolo numero tale che sommato a 1 dia un numero diverso da 1. zero.c

Input e output di caratteri
Le funzioni primitive getchar() e putchar(). Si noti che getchar() riporta un valore dichiarato int. Si noti anche che EOF è una costante intera definita nello header file stdio.h.
in_out.c, semplice lettura da input
copia_in_out.c, esempio tratto da K&R
conta_righe.c
single_line.c, scandisce l'input e lo formatta eliminando eventuali righe vuote
conta_parole.c, programma che conta le parole di cui e' composto un testo di input.

Array
dado.c, distribuzione gaussiana dei numeri generati da consecutivi lanci di 2 dadi.
bubble.c, ordinare un array di numeri con l'algoritmo Bubble Sort: a fronte dell' input produce l' output.
eratostene.c il crivello di Eratostene per la ricerca dei numeri primi.

Dichiarazioni di funzioni e prototipi
maxmin.c, che a fronte dell' input produce l' output. Esempio tratto da K&P.
word_cnt.c, un altro programma che conta le parole di un testo, che fa uso della funzione found_nextw() per segnalare l'inizio di una parola.
buffer.c, simulazione di un produttore e di un consumatore, che interagiscono con un buffer attraverso l'uso di funzioni.

Puntatori e array
abc.c, manipolazione di array tramite puntatori, che produce in output, tratto dal K&P.
arrayMono.c, esempio di gestione array monodimensionale tramite puntatore.
array_stringhe.c, esempio di gestione di stringhe tramite array. Si noti l'inizializzazione della stringa non corretta senza il tappo che può causare errore nel calcolo della sua lunghezza, e la versione corretta array_stringhe2.c.
lun_str.txt, versioni alternative della funzione lun_str() per il calcolo della lunghezza di una stringa.
array_punt.c che produce output su macchina che rappresenta interi e indirizzi a 32 bit. Una versione simile array_punt2.c produce output su macchina che rappresenta interi a 16 bit e indirizzi a 32 bit.

Passaggio dei parametri a funzione mediante puntatore (call-by-reference)
swap.c, classico esempio di passaggio di parametri tramite puntatore per comunicare con l'ambiente chiamamnte in output, per ovviare al problema evidenziato da try_to_change.c.
separa.c, una funzione per la lettura della parte intera e della parte decimale di un numero.
frazioni.c, una funzione per la lettura di frazioni ben formate.

Una tabella riassuntiva per parametri a funzione.

Gestione file di input e output
cnt.letters.c, scandisce l'input da file e produce un file di output contente una tabella di conteggio delle lettere maiuscole. Esempio di uso del file di input e di output dalla riga di comando.

Array di puntatori
Programma che manipola un array di stringhe, per esempio per ordinarlo in ordine alfabetico, senza modificare il dato
array_di_ptr.c


ultima modifica: , Maria A. Alberti