# data[].attributes.attachment_link.description
ISIS Francesco de Sanctis Napoli. Questo sito ha vinto il premio Scuola Innovazione nell'anno 2010-2011 (categoria E-learning).

# data[].attributes.body
Descrivi l'algoritmo per fare il caffè

# data[].attributes.body
Scrivere un algoritmo che legga due numeri da tastiera, controlli che siano entrambi positivi e che la loro somma sia inferiore a 10 e li scriva a video entrambi, partendo da quello più grande. Scrivere il flowchart e il rispettivo pseudocodice. Infine costruire la tabella di test.

# data[].attributes.attachment_link.readable_text
Sommario

Cos'è AlgoBuild

AlgoBuild è un software didattico per progettare programmi.
Presenta un ambiente visuale in cui realizzare i flow-chart rispettando le regole della programmazione strutturata.
Il programma prodotto viene visualizzato ed è modificabile anche in forma di pseudo-codice.

Se le istruzioni vengono inserite rispettando una opportuna sintassi è possibile eseguire il programma in modalità passo-passo o temporizzata seguendo l'esecuzione delle istruzioni, il calcolo dei valori, le operazioni di input e output.
Vai al Sommario
Novità rispetto alla versione 0.75

La versione corrente, 0.80 ha apportato notevoli aggiunte rispetto alle precedenti.

Differenze rispetto alla versione precedente:
- Tipi di dati diversificati: decimali in virgola mobile (double), interi (int), stringhe (string) e logici (boolean).
- Funzioni per la manipolazione e la conversione tra dati di tipo diverso.
- Pseudo codice editabile - Anche l'area pseudo codice è utilizzabile per inserire e modificare il programma.
- Procedure e Funzioni - Oltre al programma principale (main) è possibile definire procedure e funzioni richiamabili da main o da altre procedure / funzioni. La ricorsione è supportata.
- Commenti - Un nuovo elemento, non istruzione, è rappresentato dai commenti inseribili nel diagramma.
- Annulla (Undo) - È stata aggiunta la possibilità di annullare i comandi e rifare i comandi annullati.
- Colori - Si possono modificare i colori usati nel diagramma e nella pseudo codifica: colore di sfondo, il colore di riempimento (delle forme), il colore delle linee e dei caratteri, lo spessore delle linee. Si possono impostare colori di default.
- Nuovo formato file - I programmi AlgoBuild vengono memorizzati nel nuovo formato con estensone .algobuild. Questa forma di memorizzazione, oltre alle nuove funzionalità aggiunte, permette di mantenere le informazioni di copyright dell'utente.
- Uso privato o pubblico - AlgoBuild può essere usato in modalità privata o pubblica. Privata significa che i file si possono leggere/scrivere solo dalla postazione in cui sono stati prodotti. Pubblica significa che i file possono essere letti anche da altre postazioni.
- Utente e Copyright - Un servizio di "registrazione Utente" permette di iscriversi all'elenco degli Utenti Registrati.
Gli Utenti Registrati possono memorizzare dei file "pubblici" leggibili da tutti gli utenti di AlgoBuild.
- Lingua - La lingua dell'interfaccia si può cambiare in qualsiasi momento. Attualmente disponibili Italiano e Inglese.

Novità rispetto alla versione 0.73
Differenze rispetto alla versione precedente:
- Aggiunta la gestione degli array (vettori) monodimensionali
- Scrolling automatico della finestra del flow chart durante l'esecuzione
- Spostamento della selezione dei caratteri/spessore linea in una finestrella apposita accessibile con il pulsante "a" della barra strumenti
- Miglioramento dell'allineamento delle scritte negli elementi grafici
- BUGFIX: Aggiunta l'estensione di default ".bfc" nel salvataggio/apertura file

Novità rispetto alla versione 0.72
Differenze rispetto alla versione precedente:
- Selezione Tipo Font
- Scelta dimensione font per codice e per output
- Seleziona spessore linea del grafico

Novità rispetto alla versione 0.71

Vaersione attuale: AlgoBuild 0.72.
Ultimo aggiornamento 27/04/2013

1 - Numeri pseudo casuali
È stata aggiunta la funzione random per la generazione di numeri pseudo casuali. La nuova funzione non ha argomenti e restituisce un numero maggiore o uguale a 0.0 e minore di 1.0.

Esempi:
num=random() assegna un numero pseudo casuale tra 0.0 e 0.99999999999999 alla variabile num.
dado=floor(random()*6+1) assegna uno dei sei valori a caso tra 1.0, 2.0, 3.0, 4.0, 5.0 e 6.0 alla variabile dado.

2 - Operazioni di input/output e trace
Nelle operazioni di I/O da ora viene omessa la descrizione "INPUT" e "OUTPUT" se il Trace è disabilitato.

Esempio con trace abilitato:

OUTPUT i: 0.0
OUTPUT i: 1.0
OUTPUT i: 2.0
ecc...

Esempio con trace disabilitato:

0.0
1.0
2.0
ecc...

3 - Help online / Facebook / YouTube
Sono state aggiunte altre voci al menu Aiuto:
- Collegamento all'aiuto online sul sito algobuild.com
- Collegamento alla pagina FaceBook di Algobuild
- Collegamento al canale YouTube di Algobuild

4 - BUGFIX - operatore "NOT"
Nella versione 0.71 era presente un errore di programmazione e l'operatore logico not (rappresentato con il punto esclamativo prefisso !) non veniva valutato correttamente. In questa versione l'errore è stato eliminato e il NOT logico dà i risultati aspettati.

Novità rispetto alla versione 0.7

1 - Copia immagine
Con questo comando l'immagine del diagramma viene copiata negli appunti e può essere incollata all'interno di programmi di grafica (Paint, Gimp, Photoshop ecc...), all'interno di documenti tipo office o nel notepad della LIM.

2 - BUGFIX - operatore "or"
Nella versione 0.7 era presente un errore di programmazione e l'operatore logico or (rappresentato con due sbarrette verticali ||) non veniva valutato correttamente. In questa versione l'errore è stato eliminato e l'OR logico dà i risultati aspettati.

3 - Informazioni su...
Dalla finestra di messaggio "Informazioni su..." è possibile accedere al sito algobuild.com premendo sul bottone corrispondente.

Novità rispetto alla versione 0.6

1 - Splash screen
Adesso all'avviamento il programma si presenta.
Lo splash screen è una finestra o immagine visualizzata all'avvio di un programma.
Quello di AlgoBuild riporta un messaggio di saluto (*), nome e numero di versione; è simile a quello del sito internet ufficiale di AlgoBuild.
Vai al sito algobuild.com

(*) "Hello World!" è tradizionalmente il messaggio visualizzato dal primo programma quando si impara un nuovo linguaggio.

2 - Esecuzione temporizzata
Nella barra degli strumenti sono stati introdotti tre elementi nuovi: una casella di spunta (checkbox), una casella numerica e il pulsante Pausa Esecuzione.
La casella di spunta, normalmente selezionata, riporta la dicitura "Passo passo". Quando è selezionata l'esecuzione avviene un passo alla volta come sempre. Se viene deselezionata, premendo il pulsante "Esegui istruzioni" con la freccia verde, le istruzioni verranno eseguite una di seguito all'altra con la temporizzazione stabilita dalla casella numerica "Tempo (100-5000 ms)". Come indicato il tempo tra una istruzione e la successiva va da un minimo di 100 ms (pari a 0,1 s) a un massimo di 5000 ms (pari a 5 s). I tempi sono puramente indicativi.
La pressione del pulsante "Pausa Esecuzione" fa arrestare il programma. Premendo "Esegui istruzioni" l'esecuzione riprende da dove è stata interrotta.
La modifica del tempo è recepita solo se il programma è in pausa o interrotto.

3 - Identificatori "case-sensitive"
Da questa versione c'è differenza tra maiuscolo e minuscolo, quindi x e X sono due variabili diverse.

4 - Risoluzione di un errore relativo all'interpretazione delle espressioni
Se una qualsiasi variabile aveva all'interno una parola chiave avveniva un errore.
È capitato con "distanza". Il programma si bloccava inspiegabilmente. Ciò era dovuto alla presenza del nome di funzione "tan" all'interno della variabile "distanza".

5 - Eseguibile ".exe" per Windows
Per semplificare l'utilizzo del programma, questo adesso viene distribuito anche in formato eseguibile per windows.
NOTA: il runtime Java JRE 6 (o successivo) è ancora necessario.
Vai al Sommario
Formato eseguibile e requisiti di sistema

Il programma è distribuito in due versioni: come archivio eseguibile Java e come programma eseguibile Windows.

Per poter essere utilizzato è necessario aver installato nel computer un ambiente di esecuzione Java (JRE) versione 6.
Siccome il programma è basato su oggetti e librerie Java standard è eseguibile su qualsiasi piattaforma che supporti Java 6.

La versione in formato jar è utilizzabile su Windows, Linux, Mac e qualsiasi altra piattaforma mentre la versione in formato exe è utilizzabile solo in Windows.
Vai al Sommario
Installare il programma

1 - Scompattare l'archivio zip (cartella compressa)

2 - Copiare il file AlgoBuild080.jar o AlgoBuild080.exe in una cartella.
Per comodità è opportuno che sia la cartella di lavoro.
Vai al Sommario
Avviare il programma

Il file viene distribuito con il nome AlgoBuild080.jar o AlgoBuild080.exe.

La versione eseguibile Windows parte con un doppio click del mouse.

Per la versione jar il discorso è più articolato e si possono presentare tre possibilità

1. Doppio clic:
È il caso (abbastanza comune) più semplice; nel sistema i file jar sono associati al runtime Java. Se questo modo non funziona passare al modo 2.

