• Non ci sono risultati.

Fondamenti di Programmazione e Architettura dei calcolatori Esercitazione di riepilogo Pier Luca Montessoro

N/A
N/A
Protected

Academic year: 2021

Condividi "Fondamenti di Programmazione e Architettura dei calcolatori Esercitazione di riepilogo Pier Luca Montessoro"

Copied!
2
0
0

Testo completo

(1)

Fondamenti di Programmazione e Architettura dei calcolatori Esercitazione di riepilogo

Pier Luca Montessoro

1. Text To Phone

Negli Stati Uniti è abitudine scrivere i numeri di telefono in forma testuale (utilizzando la corrispondenza numeri- lettere delle tastiere dei telefoni) per renderli più facilmente memorizzabili.

La tabella di corrispondenza è riportata di fianco.

Si scriva in linguaggio C il programma txt2phone.c che riceva come parametro sulla linea di comando il nome di

due file e che scriva nel secondo la rubrica telefonica contenuta nel primo convertendo i numeri di telefono dalla forma testuale alla forma numerica.

Il file di ingresso (primo file passato come parametro) contiene un identificativo e un numero telefonico in forma testuale per ogni riga.

Il formato delle righe è il seguente:

<identificativo>:<numero>

L'identificativo può contenere spazi e può essere lungo al massimo 64 caratteri. I caratteri ':' possono comparire solo come separatore.

NOTE:

1) non è detto che tutti i numeri vengano sempre convertiti in testo. Il programma deve funzionare anche in tale circostanza;

2) la stringa di ingresso che rappresenta il numero in forma testuale può contenere spazi o altri caratteri (es. '-', '"', '*', ecc., ma non ':') che devono essere ignorati e non riportati nella sequenza numerica;

3) la lunghezza del file di ingresso non è nota.

ESEMPIO DI ESECUZIONE DEL PROGRAMMA IN AMBIENTE MS-DOS:

C:\> txt2phone txtphone.dat numphone.dat C:\> type numphone.dat

Noborder Air Company: 80053863359 Car: 80073682227

Last minute Travel: 73239246 Bookstore: 226654968

2. Numeri

Un insieme di 10 file di testo rappresenta l'aspetto grafico delle dieci cifre decimali. Ogni file contiene una matrice di spazi e asterischi di dimensioni 5 righe per 8 colonne. Il nome di ogni file è uguale alla cifra rappresentata.

Per esempio:

file 0.txt ..####..

.#....#.

.#....#.

.#....#.

..####..

file 1.txt ...#..

...#..

...#..

...#..

...#..

file 2.txt ..####..

...#.

..####..

.#...

..####..

file 3.txt ..####..

...#.

..####..

...#.

..####..

file 4.txt ....##..

...#.#..

..#..#..

.######.

...#..

ecc.

NOTA: questi file sono disponibili all’indirizzo:

http://web.diegm.uniud.it/pierluca/public_html/downloads/teaching/cifre_ascii_art/

Si vuole scrivere un programma che riceva sulla riga di comando una stringa contenente un numero intero decimale e scriva sullo schermo tale numero mediante le rappresentazioni delle cifre contenute nei file sopra descritti.

0 (nessuna corrispondenza) 1 (nessuna corrispondenza)

2 lettera a, lettera b oppure lettera c 3 d, e oppure f

4 ghi 5 jkl 6 mno 7 pqrs 8 tuv 9 wxyz

Esempio di file di ingresso:

Noborder Air Company: 800-let me fly Car: 800-rent a car

Last minute Travel: ready 2 go Bookstore: A BOOK 4 *YOU*

(2)

Esempio:

C:\>numeri 709421

.#####....####....####...##....####...#..

...#...#....#..#....#....#.#...#...#..

....#....#....#...#####...#..#....####...#..

...#...#....#...#..######..#...#..

...#...####....####...#....####...#..

1) Si consideri il seguente vettore tridimensionale:

char m[10][5][8];

Tale vettore è adatto per contenere, in ciascun elemento della prima dimensione, la matrice che rappresenta la cifra corrispondente al valore dell’indice. In altre parole, la matrice bidimensionale m[0] può contenere la copia dei caratteri contenuti nel file 0.txt, m[1] i caratteri di 1.txt e così via per tutti gli altri file.

Si scriva una funzione in linguaggio C che legga i dieci file e ne copi il contenuto nel vettore tridimensionale sopra descritto, passato come parametro alla funziona. ATTENZIONE: LA FUNZIONE DEVE UTILIZZARE UN SOLO PUNTATORE A FILE.

2) Si scriva una funzione in linguaggio C che riceva come parametri una stringa (di lunghezza massima 10 caratteri e contenente solo caratteri numerici) e una matrice di char di dimensioni 5 righe per 80 colonne.

