Parte Teorica 1 compitino di Linguaggi per la Sicurezza Ipotesi di Domande
|
|
- Baldassare Forti
- 7 anni fa
- Visualizzazioni
Transcript
1 Parte Teorica 1 compitino di Linguaggi per la Sicurezza Ipotesi di Domande versione 1.1 1) A cosa servono i tipi nei linguaggi di programmazione? In primo luogo servono per organizzare; cioè attribuire un concetto ad untipo appunto. Inoltre, servono per fare in modo che nella memoria i bit vengano interpretati nel modo corretto. Infine per dare delle informazioni al compilatore su come manipolare i dati. 2) Cosa è un errore hardware: fare un esempio. Un errore di tipo Hardware può essere per esempio x(); dove x() non è un procedura ma invece è un intero. 3) Cosa è un errore semantico: fare un esempio. Un errore di tipo semantico è per esempio la funzione int_add(3, 4.5); 4.5 viene interpretato come int ma che valore restituisce la funzione?: questo è un errore semantico 4) Cosa significa dangling pointers: fare un esempio in Linguaggio C. struct Point *result = malloc(sizeof(struct Point)) 5) Cosa singifica che un type checking è Compile time o Run Time? Significa che il controllo dei tipi viene fatto durante la compilazione come nel Java o nel C oppure che come in Lisp viene fatto durante l esecuzione 6) Vantaggi e svantaggi Run Time / Compile Time Se il controllo dei tipi viene fatto durante l esecuzione del programma, rallenta la sua esecuzione,al contrario, il controllo fatto durante la compilazione limita molto fortemente il programmatore. Es.: in Java come in C un array deve essere per forza composto da elementi delle stesso tipo. Alcuni programmi corretti Run time non lo sono Compile time. 7) E possibile creare un compile type cheker che faccia passare tutti i programmi run time? si/no perchè? Con dangling pointers, intendiamo un punttore che magari utilizzato la prima volta da un risultato corretto e funzionante poi però richiamato una seconda volta in un altra zona del programma, fa riferimento a dati inattesi Esempio in C: struct Point {int x; int y;; struct Point *newpoint (int x,int y){ struct Point result={x,y; return &result; int main (){ struct Point *p=newpoint(1,2); p ->y = 1234; Nell esempio riportato, p punta ad una zona di memoria che è stata dealocata all uscita da newpoint! Una soluzione è, qulla di usare la malloc: 1 No!, non è possibile: è un problema indecidibile! Non esiste infatti la possibilità di creare un compile type cheker che sia in grado di accettare programmi safe run time. 8) Vantaggi e svantaggi tra C e Java. I vantaggi del linguaggio C sono: la possibilità di avere accesso alla memoria e di poterla gestire manualmente, possibilità di lavorare a basso livello; tutto questo porta in generale a delle performance superiori rispetto a programmi scritti in Java. Mentre Java, suo vantaggio, è un linguaggio sicuro questo tuttavia abbassa le performance, per la pulizia della memoria viene utilizzato il garbage collector; Java necessita di più memoria, controllo dei tipi e controllo dello sforamento per ogni array; le dimensioni degli array sono tutte mantenute in memoria.
2 9) Cosa è Cyclone, SafeC, CCured come funzionano? Sono tutti programmi per rendere il linguaggio C (che non è safe), sicuro. Sia SafeC che CCured, prendo come input programmi in C nel caso di CCured anche con annotazioni particolari (opzionali) e li rendono sicuri, con il contro di minor performance durante l esecuzione. Mentre nel caso di Cyclone, come input riceve programmi in C modificati e quindi l esecukzione non viene rallentata come ngli altri programmi, però, come svantaggio bisogna modificare i file originali. 10) Nell ambito del testing di programmi cosa si intende per Validazione e Verifica? Per Validazione di un programma si intentde: che risponda alle specifiche in genere informali date dall utente; in altre parole soddisfi i bisogni del utente. Mentre per verifica si intende il controllo che l implementazione corrisponda alle specifiche fatte da noi, dal progettista, che spesso vengono rappresentate con 11) Che differenze ci sono tra il testing Statico e Dinamico? Con il testing statico, si testa il programma senza la sua esecuzione ma solo guardando il codice. Mentre con il testing dinamico si testa il programma in esecuzione: input Programma output 12) Cosa si intende per Failure, Guasto, Malfunzionamento? Con questi termini si indica un funzionamento non corretto da parte del programma legato al comportamento. 13) Per Anomalia, difetto o bug? Questi termini stanno ad indicare che un elemento del programma produce dati inattesi 14) Mentre per errore cosa si intende? Con errore si intende un problema umano che causa una deviazione tra software prodotto e software ideale, dimenticanza, errore di battitura... 15) Qual è lo scopo del testing? Lo scopo del Testing è quello di trovare i difetti mediante i malfunzionamenti 16) Descrivere i vari tipi di testing. I vari tipi di Testing sono: 1. Accettazione: serve per vedere se il programma è conforme alle specifiche date dall utente 2. Conformità: serve per vedere se rispetta le specifiche fatte da noi Es.: con UML. 3. Sistema: controlla il comportamento dell intero sistema come se fosse monolitico 4. Integrazione: controllo sul modo di operare delle unità 5. Unità: controllo funzionamento delle singole unità 6. Regressione: controllo sul comportamento delle release successive 17) Fare un esempio di Unit Testing. Attraverso il Test unit, si esamina una sola unità, una parte del codice grazie ad un test driver che passa i valori alla funzione per vedere come si comporta. 18) Descrivi e discuti i limiti del Testing. Il testing anche quelo più selettivo non garantirà mai l assenza di errori in un software 19) Cosa si intende per Black-Box e White-Box? Per Black-Box si intende un software su cui fare test di cui non si conosce l implementazione ma si vede soltanto input e output; mentre white-box, l implementazione è nota e quindi si vede il codice. 20) Descrivi brevemente la teoria del Testing? La teoria del testing dice che: un programma P : D R d D, ok(p, d) se produce P(d). P correttose d D risulta ok(p, d). Un Test set è un sottoinsieme di D quindi, ok(p, T)se d T, ok(p, d) 21) Cosa si intende per Test Idelale e Test esaustivo? Con il test esaustivo si provano tutte le possibilità, de D è l insieme degli interi si provano tuti gli interi. Con test ideale, T ideale se ok(p, T) ok(p) 22) Cosa è un Test Criteria? E una funzione che dato il programma e la sua specifica restituisce vero o falso cioè un predicato sull insieme dei possibili T 2
3 23) Quando si dice che un criterio è affidbile? Mentre quando e valido? Si dice che un criterio è affidabile quando per ogni coppia di test T1 e T2 di un criterio C se si trova un malfunzionamento con T1, lo si trova anche con T2 e viceversa. Mentre si dice che un criterio è valido su un programma con un errore quando almento un test conformae al criterio trova l errore del programma. 24) Il testing strutturale dei programmi basato sul flusso di controlo, da quali parti e formato? Statement Coverage - copertura delle istruzioni Branch Coverage - copertura delle decisioni Condidion Coverage - copertura delle decisioni Path Coverage - copertura dei cammini 25) Cosa si intende per Statement Coverage? Con lo statement Coverage, si intende: un test è adeguato per testare un programma, se per ogni istruzione esiste un caso di test che esegue quella istruzione. C 0 = numerodi istruzioni eseguite numero di istruzioni eseguibili 26) Cosa si intende per Branch Coverage? espressioni di ogni decisione; Es. (x > 2 y < 2) la prima deve essere valutata vera e poi falsa allo stesso modo la seconda. 29) Multipre condition coverage: qual è il suo limite? Il principale limite di questa tecnica è avere tutte le combinazioni delle condizioni su n condizioni, 2 n casi. Quindi un problema esponenziale, intrattabile al crescere di n. 30) Cosa si intende con Modified Condition/decision coverage criteria? Con MC/DC, si vuole testare, ogni condizione di una decisione in modo che il cambiare indipendentemente una condizone produca un risultato finale diverso. 31) Esempio di uso del Modified Condition / Decision Coverage? Come cambiano le condizioni nel caso di una decisione con due condizioni AND e nel caso OR. AND OR T T T T T T T F F T F T F T F F T T F F F F F F Con il branch coverage, si intende un test che esegua ogni ramo del programma lmeno una volta C path = numerodi branch eseguiti numero di branch eseguibili 27) Differenze tra Statement e Branch Coverage. Lo Statement coverage è più debole rispetto al Branch, in quanto lo S.C. può eseguire tutte le istruzioni ma in alcuni casi,non copre ogni ramo del grafo del programma. 28) Cosa si intende per Decision e Conditions Coverage? Con Decision Coverage, è equivalente al branch Coverage, mentre il Conditions coverage, valuta le singole if ((a! = b) && (a < b)) Primo caso, valuto C1, metto a True C1 e cambio le altre: [T,T] - [T,F] Nel secondo caso, valuto C2, metto a True C2 e cambio le altre[t,t] - [F,T] if ((a! = b) (a < b)) Primo caso, valuto C1, metto a False C1 e cambio le altre: [F,F] - [F,T] Nel secondo caso, valuto C2, metto a False C2 e cambio le altre[f,f] - [T,F] Da n condizioni ottengo sempre n 1 test. 3
4 Esempio di Copertura 1: while (a>=0) { if ( (a>b) && (b!=0)) a=b-2; else b=b-1; Statement Coverage: Bisogna coprire tutte le istruzioni Il caso di test {(a = 5, b = 2);(a = 2, b = 0);(a = 1, b = 0) copre tutte le istruzioni. Branch Coverage: Il caso di test {(a = 5, b = 2);(a = 2, b = 0);(a = 1, b = 0) copre tutte le decisioni. Decision Coverage: Il caso di test {(a = 5, b = 2);(a = 2, b = 0);(a = 1, b = 0) copre tutte le decisioni. Condition Coverage: Bisogna coprire tutte le condizioni una volta true e una volta false if ((a > b) && (b! = 0)) while (a >= 0) C3 Prima iterazione le condizioni vengono valutate C3 [V] C1 [V] e C2[V] perchè a = 5 quindi maggiore di zero,e poi maggiore di b che vale 2; C2 è vera perchè è diversa da zero. Seconda iterazione C3 [V] perchè a = 0 e C1 [F] perchè a = 0 mentre C2 [V] infatti b = 2 [...] Quarta iterazione C3 [V] perchè a = 0 e C1 [F] perchè a = 0 mentre C2 [F] infatti b = 0 [...] Alla Sesta iterazione, a = 3 e b = 1 quindi C3 [F] il programma termina. Per ola condizione C3, ho ottenuto sia V (nella prima iterazione) che F (nella sesta iterazione) quindi OK; per C1 ho ottenuto V (nella prima iterazione) e F (nella seconda iterazione); per C2, ho ottenuto V (nella prima iterazione) e F (nella quarta iterazione). Conclusione: ho coperto tutti i casi!. Modified Condition/Decision coverage: 4
5 Devo far variare una condizione tenendo fisse le altre in modo tale che il risultato finale cambi. if ((a > b) && (b! = 0)) Il caso di test {(a = 5, b = 2) copre Testo C1: [V,V], [F,V] Testo C2: [V,V], [V,F] [V,V] - Questa condizione è verificata nella prima iterazione [F,V] - Questa condizione è verificata nella seconda, terza iterazione [V,F] - Questa condizione non è verificata! Al test dovrei aggiungere a > b vera e b! = 0 falsa. E questo è proprio il caso {(a = 2, b = 0). Così anche MC/DC è coperto. 5
6 Esempio di Copertura 2: if ( (a>b) && (b!=0)) a=b-2; else b=b-1; Statement Coverage: Bisogna coprire tutte le istruzioni Il caso di test {(a = 5, b = 2);(a = 2, b = 0) copre tutte le istruzioni. Branch Coverage: Il caso di test {(a = 5, b = 2);(a = 2, b = 0) copre tutte le decisioni. Decision Coverage: Il caso di test {(a = 5, b = 2);(a = 2, b = 0) copre tutte le decisioni. Condition Coverage: Bisogna coprire tutte le condizioni una volta true e una volta false if ((a > b) && (b! = 0)) Il caso di test {(a = 5, b = 2) copre Le condizioni vengono valutate C1 [V] e C2[V] perchè a = 5 quindi è maggiore di b che vale 2 e C2 è vera perchè è diversa da zero. if ((a > b) && (b! = 0)) Il caso di test {(a = 2, b = 0) copre Le condizioni vengono valutate C1 [V] e C2[F] perchè a = 2 quindi è maggiore di b che vale 0 e C2 è false perchè è uguale a zero. Aggiungo un nuovo caso di Test: {(a = 2, b = 0) Le condizioni vengono valutate C1 [F] e C2[F] perchè a = 2 quindi è minore di b che vale 0 e C2 è false perchè è uguale a zero. Ho coperto il condition coverage! NUOVO TEST SUITE: {(a = 5, b = 2);(a = 2, b = 0);(a = 2, b = 0) Modified Condition/Decision coverage: 6
7 Devo far variare una condizione tenendo fisse le altre in modo tale che il risultato finale cambi. Testo C1: [V,V], [F,V] Testo C2: [V,V], [V,F] [V,V] - Questa condizione è verificata con il test: {(a = 5, b = 2) [V,F] - Questa condizione è verificata con il test: {(a = 2, b = 0) [F,V] - Questa condizione non è verificata! Al test dovrei aggiungere a > b falsa e b! = 0 vera. Quindi aggiungo il test {(a = 2, b = 1). Così anche MC/DC è coperto. NUOVO TEST SUITE: {(a = 5, b = 2);(a = 2, b = 0);(a = 2, b = 0);(a = 2, b = 1) Il test suite riportato sopra può essere ottimizzato. 7
8 Esempio di Copertura 3: 1 public static int metodo(int x, int[] a) %2 { if (x == 0) { // x è 0 : if (a.length == 0){ return 0; else { return a[0]; else { if (a.length == 0) { return x; else{ int max = a[0]; 33 for (int i = 1; i < a.length; i++){ if (a[i] > max){ max = a[i]; if (max > x){ return max; else { return x;
9 Statement Coverage: Bisogna coprire tutte le istruzioni Il caso di test {(x = 0, a = []) ; (x = 0, a = [1]);(x = 2, a = []);(x = 2, a = [5, 6, 3]);(x = 8, a = [5, 6, 3]) La prima coppia copre le istruzione dalla 5 alla riga 10. La seconda coppia, copre l istruzioni 16. Quindi il primo if è a posto. La terza coppia, copre le istruzione da 25 a 29. La quarta coppia, copre dalla 29 alla 47. La quinta coppia, copre dalla 47 alla 51. Ho coperto tutte le istruzioni! Branch Coverage: Il caso di test Il caso di test: {(x = 0, a = []) ; (x = 0, a = [1]);(x = 2, a = []);(x = 2, a = [5, 6, 3]); (x = 8, a = [5, 6, 3]) copre tutte le decisioni. Decision Coverage: Il caso di test Il caso di test: {(x = 0, a = []) ; (x = 0, a = [1]);(x = 2, a = []);(x = 2, a = [5, 6, 3]); (x = 8, a = [5, 6, 3]) copre tutte le decisioni. Condition Coverage: Bisogna coprire tutte le condizioni una volta true e una volta false Condizione C6: x == 0 C6[V], C6[F]. Condizione C10: a.length == 0 C10[V], C10[F]. Condizione C26: a.length == 0 C26[V], C26[F]. Condizione C34: i < a.length C34[V], C34[F]. Condizione C36: a[i] > max C36[V], C36[F]. Condizione C44: max > x C44[V], C44[F]. Ho coperto il condition coverage! TEST SUITE: {(x = 0, a = []) ; (x = 0, a = [1]);(x = 2, a = []);(x = 2, a = [5, 6, 3]); (x = 8, a = [5, 6, 3]). Modified Condition/Decision coverage: Tutte le decisioni hanno solo una condizione. Non serve applicare MC/DC 9
cap.6 del testo a cosa servono i tipi nei linguaggi di programmazione cos è un linguaggio type safe
cap.6 del testo a cosa servono i tipi nei linguaggi di programmazione cos è un linguaggio type safe 1 tipi statici e tipi dinamici in generale i LP hanno tipi statici, cioè ogni variabile ha un tipo dichiarato
DettagliCollaudo del software
Collaudo del software Il software deve essere testato con il preciso scopo di trovare degli errori prima di essere consegnato al cliente Il collaudo è un insieme di attività pianificate per testare il
DettagliAnalisi statica. Analisi Statica 1
Analisi statica Analisi Statica 1 Tecniche di Verifica e Validazione Analisi statica: processo di valutazione di un sistema o di un suo componente basato sulla sua forma, struttura, contenuto, documentazione
DettagliConcetti base programmazione. Antonio Gallo
Concetti base programmazione Antonio Gallo info@laboratoriolibero.com Programma Insieme di istruzioni: Strtturato Ad oggetti Strutturato Ha una struttura più lineare Basato sui concetti di sequenza, selezione,
DettagliLaboratorio di Programmazione Lezione 2. Cristian Del Fabbro
Laboratorio di Programmazione Lezione 2 Cristian Del Fabbro Prossima lezione GIOVEDÌ 29 OTTOBRE 14:00 Input da tastiera package input; import java.io.*; public class Input { public static void main(string[]
DettagliAXO - Architettura dei Calcolatori e Sistema Operativo. organizzazione strutturata dei calcolatori
AXO - Architettura dei Calcolatori e Sistema Operativo organizzazione strutturata dei calcolatori I livelli I calcolatori sono progettati come una serie di livelli ognuno dei quali si basa sui livelli
DettagliPROGRAMMAZIONE: Le strutture di controllo
PROGRAMMAZIONE: Le strutture di controllo Prof. Enrico Terrone A. S: 2008/09 Le tre modalità La modalità basilare di esecuzione di un programma è la sequenza: le istruzioni vengono eseguite una dopo l
DettagliCorso: Fondamenti di Informatica 1 (gruppo 8-9) Corsi di laurea: Area dell'informazione Questionario di autovalutazione 4
Corso: Fondamenti di Informatica 1 (gruppo 8-9) Corsi di laurea: Area dell'informazione Questionario di autovalutazione 4 Domanda n. 1 Argomento: Rappresentazione dell'informazione Domanda: Il numero binario
DettagliCos è un algoritmo. Si dice algoritmo la descrizione di un metodo di soluzione di un problema che sia
Programmazione Un programma descrive al computer, in estremo dettaglio, la sequenza di passi necessari a svolgere un particolare compito L attività di progettare e realizzare un programma è detta programmazione
DettagliCompitino di Laboratorio di Informatica CdL in Matematica 13/11/2007 Teoria Compito A
Matematica 13/11/2007 Teoria Compito A Domanda 1 Descrivere, eventualmente utilizzando uno schema, gli elementi funzionali di una CPU. Domanda 2 Java è un linguaggio compilato o interpretato? Motivare
DettagliDefinizione di metodi in Java
Definizione di metodi in Java Un metodo in Java definisce un operazione ad alto livello (sottoprogramma) che consente di manipolare dati e oggetti. Durante la computazione effettuata da un programma, un
DettagliProgrammazione Orientata agli Oggetti in Linguaggio Java
Programmazione Orientata agli Oggetti in Linguaggio Java Classi e Oggetti: Metafora Parte a versione 2.2 Questo lavoro è concesso in uso secondo i termini di una licenza Creative Commons (vedi ultima pagina)
DettagliProblema: dati i voti di tutti gli studenti di una classe determinare il voto medio della classe.
Problema: dati i voti di tutti gli studenti di una classe determinare il voto medio della classe. 1) Comprendere il problema 2) Stabilire quali sono le azioni da eseguire per risolverlo 3) Stabilire la
DettagliProgrammazione Orientata agli Oggetti. Emilio Di Giacomo e Walter Didimo
Programmazione Orientata agli Oggetti Emilio Di Giacomo e Walter Didimo Una metafora dal mondo reale la fabbrica di giocattoli progettisti Un semplice giocattolo Impara i suoni Dall idea al progetto Toy
DettagliLinguaggi di Programmazione
Linguaggi di Programmazione Linguaggi di Programmazione Programmazione. Insieme delle attività e tecniche svolte per creare un programma (codice sorgente) da far eseguire ad un computer. Che lingua comprende
DettagliIl C nel C++: Funzioni
Il C nel C++: Funzioni Funzioni (1) il concetto -> spezzare il programma in parti (procedure) una funzione è un parte di programma dotata di un nome che può essere richiamata in altri punti del programma
DettagliInformatica/ Ing. Meccanica/ Edile/ Prof. Verdicchio/ 17/01/2014/ Foglio delle domande / VERSIONE 1
Informatica/ Ing. Meccanica/ Edile/ Prof. Verdicchio/ 17/01/2014/ Foglio delle domande/ VERSIONE 1 1) L approccio con cui si studia un sistema focalizzandosi solo sul rapporto tra input e output si chiama
DettagliSviluppo dei Programmi
Programmazione I a.a 2009-2010 docente: Carmine Gravino Sviluppo dei Programmi Presentazione realizzata dal Prof. Andrea De Lucia 1 Analisi e Specifica Sviluppo dei programmi Progettazione Codifica Verifica
DettagliTRADUZIONE STATE AND TRANSITION DIAGRAM UML E CORRETTEZZA DEI PROGRAMMI IN TLA+
TRADUZIONE DI STATE AND TRANSITION DIAGRAM UML E CORRETTEZZA DEI PROGRAMMI IN TLA+ a cura di: Eleonora Antonelli Simone Maletta Stefano Novara INDICE 1. Grammatica di TLA+ a cura di Eleonora Antonelli
DettagliProgramma del corso. Elementi di Programmazione. Introduzione agli algoritmi. Rappresentazione delle Informazioni. Architettura del calcolatore
Programma del corso Introduzione agli algoritmi Rappresentazione delle Informazioni Architettura del calcolatore Reti di Calcolatori Elementi di Programmazione Algoritmi e programmi Algoritmo Sequenza
DettagliLinguaggi di Programmazione
Linguaggi di Programmazione 1 Linguaggio naturale e linguaggio macchina La comunicazione uomo-macchina avviene attraverso formalismi che assumono la forma di un linguaggio. Caratteristiche del Linguaggio
DettagliIntroduzione alla programmazione. Walter Didimo
Introduzione alla programmazione Walter Didimo Programmi Un programma è una frase (anche molto lunga) che descrive delle azioni che devono essere svolte da un calcolatore La frase deve essere dettagliata
DettagliIstruzioni Condizionali
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1 Dispensa 6 Istruzioni Condizionali Carla Limongelli Settembre 2006 http://www.dia.uniroma3.it/~java/fondinf1/ Istruzioni condizionali
DettagliInformatica 1. Prova di recupero 21 Settembre 2001
Informatica 1 Prova di recupero 21 Settembre 2001 Si risolvano i seguenti esercizi. Ai fini della determinazione del voto finale il loro punteggio andrà sommato al punteggio del laboratorio. Il tempo complessivo
Dettagliprint((math.floor(1345/10)%10); print (Math.floor(1345/100)%10); Le funzioni in JavaScript
Funzioni Funzioni predefinite della libreria matematica Funzioni disponibili: Math.sqrt(x) radice quadrata Math.log(x) logaritmo naturale in base e di x Math.abs(x) valore assoluto di x Math.ceil(x) arrotonda
Dettagli6 - Blocchi e cicli. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo
6 - Blocchi e cicli Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://pages.di.unipi.it/milazzo milazzo di.unipi.it
DettagliCorso di Laurea Ingegneria Civile Fondamenti di Informatica. Esercizi sui metodi. Carla Limongelli. Maggio Esercizi 1
Corso di Laurea Ingegneria Civile Fondamenti di Informatica Esercizi sui metodi Carla Limongelli Maggio 2010 Esercizi 1 Passaggio di parametri di tipo primitivo Indicare che cosa viene visualizzato sullo
DettagliProgrammazione in Java (I modulo)
Programmazione in Java (I modulo) Lezione 4 Variabili di tipo primitivo. Dichiarazione di costanti Conversioni di tipo: operatore cast Altri operatori di assegnamento Operazioni aritmetiche e di confronto
DettagliStrutture Dinamiche. Fondamenti di Informatica
Strutture Dinamiche Fondamenti di Informatica 1 Indice Allocazione e de-allocazione di memoria Liste e loro gestione Companies, srl 2 Allocazione e cancellazione di memoria malloc (sizeof (TipoDato));
DettagliLaboratorio di Informatica. Esercitazione su algoritmi e diagrammi di flusso
Laboratorio di Informatica Esercitazione su algoritmi e diagrammi di flusso Algoritmi, programmi e dati Algoritmo = insieme di istruzioni che indicano come svolgere operazioni complesse su dei dati attraverso
DettagliAlgebra di Boole: Concetti di base. E un algebra basata su tre operazioni logiche
Fondamenti di Informatica Algebra di Boole: Concetti di base Fondamenti di Informatica - D. Talia - UNICAL Algebra di Boole E un algebra basata su tre operazioni logiche OR AND NOT Ed operandi che possono
DettagliIntroduzione ai puntatori in C Definizione
Introduzione ai puntatori in C Definizione Un puntatore è una variabile che contiene l indirizzo di un altra variabile Tramite i puntatori si può quindi accedere a un oggetto indirettamente (si usa il
DettagliELEMENTI DI INFORMATICA L-B. Ing. Claudia Chiusoli
ELEMENTI DI INFORMATICA L-B Ing. Claudia Chiusoli Materiale Lucidi delle lezioni Date degli appelli Testi di esami precedenti Informazioni e contatti http://www.lia.deis.unibo.it/courses/ Programma del
DettagliStrutture di Controllo
Strutture di Controllo Informatica B Istruzioni condizionali #include int main() char c; printf("inserire il carattere maiuscolo: "); scanf("%c", &c); printf("la traduzione e' %c\n",c+32); return
DettagliLez. 5 La Programmazione. Prof. Salvatore CUOMO
Lez. 5 La Programmazione Prof. Salvatore CUOMO 1 2 Programma di utilità: Bootstrap All accensione dell elaboratore (Bootsrap), parte l esecuzione del BIOS (Basic Input Output System), un programma residente
Dettagli3. Indicare cosa sta a significare la figura geometrica del rombo in un diagramma a blocchi
0.1.1.1 Definire un algoritmo 1. Con il termine algoritmo si intende: a) il software utilizzato in un calcolatore b) l elenco finito di istruzioni necessario per risolvere un problema c) un elaboratore
DettagliJava: loading dinamico e reflection
Java: loading dinamico e reflection Scopo del corso integrativo: Presentare le caratteristiche avanzate di Java che lo rendono un linguaggio molto flessibile pur senza rinunciare ai vantaggi di un typechecking
DettagliDalla tabella alla funzione canonica
Dalla tabella alla funzione canonica La funzione canonica è la funzione logica associata alla tabella di verità del circuito che si vuole progettare. Essa è costituita da una somma di MinTerm con variabili
DettagliAlgoritmi e Linguaggi
Algoritmi e Linguaggi Programmi e linguaggi Un calcolatore è solo un esecutore rapidissimo di istruzioni Un programma è un insieme di istruzioni codificate in un opportuno linguaggio 2 / 21 Linguaggi e
DettagliCorso di Laurea in Matematica Corso di Informatica Prova d Esame del 02/02/2010
Esercizio 1. Si deve modellare con una classe Java il contenuto di un portamonete, con delle opportune semplificazioni. Le monete da considerare sono di soli 4 tagli: 10, 20, 50 e 100 centesimi (cioè 1
DettagliSilvia Crafa
Introduzione ai Sistemi di Tipi Silvia Crafa silvia@dsi.unive.it Come nascono i tipi in informatica Cos è un tipo? Perché servono i tipi nei linguaggi di programmazione? Vediamo come nascono i tipi partendo
DettagliInformatica! Appunti dal laboratorio 1!
Informatica! Appunti dal laboratorio 1! Sistema Operativo! Windows 7, Windows 8, Mac OS X, Linux, Debian, Red Hat, etc etc! Il sistema operativo è un programma che serve a gestire TUTTE le risorse presenti
DettagliLinguaggio C - le strutture di controllo: sequenza, selezione, iterazione
Dipartimento di Elettronica ed Informazione Politecnico di Milano Informatica e CAD (c.i.) - ICA Prof. Pierluigi Plebani A.A. 2008/2009 Linguaggio C - le strutture di controllo: sequenza, selezione, iterazione
DettagliMetodologie di Programmazione. ovvero, Principi e Tecniche per la costruzione di programmi
Metodologie di Programmazione ovvero, Principi e Tecniche per la costruzione di programmi 1 In questo corso Sviluppo in piccolo: Tempi: mesi/uomo v.s. anni/uomo Strumenti: personal v.s. professional Programmazione
DettagliUsare il tool emma. info3 angelo unibg
Usare il tool emma info3 angelo gargantini @ unibg Cosa vuol dire copertura Quando si scrivono dei test è importante: 1) controllare mediante assert che il ns programma si comporti come atteso 2) valutare
DettagliCorso di Laurea Ingegneria Informatica Fondamenti di Informatica
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica Dispensa E03 Esempi di algoritmi e programmi A. Miola Novembre 2011 1 Contenuti q Progettazione di algoritmi q Problemi di ingresso - uscita
DettagliPrimi passi col linguaggio C
Andrea Marin Università Ca Foscari Venezia Laurea in Informatica Corso di Programmazione part-time a.a. 2011/2012 Come introdurre un linguaggio di programmazione? Obiettivi: Introduciamo una macchina astratta
DettagliMacchine astratte, linguaggi, interpretazione, compilazione
Macchine astratte, linguaggi, interpretazione, compilazione 1 Macchine astratte una collezione di strutture dati ed algoritmi in grado di memorizzare ed eseguire programmi componenti della macchina astratta
Dettagli5. Codifica degli Algoritmi in C
40 5. Codifica degli Algoritmi in C La traduzione di algoritmi in linguaggi di programmazione rende posbile l esecuzione di programmi da parte del calcolatore. In questo corso codificheremo gli algoritmi
DettagliProva di Laboratorio del [ Corso A-B di Programmazione (A.A. 2004/05) Esempio: Media Modalità di consegna:
Prova di Laboratorio del 12.1.2005 [durata 90 min.] Corso A-B di Programmazione (A.A. 2004/05) 1. Leggere da tastiera un insieme di numeri interi ed inserirli in un vettore A 2. Calcolare tramite una funzione
DettagliCorso di Fondamenti di Informatica
Corso di Fondamenti di Informatica Le classi di istruzioni in C++ 1 Le classi di istruzioni in C++ SEQUENZIALI Statement semplice Statement composto CONDIZIONALI if < expr.> else switch case
DettagliLaboratorio di Programmazione 1 [Java]
Laboratorio di Programmazione 1 [Java] Prova di esame - 7 Settembre 2010 Tempo massimo: 50 minuti Si implementino in Java le classi Tavolo e Ristorante. La classe Tavolo ha i seguenti attributi: numero
DettagliProgrammazione ad oggetti
Programmazione ad oggetti Tipi di dati Tipo = insieme di valori + insieme di operazioni Es. int: valori:, -2, -1, 0, 1, 2, operazioni:: +,-,*,/,
Dettagli5 - Istruzioni condizionali
5 - Istruzioni condizionali Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/ milazzo milazzo di.unipi.it
DettagliCorso di Laurea Ingegneria Informatica Fondamenti di Informatica 1
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1 Dispensa E03 Esempi di algoritmi e programmi A. Miola Settembre 2006 http://www.dia.uniroma3.it/~java/fondinf1/ Esempi di algoritmi e
Dettagli18 - Vettori. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo
18 - Vettori Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://pages.di.unipi.it/milazzo milazzo di.unipi.it Corso di
DettagliLINGUAGGI DI ALTO LIVELLO
LINGUAGGI DI ALTO LIVELLO Si basano su una macchina virtuale le cui mosse non sono quelle della macchina hardware Linguaggi di alto livello Barriera di astrazione C Fortran Modula-2 Cobol Algol Basic Ada
DettagliEspressioni logiche. Espressioni logiche. Operatori logici. Operatori logici. Operatori logici. Espressioni Logiche e Istruzione di Test
Espressioni logiche Espressioni Logiche e Istruzione di Test Fondamenti di Informatica 1 Massimo Di Nanni Gennaio, 2001 Espressioni logiche nelle Istruzioni di Test e di Iterazione Calcolo del massimo
DettagliLINGUAGGI DI ALTO LIVELLO. Si basano su una macchina virtuale le cui mosse non sono quelle della macchina hardware
LINGUAGGI DI ALTO LIVELLO Si basano su una macchina virtuale le cui mosse non sono quelle della macchina hardware 1 LINGUAGGI DI ALTO LIVELLO Barriera di astrazione Fortran Cobol Basic Pascal Python C
DettagliCorso di Informatica di Base
Corso di Informatica di Base A.A. 2011/2012 Algoritmi e diagrammi di flusso Luca Tornatore Cos è l informatica? Calcolatore: esecutore di ordini o automa Programma: insieme di istruzioni che possono essere
DettagliUnità Didattica 2 I Linguaggi di Programmazione
Unità Didattica 2 I Linguaggi di Programmazione 1 Linguaggio naturale e linguaggio macchina La comunicazione uomo-macchina avviene attraverso formalismi che assumono la forma di un linguaggio. Caratteristiche
DettagliSTORIA E CARATTERISTICHE
IL LINGUAGGIO C STORIA E CARATTERISTICHE STORIA E VERSIONI Sviluppato da Dennis Ritchie ai Bell Labs nel 1972 per realizzare il sistema operativo UNIX K&R C: 1978 (prima versione, K&R dal nome degli autori
DettagliGestione dinamica della memoria
Programmazione M-Z Ingegneria e Scienze Informatiche - Cesena A.A. 2016-2017 Gestione dinamica della memoria Pietro Di Lena - pietro.dilena@unibo.it A pessimistic programmer sees the array as half empty.
DettagliEsercizi Programmazione I
Esercizi Programmazione I 9 Novembre 201 Esercizio 1 Valutare e dare il tipo delle seguenti espressioni condizionali. 1 char a= a, b= b ; // a ha v a l o r e decimale 97 2 i n t i= 1, j= 2 ; 3 double x=
DettagliProgrammazione web lato client con JavaScript. Marco Camurri 1
Programmazione web lato client con JavaScript Marco Camurri 1 JavaScript E' un LINGUAGGIO DI PROGRAMMAZIONE che consente di inserire codice in una pagina web Sintassi simile a Java (e al C), ma NON E'
DettagliIl linguaggio di programmazione Python
Università Roma Tre Dipartimento di Matematica e Fisica Percorso Abilitante Speciale Classe A048 Matematica Applicata Corso di Informatica Il linguaggio di programmazione Python Marco Liverani (liverani@mat.uniroma3.it)
DettagliFunzioni, Stack e Visibilità delle Variabili in C
Funzioni, Stack e Visibilità delle Variabili in C Programmazione I e Laboratorio Corso di Laurea in Informatica A.A. 2016/2017 Calendario delle lezioni Lez. 1 Lez. 2 Lez. 3 Lez. 4 Lez. 5 Lez. 6 Lez. 7
DettagliProgrammazione. Andrea Passerini Informatica. Programmazione
Andrea Passerini passerini@disi.unitn.it Informatica Linguaggi di programmazione Il calcolatore è in grado di comprendere solo istruzioni in linguaggio macchina. Il linguaggio macchina non è adatto alla
DettagliPROGRAMMAZIONE STRUTTURATA
PROGRAMMAZIONE STRUTTURATA Programmazione strutturata 2 La programmazione strutturata nasce come proposta per regolamentare e standardizzare le metodologie di programmazione (Dijkstra, 1965) Obiettivo:
DettagliIstruzioni macchina. Dove sono gli operandi? Ciclo della CPU. Elementi di un istruzione macchina. Rappresentazione delle istruzioni
Istruzioni macchina Linguaggio macchina Insieme delle istruzioni (instruction set) che la CPU puo eseguire Capitolo 10 1 2 Elementi di un istruzione macchina Codice operativo Specifica l operazione da
DettagliStrutture dati e loro organizzazione. Gabriella Trucco
Strutture dati e loro organizzazione Gabriella Trucco Introduzione I linguaggi di programmazione di alto livello consentono di far riferimento a posizioni nella memoria principale tramite nomi descrittivi
DettagliFondamenti di Informatica T2 Modulo 2. Corso di Laurea in Ingegneria Informatica Anno accademico 2008/2009. Enumerativi
Università degli Studi di Bologna Facoltà di Ingegneria Fondamenti di Informatica T2 Modulo 2 Corso di Laurea in Ingegneria Informatica Anno accademico 2008/2009 Enumerativi Finora abbiamo creato enumerativi
DettagliFormalismi per la descrizione di algoritmi
Formalismi per la descrizione di algoritmi Per descrivere in passi di un algoritmo bisogna essere precisi e non ambigui Il linguaggio naturale degli esseri umani si presta a interpret non univoche Si usano
DettagliIntroduzione a Java. Prof. Francesco Accarino IIS Altiero Spinelli Via Leopardi132 Sesto San Giovanni
Introduzione a Java IIS Altiero Spinelli Via Leopardi132 Sesto San Giovanni Linguaggi di programmazione Ogni programma viene scritto utilizzando un linguaggio specializzato, formale e comprensibile da
DettagliYYY02 Esercizi per Teoria. Esercizi per preparazione alla prova scritta
YYY02 Esercizi per Teoria Esercizi per preparazione alla prova scritta Esercizio YYY02_02 - Busy Waiting In linguaggio ANSI C, siano dichiarate le seguenti variabili, e siano queste variabili debitamente
DettagliCorso di Fondamenti di Informatica Linguaggi di Programmazione
Corso di Fondamenti di Informatica Linguaggi di Programmazione Anno Accademico Francesco Tortorella Linguaggi di programmazione Un calcolatore basato sul modello di von Neumann permette l esecuzione di
DettagliPolitecnico di Torino Sede di Alessandria Corso di informatica Programmazione in c: introduzione. e mail: sito: users.iol.
Politecnico di Torino Sede di Alessandria Corso di informatica Programmazione in c: introduzione prof. Lorenzo Porcelli e mail: genna18@iol.it sito: users.iol.it/genna18 Risoluzione di un problema Dato
DettagliInformatica/ Ing. Meccanica/ Prof. Verdicchio/ 13/09/2013/ Foglio delle domande/versione 1
Informatica/ Ing. Meccanica/ Prof. Verdicchio/ 13/09/2013/ Foglio delle domande/versione 1 1) Dato un diagramma di flusso quali sono le condizioni necessarie perché si possa costruire un programma corrispondente?
DettagliInformatica ALGORITMI E LINGUAGGI DI PROGRAMMAZIONE. Francesco Tura. F. Tura
Informatica ALGORITMI E LINGUAGGI DI PROGRAMMAZIONE Francesco Tura francesco.tura@unibo.it 1 Lo strumento dell informatico: ELABORATORE ELETTRONICO [= calcolatore = computer] Macchina multifunzionale Macchina
DettagliLaboratorio di programmazione
Laboratorio di programmazione Lezione II Tatiana Zolo zolo@cs.unipr.it 1 IL PROGRAMMA C++ Istruzioni (espressioni terminate da ; ) istruzioni di dichiarazione (es. int x = 0;); istruzioni di assegnamento
DettagliAsserzioni in Java fondamenti
Asserzioni in Java fondamenti Cosa è un asserzione? Una assertion è una espressione booleana che deve essere true se e solo se il codice sta funzionando correttamente. Se l asserzione risulta falsa, viene
DettagliProgrammazione. Cognome... Nome... Matricola... Prova scritta del 11 luglio 2014
Cognome................................ Nome................................... Matricola............................... Programmazione Prova scritta del 11 luglio 2014 TEMPO DISPONIBILE: 2 ore Negli esercizi
DettagliFondamenti di Informatica. Algoritmi di Ricerca e di Ordinamento
Fondamenti di Informatica Algoritmi di Ricerca e di Ordinamento 1 Ricerca in una sequenza di elementi Data una sequenza di elementi, occorre verificare se un elemento fa parte della sequenza oppure l elemento
DettagliAlgoritmi e strutture dati
Algoritmi e strutture dati Roberto Cordone A. A. 2015-16 Capitolo 4 Implementazioni delle partizioni Nota: queste dispense sono un rapido riassunto delle lezioni svolte nel dicembre 2015 e gennaio 2016.
DettagliIndice PARTE A. Prefazione Gli Autori Ringraziamenti dell Editore La storia del C. Capitolo 1 Computer 1. Capitolo 2 Sistemi operativi 21 XVII XXIX
Indice Prefazione Gli Autori Ringraziamenti dell Editore La storia del C XVII XXIX XXXI XXXIII PARTE A Capitolo 1 Computer 1 1.1 Hardware e software 2 1.2 Processore 3 1.3 Memorie 5 1.4 Periferiche di
DettagliAlgoritmi di Ricerca. Esempi di programmi Java
Fondamenti di Informatica Algoritmi di Ricerca Esempi di programmi Java Fondamenti di Informatica - D. Talia - UNICAL 1 Ricerca in una sequenza di elementi Data una sequenza di elementi, occorre verificare
DettagliInformatica Generale Andrea Corradini I linguaggi di programmazione
Informatica Generale Andrea Corradini 17 - I linguaggi di programmazione Sommario Cos'è un linguaggio di programmazione? Una prospettiva storica: linguaggi di prima, seconda e terza generazione I paradigmi
DettagliInformatica, Algoritmi, Linguaggi
Elementi di Informatica e Applicazioni Numeriche T Informatica, Algoritmi, Linguaggi Cos'è l'informatica? Che cos'è l'informatica? Cos'è l'informatica? Che cos'è l'informatica? Dell'informatica possiamo
DettagliLezione 7: La Formalizzazione degli Algoritmi - Strutture di Controllo e Selettive La Programmazione Strutturata (3 p) Giovedì 21 Ottobre 2010
Università di Salerno Corso di FONDAMENTI DI INFORMATICA Corso di Laurea Ingegneria Corso B Docente : Ing. Anno Accademico 2010-2011 Lezione 7: La Formalizzazione degli Algoritmi - Strutture di Controllo
DettagliModulo 2: Strutture fondamentali della programmazione Java
Modulo 2: Strutture fondamentali della programmazione Java Argomenti Trattati: Un semplice programma Java: Presentazione di un primo Esempio; Introduzione alla struttura; Compilazione ed esecuzione. Argomenti
DettagliLe Funzioni e la Ricorsione
Aula V Dip. di Matematica G. Castelnuovo Univ. di Roma La Sapienza Le Funzioni e la Ricorsione Igor Melatti Slides disponibili (assieme ad altro materiale) in: http://www.dsi.uniroma1.it/ melatti/programmazione1.2007.2008.html
DettagliDebug di un programma
Debug di un programma Col termine Debug si intende una fase di sviluppo del software, nella quale si cerca di eliminare gli errori dal programma Due tipi di errori: Errori sintattici, rilevati sempre dal
DettagliCorso di Laurea Ingegneria Informatica Laboratorio di Informatica
Corso di Laurea Ingegneria Informatica Laboratorio di Informatica Capitolo 4 Traduzione ed esecuzione di programmi Ottobre 2006 Traduzione ed esecuzione di programmi 1 Nota bene Alcune parti del presente
Dettagliprova.c #include <stdio.h> char funzione(char); codice oggetto del main()
prova.c #include char funzione(char); {char c= a ; printf( Ecco il carattere: %c\n,c); c=funzione(c); printf( Ecco il carattere modificato: %c\n,c); char funzione(char tmp) {if(tmp
DettagliDecima Esercitazione. Accesso a risorse condivise tramite Monitor Java
Decima Esercitazione Accesso a risorse condivise tramite Monitor Java 1 Agenda Esempio 1 La banca: gestione di una risorsa condivisa da più thread, con politica prioritaria Esercizio 2 da svolgere Accesso
DettagliInput/output da file I/O ANSI e I/O UNIX FLUSSI E FILE FLUSSI FLUSSI di TESTO FLUSSI BINARI FILE
Input/output da file Il linguaggio C non contiene istruzioni di I/O, in quanto tali operazioni vengono eseguite tramite funzioni di libreria standard. Questo approccio rende estremamente flessibile e potente
DettagliCorso di Matematica per la Chimica. Dott.ssa Maria Carmela De Bonis a.a
Dott.ssa Maria Carmela De Bonis a.a. 2013-14 Programmi Un elaboratore riceve dei dati in ingresso, li elabora secondo una sequenza predefinita di operazioni e infine restituisce il risultato sotto forma
DettagliIl calcolatore. Architettura di un calcolatore (Hardware)
Il calcolatore Prima parlare della programmazione, e' bene fare una brevissima introduzione su come sono strutturati i calcolatori elettronici. I calcolatori elettronici sono stati progettati e costruiti
DettagliUniversità degli Studi di Cassino e del Lazio Meridionale Corso di Fondamenti di Informatica Allocazione dinamica di memoria
di Cassino e del Lazio Meridionale Corso di Informatica Allocazione dinamica di memoria Anno Accademico 2015/2016 Francesco Tortorella Allocazione dinamica di memoria Finora abbiamo considerato variabili
DettagliLinguaggi di alto livello, compilatori e interpreti
Linguaggi di alto livello, compilatori e interpreti Percorso di Preparazione agli Studi di Ingegneria Università degli Studi di Brescia Docente: Massimiliano Giacomin Il punto della situazione STATO DATI
Dettagli