2. Avvio da console:
È il caso (meno comune) sfortunato a livello 1; nel sistema i file jar NON sono associati al runtime Java.
Per avviare il programma bisogna aprire un terminale (in Windows: Esegui -> cmd), spostarsi nella cartella contenente il programma e invocare java direttamente con il comando: java -jar AlgoBuild080.jar
In questo caso è più opportuno aggiungere un collegamento o un file batch (shell script per i sistemi Unix/Linux) per semplificare l'operazione di avvio. Se anche questo modo non funziona passare al modo 3.

3. Avvio da console con path completo:
È il caso (ancora meno comune) sfortunato a livello 2; nel sistema i file jar NON sono associati al runtime Java e il programma java NON è nel PATH di ricerca del sistema operativo.
Per avviare il programma bisogna aprire un terminale (in Windows: Esegui -> cmd), spostarsi nella cartella contenente il programma e invocare java direttamente specificando tutto il path: C:\Programmi\Java\jre6\bin\java -jar AlgoBuild080.jar
Naturalmente il percorso C:\Programmi\Java\jre6\bin\ dipende da dove è stato installato jre nel sistema in questione.
Anche in questo caso è più opportuno aggiungere un collegamento o un file batch (shell script per i sistemi Unix/Linux) per semplificare l'operazione di avvio.

Se il programma si è avviato regolarmente comparirà la finestra principale simile a questa:

Vai al Sommario
Inserire una istruzione

Tra le ellissi Start e End si trova una freccia verso il basso.
Spostandovi il mouse sopra la freccia viene sostituita da un quadrato rosso.

Premendo il pulsante sinistro del mouse compare un menu da cui è possibile scegliere l'istruzione da inserire.

Nota: ogni freccia verso il basso è un punto in cui è possibile inserire una istruzione.
Vai al Sommario
Modificare una istruzione

Spostare il puntatore del mouse sopra l'istruzione da modificare, premere il pulsante sinistro del mouse e scegliere Modifica dal menu.
Vai al Sommario
Copiare/tagliare una istruzione

Spostare il puntatore del mouse sopra l'istruzione da modificare, premere il pulsante sinistro del mouse e scegliere Copia o Taglia dal menu.

Effetti:

Copia invia negli appunti locali una copia dell'istruzione scelta.

Taglia invia negli appunti locali una copia dell'istruzione scelta ed elimina l'istruzione stessa dal punto in cui si trovava.

Vai al Sommario
Incollare una istruzione dagli appunti

Spostare il puntatore del mouse sopra a un punto di inserimento (freccia verso il basso) premere il pulsante sinistro del mouse e scegliere Incolla dal menu.
Vai al Sommario
Salvare il lavoro

Dal menu principale scegliere File -> Salva... oppure File -> Salva con nome...

In alternativa è possibile schiacciare uno dei pulsanti con il floppy disk sulla barra degli strumenti.
Vai al Sommario
Aprire un lavoro dal disco

Dal menu principale scegliere File -> Apri...

In alternativa è possibile schiacciare il pulsante con la cartellina sulla barra degli strumenti.
Vai al Sommario
Esportare un diagramma in formato immagine

Dal menu principale scegliere File -> Salva immagine
Vai al Sommario
Selezionare font, dimensione caratteri, spessore della linea

Sulla barra degli strumenti schiacciare il bottone con l'icona "a".

Comparirà una finestrella da cui è possibile scegliere:
- Nome/tipo del carattere da usare
- Dimensioni caratteri della vista "codice"
- Dimensioni caratteri della finestra output e della zona delle variabili
- Colore di sfondo della zona flowchart e della zona pseudo codice.
- Colore di riempimento della zona flowchart e colore istruzioni della zona pseudo codice.
- Colore della linea.
- Spessore della linea usata per il disegno. Due pulsanti permettono di salvare le preferenze o ripristinare i valori predefiniti.
Vai al Sommario
Eseguire un programma passo-passo

NOTA: per eseguire un programma in modalità passo passo, cioè una istruzione alla volta, è necessario che la casella "Passo passo" sia selezionata.

Premere il pulsante con la freccia verde e i puntini sulla barra degli strumenti.

Comparirà una finestrella da cui è possibile scegliere:
- Traccia sì / no,
- Passo passo - sì / no,
- Temporizzazione (ms).

Ad ogni pressione del pulsante con la freccia verde l'esecuzione del programma avanza di una istruzione.
Alcune istruzioni (test e cicli) necessitano anche di più pressioni in quanto deve essere anche valutata la condizione o incrementate le variabili (for).

La casella di spunta "Traccia" riporta in output ogni messaggio e lo stato delle variabili a ogni istruzione.
Togliendo la spunta vengono visualizzati solo input e output.

Per interrompere l'esecuzione del programma prima di arrivare a END premere il pulsante con il quadrato rosso.
NOTA: Se non si interrompe l'esecuzione non è possibile modificare il programma.

NOTE

