ESERCITAZIONE N.2 LINGUAGGIO C. In preparazione alla prova in Itinere

Documenti analoghi
Informatica A (per gestionali) A.A. 2004/2005. Esercizi di programmazione C Stringhe Ricerca binaria

Esercizi. Stringhe. Stringhe Ricerca binaria

Esercitazione 2. Espressioni booleane Il comando if-else

Esercitazione di Reti degli elaboratori

Informatica (A-K) 14. Linguaggio C -4

Istruzioni di controllo

Lezione 8: Stringhe ed array multidimensionali

Strutture dati. Operatori di incremento e decremento. Strutture di dati. Strutture di dati. ++ e -- Esempi. Vettori e matrici.

char *s; s = (char *) malloc(5*sizeof(char)); scanf( %s, s); Stringhe

Introduzione al C. Lezione 1 Elementi. Rossano Venturini. Pagina web del corso

Linguaggio C. strutture di controllo: strutture iterative. Università degli Studi di Brescia. Docente: Massimiliano Giacomin

del Linguaggio C Istruzioni di iterazione

Esercitazione 5. Procedure e Funzioni Il comando condizionale: switch

Introduzione al C. Lez. 1 Elementi. Rossano Venturini

Caratteri e stringhe

RICORSIONE, PUNTATORI E ARRAY. Quarto Laboratorio

Laboratorio di programmazione

Informatica B a.a 2005/06 (Meccanici 4 squadra) PhD. Ing. Michele Folgheraiter

Esercizi. Filtraggio

ELEMENTI DI INFORMATICA L-B. Ing. Claudia Chiusoli

Introduzione al linguaggio C Primi programmi

La Programmazione. Cos è la programmazione? Concetti preliminari

Fondamenti di informatica T-1 (A K) Esercitazione 4: controllo del flusso

Introduzione al C. Lez. 1 Elementi. Rossano Venturini

A. Ferrari. stringhe di caratteri In linguaggio C

20/10/2014 M. Nappi/FIL 1

Laboratorio. Due. 1) Switch 2) Costrutti Iterazione (For, While, do while)

Programmazione a blocchi. Algobuild Prof. Sergio Roselli

Esercitazione 12. Esercizi di Ricapitolazione

Lo scopo. Il primo esperimento. Soluzione informale. Le variabili

JAVA. import java.util.*; #include <stdio.h> public static class test { int variable; private int variable; int main (int argc, char *argv[]) {

Esercizi Programmazione I

Il corpo di tutte le funzioni deve essere contenuto tra parentesi graffe

Laboratorio di informatica Ingegneria meccanica

Fondamenti di Informatica. Ingegneria elettronica

Appunti di informatica. Lezione 10 anno accademico Mario Verdicchio

Caratteri e stringhe

#include <stdio.h> /* l esecuzione comincia dalla funzione main */ int main()

Fondamenti di Informatica T-1 Modulo 2

Tipi strutturati in C. Stringhe

STRINGHE: ARRAY DI CARATTERI STRINGHE: ARRAY DI CARATTERI. a p e \0

Le strutture /3. Riprendiamo ora la struttura definita alcune lezioni fa e completiamo il set di funzioni che servono per gestire un elenco di libri.

Fondamenti di Informatica T-1 Modulo 2

Laboratorio di Programmazione 1. Docente: dr. Damiano Macedonio Lezione 5 31/10/2013

Laboratorio di Informatica

Introduzione al linguaggio C Dati aggregati

Istruzioni. Una istruzione semplice è qualsiasi espressione seguita da un punto e virgola. Esempio x = 0; y = 1;/* due istruzioni */

1

Introduzione al C. Lez. 1 Elementi

Esercitazione 5. Procedure e Funzioni Il comando condizionale: switch

Fondamenti di Informatica Ing. Biomedica

Informatica B. Sezione D. Scuola di Ingegneria Industriale Laurea in Ingegneria Energetica Laurea in Ingegneria Meccanica

C: panoramica. Violetta Lonati

Fondamenti di Informatica Laurea in Ingegneria Civile e Ingegneria per l ambiente e il territorio

Esercizi C su array e matrici

Scrittura formattata - printf

Cosa serve per cominciare?

Fondamenti di Informatica T1. Lab 03 Istruzioni. Lab03 1

Un esempio per iniziare. Il controllo del programma in C. Altri cenni su printf() Esercizi (printf) printf( 8!=%d, fatt);

Programmare. Compilatori e interpreti. Editor :: vi. Hello1.c. #include <stdio.h> >> cc Hello1.c. main() { printf( \n Hello World!

Università degli Studi di Ferrara

Esercitazioni di Fondamenti di Informatica - Lez. 5 30/10/2018

Fondamenti di Informatica T1. Lab 03 Istruzioni. Lab03 1

Esercizio 1" input tre numeri interi e stampi a video la loro somma e la media. n Realizzare un programma che legga da. Lab03 2

