mercoledì 5 febbraio 2014

Strutture e Record

Concetto di struttura come 
contenitore di dati di tipo differente
Struttura dati complessa

Regole per la dichiarazione di una struttura

Regole di accesso ai campi di una struttura

Introduzione agli array di strutture:
Caricamento
Visualizzazione

Introduzione alle strutture di strutture

lunedì 20 gennaio 2014

Introduzione alle Liste: Concetti e prime regole per l'inserimento in Testa di un Nodo

Argomento
Liste

Pre  Requisiti

  • Strutture o Record
  • Puntatori
  • Modalità di Passaggio dei parametri ad una funzione: per valore/per riferimento
L'argomento di questa sera è legato alla gestione delle strutture dati Dinamiche

Per Dinamico si intende una struttura che varia il numero di elementi in Run Time ovvero durante l'esecuzione del programma.

La prima struttura che verrà presa in considerazione è la Lista Semplice. Elemento fondamentale per la costruzione di una Lista, è il NODO. Un NODO è un Record (Struct per il linguaggio C) composta da due parti:
  • la parte informativa o dati
  • la parte puntatore, che fa riferimento al NODO successivo
Una Lista quindi, è una Catena di NODI agganciati l'uno con l'altro, in cui la dinamicità consiste nell'aggiungere o nell'eliminare NODI, ogniqualvolta sarà necessario durante l'esecuzione del programma.

Tra le operazioni fondamentali previste per la Gestione delle Liste abbiamo l'inserimento. Vi sono diversi tipi di inserimento:
  • in Testa
  • in Coda
  • in Mezzo
Questa sera si è introdotto l'inserimento in Testa.
Sono stati definiti gli elementi fondamentali, affinché ne fossero comprese le varie fasi ed i  passi necessari.

Si è insistito su quello che dal punto di vista pratico-implementativo è la Lista:  
  • Lista Vuota: Puntatore di Testa inizializzato a NULL
  • il Puntatore di Testa o di Inizio Lista
  • i passi necessari per realizzare l'aggancio di un NODO in Testa
    • Creazione Nuovo Nodo
    • Assegnazione del/i dato/i alla parte informativa
    • Assegnazione della Testa alla parte Puntatore del Nuovo Nodo
    • Assegnazione del puntatore al Nuovo Nodo alla Testa della Lista
  • E' stato simulato l'inserimento di 5 Nodi, coinvolgendo la classe.
Dalla simulazione sono stati identificati i passi che venivano ripetuti ed è stato fatto notare alla classe come, l'utilizzo di un costrutto iterativo, aggiungendo una richiesta di continuazione ad inserire da rivolgere all'utente, avrebbe potuto trasformare la simulazione in un algoritmo per l'inserimento.
Riflettendo con la classe si è giunti alla conclusione che individuando le parti richieste per l'inserimento di un nuovo NODO ed isolandole, si avrebbe potuto creare una funzione di Inserimento in Testa alla quale passare il puntatore di Testa come parametro ma per riferimento.

Si è poi iniziato a vedere come organizzare la visualizzazione dei valori contenuti all'interno dei Nodi della Lista.

Seguiranno Appunti sul Codice.

venerdì 17 gennaio 2014

Lezione

Vengono spiegati i parametri del main: argc ed argv

Vengono forniti degli esempi su come utilizzare e lavorare con tali parametri.

Viene richiesto di esercitarsi sull'utilizzo dei due parametri:

Visualizzare argc e le stringhe memorizzate nell'array argv
Controllare un parametro inserito all'atto del l'avvio del programma

Argomenti correlati:

Puntatori semplici e doppi
Array di puntatori
Array di stringhe

Lezione

HTML

Colspan
Rowspan

Esempio

Per casa
Costruzione di. Tabelle applicando gli attributi spiegati

TEST


