mercoledì 6 novembre 2013

Esercizio 05/11/2013 Funzioni con Parametri

Scrivere un programma che inseriti due valori dall'utente ne esegua somma, moltiplicazione, sottrazione e modulo tramite funzioni con parametri.
_________________________________________________________________________________

#include<stdio.h> //richiamo la libreria

int somma(int a, int b); //prototipo della funzione somma
int molt(int a, int b);  //prototipo della funzione moltiplicazione
int sott(int a, int b);  //prototipo della funzione sottrazione
int modulo(int a, int b);//prototipo della funzione modulo
int x; //variabile contenitore del primo valore inserito dall'utente
int y; //variabile contenitore del secondo valore inserito dall'utente
int ris;  //variabile contenitore del valore restituito dalle funzioni

using namespace std;

int main()
{
 
printf("Inserisci il primo valore: ");  //chiediamo all'utente di inserire un valore da tastiera
scanf("%d",& x);  //momorizzo il valore inserito dall'utente nella variabile x
printf("Inserisci il secondo valore: ");//chiediamo all'utente di inserire un valore da tastiera
scanf("%d",& y);  //momorizzo il valore inserito dall'utente nella variabile y
ris=somma(x,y);   //chiamo la funzione somma e salvo il valore restituito nella variabile ris
printf("\n\nIl risultato della somma tra i due valori è: %d",ris);  //visualizzo il contenuto della variabile ris
ris=molt (x,y);   //chiamo la funzione molt e salvo il valore restituito nella variabile ris
printf("\n\nIl risultato della moltiplicazione tra i due valori è: %d",ris);  //visualizzo variabile ris
ris=sott (x,y);   //chiamo la funzione sott e salvo il valore restituito nella variabile ris
printf("\n\nIl risultato della sottrazione tra i due valori è: %d",ris);  //visualizzo variabile ris
ris=modulo (x,y); //chiamo la funzione modulo e salvo il valore restituito nella variabile ris
printf("\n\nIl resto della divisione tra tra i due valori è: %d",ris);  //visualizzo variabile ris

}

int somma(int a, int b) //definizione della funzione somma dove i parametri a e b ricevono i valore di x e y
{
int tot;
tot=a+b;
return tot;         //la funzione somma restituisce in chiamata il valore contenuto nella variabile tot
}

int molt(int a, int b) //definizione della funzione molt dove i parametri a e b ricevono i valore di x e y
{
int tot;
tot=a*b;
return tot;        //la funzione molt restituisce in chiamata il valore contenuto nella variabile tot
}

int sott(int a, int b) //definizione della funzione sott dove i parametri a e b ricevono i valore di x e y
{
int tot;
tot=a-b;
return tot;        //la funzione sott restituisce in chiamata il valore contenuto nella variabile tot
}

int modulo(int a, int b) //definizione della funzione modulo dove i parametri a e b ricevono i valore di x e y
{
int tot;
tot=a%b;
return tot;       //la funzione modulo restituisce in chiamata il valore contenuto nella variabile tot
}

lunedì 28 ottobre 2013

arduino

#define ledRosso   9
#define ledBlu    10
#define ledVerde  11
#define ledGiallo 12
#define button1 7
#define button2 6
int cont=0;

void setup()
  {
      pinMode (button1 ,INPUT);
      pinMode (button2 ,INPUT);
      pinMode (ledRosso,OUTPUT);
      pinMode (ledGiallo,OUTPUT);
      pinMode (ledVerde,OUTPUT);
      pinMode (ledBlu,OUTPUT);
  }

void loop()
{

  if (digitalRead(button1)==HIGH)
     {
     delay(200);
     cont==0;
     }
   
  if (digitalRead(button2)==HIGH)
     {
     delay(200);
     cont==1;
     }
 
  switch(cont)
    {
      case 0:
         digitalWrite (ledRosso,HIGH);
         digitalWrite (ledBlu,HIGH);
         digitalWrite (ledVerde,HIGH);
         digitalWrite (ledGiallo,HIGH);
         delay(2000);
         digitalWrite (ledRosso,LOW);
         digitalWrite (ledBlu,LOW);
         digitalWrite (ledVerde,LOW);
         digitalWrite (ledGiallo,LOW);
         delay(2000);
     break;
     case 1:
         digitalWrite (ledRosso,HIGH);
         digitalWrite (ledBlu,HIGH);
         digitalWrite (ledVerde,HIGH);
         digitalWrite (ledGiallo,HIGH);
         delay(1000);
         digitalWrite (ledRosso,LOW);
         digitalWrite (ledBlu,LOW);
         digitalWrite (ledVerde,LOW);
         digitalWrite (ledGiallo,LOW);
         delay(1000);
     break;
   }
   
}