Se durante l'esecuzione vengono trovati degli errori (es. espressioni errate) il programma termina riportando un messaggio di errore.
Vai al Sommario
Eseguire un programma in modalità temporizzata

NOTA: per eseguire un programma in modalità temporizzata, cioè una istruzione dietro l'altra a intervalli di tempo regolari, è necessario che la casella "Passo passo" sia deselezionata.

Premere il pulsante con la freccia verde sulla barra degli strumenti.

Il programma si avvia e avanza di una istrusione alla volta a intervalli regolari.
Alcune istruzioni (test e cicli) necessitano anche di più tempo in quanto deve essere anche valutata la condizione o incrementate le variabili (for).

Se durante l'esecuzione si preme il pulsante "Pausa Esecuzione" il programma viene fermato momentaneamente. Premendo "Esegui Istruzioni" riprende da dove era stato interrotto.
La modifica del tempo è recepita solo se il programma è in pausa o interrotto.

La casella di spunta "Traccia" riporta in output ogni messaggio e lo stato delle variabili a ogni istruzione.
Togliendo la spunta vengono visualizzati solo input e output.

Per interrompere l'esecuzione del programma prima di arrivare a END premere il pulsante con il quadrato rosso.
Se non si interrompe l'esecuzione non è possibile modificare il programma.

NOTE

Se durante l'esecuzione vengono trovati degli errori (es. espressioni errate) il programma termina riportando un messaggio di errore.
Vai al Sommario
Sintassi

Si riportano in breve le principali regole e la sintassi delle istruzioni.

Tipi di dati: ogni espressione e ogni variabile ha associato un tipo.
I tipi sono: int (numeri interi), double (numeri decimali a doppia precisione), string (sequenze di caratteri), boolean (logico true/false). Il modo di scrivere una espressione determina anche il suo tipo.

int: sono numeri scritti come sequenza di cifre senza il punto oppure espressioni algebriche contenenti SOLO int e variabili di tipo int.
Esempi: 3, 10*2+4, 3*k (se k è variabile int).
numero = 71 (numero viene definita come variabile di tipo intero).
Numeri interi in basi diverse
numero = 10 (valore in base 10 ... cioè dieci!)
numero = 010 (valore ottale - base 8 = decimale 8)
numero = 0x10 (valore esadecimale = decimale 16)
numero = 0b10 (valore binario = decimale 2)

double: sono numeri scritti come sequenza di cifre con il punto oppure espressioni algebriche contenenti ALMENO un double o una variabile di tipo double.
Esempi: 5.6, 10*2-0+4, 9*x (se x è variabile double).
numero = 44.0 (numero viene definita come variabile di tipo double).
Si possono scrivere anche in notazione scientifica:
1.2e5 = 1.2 * 10^5 = 12000
1.2e-5 = 1.2 * 10^-5 = 0.000012

string: sono sequenze di caratteri racchiuse tra doppi apici.
Esempi: "ciao", "tanti quanti", "torno\nsubito" (il simbolo \n inserisce un "a capo").
nome = "Mondo"
messaggio = "Ciao " + nome + "!"

boolean: possono avere solo due valori true e false.
condizione = true
test = x>y

Nomi di variabili: possono essere scritte in minuscolo, MAIUSCOLO o modoMisto.
Devono iniziare per carattere alfabetico, possono contenere cifre o trattini di sottolineatura.
NON possono contenere spazi o caratteri speciali.
CONSIGLIO: usare nomi tutti minuscoli o "a cammello" con iniziale minuscola.
ESEMPI: numero, prezzo, nElementi.
Attenzione:C'È DIFFERENZA tra Maiuscolo e minuscolo.

Array (vettori): Si utilizzano come i nomi di variabili seguiti da un indice (numero o espressione) tra una coppia di parentesi quadre.
Esempio:a[0]=7 oppure b[i]=a*3 oppure x=v1[n+k*2]
NOTA BENE: L'indice è un valore numerico che deve essere di tipo intero.
L'indice minimo è 0.

Assegnamento:
variabile=espressione oppure
vettore[indice]=espressione
Esempi:x=7 oppure x=x+1 oppure giorni[mese]=31
In un blocco di assegnamento si possono inserire più istruzioni una per riga.
Il tipo della variabile dipende dall'espressione a destra del simbolo di assegnamento (uguale).
NOTA: Ad una variabile esistente non può essere assegnata una espressione di tipo diverso.
Unica eccezione double che accetta espressioni di tipo int.

Input: legge un valore da tastiera. Se non specificato i valori sono di tipo double.
Esempi:
lunghezza (legge un numero double e lo inserisce nella variabile lunghezza)
valori[0] (legge un numero double e lo inserisce alla prima posizione del vettore valori)
Per leggere un input di un tipo specifico si deve premetterne il nome.
int nElementi (legge un numero intero e lo inserisce nella variabile nElementi)
string nome (legge una sequenza di caratteri e la inserisce nella variabile nome)
In un blocco di input si possono inserire più istruzioni di lettura una per riga.