1.    Che cosa significa HTML
Home Tool Markup Language
Hyper Text Markup Language
Hyperlinks and Text Markup Language
2.    Scegliere il tag HTML corretto per il titolo più grande
<heading>
<h1>
<h6>
<Head>
3.    Qual è il tag HTML corretto per l'inserimento di un'interruzione di linea?
<lb>
<break>
<br>
4.    Qual è il tag  HTML per la creazione di un collegamento ipertestuale?
<a>http:// http://www.itis-molinari.eu</a>
<a url="http://www.itis-molinari.eu">ITIS MOLINARI</a>
<a href="http://www.itis-molinari.eu"> ITIS MOLINARI </a>
<a name="http://www.itis-molinari.eu"> ITIS MOLINARI </a>
5.    Come si può aprire un link in una nuova finestra / scheda del browser?
<a href="url" target="_blank">
<a href="url" target="new">
<a href="url" new>
6.    Von Neumann ha
Definito la Struttura Logica del Calcolatore
Realizzato il Primo Calcolatore Elettronico
Definito la Struttura Logica dei Linguaggi di Programmazione
Creato la Rete Internet
7.    Quali dei seguenti sw fa parte del Software di Sistema
Data Base
Elaboratore di testi
Sistema Operativo
Driver per stampante
8.    Cosa Significa WAN
Wireless Area Network
Wide Area Network
Wide Area Networking
Windows Area Network
9.    Elencare almeno tre Topologie di LAN e fornire una breve descrizione all’interno della tabella













10. Un Programma FreeWare è
Gratuito ma solo per un breve periodo
Tipico dei Siti Web
Gratuito e utilizzabile da chiunque
Utile per costruire un Sito Web non commerciale
11. Quale/i dei seguenti programmiè un Sistema Operativo
Linux
OpenOffice
MS-DOS
Access


Laboratorio

Argomento

Matrici numeriche

Viene richiesta la scrittura di un programma che svolga:

Caricamento
Visualizzazione
Conteggio pari dispari nulli
Implementazione con le tre strutture iterative
 For
 While
 Do While

Per casa

Media dei valori presenti nelle singole righe
Media dei valori presenti nelle singole colonne
Memorizzazione dei risultati in due array

venerdì 10 gennaio 2014

Verifica


Esercizio 1
A) Caricare un Vettore di 10 elementi interi, utilizzando la funzione rand. I valori devono essere  
     compresi tra 20 e 50. ( 3 - punti)
B) Visualizzare i valori presenti nelle posizioni pari. ( 1- punto)
C) Modificare i valori presenti nelle posizioni dispari incrementando li di 1 e di 3 in maniera alternata
    ( 3 - punti)

Esercizio 2
A) Modificare il punto1 dell'esercizio precedente cercando da tastiera i valori e rispettando il vincolo 
    che questi siano compresi tra 20 e 50 ( 2-punti)

Svolgere i punti B e C del precedente esercizio

Attività per casa

Si richiede di scrivere un programma che fornisca la possibilità all'utente di selezionare il metodo di inserimento dei dati del vettore ( punti a dei due esercizi). La soluzione dovrà prevedere
Commento del codice
Compilazione
Valutazione 6

Se il programma viene sviluppato con le funzioni
Menù
Inserisci
Visualizza
Modifica
La valutazione sarà 8

Le soluzioni proposte dovranno essere inviate via mail in allegato entro lunedì 13/01/14. Il materiale inviato verrà considerata utile per la valutazione delle attività di laboratorio. 

giovedì 9 gennaio 2014

LezioneLaboratorio

Ripasso Programmazione ad Oggetti C++
Vengono Forniti i Materiali della Lezione da prelevare nell'Area Condivisa

Vengono richiesti i compiti assegnati per le vacanze di Natale

Esercitazione di Laboratorio  e Interrogazione

Viene richiesto di costruire la classe INTERI sulla Base delle Classe Frazione già Fornita. In particolare:

  • Ridefinizione degli operatori
  • Valutare l'utilizzo delle funzioni friend
  • Valutare l'utilizzo del puntatore This


mercoledì 8 gennaio 2014

LezioneInterrogazione

Interrogazione e Ripasso per la preparazione alla Verifica.

