Anteprima Estratta dall' Appunto di Informatica Università : Università degli studi di Brescia Facoltà : Ingegneria Indice di questo documento L' Appunto Le Domande d'esame ABCtribe.com e' un sito di knowledge sharing per facilitare lo scambio di materiali ed informazioni per lo studio e la formazione.Centinaia di migliaia di studenti usano ABCtribe quotidianamente per scambiare materiali, consigli e opportunità Più gli utenti ne diffondono l'utilizzo maggiore e' il vantaggio che ne si può trarre : 1. Migliora i tuoi voti ed il tempo di studio gestendo tutti i materiali e le risorse condivise 2. Costruisci un network che ti aiuti nei tuoi studi e nella tua professione 3. Ottimizza con il tuo libretto elettronico il percorso di studi facendo in anticipo le scelte migliori per ogni esame 4. Possibilità di guadagno vendendo appunti, tesine, lezioni private, tesi, svolgendo lavori stagionali o part time. www.ABCtribe.com ABCtribe.com - [Pagina 1] L' Appunto A partire dalla pagina successiva potete trovare l' Anteprima Estratta dall' Appunto. Se desideri l'appunto completo clicca questo link. Il numero di pagina tra le parentesi tonde si riferisce a tutto il documento contenente l'appunto. Sull'appunto stesso in alcuni casi potrete trovare una altra numerazione delle pagine che si riferisce al solo appunto. Grafico dei voti medi per questo esame: Grafico dei giorni medi per la preparazione di questo esame: Grafico Copyright © ABCtribe.com. Vietata la riproduzione. Grafico Copyright © ABCtribe.com. Vietata la riproduzione. Clicca qui per i grafici aggionati su Informatica >> ABCtribe.com - [Pagina 2] INTRODUZIONE Il linguaggio C 1 è il linguaggio preferito dai programmatori e dai professionisti perché offre importanti vantaggi: è molto efficiente, cioè permette di scrivere programmi compatti e veloci; • dà completo controllo di quanto avviene nella macchina; • consente ampia libertà di organizzazione del lavoro. • Per contro, presenta alcuni inconvenienti: è piuttosto impegnativo da apprendere; • richiede una discreta esperienza per essere sfruttato a fondo; • senza disciplina di programmazione, è difficile mantenere il controllo del programma. • Linguaggi di programmazione m o .c I linguaggi di programmazione si possono dividere in due categorie: e b i tr 1. LINGUAGGI AD ALTO LIVELLO: hanno costrutti molto vicini al nostro modo di pensare e lontani da quello della macchina. Esempi di linguaggi ad alto livello sono: BASIC (facile e versatile) , PASCAL (formale e didattico) , forTRAN (per applicazioni scientifiche) , COBOL (per applicazioni gestionali). Tali linguaggi isolano il programmatore dai dettagli tecnici. C B A 2. LINGUAGGI A BASSO LIVELLO: comandano in maniera "diretta" l'hardware (registri, memoria, periferiche,...) e quindi sono più lontani dal modo di ragionare umano. Un esempio di tali linguaggi è l' assembler (ad ogni istruzione corrisponde un codice macchina del microprocessore). I linguaggi a basso livello danno "controllo macchina" ma richiedono tempo e attenzione ai dettagli dell'hardware. Il linguaggio C offre i vantaggi di entrambe le categorie di entrambi le categorie di linguaggi; consente infatti sia la programmazione ad alto livello (problemi logici) sia la programmazione a basso livello nei punti in cui serve la massima interazione con l'hardware. Programmazione strutturata Per programma intendiamo una sequenza di istruzioni, le quali istruzioni possono essere di tre tipi: 1. istruzioni di esecuzione ; 2. istruzioni di controllo di flusso ; ABCtribe.com - [Pagina 3] 3. istruzioni di input-output . Compilazione: traduzione del programma sorgente in codice oggetto (assembly); avremo di conseguenza un file NOME.ASM Assemblaggio: traduzione in codice binario : NOME.OBJ Linking: rende il file eseguibile NOME.EXE Lo schema seguente riassume le fasi di realizzazione di un programma. Nome.C Nome.ASM Nome.OBJ Editor Compilatore Assemblat. Linker Nome.EXE Recentemente hanno preso piede i cosiddetti ambienti integrati , cioè insiemi di programmi (editor, compiler, linker,debug) che colloquiano fra loro; esempi di tali ambienti integrati sono: TURBO C (Borland) m o .c • QUICK C (Microsoft) • e b i tr C B Nella programmazione strutturataA bisogna considerare: Entrambi accettano lo standard ANSI. 1. STRUTTURA DEL PROGRAMMA (più vicina possibile al problema da risolvere) 2. STRUTTURA DEI DATI Solitamente si usa la cosiddetta tecnica TOP-doWN , cioè si risolve teoricamente il problema principale (top) per poi passare ad una serie di sottoproblemi (down). Il problema viene cioè scomposto in sottofunzioni; definire ciascuna di queste funzioni bisogna: definire il tipo di dato che deve "tornare" la funzione; • dare un "nome" alla funzione; • definire i parametri che deve ricevere la funzione. • IL LINGUAGGIO C Consideriamo subito un semplice programma in C # include <stdio.h> main() ABCtribe.com - [Pagina 4] { . La funzione printf serve, fra l'altro, a stampare una stringa su video; è una funzione definita all'interno della libreria stdio.h (standard input/output) inclusa all'inizio del programma. Le funzioni di libreria possono essere modificate o sostituite con versioni ad hoc da parte dell'utente. Linker Il compilatore crea, partendo da un file NOME.C , il file NOME.OBJ. Il Linker cerca il codice di printf in NOME.OBJ , non trovandolo lo cercherà in una libreria (ad esempio C.LIB ); poi unisce NOME.OBJ con l'oggetto di printf in C.LIB: NOME.OBJ C.LIB m o .c e b i tr C B A NOME.EXE Per usare una funzione di libreria bisogna includere il corrispondente header con la direttiva : #include <stdio.h> Errori Ogni compilatore ha i suoi messaggi e i suoi warnings questi ultimi sono "errori" che non impediscono al compiler di proseguire ma che potrebbero causare problemi o mal funzionamenti. Durante la fase di linking, l'errore più comune è l'inesistenza di funzioni; in genere non viene indicato il punto dell'errore, ma sono errori più comprensibili di quelli di compilazione. Un errore insidioso, non rilevato né dal compilatore né dal linker è la mancata inclusione del header; lo standard ANSI sopperisce mediante prototipi di funzione. ABCtribe.com - [Pagina 5] Commenti Sono molto importanti per la leggibilità del programma e possono essere inseriti in qualunque punto del programma: /* commento */ I commenti non vengono compilati , quindi non costano in spazio e velocità. /* UN COMMENTO PUO' STARE SU PIU' RIGHE DI PROGRAMMA */ Nel linguaggio C++ , se il commento si estende solo su una riga, si può usare: // commento FUNZIONE printf( ) m o .c Abbiamo già visto l'uso della funzione printf nell'esempio precedente; la sua sintassi è la seguente: printf(arg) Vediamo un altro esempio: #include <stdio.h> main () { printf("auto"); printf("mobile"); } e b i tr C B A Il risultato è la stampa della stringa: automobile Per introdurre un line feed si usa il carattere speciale \n (newline): #include <stdio.h> main () { printf ("auto"\n); printf ("mobile"); } Il risultato sarà : auto mobile ABCtribe.com - [Pagina 6] La linea: main () non è chiusa dal punto e virgola poiché è una definizione di funzione. In C non esiste un modo immediato per la stampa dei numeri (come write del Pascal): si usa printf che è versatile e risolve gran parte dei problemi di stampa. #include <stdio.h> main ( ) { printf ( "%d",1990); } %d è la specifica di stampa che definisce il formato con il quale si vuol stampare un output, in questo caso si indica un numero intero. Il secondo argomento della funzione è il numero da stampare. m o .c Una sola funzione printf può stampare numeri dentro stringhe: e b i tr printf ("Aperto dalle ore %d alle ore %d \n",14,18); C B A La corrispondenza fra specifica di stampa e argomento è fissata in base alla posizione. Printf accetta un numero qualsiasi di argomenti, questa è una eccezione per il linguaggio C ove, solitamente il numero di argomenti per le funzioni è fissato. Vediamo ora un elenco dei comandi di formato per la funzione printf: %d numero intero %u intero senza segno %ld intero lungo %f virgola mobile %e virgola mobile in f.to esp. %c carattere %p valore di un puntatore %s stringa %x formato esadec. Si può impostare la larghezza del campo in uscita ponendo il valore di tale lunghezza fra il carattere % e la lettera. A seguito del comando di formato si pone la sequenza di escape: \n inserisce un carattere di avanzamento riga \f avanzamento modulo \b ritorno indietro di uno spazio \xhhh inserisce il carattere rappresentato dal codice ASCII hhh (da 1 a 3 cifre esadec.) ABCtribe.com - [Pagina 7] Tipi di dati Il linguaggio C ammette i seguenti tipi di dati: char: caratteri costituito da un byte. ••• int: numeri interi, generalmente costituiti da 2 byte e, conseguentemente hanno il • seguente campo di variazione -32767 +32767 ( tale campo di variabilità è valido per il caso dello standard ANSI, in realtà molti compilatori sfruttano pienamente il campo offerto dalla notazione in complemento a due e avranno regione di variazione da -32768 a +32767). float: numeri in virgola mobile, costituiti da 4 byte offrono, in linea generale, 5 o 6 cifre • decimali (precisione singola). double: numeri reali in precisione doppia, offrono fino a 12 o 13 cifre decimali. • long int: numeri interi a 4 byte, hanno campo di variazione -2147483647 +2147483647. • long double: numeri reali rappresentati tramite 10 byte. ••• m o .c OSSERVAZIONI I tipi numerici possono essere dotati o non dotati di segno ( ad esempio il tipo int unsigned ha campo di variabilità da 0 a 65536). In C le variabili devono essere sempre dichiarate specificando il tipo di dato che possono assumere come valore; ad esempio: char A; e b i tr C B A Formato di stampa Per stampare i numeri sono disponibili diverse opzioni: 1) Allineamento a destra: int n=2345; printf("=%5d=",n); /* =2345= */ 2) Con zeri: int n=37; printf("=%05d=",n); /* =00037= */ 3) Allineamento a sinistra: int n=37; printf("=%-5d=",n); /* =37 =*/ 4) Indicazione del numero minimo di cifre da stampare: ABCtribe.com - [Pagina 8] int n=37; printf("=%5.3d=",n); /* = 037"*/ Questo documento e' un frammento dell'intero appunto utile come anteprima. Se desideri l'appunto completo clicca questo link. ABCtribe.com - [Pagina 9] Preparati con le domande di ABCtribe su Informatica. 1. Reti LAN e Risposta: Le reti LAN (Local Area Network) sono [Clicca qui >> per continuare a leggere]. 2. Funzio Risposta: Una funzione hash prende [Clicca qui >> per continuare a leggere]. * Carica Appunti,Domande,Suggerimenti su : Informatica e guadagna punti >> * Lezioni Private per Informatica >> Avvertenze: La maggior parte del materiale di ABCtribe.com è offerto/prodotto direttamente dagli studenti (appunti, riassunti, dispense, esercitazioni, domande ecc.) ed è quindi da intendersi ad integrazione dei tradizionali metodi di studio e non vuole sostituire o prevaricare le indicazioni istituzionali fornite dai docenti. Il presente file può essere utilizzato in base alle tue necessità ma non deve essere modificato in alcuna sua parte, conservando in particolare tutti i riferimenti all’autore ed a ABCtribe.com; non potrà essere in alcun modo pubblicato tramite alcun mezzo, senza diverso accordo scritto con l’autore ed i responsabili del progetto ABCtribe.com. Per eventuali informazioni, dubbi o controversie contattate la redazione all’indirizzo [email protected]. ABCtribe.com - [Pagina 10]