Output: visualizza il valore di una variabile o di una espressione nel riquadro Output (console).
Esempi:
nElementi
nElementi*4
"ciao " + nome
In un blocco di output si possono inserire più istruzioni di visualizzazione una per riga.

If: valuta una espressione booleana e prosegue sul ramo true (T) se la condizione è vera, prosegue sul ramo false (F) altrimenti.
Esempi:
y < 5
x == z*2
a[i] < a[i+1]

While: ciclo precondizionale. Valuta una espressione booleana ed esegue un gruppo di istruzioni finché la condizione è vera.
Espressione booleana come nella istruzione if.

Do-While: ciclo postcondizionale. Esegue un gruppo di istruzioni e alla fine valuta una espressione booleana. Ripete finché la condizione è vera.
Espressione booleana come nella istruzione if.

For: è un ciclo usato come contatore. Si usa una variabile in tre parti della stessa istruzione: inizializzazione, condizione, aggiornamento.
La parte "inizializzazione" è un assegnamento come:i = 0.
La parte "condizione" è una espressione booleana come:i <= 10.
La parte "aggiornamento" è un assegnamento per calcolare il valore successivo come:i = i+1.

Espressioni:

Operatori aritmetici

+ addizione definita per i tipi int, double e string

- sottrazione definita per i tipi int e double

* moltiplicazione definita per i tipi int e double

/ divisione definita per i tipi int e double

% modulo (resto della divisione tra interi) definita solo per i tipi int. Esempio 12 % 7 restituisce 5

^ potenza ( es. x^2 ) definita solo per i tipi double

& (And aritmetico bit a bit - solo tra interi) definita solo per i tipi int. Esempio 7 & 12 restituisce 4

| (Or aritmetico bit a bit - solo tra interi) definita solo per i tipi int. Esempio 7 | 12 restituisce 15

>> (shift bit a destra) definita solo per i tipi int. Esempio: 16 >> 2 restituisce 4

<< (shift bit a sinistra) definita solo per i tipi int. Esempio: 16 << 2 restituisce 64

Operatori logici:

== (uguaglianza) definita per i tipi int, double e string restituisce boolean

!= (disuguaglianza) definita per i tipi int, double e string restituisce boolean

> (maggiore di) definita per i tipi int, double e string restituisce boolean

< (minore di) definita per i tipi int, double e string restituisce boolean

>= (maggiore o uguale a) definita per i tipi int, double e string restituisce boolean

<= (minore o uguale a) definita per i tipi int, double e string restituisce boolean

&& (And logico) definita per i tipi boolean restituisce boolean

|| (Or logico) definita per i tipi boolean restituisce boolean

! (negazione logica) definita per i tipi boolean restituisce boolean

Funzioni matematiche
I valori di x di tipo double, valori di ritorno di tipo double.

sqrt(x) radice quadrata di x

sin(x) funzione trigonometrica seno di x (x in radianti)

cos(x) funzione trigonometrica coseno di x (x in radianti)

tan(x) funzione trigonometrica tangente di x (x in radianti)

cotan(x) funzione trigonometrica cotangente di x (x in radianti)

asin(x) funzione trigonometrica inversa arcoseno di x

acos(x) funzione trigonometrica inversa arcocoseno di x

atan(x) funzione trigonometrica inversa arcotangente di x

acotan(x) funzione trigonometrica inversa arcocotangente di x

sinh(x) funzione iperbolica

cosh(x) idem

tanh(x) idem

exp(x) e (numero di eulero) elevato alla ...

ln(x) logaritmo naturale in base e

log10(x) logaritmo in base 10 di x

abs(x) valore assoluto x

ceil(x) arrotondamento intero per eccesso

floor(x) arrotondamento intero per difetto

round(x) arrotondamento all'intero più vicino

random() numero casuale tra 0.0 e 0.99999999999999

Funzioni di manipolazione stringhe e conversione tra tipi diversi

strlen(s) - Lunghezza della stringa s. Ritorna il numero (intero) di caratteri di s. Esempio: lung = strlen("ciao") restituisce 4.

strchar(s,p) - Carattere dalla stringa s. Ritorna una stringa formata dal carattere di s alla posizione p. La prima posizione è 0. Esempio: ch = strchar("ciao",2) - restituisce "a".

substr(s,i,j) - Sottostringa di s. Ritorna una sottostringa dalla posizione i alla j-1. La prima posizione è 0. Esempio: nome = strchar("ciao Mondo!",5,10) - restituisce "Mondo".

strpos(s,t) posizione della sottostringa ritorna il numero (intero) con la posizione di t in s la prima posizione Ë 0 esempio: pos = strpos("ciao Mondo!","Mondo") restituisce 5

strupr(s) converte in maiuscolo ritorna la stringa convertita in maiuscolo esempio: maiu = strupr("Ciao") restituisce "CIAO"

strlwr(s) converte in maiuscolo ritorna la stringa convertita in maiuscolo esempio: maiu = strlwr("Ciao") restituisce "ciao"