Argomenti trattati
  • HTML
    • Struttura di una Pagina Base
    • Link
    • Tabelle
    • Elenchi Puntati e Numerati
  • Classificazione delle Reti
  • Topologie di Rete
  • Siti Statici e siti dinamici
  • Linguaggi Informatici
  • Verifica sulle ricerche richieste per le vacanze di Natale
    • Server Web

Innterrogazione

Interrogazione e Ripasso argomenti trattati

Interrogazione Esercitazione

Vista la Grande quantità di Assenti la verifica verrà spostata a data da destinarsi

Interrogazione
Esercitazione Array

martedì 7 gennaio 2014

Laboratorio

Esercitazione sulla creazione di grafici in Excel

InterrogazioneEsercitazione

Interrogazione
Esercitazione sugli Array

Viste le continue assenze di gran parte della classe si comunica che non verrà fornita la data della Verifica ma soltanto la settimana in cui verrà proposta

giovedì 19 dicembre 2013

Lezione Laboratorio

Argomento:
   Funzioni Friend
   Ridefinizione degli operatori

Gli argomenti trattati sono stati affrontati nell'ambito dello sviluppo della classe frazione. La classe verrà   
fornita in allegato a tutta la classe. Di tale classe viene richiesta la documentazione come esercitazione. 

Viene fornito inoltre un programma che gestisce test, di questo programma si richiede la documentazione e la trasformazione del programma in oggetti. 

Le attività proposte verranno valutate come attività di laboratorio


lunedì 16 dicembre 2013

Verifica 16/12/2013

Esercizio 1 (Punti 7)
Progettare una classe Persona composta da:

Proprietà
Metodi
  • Nome
  • Cognome
  • CittaNascita
  • DataNascita
  • InserisciDati
  • VisualizzaDati
  • AggiornaDati
  • VisualizzaDatiAnagrafici

Nel progetto si dovranno prevedere le seguenti documentazioni:
  • Motivazione sulla scelta dei tipi di dato da associare alle variabili
  • Motivazione su:
    • Presenza/assenza, numero, tipo e significato di eventuali parametri previsti i metodi implementati.
    • Motivo per cui i membri della classe debbano essere Pubblici/Privati/Protetti
Criteri di Valutazione
  1. Realizzazione classe in linguaggio C++                                                                                          (punti: 4)
  2. Documentazione delle proprietà (Scopo, nome significativo, tipo adeguato)                             (punti: 1)
  3. Documentazione dei metodi (Scopo, descrizione parametri)                                                        (punti: 2)

Esercizio 2 (Punti 10)


Progettare una classe dipendente, derivata dalla classe persona dell’esercizio precedente. Tale classe dovrà contenere le seguanti proprietà:
Proprietà
Metodi
  • Mansione (Esempio: Impiegato, Dirigente, Operaio, Funzionario, ecc)
  • Stipendio
  • InserisciDati
  • VisualizzaDati
  • AggiornaDati
  • ControllaStipendio

in aggiunta a tutto quello che verrà ereditato dalla classe persona
Specifica/Vincolo di Progetto: Considerando che lo stipendio di un dipendente debba rispettare la seguente regola: StipendioOperaio<StipendioImpiegato<StipendioFunzionario<=StipendioDirigente. Il metodo dovrà controllare che gli stipendi inseriti per ogni dipendente siano coerenti con la mansione e ne rispettino la regola prima fornita.

N.B. Il metodo ControllaStipendio  va studiato attentamente, come sarà necessario fare le dovute ipotesi sugli stipendi, affinché le condizioni poste (StipendioOperaio<StipendioImpiegato<StipendioFunzionario<=StipendioDirigente) vengano rispettate. In aggiunta, il controllo dovrà essere eseguito utilizzando le eccezioni.
Nel progetto si dovranno prevedere le seguenti documentazioni:
  • Motivazione sulla scelta dei tipi di dato da associare alle variabili
  • Motivazione su:
    • Presenza/assenza, numero, tipo e significato di eventuali parametri previsti i metodi implementati.
    • Motivo per cui i membri della classe debbano essere Pubblici/Privati/Protetti
