Esempi di riuso del codice nei linguaggi di alto livello Lab Programmazione - turno 1 2005/2006.

Slides:



Advertisements
Presentazioni simili
Introduzione al linguaggio C++
Advertisements

INFORMATICA Altre Istruzioni di I/O
                      Insertion-Sort
Uso avanzato di C.
Nel C non esiste un dato primario di tipo stringa; queste sono rappresentate con un array monodimensionale di caratteri (tipo char). Così per definire.
Informatica 22/03/2012.
Ricorsione Procedure e funzioni ricorsive. Definizioni Un oggetto si dice ricorsivo se è definito totalmente o parzialmente in termini di sé stesso La.
Selezione - approfondimento
PROGRAMMARE IN PASCAL (le basi)
Algoritmi e Programmazione
Introduzione al linguaggio C
UNIVERSITA’ DI MILANO-BICOCCA LAUREA MAGISTRALE IN BIOINFORMATICA
Anno accademico Array e puntatori in C.
Alberi binari di ricerca
Introduzione agli algoritmi. Definizione Sistema di regole e procedure di calcolo ben definite che portano alla soluzione di un problema con un numero.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 1 Ordinamenti lineari.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 1 Usa la tecnica del.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 1 Usa la tecnica del.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 1 Ordinamenti lineari.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 1 Ordinamenti lineari.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 1 Usa la tecnica del.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 1 Ordinamenti lineari.
Tail recursion: esempio
Prof.ssa Chiara Petrioli -- Fondamenti di programmazione, a.a. 2009/2010 Corso di Fondamenti di programmazione a.a. 2009/2010 Prof.ssa Chiara Petrioli.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab 2 – Info B Marco D. Santambrogio – Riccardo Cattaneo –
Process synchronization
Informatica 2. Concetti fondamentali di programmazione Programmare vuol dire scrivere un algoritmo in un linguaggio che faccia funzionare un calcolatore.
Laboratorio di Linguaggi lezione XI: I/O Marco Tarini Università dellInsubria Facoltà di Scienze Matematiche, Fisiche e Naturali di Varese Corso di Laurea.
Algoritmi e Strutture Dati (Mod. B)
Il linguaggio Fortran 90: 4. Array: Vettori e Matrici
APPUNTI SUL LINGUAGGIO C
Esercizi su pile Scrivere una funzione che restituisca una nuova pila che contiene i valori di una pila in ingresso in ordine inverso. La pila originale.
Procedure e funzioni nei linguaggi di alto livello Lab Programmazione - turno /2006.
Codifica di algoritmi linguaggio macchina vs programmazione strutturata Lab Programmazione - turno /2006.
INFORMATICA Altre Istruzioni di I/O. © Piero Demichelis 2 Funzioni di I/O Per la lettura e la scrittura da videoterminale il C prevede numerose istruzioni.
mosaic manipola oggetti primitivi (ruota e unisci) regole:
Strutture di controllo in C -- Flow Chart --
Politecnico di Milano Esercizi Stringhe Ricerca binaria.
Esercizi Puntatori, struct con campi puntatore, puntatori a struct, rapporto tra array e puntatori. FUNZIONI Passaggio di parametri per indirizzo, passaggio.
Esercizi C su array e matrici
Dichiarazioni e tipi predefiniti nel linguaggio C
I File.
Le funzioni.
RAPPRESENTAZIONE DELL’INFORMAZIONE
Calcolo del Massimo Comun Divisore
Equazione di secondo grado.
CODIFICA Da flow-chart a C++.
Piero Scotto - C141 C14 #09 Gestione stringhe: esercizio. Switch case. Variabili logiche.
Massimo Comun Divisore
Prof.ssa Chiara Petrioli -- Fondamenti di programmazione, a.a. 2009/2010 Corso di Fondamenti di programmazione a.a. 2009/2010 Prof.ssa Chiara Petrioli.
Algoritmi di conversione in basi numeriche diverse
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Array e stringhe Marco D. Santambrogio – Ver. aggiornata al 9 Agosto 2013.
Esercizi su File e Liste
Sviluppare un programma in C che, dato un array da 100 elementi interi caricato con numeri casuali compresi tra [10,100], sia in grado di cercare il valore.
Conversione da base 10 a base X (Utilizzo della pila)
Pippo.
Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni – BCOR Ingegneria Elettronica – BELR Introduzione al C Esercitazione 5 D. Bloisi, A.
Ugo de'Liguoro - Informatica 2 a.a. 03/04 Lez. 1 Cicli ed asserzioni Corso di Informatica 2 a.a. 2003/04 Lezione 1.
Sistemi e Tecnologie Informatiche
s STRINGHE DI CARATTERI a p e \0
Programmazione in linguaggio C
Prof.ssa Chiara Petrioli -- corso di programmazione 1, a.a. 2006/2007 Corso di Programmazione 1 a.a.2006/2007 Prof.ssa Chiara Petrioli Corso di Laurea.
Corso di Algoritmi e Strutture Dati APPUNTI SUL LINGUAGGIO C
Informatica B Allievi Elettrici - AA Fondamenti della programmazione in linguaggio C (II) Istruzioni e strutture di controllo.
Informatica 4 Funzioni. FUNZIONE: definizione MATEMATICA Relazione (o applicazione) binaria tra due insiemi A e B che associa a ogni elemento di A un.
PROVA INTERCORSO MOD.B a.a RICORSIONE ESERCIZI A1.1-A1.6.
Algoritmi Paralleli e Distribuiti a.a. 2008/09 Lezione del 07/04/2009 Prof. ssa ROSSELLA PETRESCHI a cura del Dott. SAVERIO CAMINITI.
13 ottobre Decisioni F. Bombi 13 ottobre 2002.
Linguaggio C: Le basi Stefano Cagnoni e Monica Mordonini
Linguaggio C: Le basi Stefano Cagnoni e Monica Mordonini
Transcript della presentazione:

Esempi di riuso del codice nei linguaggi di alto livello Lab Programmazione - turno /2006

AA 2005/06 Lab Programmazione L. Capra 2 Conversione da base X a base 10 Input : stringa di digit Es (base 16) 12B Output: valore intero corrispondente (base 10) : = 1 · · · 16 0 Assunzione: oltre alle funzioni predefinite stringlength e getchar (per calcolare la lunghezza di una stringa, e conoscere il carattere in una certa posizione di una stringa), indexOf ritorna la posizione della prima occorrenza di un dato carattere in una stringa (-1 se non cè)

AA 2005/06 Lab Programmazione L. Capra 3 Conversione da base X a base 10 Generalizziamo lalgoritmo per convertire un qualunque numero scritto in base x (2 x 16) in base decimale Insieme dei simboli base 2:0,1 base 3:0,1,2 … base 11:0,…,9,A … base 16:0,…,9,A,…,F

AA 2005/06 Lab Programmazione L. Capra 4 Conversione da base X a base 10 La funzione avrà un nuovo parametro formale (bX) Bisogna controllare che i simboli presenti nella stringa da convertire siano consistenti rispetto alla base (ad es. se la base è 8 solo i simboli 0,..,7 potranno comparire nella stringa) Bisogna trovare un modo per associare a ogni simbolo il corrispondente valore (ad es. il valore di A è 10, quello di F è 15)

AA 2005/06 Lab Programmazione L. Capra 5 Conversione da base X a base 10 Idea: rappresentare linsieme dei simboli (digit) con una costante di tipo stringa (basi da 2 a 16) simboli = ABCDEF valore numerico di un digit posizione carattere corrispondente in simboli usando la funzione indexOf è semplicissimo trovare il valore numerico di un simbolo Es.indexOf(simboli, A) 10

AA 2005/06 Lab Programmazione L. Capra 6 Punto di partenza: conversione da base 2 a base 10 FUN convertFrom2to10 PAR bits: STRING INT VAR res, i, nb: INT; c CHAR ENDVAR nb = stringlength (bits) IF nb == 0 THEN return –1 %codice di errore% ELSE res = 0 i = 0 DO c= getchar(bits,i) IF c =/= '1' and c =/= '0 THEN return –2 %codice di errore% ELSE IF c == '1 THEN res = res + eleva(2, nb - i -1) ENDIF i = i + 1 ENDIF WHILE i < nb return res ENDIF ENDFUN

