Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
38 changes: 38 additions & 0 deletions it/task-1.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
<!-- #Somma "A+B" -->

<div class="ctentered hint">
<img alt="Monaci CodeAbbey alle prese con bug" src="https://codeabbey.github.io/data/sum_of_two.gif"/><br/>
<span>Opera artistica rappresentante programmatori alle prese con Il Bug.</span><br/>
<span>Osservate come strumenti adeguati possano essere d'aiuto!</span>
</div>

Siccome iniziare a volte può essere difficile, proviamo dal problema più semplice possibile.
L'obbiettivo è quello di fare pratica nell l'invio delle risposte, ecc.

Dobbiamo sommare due numeri e restituirne il risultato. Anche se puoi farlo a mano, prova a scrivere
un semplice programma in qualsiasi linguaggio tu conosca, o ti piaccia, o tu voglia imparare.

_[**Per favore guarda QUESTO VIDEO dell'autore di codeabbey**](https://www.youtube.com/watch?v=c6WWZe12ves)
per vedere una dimostrazione di come scrivere e inviare la soluzione (come descritto brevemente più avanti)._

###Come inviare la soluzione

Se sei loggato, vedrai i seguenti campi in basso:

- **Test data** Contiene i "dati di input" o i "casi da testare" - in questo caso i due numeri
che vogliamo sommare.
- **Your answer** - è dove inserire i tuoi risultati dopo aver processato i dati di test.
- **Your solution** - è dove salverai il codice del tuo programma. Non sarà verificato
(almeno automaticamente), ma ti aiuterà ad utilizzare il tuo codice nei prossimi compiti.
Puoi rivedere il compito in qualsiasi momento per vedere la soluzione che hai inviato.

Esempio:

dati di input:
3 5

risposta:
8

Abbiamo degli **[esempi](../wiki/running)** del programma in diversi liguaggi popolari,
ma ti consigliamo di non consultarli prima di aver provato a risolvere il compito. :)
33 changes: 33 additions & 0 deletions it/task-2.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
<!-- #Somma ciclica -->
<div class="centered">
<img alt="dimostraione della somma di un vettore" src="https://codeabbey.github.io/data/sum_in_loop.gif"/>
</div>