______________________________________________________________________________
#define ledRosso   9
#define ledBlu    10
#define ledVerde  11
#define ledGiallo 12
#define button 7

void setup()
  {
      pinMode (button1 ,INPUT);
      pinMode (button2 ,INPUT);
      pinMode (ledRosso,OUTPUT);
      pinMode (ledGiallo,OUTPUT);
      pinMode (ledVerde,OUTPUT);
      pinMode (ledBlu,OUTPUT);
  }
 
  void loop()
  {

    if (digitalRead(button1)==HIGH)
      {
      digitalWrite (ledRosso,HIGH);
      digitalWrite (ledBlu,HIGH);
      digitalWrite (ledVerde,HIGH);
      digitalWrite (ledGiallo,HIGH);
      delay(2000);
      digitalWrite (ledRosso,LOW);
      digitalWrite (ledBlu,LOW);
      digitalWrite (ledVerde,LOW);
      digitalWrite (ledGiallo,LOW);
      delay(2000);
      }
    if (digitalRead(button2)==HIGH)
      {
      digitalWrite (ledRosso,HIGH);
      digitalWrite (ledBlu,HIGH);
      digitalWrite (ledVerde,HIGH);
      digitalWrite (ledGiallo,HIGH);
      delay(1000);
      digitalWrite (ledRosso,LOW);
      digitalWrite (ledBlu,LOW);
      digitalWrite (ledVerde,LOW);
      digitalWrite (ledGiallo,LOW);
      delay(1000);
      }
 
}
 

_______________________________________________________________________________




#define ledRosso   9
#define ledBlu    10
#define ledVerde  11
#define ledGiallo 12
#define button 7

void setup()
  {
      int i=0;
      pinMode (button ,INPUT);
      pinMode (ledRosso,OUTPUT);
      pinMode (ledGiallo,OUTPUT);
      pinMode (ledVerde,OUTPUT);
      pinMode (ledBlu,OUTPUT);
  }
 
  void loop()
  {

    if (digitalRead(button)==HIGH)
    {
    delay(200);
    i++;
    }
    switch(i)
    {  
      case 0:
         digitalWrite (ledRosso,LOW);
         digitalWrite (ledBlu,LOW);
         digitalWrite (ledVerde,LOW);
         digitalWrite (ledGiallo,LOW);
         break;
      case 1:
         digitalWrite (ledRosso,HIGH);
         break;
      case 2:
         digitalWrite (ledRosso,LOW);
         digitalWrite (ledBlu,HIGH);
         break;
      case 3:
         digitalWrite (ledRosso,HIGH);
         digitalWrite (ledBlu,HIGH);
         break;
      case 4:
         digitalWrite (ledRosso,LOW);
         digitalWrite (ledBlu,LOW);
         digitalWrite (ledVerde,HIGH);
         break;
      case 5:
         digitalWrite (ledRosso,HIGH);
         break;
      case 6:
         digitalWrite (ledRosso,LOW);
         digitalWrite (ledBlu,HIGH);
         break;
      case 7:
         digitalWrite (ledRosso,HIGH);
         break;
      case 8:
         digitalWrite (ledRosso,LOW);
         digitalWrite (ledBlu,LOW);
         digitalWrite (ledVerde,LOW);
         digitalWrite (ledGiallo,HIGH);
         break;
      case 9:
         digitalWrite (ledRosso,HIGH);
         break;
      case 10:
         digitalWrite (ledRosso,LOW);
         digitalWrite (ledBlu,HIGH);
         break;
     case 11:
         digitalWrite (ledRosso,HIGH);
         break;
     case 12:
         digitalWrite (ledRosso,LOW);
         digitalWrite (ledBlu,LOW);        
         digitalWrite (ledVerde,HIGH);
         break;
    case 13:
         digitalWrite (ledRosso,HIGH);
         break;
    case 14:
         digitalWrite (ledRosso,LOW);
         digitalWrite (ledBlu,HIGH);
         break;
    case 15:
         digitalWrite (ledRosso,HIGH);
         break;  
    case 16:
         i=0;
         break;  
   }
 
}