Criteri di Valutazione

  1. Realizzazione classe in linguaggio C++                                                                                          (punti: 4)
  2. Documentazione delle proprietà (Scopo, nome significativo, tipo adeguato)                             (punti: 1)
  3. Documentazione dei metodi (Scopo, descrizione parametri)                                                        (punti: 2)
  4. Progettazione metodo ControlloStipendio                                                                                       (punti: 3)

domenica 15 dicembre 2013

Riflessioni sulla Verifica Proposta

Considerazioni sulla traccia proposta

Prima Considerazione
La Verifica proposta il 13/12/2013, richiedeva due tipi di attività:

  1. Lettura attenta della traccia e relativa analisi delle specifiche
  2. Identificazione delle richieste
La prima attività avrebbe dovuto portare a comprendere che per operazioni tra frazioni, si intendeva il coinvolgimento di tre frazioni:
  • operando 1
  • operando 2
  • risultato
questo avrebbe portato ad avere a disposizione almeno 6 variabili di tipo intero: due per ogni frazione e questo in considerazione del fatto che una frazione è composta dalle due parti: numeratore e denominatore. Appare evidente che ogni risultato che avrebbe portato all'utilizzo di un'unica variabile di tipo float è da considerarsi non corretto.

Seconda Considerazione
La traccia richiedeva la realizzazione di una semplice calcolatrice. Questo presupponeva che l'utente avrebbe dovuto avere la possibilità di scegliere sia gli operatori che l'operazione da eseguire. Appare evidente che ogni soluzione che prevede la produzione di 4 risultati, uno per ogni operazione non soddisfa la richiesta della traccia.

Terza Considerazione
Si sarebbe dovuto tenere conto del bisogno dell'utente di poter scegliere tra il voler continuare ad eseguire altri calcoli ed il voler interrompere l'esecuzione del programma.

Quarta Considerazione
La matematica ci dice che il denominatore di una frazione non può essere nullo. Questo avrebbe dovuto portare al controllo dei denominatori delle frazioni utilizzati e prevedere una risposta per l'utente

venerdì 13 dicembre 2013

Traccia Verifica 13_12_2013

Esercizio 1 (Punti 8)
Considerando le seguenti operazioni algebriche tra frazioni:
·         Somma                               ((a/b)+(c/d)=((a*d)+(c*d))/(b*d))                                        (punti 2)
·         Sottrazione                       ((a/b)-(c/d)=((a*d)-(c*d))/(b*d))                                          (punti 2)
·         Moltiplicazione              ((a/b)*(c/d)=((a*c)/(b*d))                                                       (punti 2)
·         Divisione                           ((a/b)/(c/d)=((a*d)/(b*c))                                                        (punti 2)
Si scriva un programma che ne implementi una calcolatrice.
Esercizio 2 (Punti 7)


Considerando le precedenti operazioni algebriche tra frazioni
  1. Si realizzi il diagramma di flusso che implementi la calcolatrice                            (punti 4)
2.       Si crei una tabella con                                                                                                                (punti 3)
a.       l’elenco delle variabili utilizzate
b.      lo scopo delle variabili
c.       la distinzione tra
                                                              i.      variabili di input
                                                            ii.      variabili di output
                                                          iii.      variabili di lavoro

Durata della prova h 1,30
Gli studenti potranno scegliere fra le seguenti opzioni:
  1. Risolvere un solo esercizio
  2. Risolvere 2 esercizi. In tal caso vi saranno due valutazioni una per lo scritto e l’altra per il laboratorio
Tutti gli studenti che risolveranno un solo esercizio dovranno risolvere l’esercizio non svolto e consegnarlo entro martedì per e-mail inviandolo all’indirizzo: studenti.alemanno@gmail.com . Il punteggio massimo previsto sarà decrementato di 1 rispetto al punteggio indicato nella traccia. La soluzione verrà considerata attività di laboratorio.