Il nostro obbiettivo adesso è di imparare i **cicli** - cioè le azioni ripetute.
Scopriamo come sommare diversi numeri (più di due). Per farlo sarà utile utilizzare un ciclo.
Come mostrato in alto nella figura - puoi creare una variabile `Sum` e sommargli ciascun valore della lista.
Il [ciclo "for"](http://it.wikipedia.org/wiki/Ciclo_for) può adattarsi bene allo scopo siccome conosciamo
in anticipo il numero dei numeri da sommare.

Se hai problemi puoi provare prima [Somme cicliche](./sums-in-loop--it) - potresti trovarlo più semplice.

I **dati di input** hanno il seguente formato:

- la prima riga contiene `N` - numero totale dei valori da sommare;
- la seconda linea contiene gli `N` valori.

La **risposta** deve contenere un singolo valore - La somma degli `N` valori.

Esempio:

dati di input:
8
10 20 30 40 5 6 7 8

risposta:
126

**Nota** siccome ci sono diverse dozzine di numeri, non dovresti copiarli manualmente nel tuo programma.
Dovresti invece farli leggere al tuo programma usando un campo di input (dove potrai incollarli
direttamente tutti in una volta). Nota che se fai girare il tuo codice sul nostro server, i dati saranno
automaticamente incollati come input standard per semplicità.
27 changes: 27 additions & 0 deletions it/task-3.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
<!-- #Somme cicliche -->
<div class="text-center">
<img src="https://codeabbey.github.io/data/sums_in_loop.gif" alt="sommando due vettori"/>
</div>
<br/>

Se hai già imparato come scrivere un programma con un semplice ciclo for dal compito [Somma ciclica][prevtask],
questo nuovo esercizio sarà solo una semplice modifica.

[prevtask]: ./sum-in-loop--it

Ora abbiamo diverse coppie di valori e vogliamo calcolare la somma per ciascuna coppia.

I **dati di input** conterranno nella prima riga il numero totale di coppie da processare.
Le righe seguenti conterranno le coppie di valori - una coppia per ciascuna riga.
La **risposta** dovrà contenere i risultati separati da spazi.

Esempio:

dati:
3
100 8
15 245
1945 54

risposta:
108 260 1999
35 changes: 35 additions & 0 deletions it/task-4.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
<!-- #Minimo di Due -->
<div class="text-center">
<img src="https://codeabbey.github.io/data/min_of_two.gif" alt="Animazione sulla scelta del minimon"/>
</div>

La maggior parte dei programmi dovrebbe essere in grado di compiere più azioni e prendere più decisioni.
Ora andremo a fare pratica con la programmazione condizionale.
Questa logica normalmente è realizzata da un'istruzione `SE ... OPPURE` che potrebbe apparire così:

SE qualche_condizione ALLORA
fai_qualcosa
OPPURE
fai_qualcos_altro
FINE_SE

A seconda del lingaggio di programmazione che hai scelto la sintassi potrebbe essere differente e la parte `oppure`
è quasi sempre opzionale.
Puoi leggere di più sull'argomento nell'articolo wikipedia [Selezione][cond].

[cond]: https://it.wikipedia.org/wiki/Selezione_(informatica)

Dei due numeri, per favore, seleziona quello con il valore minimo. Ecco diverse coppie di numeri per un test approfondito.

I **dati di input** conterranno nella prima riga il numero totale di coppie da processare.
Le righe seguenti conterranno le coppie di valori da confrontare.
Per la **risposta** si dovrà inserire il valore dei minimi valutati separati da spazi, per esempio:

dati:
3
5 3
2 8
100 15

risposta:
3 2 15
22 changes: 22 additions & 0 deletions it/task-5.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
<!-- #Minimo di Tre -->
Per poter fare pratica con le istruzioni condizionali andremo a scrivere un programma che utilizza
condizioni complesse. Un'istruzione `se ... oppure` potrebbe (e dovrebbe) essere annidata al'interno
di un'altra istruzione per poter risolvere questo problema.

Ti saranno date diverse triplette di numeri. Il tuo compito è quello di selezionare il valore minimo
tra ciascuna tripletta.

I **dati di input** conterranno nella prima riga il numero totale delle triplette da processare.
Ciascuna delle righe seguenti conterrà una delle triplette di valori da confrontare.
La **risposta** dovrà contenere i valori minimi selezionato da ciascuna tripletta, separati da spazi.

Esempio:

dati di input:
3
7 3 5
15 20 40
300 550 137

risposta:
3 15 137
32 changes: 32 additions & 0 deletions it/task-6.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
<!-- #Arrotondamento -->

Quando programmando abbiamo a che fare con numeri con una parte decimale in alcuni casi è utile **arrotondare** questi
numeri all'intero più vicino. Questo ci servirà per altri programmi in futuro (per rendere le risposte più semplici,
per esempio), quindi usiamo questo esercizio per fare esperienza con questoo trucchetto.

Ci sono diverse coppie di numeri. Per ciascuna coppia devi dividere il primo per il secondo e restituire
il risultato, arrotondato **al più vicino** intero.

Quando il risultato della divisione restituisce esattamente `0.5` come parte frazionaria, devi arrotondare
al'intero superiore (per esempio sommandogli `0.5`). Da notare che per valori negativi "arrotondare
all'intero superiore" si intende "più vicino allo zero". Fai riferimento alla pagina Wikipedia [Arrotondamento](https://it.wikipedia.org/wiki/Arrotondamento)
per avere una spiegazione più dettagliata.

Quando l'arrotondamento sarà menzionato nei problemi successivi, si intenderà lo stesso algoritmo qua
descritto (a meno che non sia esplicitamente specificato diversamente).

I **dati di input** conterranno nella prima riga il numero totale di coppie da processare.
Le righe seguenti conterranno le coppie di valori da testare.
La **risposta** dovrà contenere i risultati delle divisioni arrotondati per ciascuna coppia,
separati da spazi.

Esempio:

dati di input:
3
12 8
11 -3
400 5

risposta:
2 -4 80
32 changes: 32 additions & 0 deletions it/task-7.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
<!-- #Da Fahrenheit a Celsius -->
Questo esercizio di programmazione è all'incirca lo stesso delle somme in cicli, ma richiede un po' più di calcoli.

<div class="text-center">
<img alt="fahrenheit e celsius" src="https://codeabbey.github.io/data/fahrenheit_celsius.png"/>
</div>

*Nota: il problema di [Arrotondamento](./rounding--it) spiega l'algoritmo di arrotondamento utilizzato anche
in questo esercizio.*