venerdì 25 ottobre 2013

Programma Calcolatrice

//DIRETTIVE PER IL COPROCESSORE

//INCLUSIONE DELLE LIBRERIE

#include <stdio.h> //Libreria funzioni scanf e printf

using namespace std;

//CORPO DEL PROGRAMMA

int main()
{
//Dichiarazione delle Variabili. FORMA: tipo nome_variabile;

float operando1;
float operando2;
float risultato;

printf("Inserire valore Operando1 : ");
scanf("%f",&operando1);
printf("Inserire valore Operando2 :  ");
scanf("%f",&operando2);
risultato=operando1+operando2;
printf("\n\nLa somma di %.2f + %.2f e': %.2f",operando1,operando2,risultato);
risultato=operando1-operando2;
printf("\n\nLa sottrazione di %.2f - %.2f e': %.2f",operando1,operando2,risultato);
risultato=operando1*operando2;
printf("\n\nLa moltiplicazione di %.2f * %.2f e': %.2f",operando1,operando2,risultato);
risultato=operando1/operando2;
printf("\n\nLa divisione di %.2f / %.2f e': %.2f",operando1,operando2,risultato);

}

/*
Classe:
3A Informatica Serale
Data:
22/10/2013
*/



lunedì 21 ottobre 2013

IDE integrated development environment

