====== Esercitazione ====== ===== Esercizio 1: Equazioni di secondo grado ===== Scrivere un programma C che legge da standard input i coefficienti ''a,b,c'' di uan equazione di secondo grado a * x^2 + b * x + c = 0 ne calcola le radici seguendo la traccia in {{:fisica:informatica:201415:esercitazioni:eserciziopolinomio.pdf|questo documento}} ===== Esercizio 2: Stampa cifre decimali ===== Scrivere un programma C che legge dallo standard input un numero intero positivo ''X'' e stampa le cifre decimali del numero, una per linea (separate da ''\n'') sullo standard output. ===== Esercizio 3: Stampa cifre binarie ===== Scrivere un programma C che legge un intero ''X'' (tipo ''int'') da standard input e stampa sullo standard output le cifre della sua rappresentazione in complemento a due. //Suggerimento//: utilizzare gli operatori bit a bit di shift (<<,>>), complemento(~), and(&), or(|), xor (^) per ricavare le cifre dalla rappresentazione interna di ''X'' come ''int'' senza ricalcolarla. ===== Esercizio 4: Bilanciamento delle parentesi ===== Scrivere un programma C che legge dallo standard input una sequenza di caratteri (terminata da EOF) e stabilisce se l'insieme dei caratteri utilizza in modo appropriato le parentesi graffe tonde e quadre ovvero * se il numero delle parentesi aperte e chiuse coincide e * se la parentesi aperta precede sempre la parentesi chiusa. Ad esempio: {lkshaj[nnnn()]}{} e' una sequenza corretta, mentre {lkshaj][nnnn()}{} e' scorretta. Utilizzare ''getchar()'' per leggere i caratteri uno ad uno, la funzione restituisce EOF quando lo stream e' finito (vedi ''man getchar''). Inserendo manualmente i caratteri EOF puo' essere generato utilizzando la combinazione di tasti CONTROL-D. Quando il programma e' funzionante, verificare il bilanciamento delle parentesi del programma stesso utilizzando la redirezione. Ad esempio, se l'eseguibile relativo al mio programma si chiama ''checkpar'', e il sorgente si trova nel file checkpar.c, provare ad eseguire bash$ ./checkpar < checkpar.c ===== Esercizio 5: Operatori logici ===== Fornire delle espressioni logiche equivalenti alle seguenti senza usare la negazione (''!'') !(a > b) !(a <= b && c <= d ) !(a + 1 == b + 1) !(a < 1 || b < 2 && c < 3) Verificare la bontà della soluzione fornita stampando sullo standard output le [[http://it.wikipedia.org/wiki/Tabella_della_verit%C3%A0 | tabelle di verità]] per tutte le coppie di espressioni equivalenti. ===== Esercizio 6: Calcolo delle potenze di 2 ===== Scrivere un programma C che legge da standard input un numero intero positivo ''n'' (''n<=30'') e calcola l'n-esima potenza di 2 (2 elevato ad n) utilizzando gli operatori di shift (''<<'' o ''>>'').