AA 2005/06 Lab Programmazione L. Capra 7 Conversione da base x a base 10 FUN convertFromXto10 PAR num_bX : STRING, bX : INT INT VAR res, i, nd, val_c: INT; c CHAR ENDVAR nd = stringlength (num_bX) IF nd == 0 THEN return –1 %errore: stringa vuota% ENDIF IF bX 16 THEN return –2 %errore: base non nel range% ENDIF res = 0 i = 0 DO c= getchar(num_bX, i)%carattere i-esimo in num_bX% val_c = valore corrispondente a c IF val_c non è consistente rispetto a bX THEN return –3 %errore: simbolo non corretto% ENDIF res = res + val_c * eleva(bX, nd - i -1) i = i + 1 WHILE i < nd return res ENDFUN

AA 2005/06 Lab Programmazione L. Capra 8 Conversione da base x a base 10 FUN convertFromXto10 PAR num_bX : STRING, bX : INT INT CONST simboli = ABCDEF VAR res, i, nd, val_c: INT; c CHAR ENDVAR nd = stringlength (num_bX) IF nd == 0 THEN return –1 %errore: stringa vuota% ENDIF IF bX 16 THEN return –2 %errore: base non nel range% ENDIF res = 0 i = 0 DO c= getchar(num_bX, i) %carattere i-esimo in num_bX% val_c = indexOf(simboli, c) %valore corrispondente% IF val_c bX -1 THEN return –3 %errore: simbolo non corretto% ENDIF res = res + val_c * eleva(bX, nd - i -1) i = i + 1 WHILE i < nd return res ENDFUN

AA 2005/06 Lab Programmazione L. Capra 9 Conversione da base 10 in base X Input : numero intero Es: 299 Output: stringa di digit corrispondente Es. (base 16) :12B Algoritmo: B B (11) 2 1 resti

AA 2005/06 Lab Programmazione L. Capra 10 Punto di partenza: da base 10 a base 2 FUN convertFrom10to2 PAR num: INT STRING VAR c CHAR; res: STRING ENDVAR res = %stringa vuota% IF num < 0 or THEN return res%codice di errore% ELSE IF num == 0 THEN return 0 ELSE DO IF (num mod 2) == 0 THEN c = 0%resto zero% ELSE c = 1 ENDIF res = c + res%appende c a sinistra di res% num = num / 2 %divisione intera% WHILE num =/= 0 return res ENDIF ENDFUN

AA 2005/06 Lab Programmazione L. Capra 11 Conversione da base 10 a base X FUN convertFrom10toX PAR num: INT, bX INT STRING CONST simboli = ABCDEF VAR c CHAR; res: STRING ENDVAR res = %stringa vuota% IF parametri errati THEN return %parametri errati% ENDIF IF num == 0 THEN return 0 ENDIF DO c = simbolo corrispondente a (num mod bX) res = c + res%appende c a sinistra di res% num = num / bX %divisione intera% WHILE num =/= 0 return res ENDFUN

AA 2005/06 Lab Programmazione L. Capra 12 Conversione da base 10 a base X FUN convertFrom10toX PAR num: INT, bX INT STRING CONST simboli = ABCDEF VAR c CHAR; res: STRING ENDVAR res = %stringa vuota% IF num 16 THEN return %parametri errati% ENDIF IF num == 0 THEN return 0 ENDIF DO c = getchar(simboli, num mod bX) %car. corrispondente a resto% res = c + res%appende c a sinistra di res% num = num / bX %divisione intera% WHILE num =/= 0 return res ENDFUN

AA 2005/06 Lab Programmazione L. Capra 13 Conversione da base x a base y FUN convertFrombXTobY PAR num_bX: STRING, bX INT, bY INT STRING VAR tmp: INT ENDVAR tmp = convertFromXto10 (num_bX, bX ) IF tmp < 0 THEN return %parametri errati% ENDIF return convertFrom10toX (tmp, bY) ENDIF ENDFUN

AA 2005/06 Lab Programmazione L. Capra 14 Conversione da base x a base y FUN convertFrombXTobY PAR num_bX: STRING, bX INT, bY INT STRING VAR tmp: INT ENDVAR tmp = convertFromXto10 (num_bX, bX ) IF tmp < 0 THEN return %parametri errati% ENDIF return convertFrom10toX (tmp, bY) ENDFUN

AA 2005/06 Lab Programmazione L. Capra 15 Ancora più compatto… FUN convertFrombXTobY PAR num_bX: STRING, bX INT, bY INT STRING return convertFrom10toX (convertFromXto10 (num_bX, bX ), bY) ENDFUN