Un ambiente di sviluppo integrato (in lingua inglese integrated development environment ovvero IDE è un software che, in fase di programmazione, aiuta i programmatori nello sviluppo del codice sorgente di un programma.
Ne esistono diversi (DEV C++, Eclipse, Block Code), noi utilizzeremo il DEV C++.

Ma cosa c'è dietro un IDE?
Un ambiente di sviluppo integrato nasconde dietro alla sua intefaccia grafica diversi programmi:
- GUI.............................. interfaccia grafica
- EDITOR....................... per scrivere testo in formato ASCII, file sorgente
- COMPILATORE......... esegue le traduzione del linguaggio, produce file intermedi .obj (moduli oggetto)
- LINKER...................... rilega i file .obj prodotti dal compilatore e forma il file .exe su disco fisso
- LOADER.................... prende il file dal disco e lo carica in memoria centrale RAM
- DEBUGER.................. cerca errori presenti all'interno del codice, non produce file




Utilizzo di IDE DEV C++:

Prima di tutto una volta lanciato il programma dobbiamo creare un nuovo file
FILE->NUOVO->SORGENTE
a questo punto nell'Editor possiamo iniziare a scrivere il nostro sorgente:
#include <stdio.h>
// inclusione delle librerie, tutte le librerie finiscono con .h
using namespace std;
/* stringa obbligatoria da includere in C++
inizio programma*/
int main ()
{
printf("Ciao a tutti");
}
salviamo il file in formato .cpp
Abbiamo scritto il nostro primo programma in DEV C++

Ora creiamo qualcosa di più complesso e interattivo:

#include <stdio.h>

using namespace std;

int main ()
{
int a;
int b;
int tot;

      printf("Inserisci il valore si A: ");
      scanf("%d", &a);
// %d avvisa il compilatore che riceverà un valore intero e lo salverà nella variabile a
      printf("\nInserisci il valore si B: ");
      scanf("%d", &b);
    tot=a+b;
      printf("\nA + B = %d", tot);
    tot=a-b;
      printf("\nA - B = %d", tot);
    tot=a*b;
      printf("\nA x B = %d", tot);
}





giovedì 17 ottobre 2013

La tabella ASCII

Il tabella ASCII è una tabella che raccoglie simboli (alfabetici maiuscoli e minuscoli, numerici, di punteggiatura, speciali).
Il codice ASCII fu inventato molti anni fa per le comunicazioni fra telescriventi (infatti ci sono dei codici di comandi specifici che sono quasi incomprensibili, ma al tempo avevano la loro funzione), poi man mano e' diventato uno standard mondiale.
Parlando di un caso più pratico, quando qualcuno richiede un testo in formato ASCII, per esempio il vostro curriculum, oppure un articolo, ecc, significa che richiede un testo nel formato standard in modo che possa facilmente riutilizzarlo nei propri programmi.
Infatti il formato ASCII e' universalmente riconosciuto da tutti i computer, cosa che non e' vera nel caso di testi "formattati", cioe' con sottolineature, stili, grassetti, ecc.
Un file in formato ASCII puo' essere creato utilizzando il Blocco Note di Windows.



I simboli in tabella non sono disposti in modo casuale infatti a ogni simbolo viene associato un numero esadecimale, nella prima versione della tabella ASCII i simboli disponibili erano 128 (7 bit - da 0 a 127), poi è stata ampliata in 256 simboli e definita tabella ASCII estesa (8 bit - da 0 a 255). La tabella ASCII è stata creata per unire simboli a regole: ad esempio il simbolo 0 si trova in posizione 30(h).

Ad esempio la parola Ciao in codice asci risulterà essere 43-69-61-6F

Esercizio:
proviamo a salvare un testo in blocco note (formato ASCII) e lo stesso testo in Word e verifichiamo lo spazio occupato dai file:
Ciao a tutti in blocco note -> 12 byte (12 caratteri compresi gli spazi, 1 carattere 1 byte)
Ciao a tutti in Word          -> 19 968 byte
proviamo a salvare un file senza testo in Blocco Note e facciamo lo stesso in Word, verifichiamo lo spazio occupato dai file:
Blocco Note vuoto -> 0 byte (0 caratteri, 1 carattere 1 byte)
Word vuoto            -> 19 968 byte

Ricorda:
Il simbolo 5 in tabella ASCII corrisponde alla posizione 35(h), il simboli 1 invece alla posizione 31(h), se volessimo sommare questi due simboli avremo la seguente situazione: 35 + 31 = 36 dove 36(h) è la posizione del simbolo 6 in tabella ASCII.

domenica 13 ottobre 2013

Traduttore, Interprete e Compilatore

Genericamente, i traduttori sono programmi responsabili della traduzione fra due diversi linguaggi di programmazione. Essi generano normalmente programmi scritti in linguaggio macchina a partire da un linguaggio ad alto livello e si distinguono in: Interpreti e Compilatori.

È possibile programmare il computer usando vari linguaggi di programmazione 
          •  Ogni linguaggio ha i suoi pro e contro 
ma.....
          •  Alla fine, l’unico linguaggio che il computer capisce è il linguaggio macchina 

          •  Per usare altri linguaggi, occorre usare qualcosa in grado di “far capire” al computer gli altri linguaggi

Quando si realizza un software, il programmatore detta le istruzioni al computer tramite la scrittura di un codice sorgente in un determinato linguaggio di programmazione. Il codice sorgente però non è direttamente eseguibile dalla CPU (Central Processing Unit), è necessario “tradurlo” in linguaggio macchina, ossia un file binario contenente microistruzioni gestibili dal processore. Inoltre diverse architetture di processori prevedono linguaggi macchina differenti.
Il linguaggio macchina è composta da una sequenza di 0 e 1, ma leggere “numeri” non è molto facile 
per noi umani, conviene quindi tradurre questi codici numerici in qualcosa di più leggibile, ovvero stringhe più leggibili: LINGUAGGIO ASSEMBLY 
un istruzione in linguaggio macchina come la seguente "0100110011110" tramite l'assemblatore verrà associata a una "somma", il rapporto è quindi un rapporto 1:1 cioè ogni istruzione da assemblatore corrisponde a un istruzione in linguaggio macchina.

Un INTERPRETE per un certo linguaggio è un programma che “interpreta” appunto il linguaggio e fa sì che questo venga correttamente eseguito dal computer:
ogni istruzione del programma “viene interpretata” ogni volta che viene eseguita  
•  Per eseguire un programma, ho sempre bisogno dell’interprete

Un COMPILATORE è un programma che traduce una serie di istruzioni scritte in un determinato linguaggio di programmazione (codice sorgente) in istruzioni di un altro linguaggio (codice oggetto). Questo processo di traduzione si chiama compilazione. Il compilatore poi trascrive la traduzione in un file eseguibile (.exe). 

Esempio: dir->chiama interprete->che traduce in linguaggio macchina->viene eseguita la traduzione->si avvia l'istruzione in linguaggio macchina.

!L'interprete non salva la traduzione da nessuna parte
! Senza interprete i comandi non funzionano
! Il browser è un interprete
!Il compilatore è un traduttore.


giovedì 10 ottobre 2013

Sistema Operativo MS DOS

Il programma Bios:
Il Bios è un programma -> Basic Input Output System e serve ad avviare il computer:
1) accendo il computer 2) parte il bios 3) che avvia il Sistema Operativo
Il Sistema Operativo non è un software qualunque, i software infatti si suddividono in software di base e software applicativi: il Sistema Operativo serve a gestire il computer i software applicativi servono alla gestione della vita quotidiana.
Il sistema operativo inoltre è quel software che ci mette a disposizione un interfaccia grafica GUI (Icone, programmi, cartelle, possibilità di cliccare ecc...)

