Scarica elementi di informatica e più Prove d'esame in PDF di Elementi di Informatica solo su Docsity!
1. 1 La catena logica di risoluzione di un problema con in computer
prevede:
4 passi L'esecutore di un algoritmo è: Chi o cosa lo esegue, attenendosi a determinate regole di risoluzione Un algoritmo è: Il procedimento risolutivo di un problema La proprietà di FINITEZZA di un algoritmo riguarda: Il tempo di esecuzione di un algoritmo La proprietà di NON AMBIGUITA' di un algoritmo riguarda: L'interpretabilità delle singole istruzioni da parte dell'esecutore La proprietà di ESEGUIBILITA' di un algoritmo riguarda: La proprietà di ciascuna istruzione di essere eseguita ed in tempo finito Un problema può ammettere: Più algoritmi che lo risolvono Il concetto di efficienza di un algoritmo riguarda: Il numero di operazioni da eseguire in funzione dei dati in ingresso L'algoritmo di Euclide riguarda: Il calcolo del massimo comun divisore Un problema di interesse: E' un problema per il quale non è possibile una ben precisa formalizzazione
- Un esecutore di algoritmi è: Il sistema che esegue l'algoritmo Per delegare ad un esecutore la soluzione di un problema, si ha bisogno di: Una rappresentazione della struttura degli oggetti e delle relative operazioni insieme ad una descrizione dell'algoritmo Nel caso di un esecutore automatico è necessario: Un linguaggio di programmazione I dati in input ad un elaboratore sono:
Le rappresentazioni delle informazioni a disposizione Un programma è costituito da:Un insieme di istruzioni L'elaboratore è: Un esecutore di una sequenza di operazioni che trasformano input in output Una variabile presenta: Aspetto logico e aspetto fisico Ad ogni variabile vengono associati: Nome e tipo Variabili diverse: Devono avere nome diverso Nella seguente istruzione di assegnazione. Z=X+Y: La parte sinistra è la variabile ricevente e la parte destra è una espressione
- Un algoritmo può essere rappresentato: In forma grafica, in forma discorsiva, in forma di programma Il flow-chart rappresenta: Una forma grafica di rappresentare un algoritmo L'istruzione: Y=Y-1: Diminuisce di 1 la variabile Y L'istruzione: scanf( ʺ %d %d ʺ ,&x,&y) rappresenta: Una linea di programma Durante l'esecuzione di un algoritmo da parte di un esecutore Cambiano i valori delle variabili La tecnica di tracing serve a: Verificare se un algoritmo è corretto L'istruzione: Z=Z+m (m <>0): Incrementa la variabile Z di una quantità m
La costruzione di un algoritmo o di un programma Per ogni problema decidibile si possono costruire: Diversi algoritmi La programmazione strutturata si basa Sul teorema di Böhm-Iacopini Le strutture di controllo si possono annidare: A vari livelli Dato un distributore di bibite, l'algoritmo di selezione della bibita è rivolto a Un umano
- Un programma sorgente è: Un file testo Un programma eseguibile: E' comprensibile al microprocessore Il compilatore è un programma il quale: Traduce il programma sorgente in programma eseguibile IDE sta per: Integrated Development Environment Code::Blocks è un ambiente: IDE Un ambiente di sviluppo su cloud richiede obbligatoriamente Il collegamento a Internet Onlinegdb.com è un esempio di: IDE su cloud AlgoBuild.com è un esempio di servizio su cloud per: La scrittura di flow-chart CodeLIte è un IDE Il debugger serve a: Trovare eventuali errori in un programma
- In un programma, leggere il contenuto di una variabile in memoria
Non ne altera il valore In un programma, quando si assegna un nuovo valore ad una variabile Il vecchio valore va perso Una variabile è: Un insieme di locazioni di memoria centrale una variabile è identificata da: Nome, tipo,valore Ogni variabile, prima di essere utilizzata: Deve essere dichiarata Il tipo di una variabile indica Che tipo di valore può assumere Il tipo di dato float ha una dimensione di: 4 byte Il tipo di dato int ha una dimensione di: byte 4 La funzione printf() è la funzione di: Output L'istruzione: scanf('%d',&var): Legge in input da tastiera un valore intero che associa alla variabile var
- Il linguaggio C è stato rilasciato nel: 1972 Lo standard attuale del linguaggio C è ANSI Le fasi operative per poter eseguire un programma scritto in linguaggio C sono, in ordine sequenziale Precompilazione, compilazione, linking Un prgramma in linguaggio C è organizzato A funzioni In un programma un commento è caratterizzato, su una riga dai seguenti caratteri // In un programma in linguaggio C, tutte le righe che iniziano con il simbolo #:
Una parola chiave del linguaggio C è Una parola riservata del C
- Nel linguaggio C, sizeof(int) ritorna: La dimensione di un intero in byte Nel linguaggio C, lo scope di una variabile La zona di programma dove è utilizzabile la variabile Nel linguaggio C, una variabile dichiarata static Mantiene il valore fino alla fine del programma L'operatore condizionale ternario ?: : E' un costrutto del linguaggio C per esprimere una dichiarazione di variabile Se un gruppo di istruzioni tra parentesi graffe contiene anche una dichiarazione di variabile, si parla di Blocco istruzioni Nel linguaggio C, la struttura if/else: Esegue azioni differenti a seconda se il risultato sia vero o falso Nel linguaggio C, le variabili di tipo external: Sono le variabili dichiarate al di fuori delle funzioni Nel linguaggio C, una variabile di tipo automatic: Esiste solo nel blocco istruzioni nel quale è dichiarata
- Nel linguaggio C, una variabile di tipo register Viene allocata in un registro del microprocessore L'istruzione del linguaggio C: scanf("%d",&n): Legge un numero intero da tastiera L'istruzione del linguaggio C: printf("Entered number is %d", num) produce: La stampa a video del messaggio "Entered number is" più il valore corrente della variabile intera num L'istruzione del linguaggio C: sum=num1+num2 ;, con sum, num1 e num2 variabili intere, produce come effetto Che la variabile sum conterrà la somma delle due variabili num1 e num2 dopo l'assegnazione In un programma C, l'operatore modulo n%m torna Il resto della divisione n/m tra due interi n ed m
La seguente istruzione del linguaggio C: scanf("%c"): E' incompleta perché manca l'allocazione in memoria del valore letto La seguente istruzionedel in linguaggio C: printf("\n\n"): E' errata poiché manca la variabile da stampare a video Un insieme di istruzioni, senza dichiarazioni di variabili, racchiuso tra { e } rappresenta: Un insieme di istruzioni Uno dei vantaggi più importanti dell'utilizzo del cloud onlinegdb.com è La mancanza di una installazione di un IDE sul proprio PC L'istruzione del linguaggio C: printf("%d\n",m/n) essendo m = 4 ed n=8: Il valore zero L'istruzione m=n%p, essendo n=4, p=4, assegna ad m il valore: Zero
- La struttura del linguaggio C while è una struttura Iterativa Il costrutto "while condizione-P istruzione-A" sta ad indicare Di eseguire l'istruzione A mentre il test P è vero Il C mette a disposizione del programmatore: 3 strutture iterative Nella struttura while, il test viene effettuato: In ingresso al ciclo La struttura di controllo while conviene usarla quando La variabile in ingresso non ha un valore conosciuto a priori ma dipende dall'esecuzione del programma Il ciclo while: Può non eseguire cicli In un ciclo while, il contatore è: Una variabile che conta il numero di input da tastiera In un ciclo while l'accumulatore è: Una variabile che si modifica ad ogni ciclo, attraverso una operazione di assegnazione Il seguente ciclo while "while(a Un ciclo infinito se la variabile a contiene un valore minore di 3 Quando un ciclo while termina, il programma Prosegue l'esecuzione delle istruzioni da quella successiva al ciclo while
- Una variabile sentinella o flag è una variabile che: Può assumere due valori In un ciclo while, è utile utilizzare una variabile flag quando Il numero di cicli non è noto a priori Il valore della variabile sentinella: Non deve essere confuso con i valori accettabili La tecnica top down di costruzione di un programma segue un metodo di Raffinamenti successici
For(int counter=1;counter Stampa 10 volte il valore corrente della variabile intera m Ogni ciclo for può essere riscritto come un ciclo While In un ciclo for se la condizione è inizialmente falsa Il corpo interno non viene eseguito In un ciclo for l'incremento agisce come se fosse una istruzione In fondo al ciclo In una struttura di selezione switch, l'istruzione default Serve ad indicare cosa fare se nessun altro case va a buon fine In una struttura switch, l'istruzione break serve a Uscire immediatamente dalla struttura di controllo I diagrammi di flusso for e while Sono uguali La struttura di controllo switch Prevede una sequenza di etichette case più una di default (opzionale)
- Nella do/while la condizione viene controllata a fine ciclo Nel ciclo do/while, le istruzioni del blocco iterativo sono eseguite almeno una volta Nel ciclo do/while per istruzione si intende sia la singola istruzione che un blocco istruzioni Il programma: do { printf( "%d ", counter );}while (++counter gli interi da 1 a 10 L'istruzione break: provoca l'uscita immediata dalle strutture while, for, do/while e switch L'istruzione continue all'interno di un ciclo consente di passare subito al ciclo successivo
L'operatore && è l'operatore:
di and logico
- Le regole della programmazione strutturata fanno uso di regole del tipo single-entry/single-exit Le regole della programmazione strutturata si basano sul teorema di Jacopini-Bohm Nella programmazione strutturata, ogni rettangolo (azione) può essere sostituito da Una qualsiasi struttura di controllo Nella programmazione strutturata, ciascun programma può essere sempre scomposto in 3 parti In un programma, una variabile che deve contenere un fattoriale è conveniente che sia di tipo Long int Nella programmazione strutturata, ogni ciclo for può essere riscritto con un ciclo While Nel programma del calcolo del fattoriale, il fattoriale può essere una variabile Accumulatore L'istruzione printf('%f,%f\n',a,b)
Stampa i valori reali delle due variabili a e b Data la variabile fattoriale, l'istruzione fattoriale* =i significa fattoriale=fattoriale*i
- I moduli di un programma sono Sono blocchi di codice indipendenti dagli altri, che svolgono azioni specifiche Nella fase di linking: Vengono caricate librerie di funzioni già compilate Una conseguenza positiva della programmazione per moduli è Migliore leggibilità e manutenibilità Le funzioni Implementano i moduli nel linguaggio C La comunicazione tra i vari moduli di un programma avviene Tramite i parametri passati in input alle funzioni invocate, i loro valori di ritorno e le variabili esterne L'uso di una funzione avviene attraverso L'istruzione di invocazione o chiamata I parametri attuali di una funzione I valori che vengono passati alla funzione al momento della chiamata Le istruzioni che compongono il corpo di una funzione costituiscono Il corpo della funzione Se una funzione non ritorno alcun valore, la funzione è di tipo Void La chiamata fattoriale(n) , cha calcola il fattoriale di un numero intero positivo n, deve tornare un valore long int
- Tutte le variabili dichiarate all'interno di una funzione sono Locali Le funzioni consentono di Non replicare codice esistente L'astrazione di una funzione consente di Nascondere i dettagli implementativi di una funzione Per il nome di una funzione si può usare Un qualsiasi identificatore valido Il Tipo_valore_ritorno di una funzione di un programma in linguaggio C E' il tipo del risultato restituito dalla funzione I parametri formali di una funzione sono Variabili locali Se ad una funzione non si passano parametri, si mette, nella chiamata () Il prototipo di una funzione Va scritto prima della dichiarazione Il seguente prototipo di funzione: float f(int,int): Riguarda una funzione che riceve in igresso due interi e restituisce un tipo float Il compilatore utilizza il prototipo di una funzione per Convalidare le chiamate a funzione
- La direttiva per caricare un file header in un programma in linguaggio C è #include Un file header ha estensione, nel linguaggio C .h
Una locazione di memoria centrale In linguaggio C, una variabile dichiarata fuori e prima del main() è di tipo Globale Il ciclo di vita di una variabile locale, in linguaggio C Va dal momento in cui la funzione è invocata fino al ritorno al chiamante In linguaggio C, lo scope di una variabile globale è L'intero file in cui è definita Dato il seguente frammento di codice:(for int i=0;i Locale al blocco for
- Una funzione è ricorsiva se Nella sua definizione richiama se stessa Una funzione ricorsiva deve prevedere Un caso base ed un passo induttivo IL passo induttivo o ricorsivo della funzione fattotiale è return n*fatt(n-1) Il prototipo di una funzione ricorsiva, in linguaggio C: Non è diverso da quello di una funzione non ricorsiva L'espressione Fib(n) = Fib(n-1) + Fib(n-2) rappresenta Il passo induttivo della funzione ricorsiva di Fibonacci Nella definizione ricorsiva della funzione somma(x,y) che somma due numeri interi non negativi x ed y, il passo base Se y=0 return x Nella definizione ricorsiva della funzione prodotto(x,y) che restituisce il prodotto tra due interi non negativi x ed y, il passo base Se y=0 return 0 Nella definizione ricorsiva della funzione potenza tra 2 interi non negativi, potenza(m,n), il passo base è Se n=0 return 1 Ogni chiamata ricorsiva Lavora via via su un problema più piccolo fino a risolvere l'intero problema Quando il passo o caso base di una funzione ricorsiva viene risolto Il risultato del caso base viene ritornato alla chiamata dell'ultimo passo ricorsivo
- L'area Stack è una struttura dati organizzata a Pila Le operazioni ammesse nell'area stack sono PUSH e POP Quando viene invocata una funzione, viene creato Un record di attivazione Quando una funzione termina, il controllo passa a Alla funzione chiamante L'area Stack è Una parte della memoria centrale (RAM) dedicata La funzione di Ackermann è un classico esempio di funzione ricorsiva: Con ricorsione annidata Il problema più grande delle funzioni ricorsive è Il controllo dello spazio nell'area stack Data una funzione ricorsiva: Ne esiste sempre una versione iterativa L'operazione POP sull'area stack provoca
La cancellazione di un record di attivazione L'operazione PUSH sull'area stack provoca La creazione di un record di attivazione
- L'array è un tipo di dato Strutturato Un array contiene dati Dello stesso tipo Nello standard C89, la dimensione di un array Deve essere prefissata Tutti gli elementi di un array: Condividono un nome comune Gli elementi di un arry in memoria RAM: Sono memorizzati in locazioni contigue Per accedere ad un elemento di un vettore si deve specificare Il nome e l'indice In un array, la numerazione dell'indice parte da Zero L'istruzione "printf( "%d", c[0] + c[1] + c[2] ); Stampa la somma dei primi tre elementi dell'array c L'istruzione "c[a+b]--" con a=0 e b=0: Incrementa di una unità il primo elemento dell'array c La dichiarazione "int n[4] = {1, 2, 3, 4, 5 }; ", risulta Errata poiché inizializzo l'array c con più elementi del consentito
- La stringa "mercatorum"in linguaggio C è rappresentata con un array di 11 caratteri L'ultimo carattere di una stringa nel linguaggio C deve essere sempre \0' L'istruzione in linguaggio C: scanf( "%s", string2 ) Legge in input una stringa da tastiera Nel linguaggio C, per acquisire una frase da tastiera Servono più scanf Nel linguaggio C l'istruzione: printf("%s",string1): Stampa a video tutti i caratteri fino a quello nullo (escluso) Nel linguaggio C, la dichiarazione: char s[20]: Alloca in memoria uno spazio di 20 byte Una stringa si definisce palindroma quando Risulta simmetrica rispetto ai caratteri che la compongono Nel linguaggio C, l'istruzione: printf ("%c",string1[3]): Stampa a video il quarto carattere a partire da sinistra di string1. Nel linguaggio C, la seguente dichiarazione: char string1[]="PIPPO": Alloca in memoria centrale 6 byte. Nel linguaggio C, la seguente istruzione: p[10]='\0' Inserisce nell'undicesimo byte della stringa p il carattere NULL
- Nel linguaggio C, il metododi default di passaggio dei parametri è Per valore Dato il segente array in linguaggio C: int MyArray[24], la funzione MyFunction(MyArray, 24 Può modificare l'array Nel linguaggio C, il nome di un vettore rappresenta L'indirizzo di memoria centrale del primo elemento dell'array
Log(n) Dato un vettore di 50 elementi già ordinato, quanti passi deve fare al più l'algoritmo di ricerca dicotomica per trovare il valore cercato?: 6
- Un array che usa due indici è chiamato array Bidimensionale Una matrice bidimensionale nel linguaggio c viene rappresentata con righe e colonne Definendo table come un array intero con 3 righe e 3 colonne, esso contiene 9 elementi L'istruzione in linguaggio C "printf( "%d", b[ 0 ][ 1 ] );": stampa a video il secondo valore della prima riga della matrice b In una matrice bidimensionale si può anche ricavare l'array monodimensionale di una riga della matrice I valori di inizializzazione di una matrice sono raggruppati per riga tra { } più interne Per default tutti gli elementi di una matrice numerica sono inizializzati al valore Zero Il passaggio di una matrice ad una funzione, per default, avviene per riferimento Se si vuole passare una matrice per valore ad una funzione, in linguaggio C, è necessario utilizzare l'attributo Const La definizione :char menuOperazioni [4][50]={ {"1) Carica array con numeri casuali"}, {"2) Ricerca del massimo"}, {"3) Calcola la media"}, {"0) Esci dal programma"} };rappresenta Un menu testuale
- Una variabie puntatore contiene un indirizzo di memoria Per operazione di "deriferimento" si intende l'accesso ad una variabile tramite puntatore Una variabile puntatore può puntare a qualsiasi tipo di dato Un puntatore è un: tipo di dato derivato La dichiarazione "int myPtr;" nel linguaggio C definisce un puntatore ad intero Un puntatore si può inizializzare con il valore NULL L'operatore di indirizzo "&", applicato ad un puntatore, nel linguaggio C, restituisce l'indirizzo di memoria del suo operando Nel linguaggio C, la dichiarazione "double x = yptr": non è ammissibile L'operatore di deriferimento "", nel linguaggio C, ritorna il valore contenuto nella variabile puntata dal suo operando Gli operatoei "*" e "&" sono operatori Inversi
- Nel linguaggio C il passaggio ad una funzione per riferimento significa che Si passano puntatori come parametri Nel lnguaggio C, il passaggio per riferimento ad una funzione prevede L'utilizzo dell'operatore "&" Nel linguaggio C, una funzione che agisce su una variabile passta ad essa per riferimento Ne cambia il valore in memoria centrale Nel linguaggio C, avere in una funzione come parametro formale "int Vett" dove Vett è un array di n interi, equivale ad avere come parametro formale int Vett[] L'istruzione: "numero = 2 * (*numero); ", essendo numero dichiarato come puntatore ad intero
Raddoppia il valore della variabile intera numero Nel linguaggio C, un puntatore const: Punta sempre alla stessa locazione di memoria Nel linguaggio C, data la seguente dichiarazione: "const int *const Ptr = &x;", si ha che Né x nè *myPtr possono essere cambiati Nel linguaggio C, volendo scambiare i valori di due variabili (swapping) con una funzione apposita, è necessario Passare le variabili alla funzione per riferimento Il bubble sort è un algoritmo che agisce Su un vettore di elementi di qualsiasi tipo tra quelli consentiti dal linguaggio Nel Linguaggio C, il seguente prototipo di funzione "void bubble(int *const int);": Dichiara che la funzione riceve in input un puntatore ad intero costante
- Nel linguaggio C, le operazioni aritmetiche Possono agire anche sui puntatori, ma hanno senso solo per i vettori Nel linguaggio C, l'espressione "*(vPtr+j) " restituisce Sempre un alias di v[j] Per conoscere la dimensione in termini di byte di un tipo di variabile, si usa la funzione del linguaggio C sizeof() Nel linguaggio C, dato un vettore di 5 elementi interi (4 byte ciascuno), se vPtr punta al primo elemento v[0] con locazione 3000, vPtr+=3 punta alla locazione 3012 Nel linguaggio C, due puntatori possono essere assegnati uno all'altro Solo se sono dello stesso tipo Nel linguaggio C, il nome di un vettore può essere visto come Puntatore costante al vettore Nel linguaggio C, dato un vettore b[] e un puntatore bPtr, le due seguenti assegnazioni: bPtr = b;" e "bPtr = &b[0]; Sono equivalenti La dichiarazione "char *suit[4]={"Hearts","Diamonds","Clubs","Spades" };" definisce Un vettore di puntatori a carattere Ne inguaggio c, una stringa è Un vettore di caratteri salvati in locazioni di memoria contigui Nel linguaggio C, un vettore di stringhe Ha comunque una dimensione prestabilita
- Nel linguaggio C, VLA sta per: Variable Lenght Array Un array a dimensione variabile nel linguaccio C viene allocato Nell'area stack L'algoritmo denominato Crivello di Eratostene serve a Determinare quanti numeri primi esistono tra 2 ed n Nell'algoritmo del Crivello di Eratostene con n massimo, il procedimento di setacciatura termina quando Si supera la radice quadrata del numero massimo n Nell'algoritmo del Crivello di Eratostene, la lista dei numeri fino ad n viene rappresentata da Un array di interi positivi di lunghezza n L'istruzione del linguaggio C "colonna=rand()%4;" Genera un numero intero psudocasuale tra 1 e 3 L'istruzione: "pos_carta%2==0? '\n' :'\t' " significa if((pos_carta%2)==0) '\n' else '\t' La possibilita nel linguaggio C di utilizzare i VLA è data dallo standard ANSI C- Il ciclo esterno nell'algoritmo del Crivello di Eratostene: "d0….while (flag==1);" termina Solo quando la variabile flag rimane con il valore di default uguale a zero Nel programma "Mischiare un mazzo di carte", il mazzo di carte viene rappresentato da Una matrice M[4][13]
La seguente istruzione fp=fopen("pippo.txt","w+"); apre un fle in scrittura. Se il file non esiste lo crea. La funzione C fputs(): scrive una riga su un file