Informatica A (per gestionali) A.A. 2004/2005. Esercizi C e diagrammi a blocchi. Preparazione prima prova intermedia

Corso sul linguaggio C

Strutture di Controllo Condizionali e Operatori Logici e Relazionali

Strutture di Controllo Condizionali e Operatori Logici e Relazionali

Programmazione I - Laboratorio

Esercitazione 11. Liste semplici

Dati aggregati. Violetta Lonati

Strutture di Controllo Iterative: Istruzione FOR

Strutture di Controllo Iterative: Istruzioni While e Do

I costrutti del C. Strutture condizionali Strutture iterative Introduzione alle funzioni

Stringhe. Prof. Lorenzo Porcelli

INFORMATICA A. Titolo presentazione sottotitolo. Laboratorio n 2 Dott. Michele Zanella Ing. Gian Enrico Conti

Informatica per Statistica Riassunto della lezione del 21/10/2011

Esercitazione 6. Array

Algoritmi su Array. Moreno Marzolla Dipartimento di Informatica Scienza e Ingegneria (DISI) Università di Bologna

Stringhe e allocazione dinamica della memoria

La funzione main() La funzione main(), presente in tutti i programmi C, è una funzione come tutte le altre

Passaggio dei parametri

Algoritmi su Array. Moreno Marzolla Dipartimento di Informatica Scienza e Ingegneria (DISI) Università di Bologna

Laboratorio di Programmazione

Corso di Informatica 1 Esercitazione n. 4

Esercizi sulle stringhe

Corso di Fondamenti di Informatica

24 aprile Qualche minuto di laboratorio

Corso di Informatica A.A

Linguaggio C - le strutture di controllo: sequenza, selezione, iterazione

a.a Codice corso: 21012

Sunto della scorsa lezione Il linguaggio C. Un Programma con Errori. Il preprocessore. Linguaggi di Programmazione I.

Strutture di Controllo Iterative: Istruzione FOR

Algoritmi di Ricerca Ordinamento

Linguaggio C: Variabili e assegnamento e semplici comandi di I/O

Fondamenti di informatica T-1 (A K) Esercitazione 2 Basi del linguaggio Java

Programmare in C. Maurizio Palesi Salvatore Serrano. Valori. Operazioni. Un insieme di valori del tipo. Per operare su tali valori Tipi

Transcript:

ESERCITAZIONE N.2 LINGUAGGIO C In preparazione alla prova in Itinere

ORDINARE UN ARRAY

INVERTIRE IL VALORE DI DUE VARIABILI Le due operazioni di assegnamento non possono essere contemporanee (deve esserci sequenzialità) Si deve passare attraverso un area temporanea eseguendo tre operazioni in sequenza

INVERSIONE DI DUE NUMERI

TROVARE IL MAGGIORE DUE NUMERI

TROVARE IL MAGGIORE DI UNA SERIE Il programma si divide in tre parti 1. Input della serie di NElem elementi 2. Calcolo del massimo 3. Output del risultato Una variante è quella di mettere il massimo nella prima posizione della tabella quindi: 1. Input della serie di NElem elementi 2. Calcolo del massimo 3. Output della serie di NElem elementi

TROVARE IL MASSIMO DI UNA SERIE

TROVARE IL MINIMO DI UNA SERIE E METTERLO NELLA PRIMA POSIZIONE

TROVARE IL MINIMO DI UNA SERIE E METTERLO NELLA PRIMA POSIZIONE SENZA DISTRUGGERE ELEMENTI

ORDINAMENTO DELLA TABELLA Ma se allora siamo capaci di mettere nella prima posizione il minimo ------- allora saremo capaci di mettere nella seconda posizione il minimo dei restanti -------- e nella terza. Ecc ecc L ordinamento è composto di Nelem-1 operazioni di minimo Quindi le operazioni di minimo saranno ripetute più volte

ORDINAMENTO DELLA TABELLA

UN ALGORITMO PIÙ FURBO L algoritmo scritto è corretto ma ha un difetto Nel caso in cui la tabella sia già ordinata, anche parzialmente, esegue sempre un numero uguale di operazioni Spesso la tabella da ordinare è parzialmente già ordinata: es. si tratta di aggiungere elementi nuovi ad una tabella già ordinata Si possono pensare algoritmi diversi che tengono conto di parziali ordinamenti

BUBBLE SORT Si confrontano i primi due numeri Se sono ordinati si confrontano il 2 e il 3à Se non sono ordinati si invertono L operazione viene eseguita dal primo al penultimo numero I numeri bassi posti all inizio si spostano sempre verso la fine I numeri alti posti alla fine si spostano sempre verso l inizio COME LE BOLLE NELL ACQUA!!!

BUBBLE SORT

SI ORGANIZZA IL BUBBLE SORT IN UNA FUNZIONE

IL LOOP DI SCAMBIO