trim(s) elimina spazi iniziali e finali ritorna la stringa senza spazi a inizi / fine esempio: saluto = trim(" Ciao ") restituisce "Ciao"

ctoi(s) codice intero del carattere ritorna il numero (intero) codice ASCII del primo carattere di s esempio: cod = ctoi("Ciao") restituisce 67

itoc(i) carattere dal codice intero ritorna il carattere corrispondente al codice ASCII (intero) passato esempio: char = itoc(65) restituisce "A"

stoi(s) converte stringa in intero ritorna il numero (intero) convertito dalla stringa data esempio: val = stoi("12") restituisce il numero intero 12

itos(i) rappresentazione in stringa del numero ritorna la stringa corrispondente al numero (intero) passato esempio: s = itos(65) restituisce "65"

iformats(i,n) formattazione del numero in stringa ritorna la stringa lunga l corrispondente al numero (intero) passato con eventuali spazi iniziali esempio: s = itos(65,5) restituisce " 65"

sbasetoi(s,b) converte stringa in intero espresso in una base numerica (da 2 a 36) ritorna il numero (intero) convertito dalla stringa nella base data esempio: val = stoi("12", 16) restituisce il numero intero 18

ibasetos(i,b) rappresentazione in stringa del numero in una base numerica (da 2 a 36) ritorna la stringa corrispondente al numero (intero) passato nella base specificata esempio: s = itos(10,16) restituisce "A"

stod(s) converte stringa in double ritorna il numero (double) convertito dalla stringa data esempio: val = stod("12.45") restituisce il numero double 12.45

dtos(d) rappresentazione in stringa del numero ritorna la stringa corrispondente al numero (double) passato esempio: s = dtos(65.33) restituisce "65.33"

dformats(d,n,m) formattazione del numero double in stringa ritorna la stringa lunga n con m decimali corrispondente al numero (double) passato con eventuali spazi iniziali esempio: s = itos(65.1234,8,2) restituisce " 65.12"

dtoi(d) conversione da double a intero ritorna il numero intero eliminando i decimali dal numero (double) passato esempio: i = dtoi(65.33) restituisce il numero intero 65

type(v) informazioni sul tipo di dato ritorna una stringa con il nome del dato corrispondente esempi type("ciao") restituisce "(string)" type(123.456) restituisce "(double)" type(123) restituisce "(int)"

Constanti e valori particolari: (non possono essere usati come nomi di variabili)

PI pigreco

EULER numero di eulero

INFINITY più infinito

-INFINITY meno infinito

NaN not a number (0/0)

TRUE equivale a 1.0

FALSE equivale a 0.0

Vai al Sommario

# data[].attributes.attachment_link.description
AlgoBuild è un software didattico per progettare programmi. Presenta un ambiente visuale in cui realizzare i flow-chart rispettando le regole della programmazione strutturata. Il programma prodotto viene visualizzato ed è modificabile anche in forma di pseudo-codice.

# data[].attributes.attachment_link.description
PSEUDOCODICE Cos'è é un ibrido tra il linguaggio parlato e un vero e proprio linguaggio di programmazione I dati sono di due tipi Costanti e variabili Esempi L=4* C Quali di queste entià sono costanti e quali variabili? Quando si usa?

# data[].attributes.body
Ciclo FOR

# data[].attributes.attachment_link.title
For - Programmazione a blocchi con Algobuild

# data[].attributes.attachment_link.description
Massimo tra vari numeri e altro esercizio per mostrare il funzionamento del ciclo for con Algobuild. Per altri esercizi potete andare a vedere la pagina: https://sites.google.com/site/informaticainsieme/anno-2012-2013/prima-scientifico/problemi-e-algoritmi

# data[].attributes.attachment_link.title
While - Programmazione a blocchi con Algobuild

# data[].attributes.attachment_link.description
Conto alla rovescia spiegato con il ciclo while e realizzato con Algobuild Per altri esercizi e per tutti i video cliccate qui: https://sites.google.com/site/informaticainsieme/anno-2012-2013/prima-scientifico/problemi-e-algoritmi

# data[].attributes.attachment_link.title
Do while - Programmazione a blocchi con Algobuild

# data[].attributes.attachment_link.description
Utilizzo del ciclo do while per nella programmazione a blocchi. Esempi risolti di come utilizzare il ciclo. Per esercizi da svolgere visitate la pagina: https://sites.google.com/site/informaticainsieme/anno-2012-2013/prima-scientifico/problemi-e-algoritmi

# data[].attributes.attachment_link.description
Dropbox is a free service that lets you bring your photos, docs, and videos anywhere and share them easily. Never email yourself a file again!

# data[].attributes.attachment_link.description
Dropbox is a free service that lets you bring your photos, docs, and videos anywhere and share them easily. Never email yourself a file again!

# data[].attributes.attachment_link.title
Corso C/C++ ITA - 1. Struttura del corso. Strumenti.