Ci sono due sistemi diffusi per misurare la temperatura: Celsius e Fahrenheit. Il primo è molto popolare in Europa
e il secondo è utilizzato prevalentemente negli Stati Uniti.

Per la scala Celsius l'acqua ghiaccia a 0 gradi e bolle a 100 gradi. Per Fahrenheit l'acqua ghiaccia a 32 gradi e
bolle a 212 gradi. Puoi imparare di più dalla pagina [wikipedia su Fahrenheit][wiki]. Usa questi due punti per
convertire altre temperature.

[wiki]: https://it.wikipedia.org/wiki/Grado_Fahrenheit

Lo scopo è scriver eun programma che converta i gradi da Fahrenheit a Celsius

I **dati di input** contengono `N+1` valori, il primo è il numero `N` casi d calcolare (**Nota** che non dovresti convertirlo).
La **risposta** dovrà contenere esattamente `N` risultati, arrotondati all'intero più vicino e separati da spazi.

Esempio:

dati:
5 495 353 168 -39 22
risposta:
257 178 76 -39 -6

*Nota bene che il primo `5` non è una temperatura, ma il numero di calori da convertire!*
41 changes: 41 additions & 0 deletions it/task-8.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
<!-- #Progressione aritmetica -->
Quando parliamo di **progressione aritmetica** (o sequenza aritmentica) intendiamo una serie
di numeri con una proprietà speciale - ogni valore è seguito da un altro, incrementato da una
quantità prestabilita (valore incrementale).

Cioè quando la differenza tra gli `(K+1)`-esimi e `K` -esimi valori è costante. Di seguito alcuni
esempi di sequenze

1 2 3 4 5 6 7 ...
4 6 8 10 12 14 16...
10 13 16 19 22 25 28...

una progressione aritmetica è completamente definita dal primo membro (`A`) e dal valore
incrementale - quantità dell'incremento - (`B`). La sequenza può quindi essere espressa come

A + (A + B) + (A + 2B) + (A + 3B) + ...

Dovrai quindi calcolare la somma fino ad un certo termine della prograssione aritmetica.
La [pagina Wikipedia][wiki] sulle progressioni aritmetiche può essere di aiuto per chi le incontra
per la prima volta.

[wiki]: https://it.wikipedia.org/wiki/Progressione_aritmetica

**Dati di input:** la prima riga contiene il numero di casi da testare.
Le rimanenti righe contengono i casi da testare in forma di triplette `A B N` dove `A` è il primo valore della
sequenza, `B` è il valore incrementale e `N` è il numero di termini della serie da calcolare.
**Risposta:** dovrai inserire i risultati (la somma dei primi `N` termini) di ciascuna sequenza, separati da spazi.

Esempio:

dati:
2
5 2 3
3 0 10

risposta:
21 30

_Spiegazione dell'Esempio. Nel primo caso abbiamo una sequenza che inizia con `5` e incrementa di `2` ogni volta.
Vogliamo la somma dei primi `3` elementi `5 + 7 + 9 = 21`. Nel secondo caso è più semplice. Parte da `3` ma
l'incremento è `0`, quindi sarà `3 + 3 + ... + 3 = 30` (il totale dei primi `10` elementi)._
28 changes: 28 additions & 0 deletions it/task-9.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
<!-- #Triangoli -->
Un triangolo è un oggetto costituito da 3 segmenti di retta (lati del triangolo), collegati alle
estremità.
La pagina [Wikipedia sui triangoli][wiki] fornisce una spiegazione più dettagliata.
Se abbiamo 3 segmenti di retta con lunghezze `A B C` - possiamo costruirci un triangolo (per esempio
con le triplette `3 4 5` o `3 4 7` - anche se con area pari a zero) oppure scoprire che è impossibile
costruirne uno (per esempio `1 2 4`).

[wiki]: http://it.wikipedia.org/wiki/Triangolo

Ti vengono fornite diverse triplette di valori che rappresentano le lunghezze dei lati dei triangoli.
Devi individuare tra quali di queste triplette è possibile costruire un triangolo e per quali non
è possibile farlo.

**Dati di input:** La prima riga contiene il numero di triplette.
Le altre righe contengono le triplette (una per ciascuna riga).
**Risposta:** Devi restituire `1` o `0` per ciascuna tripletta(`1` se si pò costruire il
triangolo o altrimenti `0`).

Esempio:

dati:
2
3 4 5
1 2 4

risposta:
1 0