Il Sistema Operativo MS DOS è un Sistema Operativo che utilizza un interfaccia a carattere e di tipo Monotasking (che esegue un solo comando alla volta).
Oggi tutti i S.O. presenti sul mercato sono Multitasking (capacità da parte di un sistema operativo di svolgere più programmi contemporaneamente)
Multitasking la capacità da parte di un sistema operativo di svolgere più programmi contemporaneamente...tutti i S.O. presenti oggi sul mercato sono Multitasking.
In un pc però c'è solamente una CPU, come possiamo quindi avere più task contemporaneamente?
Questo è possibile perchè il Sistema Operativo da all'utente la sensazione di avere più programmi in esecuzione contemporaneamente quando in realtà fa eseguire alla CPU un programma alla volta per un tempo limitato (anche per un millesimo di secondo) portando avanti però a rotazione più programmi che sembrano così essere in esecuzione tutti contemporaneamente.

Il Sistema Operativo gestisce la CPU e gestisce i programmi.
Attraverso l'interfaccia gestiamo tutto il computer : SW + HW + S.O. ecc...




Comandi MS DOS:
! La directory nell'interfaccia a carattere equivale alla cartella nell'interfaccia grafica, tutto quello presente su disco è un file, le directory sono file contenitori di file.

dir           -> visualizza il contenuto della directory, la scritta <DIR> indica una directory
type        -> serve a visualizzare un file (type blog.txt visualizzerà il file di testo di nome blog)
            -> se si preme il tasto freccia dx verrà riscritto l'ultima istruzione inserita
edit         -> serve a creare un file (edit serale.bat - i file .bat sono file che contengono una raccolta di comandi che vengono eseguiti in successione una volta lanciato il file, Il file "batch" esiste solamente in ambiente microsoft, in altri sistemi operativi vengono chiamati file "script".
cd..         -> serve per risalire il "path"(percorso della directory) di un passaggio. Altra possibilità è quella di utilizzare il comando cd..\..\.. per risalire di tre passaggi in una volta sola
md          -> serve per creare una nuova directory (md serale crea una directory di nome serale)
cd           -> serve a posizionarsi in una directory (cd serale posizionerà l'utente all'interno della directory serale)
rd           -> serve a eliminare una directory
help        -> visualizza in elenco i comandi che vengono messi a disposizione, help+comando fornisce la descrizione del comando indicato.
tree        -> visualizza lo schema ad albero delle directory.
copy       -> copia un file (copy pippo.doc \serale copia il file word pippo nella cartella serale)
rename  ->rinomina il file (rename pippo.doc pluto.doc rinomina il file word pippo in pluto)


! Ogni comando ha delle opzioni ad esempio dir/p visualizza il contenuto della directory per pagine.


! Il S.O. MS DOS non è sensibile alle maiuscole e minuscole quindi ad esempio il file AVVIO.BAT è uguale al file avvio.bat, in Unix e Linux invece corrispondono a due file diversi.
! L'organizzazione a directory permette di poter avere diversi file con lo stesso nome, se avessi tutti i file salvati su disco C senza directory avrei continui casi di omonimia.