# data[].attributes.attachment_link.description
LINK alla playlist del NUOVO corso C++11 (da completare): https://www.youtube.com/playlist?list=PL0qAPtx8YtJfZpJD7uFxAXglkiHSEhktG Un corso completo di programmazione C/C++ (la parte già pronta supera le 16 ore ... ed altre in arrivo). Vengono considerati sia i comandi più tipici del C ed in parallelo le novità del C++ (ad esempio: printf/scanf del C confrontate con cout/cin del C++).

# data[].attributes.attachment_link.description
Dropbox is a free service that lets you bring your photos, docs, and videos anywhere and share them easily. Never email yourself a file again!

# data[].attributes.attachment_link.readable_text
Dotato di tutte le maggiori potenzialità per costruire applicazioni veloci e funzionali. La guida di HTML.it vi permetterà di affrontare con chiarezza le sue maggiori funzionalità

Introduzione

Software

Il primo programma in C

Elementi fondamentali del C

Controlli

Strutture avanzate

I puntatori

La gestione della memoria

Le liste

Input output su file

Pre-processore e Definizioni

Progetti di grandi dimensioni

# data[].attributes.attachment_link.description
Dotato di tutte le maggiori potenzialità per costruire applicazioni veloci e funzionali. La guida di HTML.it vi permetterà di affrontare con chiarezza le sue maggiori funzionalità

# data[].attributes.attachment_link.description
OnlineGDB is online IDE with c compiler. Quick and easy way to compile c program online. It supports gcc compiler for c.

# data[].attributes.attachment_link.description
http://tonixweb.blogspot.com Ecco un piccolo tutoria su com eutilizzare il debugger in Dev C++. Per qualsiasi informazione lasciate un commento visitate il mio blog. A presto!!

# data[].attributes.attachment_link.description
Dropbox is a free service that lets you bring your photos, docs, and videos anywhere and share them easily. Never email yourself a file again!

# data[].attributes.attachment_link.description
Dropbox is a free service that lets you bring your photos, docs, and videos anywhere and share them easily. Never email yourself a file again!

# data[].attributes.attachment_link.title
Appunti sui cicli Incrementi e decrementi

# data[].attributes.attachment_link.description
Dropbox is a free service that lets you bring your photos, docs, and videos anywhere and share them easily. Never email yourself a file again!

# data[].attributes.attachment_link.readable_text
Durante l'inserimento da tastiera, avrete notato sicuramente, che l'elemento precedentemente inserito viene sempre soppiantato da quello nuovo. Ora introduciamo un nuovo elemento che ci aiuta a conservare e a manipolare meglio le informazioni acquisite.

Cosa sono i Vettori in C

Immaginate un treno composto da un numero definito di vagoni, ogni vagone è identificato da un numero e su ogni vagone è possibile inserire qualcosa. Bene! In "C" siamo in grado di poter creare dei treni che da ora in avanti chiameremo array/vettori.

Un vettore, se vogliamo formalizzare il concetto, è una collezione finita di elementi delle stesso tipo ognuno dei quali è definito da un indice.

La sua struttura è la seguente : <tipo> <nome_vettore> [<dimensione>]; Ecco un esempio di vettore di interi di dimensione 5.

La dichiarazione è simile a quella di una variabile qualsiasi. In più, a quanto già appreso, si aggiungono le parentesi quadre dove al loro interno va obbligatoriamente inserito il numero di elementi presenti nel vettore.

Inizializzare un vettore

Per inizializzare/riempire il nostro vettore possiamo seguire due strade :

La prima, è quella di definire la grandezza del vettore e poi successivamente riempirlo.

La seconda è quella di non definire la grandezza ma di inizilizzarlo alla dichiarazione. In questo modo comunque sarà definita una grandezza.
Dopo l'uguale si aprono le parentesi graffe e si dividono gli elementi con una virgola. Attenzione al punto e virgola, è comunque una dichiarazione di variabile.

Il primo caso si può riempire comunque allo stesso modo del secondo. L'unica cosa che non si può fare è non definire una grandezza. [box type="alert"]A.A.A. Il numero che definisce la grandezza del vettore corrisponde esattamente al numero scritto. Mi spiego meglio :
Se inserite [2] il vettore è composto da 2 elementi, quando volete inizializzare ogni posizione con un valore (come ne caso 1) l'indice parte da 0 e non da 1.

Quindi se "vettore" è composto da due elementi [2], l'inizializzazione sarà v[0] = "qualcosa", v[1] = "qualcosa" e non v[1] e v[2]

[/box]

Piccola precisazione! Vettore[numero] indica il contenuto del vettore alla posizione "numero" :

Riempimento sequenziale

Adesso introduciamo un nuovo utilizzo dei cicli, infatti grazie ad essi potremo riempire i nostri vettori con pochissime righe di codice. Il principio è quello di mettere, all'interno delle parentesi quadre, l'indice utilizzato dal ciclo inizializzato alla posizione alla posizione 0 del nostro vettore.