Facendo uso della funzione di cui all’esercizio precedente, la funzione deve riempire la matrice bidimensionale con la rappresentazione grafica delle cifre contenute nella stringa, come descritto nell’introduzione.

3) Facendo uso delle funzioni di cui agli esercizi precedenti, si scriva il main e la funzione di stampa a video per realizzare il programma sopra descritto.

3. Generazione di melodia

Nella musica occidentale le note musicali della scala cromatica sono dodici (le cosiddette sette note più cinque diesis/bemolli). Le dodici note sono equispaziate in frequenza da un intervallo (“semitono”) tale che il rapporto di frequenza tra note omonime distanti un’ottava sia pari a 1:2. Di conseguenza, il rapporto di frequenza tra note distanti un semitono è pari a 12

2

, ovvero 21/12.

Inoltre, nella notazione anglosassone le note si indicano con una lettera maiuscola dell’alfabeto: A=la, B=si, ... , G=sol.

Le note possono essere seguite dal carattere ‘#’ per indicare il diesis e da ‘b’ per indicare il bemolle.

Sul pianoforte, il LA dell’ottava centrale è indicato come A4, trattandosi della quarta ottava. Tale nota è utilizzata come riferimento per l’accordatura degli strumenti ed ha la frequenza di 440 Hz. Quattro ottave più in basso si trova la prima nota del pianoforte, A1, alla frequenza di 55 Hz.

Tutte le 88 note del pianoforte, dal la della prima ottava al do della nona, possono quindi essere indicate così:

A1, A#1 oppure Bb1, B1, C2, C#2 oppure Bb2, ... G#4 oppure Ab4, A4, A#4 oppure Bb4, ..., Bb8, B8, C9.

La frequenza di ogni nota può essere ricavata dalla seguente tabella (sia k = 55.00 * 2ottava-1):

A k A3 55.00 * 22 * 2 1/12

A# / Bb k * 2 1/12 A# 3/ Bb3 55.00 * 22 * 2 2/12

B k * 2 2/12 B3 55.00 * 22 * 2 2/12

C k * 2 -9/12 C4 55.00 * 23 * 2 -9/12

C# / Db k * 2 -8/12 esempio C#4 / Db4 55.00 * 23 * 2 -8/12 D k * 2 -7/12 D4 55.00 * 23 * 2 -7/1 D# / Eb k * 2 -6/12 D#4 / Eb4 55.00 * 23 * 2 -6/12

E k * 2 -5/12 E4 55.00 * 23 * 2 -5/12

F k * 2 -4/12 F4 55.00 * 23 * 2 -4/12

F# / Gb k * 2 -3/12 F#4 / Gb4 55.00 * 23 * 2 -3/12

G k * 2 -2/12 G4 55.00 * 23 * 2 -2/12

G# / Ab k * 2 -1/12 G#4 / Ab4 55.00 * 23 * 2 -1/12

Si scriva un programma in linguaggio C che riceva sulla riga di comando il nome di un file wave di uscita e una sequenza di note (per semplicità si assuma che siano tutte di identica durata, pari a 200 ms, e che non ci siano pause) rappresentate nella notazione sopra descritta. Il programma deve produrre nel file di uscita la melodia rappresentata dalle note.

Per esempio:

C:\PROGRAMMI>make_melody per_elisa.wav E5 D#5 E5 D#5 E5 B4 D5 C5 A4

Riferimenti

Documenti correlati

© 2003 Pier Luca Montessoro (vedere nota di copyright a pag. 2) 2 Questo insieme di trasparenze (detto nel seguito slide) è protetto dalle leggi sul copyright e dalle

L’informazione contenuta in queste slide è ritenuta essere accurata alla data della pubblicazione.. Essa è fornita per scopi meramente didattici e non per essere utilizzata in

© 1999 Pier Luca Montessoro (si veda la nota a pagina 2) 2 Questo insieme di trasparenze (detto nel seguito slide) è protetto dalle leggi sul copyright e dalle disposizioni

In ogni caso questa nota di copyright e il suo richiamo in calce ad ogni slide non devono mai essere rimossi e devono essere riportati anche in utilizzi parziali.. Nota

© 1999 Pier Luca Montessoro (si veda la nota a pagina 2) 2 Questo insieme di trasparenze (detto nel seguito slide) è protetto dalle leggi sul copyright e dalle disposizioni

• Il dominio della Rete unitaria è quella parte della Rete che consente alle reti delle diverse amministrazioni di. interoperare (dorsale

© 1999 Pier Luca Montessoro ( si veda la nota a pagina 2) 2 Questo insieme di trasparenze (detto nel seguito slide) è protetto dalle leggi sul copyright e dalle disposizioni

© 2001 Pier Luca Montessoro (si veda la nota a pagina 2) 2 Questo insieme di trasparenze (detto nel seguito slide) è protetto dalle leggi sul copyright e dalle disposizioni dei