SI DEVE PREDISPORRE LA FINE DELL ALGORITMO Gli scambi devono essere fatti sino a quando non ce n è più bisogno Cioè sino a quando la tabella non sia già completamente ordinata Si deve poter sapere se c è stato almeno uno scambio durante un ciclo Si usa una variabile SORTED che può avere valori VERO e FALSO

CICLO ESTERNO

LA FUNZIONE COMPLETA

IN ESECUZIONE

CONVERTIRE STRINGHE IN ALFABETO MORSE E VICEVERSA

ES.: ALFABETO MORSE: NUMERI 1: 2: 3: 4: 5: 6: 7: 8: 9: 0:

MORSE CODE PROGRAM. ENTER A NUMBER (1 DIGIT) AND FIND OUT WHAT IT IS IN MORSE CODE #include <stdio.h> #include <string.h> /************************************ */ main () { short digit; char string[10]; printf ("Enter any digit in the range 0..9\t"); scanf ("%d",&digit); if ((digit < 0) (digit > 9)) { printf ("\nnumber was not in range 0..9"); return (0); } printf ("\nthe Morse code of that digit is \t"); ToMorse (digit); } /************************************ */ ToMorse ( digit) /* print out Morse code */ { static char code[][6]= { "-----", ".----", "..---", "...--", "...-", "...", "-...", "--...", "---..", "----.", }; printf ("%s\n",code[digit]); };

DATO IL CODICE MORSE TROVARE LA LETTERA RAPPRESENTATA Per trovare la corrispondenza tra un codice Morse e la lettera (numero) rappresentata si deve fare una ricerca Si deve scandire la tabella e i risultati possono essere Trovato il carattere in una certa posizione Non trovato il carattere in nessuna posizione

SERVE L ALGORITMO DI RICERCA (LOOKUP) Data una tabella con dei valori, determinare se un valore X è nella tabella e dove Si scandisce tutta la tabella sino a quando si determina che X == TAB[i] Nel caso affermativo si può rispondere affermativamente e l indice i è la posizione dell elemento. Nel caso negativo si può rispondere negativamente e l indice non è valido (es. -1)

CONFRONTA OGNI POSIZIONE FA BREAK QUANDO TROVA L EGUAGLIANZA

MORSE CODE PROGRAM. ENTER A MORSE CODE AND FIND OUT THE NUMBER #include <stdio.h> #include <string.h> /************************************ */ main () { short digit; char string[10]; printf ("Adesso dammi una stringa Morse\t"); scanf("%s",string); printf("\n\t%s",string); FromMorse(string); } FromMorse ( char string[]) { int I; static char letter[]= { '0, '1, '2, '3,'4,'5', '6,'7, '8, '9, }; static char code[][6]= { "-----, ".----, "..---", "...--, "...-, "...", "-..., "--..., "---..", "----. }; for(i=0;i<10 ;I++ ) { if (strcmp (string, code[i])==0 ) break; }; printf ("il carattere morse %s corrisponde a %d\n", code[i],i ); }

MODIFICARE IL PROGRAMA PER RICONOSCERE UNA FRASE Estendere le tabelle con le lettere dell alfabeto Scrivere prima il ToMorse esteso Input carattere Output Morse Poi modificare il FromMorse Leggere una sequenza di stringhe (ognuna è un codice Morse) Ogni volta cercare e stampare il carattere relativo Eseguire le operazioni in loop sino a che si inserisce un codice errato

ALFABETO MORSE: LETTERE A: B: C: D: E: F: G: H: I: J: K: L: M: N: O: P: Q: R: S: T: U: V: W: X: Y: Z:

CODICE MORSE COMPLETO

LE TABELLE DI CONVERSIONE SONO DUE Se si devono inserire dei nuovi simboli Bisogna farlo in entrambe le tabelle Nello stesso ordine

OPERAZIONI PRELIMINARI

DATA UNA LETTERA O NUMERO SI CONVERTE IN MORSE (CONVERSIONE A MAIUSCOLO!!)

DATA UNA STRINGA MORSE (CORRISPONDENTE AD UN CARATTERE) SI ESEGUE LA CONVERSIONE

LE FUNZIONI CHE EFFETTUANO LA CONVERSIONE - TOMORSE

LE FUNZIONI CHE EFFETTUANO LA CONVERSIONE - FROMMORSE

LO STESSO ESEMPIO PUÒ ESSERE ESEGUITO CICLICAMENTE CON ALCUNE MODIFICHE

LO SCHEMA PRECEDENTE È IMPORTANTE Tutte le volte in cui si deve scandire una tabella (array o stringa o altro) di N elementi in cui N sia ignoto si devono effettuare N+1 letture del dato da elaborare N elaborazioni Quindi apparentemente c è un controsenso poiché il ciclo deve essere eseguito o N o N+1 volte La lettura deve essere eseguita anche quando non c è più nulla da fare, quindi N+1