Ad ogni loop il nostro indice verrà incrementato facendoci passare alla posizione successiva del vettore. Ricordo che il numero racchiuso tra le parentesi quadre non è un tipo di dato ma un numero costante che indica solo la grandezza o il numero di vagoni del vettore.

Infatti utilizzare una variabile intera inizializzata è possibile :

Mentre utilizzare una variabile solo dichiarata risulterà impossibile :

Avete mai visto un treno che mentre corre si allunga ? Io no! (Tecnicamente potrebbe fermarsi e allungarsi in una stazione, diciamo che i treni/vettori non sono così tecnologici da permetterlo).

L'utilizzo del ciclo for per stampa e riempimento

C'è poco da spiegare, nel primo ciclo la variabili incrementale del for viene utilizzata sia per prendere il contenuto di ogni vagone dell'array e sia per riempirlo con lo stesso valore. Infatti "i" ha lo stesso valore sia a sinistra dell'uguale che a destra, quello che cambia è l'utilizzo.
Nel secondo ciclo viene stampato il contenuto del vettore, infatti vettore[i] definisce (lo ripeto per l'ennesima volta) il contenuto alla posizione i.

Esempio 1. Nella lezione precedente abbiamo calcolato il massimo di una sequenza di numeri inseriti da tastiera. Proviamo a fare lo stesso esercizio usando la definizione di vettore. Il codice è provvisto di commento.

definire una costante

Sopra, quando abbiamo usato una variabile di tipo intero per definire la grandezza del vettore, abbiamo impropriamente utilizzato la definizione di costante. Vi ho detto che la dimensione di un array deve essere costante però se utilizziamo una variabile non rispettiamo del tutto questo vincolo.

Una delle tante parole chiave, " define ", permette di definire delle costanti.

La sintassi del define è la seguente : #define <nome costante> <valore costante>

Tutte le costanti vanno definite fuori dal main e in genere si mettono sotto tutte le inclusioni di libreria.

la differenza con l'usare una variabile è che il #define definisce delle costanti non modificabili. Da ora in avanti utilizzate le costanti per definire la grandezza di un vettore oppure scrivete direttamente il numero.

Array multi dimensionali

Con gli array siamo in grado di definire matrici o array a più dimensioni. La definizione è la seguente : <tipo> <nome> [dim_colonne] [dim_righe];

Un array multi dimensione è un array di array, un vettore che come contenuto contiene un altro vettore per ogni indice. Per riempirlo però dobbiamo fare attenzione alla sintassi, infatti se lo inizializziamo :

si aprono prima una coppia di parentesi graffe, poi al suo interno tante coppie quante sono le colonne e all'interno di ogni blocco di graffe si inseriscono i valori della colonna uno per riga.

la sua rappresentazione grafica è la seguente :

Esercizi svolti!

Esercizio 1. Riempire un vettore "A" di tipo float e grandezza 5 e copiare il suo contenuto in un vettore "B", gli elementi vanno copiati dalla coda verso la testa del vettore, quindi da 5 fino a 1. L'inserimento nel vettore A viene effettuato tramite tastiera.

Esercizio 2. Inserire in un vettore di grandezza 10 solo numeri pari, il vettore sarà pieno quando avrà raggiungo 10 numeri pari. Al riempimento stampare tutti i dati del vettore e solo il valore più grande.

Esercizio 3. Riempire un array multidimensionale di interi di dimensione : 3 colonne e 3 righe. La tabella che si viene a formare va riempita colonna per colonna. L'inserimento è da tastiera. Stampare tutti i valori per colonna.

Considerazioni

Ancora non siamo in grado di apprezzare a pieno questo nuovo strumento. Nelle lezioni successive vi mostrerò i reali pregi e difetti dei vettori.

# data[].attributes.attachment_link.description
Durante l'inserimento da tastiera, avrete notato sicuramente, che l'elemento precedentemente inserito viene sempre soppiantato da quello nuovo. Ora introduciamo un nuovo elemento che ci aiuta a conservare e a manipolare meglio le informazioni acquisite. Immaginate un treno composto da un numero definito di vagoni, ogni vagone è identificato da un numero e su ogni vagone è possibile inserire qualcosa.

# data[].attributes.body
Esercizi vettori

# data[].attributes.headline
Appunti sugli array a due dimensioni (leggere fino a pag 10)

# data[].attributes.subject
Appunti sugli array a due dimensioni (leggere fino a pag 10)

# data[].attributes.attachment_link.description
Dropbox is a free service that lets you bring your photos, docs, and videos anywhere and share them easily. Never email yourself a file again!

# data[].attributes.body
(utilizzate username e pwd itirighi per accedere)

# data[].attributes.attachment_link.description
Get access to files anywhere through secure cloud storage and file backup for your photos, videos, files and more with Google Drive.

# data[].attributes.attachment_link.title
Esercizi stringhe e funzioni parte seconda.pdf