Software applicativo :
cosa è e come si fa per arrivare ad un software. Problema di natura LOGICO (dato un problema va
ricavata la soluzione) e LINGUISTICA (è necessario comunicare la soluzione trovata alla macchina
tramite un apposito linguaggio).
Dati imput alla macchina, la quale elabora le informazioni e poi mi dà l’output.
Abbiamo un insieme di dati e vogliamo ottenere un risultato.
La prima cosa da fare è eliminare ogni possibile tipo di ambiguità, perché la macchina non saprebbe come
trattare. Necessario dunque: rispettare alcune regole, dei vincoli ed in fine considerare dati espliciti ed
impliciti. I dati impliciti: es. dico 1sett e so che sono 7 giorni.
I software applicano costantemente algoritmi. Fanno un’analisi ad alto livello e formulano un modello di
una soluzione, ben strutturato. Questo modello di soluzione verrà descritta, passo passo, in modo
formalizzato e comunicato alla macchina. Comunicato nel linguaggio che la macchina riesce a capire: in
binario. Oggi ci sono linguaggi diversi es. il VBA dove ci sono stringhe di testo che tramite dei software
che prendono nome di traduttori che hanno lo scopo di tradurre l’algoritmo in un linguaggio ad alto
livello nell’unico che la macchina comprende.
Se il problema è complicato lo dividiamo in pezzi più semplici e concatenati.
Algoritmo: è un procedimento formale che risolve un determinato problema attraverso un numero finito
di passi. Un problema risolvibile tramite un algoritmo si dice computabile.
“una sequenza finita di passi elementari e non ambigui atta alla risoluzione di una classe di problemi in
tempo finito”
Finita: per raggiungere la soluzione. Deve avere un inizio e una fine.
- Non ambigui: altrimenti la macchina non saprebbe come procedere
- Atta alla risoluzione di una classe di problemi: non faccio un algoritmo per ogni piccola
- sfaccettatura, ma scrivo una sequenza di passi per risolvere una classe di problemi e non solo
quella casistica (es. moltiplicazione)
Tempo finito: Significa non incorrere in situazioni di loop, evitarlo. Che differenza c’è tra
- sequenza finita e tempo finito? Anche se la sequenza è finita i passi elementari potrebbero essere
infiniti da fare.
Altre caratteristiche importanti per l’algoritmo: slide (completezza da non fare).
Correttezza: l’algoritmo fa quello che deve fare, per il raggiungimento del risultato. È corretto se
- raggiunge la soluzione che voglio. BAG: software che ha un bag significa che non è corretto
perché non raggiunge gli scopi per cui è stato progettato.
L’efficienza (o complessità si dirama in due: Efficienza in Spazio e Efficienza in Tempo. Si dice
- che un algoritmo è ottimo se utilizza il minor tempo possibile per produrre un risultato.
Ottimo da pdv in complessità in Spazio: se occupa il minimo spazio di memoria necessario per
portare avanti l’elaborazione.
Ottimo da pdv in complessità in Tempo: utilizzo il minimo tempo necessario per arrivare alla
soluzione.
Es. prendiamo una lista di numero ordinati o una lista di parole ordinate per ordine alfabetico. Volendo
andare a ricercare se è presente il numero 48.
Come si può procedere, quante operazioni devo andare a fare? Es. il 48 è al quinto posto esamino fino al
quinto.
Quando dobbiamo cercare una parola nel vocabolario, sfogliamo tutte le pagine? No, andiamo per
sottogruppi.
Ricerca dicotomica, e quindi algoritmo dicotomico: non di tipo sequenziale. L’idea è di spezzare sempre
in due. Per cercare il 48 ci metto più tempo in modo sequenziale. Più efficiente da un pdv di complessità
in tempo: la ricerca dicotomica.
Ci sono alcuni algoritmi in cui si riesce a dimostrare qual è il numero minimo di passi. E quindi
l’efficienza in tempo. Ci sono degli algoritmi in cui questo non si sa. Non tutto è noto.
Se il nostro insieme di numeri, invece di essere ordinato non lo fosse?
7 2 10 20 14 3
Come faccio a vedere c’è oppure, non c’è? Necessaria una ricerca sequenziale, ma costa tanto e hanno
trovato dei metodi e degli algoritmi articolati e complessi per diminuire i tempi di ricerca.
E se volessimo ordinare questo insieme? Se voglio ordinare dal più grande al più piccolo, va trovato il
più grande, lo confronto con gli altri, a catena e vince il più grande. Riparto poi coi numeri rimasti.
Supponiamo che ogni numero occupi un certo spazio, es. caselline nel foglio.
Ci sono dei problemi che per loro natura hanno complessità molto elevata e non c’è verso di abbatterla.
Es. Voglio sommare i primi numeri che vanno da 1 a 10?
Si parte dal primo, verrebbe da fare 1+2+3+4+5+6+7+8+9+10. OPPURE [Nx(N+1)/2]
Qual è l’algoritmo ottimo? Quello che impone meno passaggi, prendo la formula e ci metto dentro n.
Algoritmo: dati + istruzioni = passi di elaborazione informazione e quindi dei dati .
Dati: oggetti che devono subire le operazioni.
Operazioni: istruzioni che devono essere eseguite.
I DATI si suddividono in:
- Variabilità nel tempo: se per esempio la nostra età è un informazione è costante nel tempo o
varia? Varia. E’ costante se rimane inalterato nel tempo. Le variabili si riferiscono ad un oggetto
senza valore fisso nel tempo
Struttura: Dati elementari (sono ad esempio i numeri o i caratteri. E’ necessario aggregare questi
- dati elementari per raggiungere dati semanticamente più specifici e complessi) o dati strutturati ().
Tipo: In base alla casistica e all’elaborazione cambia il tipo di dato. Ci viene data la possibilità di
- definirne di propri a seconda della casistica.
Visibilità:
- Costanti: inalterate nel tempo, sono sempre loro. Non cambiano.
-
Il modo per andare ad assegnare qualcosa alla variabile
( ) Sinonimo dell’uguale. Prendi la parte a destra della freccia valutata, calcola, una volta che ho
ottenuto il risultato di questa parte destra la assegno alla variabile, la vado a mettere nel contenitore.
Es. se A=2 e B=3 .. C=? 5
Slide tnp?
Variabili strutturate permettono di riferirsi a più valori, a più oggetti tra loro correlate. (cerca)
Es. le matrici, sono delle tabelle.
Es. record, si fa punto per punto. Specificando il nome del record, un punto ed il campo. Es
(Studente.luogodinascita).
Nome del vettore individuare l’elemento, recuperare il campo ed andare a scrivere l’informazione.
Avere dei vettori in cui
-
L'azienda: definizione e spiegazione
-
Programmazione - Spiegazione C++, Puntatori e liste, Java (base)
-
Fisica tecnica - Esercizi con spiegazione teorica e dimostrazioni
-
Durkheim, spiegazione