Modulo B: il linguaggio C (pagina 92) Esistono vari Linguaggi di programmazione: Linguaggio Macchina Binario CPU Comporta la conoscenza di: Sistema operativo Linguaggio Assembler LINGUAGGI DI PROGRAMMAZIONE Esadecimale Viene tradotto in: Binario C Linguaggi Evoluti PASCAL QB Il linguaggio C è stato introdotto nel 1970. Questo linguaggio usa un compilatore, che, lavorando all’interno del programma, controlla la sintassi di programmazione. Questo, mette insieme un file oggetto al quale affiancherà librerie e lo salva come .exe o .c. Ogni istruzione termina con ; . Per inserire un commento Se uso // si può fare un commento lungo una riga. Se uso /* (apertura) e */ (chiusura) si può fare un commento su più righe. Memorizzazione dei dati Come sono memorizzati i dati: pagine 92 e 93. I numeri che possono essere utilizzati nel linguaggio C sono interi (3,6,4,5…) o reali. Questi, possono essere memorizzati in: • CHAR • INT Il tipo CHAR usa otto bit e ciò permette 2! combinazioni possibili. Se uso: ü Numeri con segno (CHAR) vanno da -­‐128 a +127 ü Numeri senza segno (UNSIGNED CHAR) vanno da 0 a +255 Char Interi Numeri Int Reali Dati Singolo Carattere 'a' Uso codice ASCII Stringa Alfanumerica "MO34567CV" Termino con \o Alfnumerici Tutti i comandi del linguaggio C sono scritti i minuscolo in quanto questo linguaggio “CS” ovvero Case Sensative ovvero riconosce sia le lettere minuscole che maiuscole. Principali operatori aritmetici Operatore Somma Sottrazione Moltiplicazione Divisione Resto (modulo) Simbolo + -­‐ * / % Note Esempio di utilizzo di questi operatori: Operazione di stampa I formati di stampa principali sono: Formato di stampa %i %f %c %s %d Riferito a int float carattere stringa intero in formato decimale Le principali funzioni di stampa sono: Funzione di stampa Default Note Stampa un valore di seguito all’altro I risultati sono scritti uno sotto l’altro (tabulati) Ad ogni valore stampato, viene emesso un beep \t \a Esempi di utilizzo dei formati e delle funzioni di stampa: Funzione Spiegazione printf (“……”) Stampa una frase printf(“A= %i”, nome variabile da Stampa con valore uguale a stampare) Esercizio: Crea la flow chart per il calcolo dell’area del rettangolo. Trasforma la flow chart in linguaggio di programmazione. // // main.cBERTANI Elia
START
// ee
3°B
//
21-09-2012
INSERISCI BASE
// Created by Elia Bertani on
15/11/12.
// Copyright (c) 2012 Elia Bertani.
All rights reserved.
//
#include <stdio.h>
INSERISCI ALTEZZA
int main(int argc, const char * argv[])
{
int base;
int altezza;
int area;
AREA = BASE * ALTEZZA
base=7;
altezza=5;
area=base*altezza;
printf("\n\n\t area rettangolo");
STAMPA AREA
printf("\n\n\t area=%i", area);
return 0;
}
FINISH
Operatore e libreria getch() Specifica Blocca esecuzione programma fino a che non si preme un tasto Libreria operatori matematici particolari #include<math.h>> Nel linguaggio c, si possono introdurre dati da tastiera: scanf("%X"&Y);
Dove: • X = formato dato(%i, %f, “c); • Y = nome variabile Esercizio: Crea la flow chart per il calcolo dell’area del triangolo. Trasforma la flow chart in linguaggio di programmazione. Base ed altezza andranno inseriti da tastiera. //
//
//
//
//
//
//
main.c
ee
Created by Elia Bertani on 15/11/12.
Copyright (c) 2012 Elia Bertani. All rights reserved.
#include <stdio.h>
int main(int argc, const char * argv[])
{
float base;
float altezza;
float area;
printf("\f introduci base: ");
scanf("%f",&base);
printf("\f introduci altezza: ");
scanf("%f",&altezza);
area=(base*altezza)/2;
printf("\n\n\t area tringolo");
printf("\n\n\t area=%f", area);
return 0;
}
Compiti per il 16 Novembre: • Scrivere un programma che acquisisca due valori interi e ne calcoli: somma, sottrazione, prodotto, divisione, resto divisione. //
//
//
//
//
//
//
main.c
ee
Created by Elia Bertani on 15/11/12.
Copyright (c) 2012 Elia Bertani. All rights reserved.
#include <stdio.h>
int main(int argc, const char * argv[])
{
int
int
int
int
int
int
int
n1;
n2;
somma;
sottrazione;
moltiplicazione;
divisione;
divisione1;
printf("\f Introduci primo numero: ");
scanf("%i",&n1);
printf("\f Introduci secondo numero: ");
scanf("%i",&n2);
// CALCOLO SOMMA
somma=n1+n2;
printf("\n\n\t Somma = %i", somma);
//CALCOLO SOTTRAZIONE
sottrazione=n1-n2;
printf("\n\n\t Sottrazione = %i", sottrazione);
//CALCOLO MOLTIPLICAZIONE
moltiplicazione=n1*n2;
printf("\n\n\t Prodotto = %i", moltiplicazione);
//CALCOLO DIVISIONE
divisione=n1/n2;
printf("\n\n\t Divisione troncata = %i", divisione);
//CALCOLO RESTO DIVISIONE
divisione1=n1%n2;
printf("\n\n\t Resto = %i", divisione1);
return 0;
}
Principali operatori di assegnazione e logici OPERATORI di ASSEGNAZIONE SIMBOLO DESCRIZIONE > maggiore >= maggiore – uguale < minore <= minore – uguale == uguaglianza = assegnazione != diverso Principali operatori logici if(!(A==3)) if(A!=3)) ! not && and if((A>0)&&(A<10)) or if((A>0)∥(B>0)) ∥ Esempio 1: Esempio 2: Principali operatori orientati i bit (ovvero lavorano sui singoli bit) SIMBOLO & ∧ ~ Esempi: OPERATORI ORIENTATI AI BIT DESCRIZIONE and or xor not ESEMPIO DI UTILIZZO 01010&0101011 0101000 010001 0100011∧00100 0010100~01010 Strutture di condizione • Prima selezione //
SELEZIONE DOPPIA
if(a>0)
printf("Numero positivo");
else
printf("Numero negativo"); • Seconda selezione //
SELEZIONE SEMPLICE
if(a>0)
printf("Numero positivo");
• Terza selezione (if, elseif, elseif ….. else) //
SELEZIONE MULTIPLA
else if(cond1)
ist1;
else if(cond2)
ist2;
else if(cond3)
ist3;
...
else (condn)
istn;
Esercizio: Calcola il valore assoluto di un numero. #include <stdio.h>
int main(int argc, const char * argv[])
{
float N;
printf("INTRODUCI NUMERO: ");
scanf("%f",&N);
if(N<0)
N=N*-1;
printf("N=%f",N);
return 0;
}
Assegnazioni di costanti nel linguaggio c #include <stdio.h>
#define PI 3,14
int main(int argc, const char * argv[])
{
// insert code here...
printf("Hello, World!\n");
return 0;
}
Il comando “#define” serve per definire una costante. Esercizi di compito per il 23 Novembre Traduci in C, i seguenti programmi: • Identificare il numero maggiore tra tre forniti in entrata; //
//
//
//
NUMERO MAGGIORE TRA TRE
Elia Bertani, 3°B
22 Novembre 2012
#include <stdio.h>
int main(int argc, const char * argv[])
{
// DICHIARO I DATI
float n1,n2,n3;
//
STAMPO TITOLO e INSERISCO DATI
printf("\t\tIDENTIFICAZIONE DEL NUMERO MAGGIORE TRA TRE NUMERI");
printf("\n\n\nINSERISCI PRIMO NUMERO: ");
scanf("%f",&n1);
printf("\nINSERISCI SECONDO NUMERO: ");
scanf("%f",&n2);
printf("\nINSERISCI TERZO NUMERO: ");
scanf("%f",&n3);
//
PONGO LE CONDIZIONI PER IDENTIFICARE NUMERO MAGGIORE E LO STAMPO
if (n1>n2)
if (n1>n3)
printf("\n\nNUMERO MAGGIORE: %f",n1);
if (n2<n3)
printf("\n\nNUMERO MAGGIORE: %f",n3);
else
printf("\n\nNUMERO MAGGIORE: %f",n2);
printf("\n\n\n");
return 0;
//
}
FINE PROGRAMMA
//
//
//
Risoluzione di una equazione di primo grado; •
Risoluzione di un'equazione di primo grado
Elia Bertani, 3°B
20 Novembre 2012
#include <stdio.h>
int main()
{
//
DATI e TITOLO
float n1,n2,x;
printf("\t\t RISOLUZIONE DI EQUAZIONI DI PRIMO GRADO");
//
INTRODUZIONE ED ASSEGNAZIONE DATI
printf("\n\n\nINTRODUCI TERMINE NOTO: ");
scanf("%f",&n1);
printf("\n\nINTRODUCI TERMINE CON L' INCOGNITA: ");
scanf("%f",&n2);
//
CONDIZIONI DI RISOLUZIONE
if (n1!=0)
{
x=-n1/n2;
printf("\n\nSOLUZIONE DELL'EQUAZIONE: %.2f",x);
}
else if (n2==0)
printf("SOLUZIONE INDETERMINATA");
else
printf("SOLUZIONE IMPOSSIBILE");
//
STAMPO SPAZI
printf("\n\n\n");
return 0;
//
}
PROGRAMMA TERMINATO
// STAMPA LA X
//
//
//
//
Calcolo della bolletta telefonica dati dei parametri iniziali; •
Calcolo della bolletta telefonica
Elia Bertani, 3°B
20 Novembre 2012
#include <stdio.h>
//DEFINISCO 5 COSTANTI
#define costo1 0.0020
#define costo2 0.0015
#define costo3 0.0010
#define trasformazione 100
#define imposta 250
int main(int argc, const char * argv[])
{
//
DICHIARO I DATI E STAMPO IL TITOLO
int ns;
float p,p1,p2,p3,p4,p5,pt,pc;
printf("\t\t CALCOLO COSTO DELLA BOLLETTA TELEFONICA \n\n\n\n");
//
INTRODUZIONE DATI
printf("INTRODUCI NUMERO DI SCATTI: ");
scanf("%i",&ns);
//
CONDIZIONI PER LA RISOLUZIONE DEL PROGRAMMA
if(ns<=30)
p=ns*costo1;
else if(ns<=100)
{
p1=ns-30;
p2=30*costo1;
p3=p1*costo2;
p=p2+p3;
}
else
{
p1=ns-30;
p2=30*costo1;
p3=p1*costo2;
p4=p1-70;
p5=p4*costo3;
p=p2+p3+p5;
}
//
AGGIUNGO L'IMPOSTA AL CALCOLO DELLA BOLLETTA
pt=p+imposta;
//
CONDIZIONE PER STAMPARE VALORE IN CENTESIMI O IN EURO
if(pt>=100)
{
pc=pt/100;
printf("\n\nCOSTO TOTALE DELLA BOLLETTA: %.2f Euro",pc);
}
else
printf("\n\nCOSTO TOTALE DELLA BOLLETTA: %.2f Euro",pc);
//
STAMPO SPAZI
printf("\n\n\n");
return 0;
// FINE PROGRAMMA
}
•
Applicare uno sconto in base al prezzo fornito in ingresso. // APPLICAZIONE DI UNO SCONTO IN BASE AD UN PREZZO FORNITO IN INGRESSO
// BERTANI ELIA 3B
// 23/11/12
#include <stdio.h>
#define SCONTO1 5/100
#define SCONTO2 10/100
#define SCONTO3 15/100
int main(int argc, const char * argv[])
{
// Dichiaro i dati
float prezzo,sconto,totale;
printf("\tAPPLICAZIONE DI UNO SCONTO IN BASE AL PREZZO FORNITO IN
INGRESSO");
// Introduzione Prezzo
printf("\n\n\nINTRODUCI PREZZZO: ");
scanf("%f",&prezzo);
// Condizioni al fine di utilizzare lo sconto giusto
if (prezzo<100)
sconto=prezzo*SCONTO1;
else if (prezzo<=300)
sconto=prezzo*SCONTO2;
else
sconto=prezzo*SCONTO3;
// Stampo lo sconto da applicare
printf("\nSCONTO: %.2f Euro",sconto);
// Stampo il prezzo scontato
totale=prezzo-sconto;
printf("\n\nPREZZO SCONTATO: %.2f Euro",totale);
printf("\n\n\n");
return 0;
} SWITCH CASE Questa struttura serve per: • Confronti di uguaglianza; • Variabile di confronto switch(comando)
{
case 1:
ist1;
##
case 2:
ist2;
##
case 3:
ist3;
##
...
case n:
ist n;
##
default:
ist default;
} Se nella struttura, dove è presente il simbolo ##, inserisco il comando “break” il programma quando raggiunge il caso in cui la a condizione si verifica, dopo aver eseguito l’operazione assegnatogli, va alla fine della struttura per continuare lo svolgimento del programma madre. Se non metto questa funzione, una volta verificata una prima condizione, esegue anche tutte quelle altre fino alla fine anche se non verificate. Controllo dello schermo Per i controlli dello schermo occorre introdurre una nuova libreria: #include<conio.h>
Per centrare una stampa a centro schermo devo sapere che uno schermo mediamente è formato da 24 righe e 80 colonne. Per stampare a centro pagina occorre fare: gotoxy(38,12)
printf("ciao");
Con questa libreria è possibile fare la pulizia dello schermo ovvero aprire una pagina pulita: per fare ciò, uso la funzione clrscr();. Esercizi per 30 Novembre 2012 : Traduci in C: • Introduci da tastiera il raggio di un cerchio e un numero compreso tra 1 e 3 e stampa il seguente elenco al centro dello schermo: 1. CIRCONFERENZA 2. AREA 3. VOLUME Calcola e stampa in una pagina pulita il risultato dell’operazione scelta da eseguire. /
//
//
CALCOLO CIRCONFERENZA o AREA o VOLUME del CERCHIO
Elia Bertani, 3°B
27 Novembre 2012
#include <stdio.h>
//
DEFINISCO COSTANTI
#define PI 3.141592654
#define V1 1.333333333
int main(int argc, const char * argv[])
{
//
DICHIARO LE VARIABILI
float raggio,crf,area,volume;
int operazione;
//
STAMPO TITOLO
printf("\t\tCALCOLO CIRCONFERENZA o AREA o VOLUME di un cerchio");
printf("\n\nINTRODUCI LA MISURA DEL RAGGIO IN CENTIMETRI: ");
scanf("%f",&raggio);
// STAMPO LE POSSIBILITA' DI ESECUZIONE DEL PROGRAMMA
printf("\n\t 1)
CALCOLO CIRCONFERENZA");
printf("\n\t 2)
CALCOLO AREA");
printf("\n\t 3)
CALCOLO VOLUME");
printf("\n\nINSERISCI CODICE NUMERICO IDENTIFICATIVO: ");
scanf("%i",&operazione);
//
STRUTTURA SWITCH CASE
switch (operazione)
{
case 1:
crf=PI*raggio*2;
printf("\n\nCIRCONFERENZA: %.2f cm",crf);
break;
case 2:
area=PI*(raggio*raggio);
printf("\n\nAREA: %.2f cmq",area);
break;
case 3:
volume=PI*(raggio*raggio*raggio)*V1;
printf("\n\nVOLUME: %.2f cmc",volume);
break;
default:
printf("\n\nVALORE INSERITO ERRATO!");
break;
}
//
FINE PROGRAMMA
printf("\n\n\n");
return 0;
}
//
//
//
//
•
Introduci da tastiera 2 numeri e un numero (1-­‐4) in base a ciò che vuoi svolgere: 1. 2. 3. 4. 5. SOMMA DIFFERENZA PRODOTTO DIVISIONE CALCOLO RESTO CALCOLATRICE A SCELTA DI UNA SINGOLA FUNZIONE
Elia Bertani, 3°B
28 Novembre 2012
#include <stdio.h>
int main(int argc, const char * argv[])
{
//
SEZIONE DICHIARATIVA,STAMPA TITOLO PROGRAMMA E IMMETTO DATI
int a, b,selezione;
float somma, differenza, prodotto, rapporto, resto;
printf("\t\t\t\t Calcolatrice");
printf("\n\nInserisci il primo numero: ");
scanf("%i",&a);
printf("\n\nInserisci il secondo numero: ");
scanf("%i",&b);
//
STAMPO FUNZIONI DEL PROGRAMMA CHE POI SARANNO ESEGUITE
printf("\n\t
printf("\n\t
printf("\n\t
printf("\n\t
printf("\n\t
1
2
3
4
5
:
:
:
:
:
SOMMA");
SOTTRAZIONE");
PRODOTTO");
DIVISIONE");
CALCOLO RESTO DELLA DIVISIONE");
printf("\n\nCOSA DEVO ESEGUIRE: ");
scanf("%i",&selezione);
//
STRUTTURA SWITCH CASE
switch(selezione)
{
case 1:
somma=a+b;
printf("\n\nSOMMA: %.2f", somma);
break;
case 2:
differenza=a-b;
printf("\n\nSOTTRAZIONE: %.2f", differenza);
break;
case 3:
prodotto=a*b;
printf("\n\nPRODOTTO: %.2f\n\n", prodotto);
break;
case 4:
rapporto=a/b;
printf("\n\nIDIVISIONE: %.2f",rapporto);
break;
case 5:
resto=a%b;
printf("\n\nCALCOLO RESTO DELLA DIVISIONE: %.2f", resto);
break;
default:
printf("\n\nERRORE");
}
printf("\n\n\n");
return 0;
//
}
FINE PROOGRAMMA
Ciclo FOR for(cont=vi;cont<=vf;cont=cont+1)
{
istruzione 1;
}
Ciclo FOR ANNIDATO for(i=1;i<3 finale;i=i+1)
for(j=1;j<4 finale;j=j+1)
{
k=i*j;
printf("%i",k);
}
Stampa di una stringa per un numero infinito di volte for(;;)
printf("ciao");
Esercizi di applicazione dei cicli for: • Stampa i numeri da 1 a 10 #include <stdio.h>
#include <stdlib.h>
int main()
{
printf("\t\t\tStampa dei primi 10 numeri\n\n\n");
int n;
for (n=0; n<10; n=n+1)
printf("\t\t\t\t %i \n", n);
getch();
return 0;
}
Forme contratte o abbreviate in linguaggio C i=i+1
-> i++ -> ++i
i=i-1
-> i-- -> --i
Esercizi per 7 dicembre 2012 • Stampa una tabella con i numeri da 1 a 10 e: quadrato, cubo e radice. //
//
//
//
CALCOLO DEL QUADRATO, CUBO E RADICE DEI PRIMI DIECI NUMERI NATURALLI
Elia Bertani, 3∞B
4 Dicembre 2012
#include <stdio.h>
#include <math.h>
int main(int argc, const char * argv[])
{
//
DICHIARO DATI E STAMPO TITOLO DEL PROGRAMMA
int numero,quadrato,cubo;
float radice;
printf("\t\t\t\t\tCALCOLO DEL QUADRATO, CUBO E RADICE DEI PRIMI
DIECI NUMERI NATURALLI\n\n\n");
//
STAMPO INDICI TABELLA
printf("NUMERO QUADRATO CUBO RADICE\n\n\n");
//
ESEGUO IL CICLO PER CALCOLARE QUADRATO CUBO E RADICE DEL NUMERO
for(numero=0;numero<10;numero=numero+1)
{
quadrato=numero*numero;
cubo=numero*numero*numero;
radice=sqrt(numero);
printf(" %i
%i
}
//
FINE PROGRAMMA
printf("\n\n");
return 0;
}
%i
%.2f \n\n", numero, quadrato, cubo, radice);
//
//
//
•
Scrivere un programma in grado di calcolare tutti i divisori del numero 20. IDENTIFICAZIONE DEI DIVISORI DEL NUMERO 20
Elia Bertani, 3∞B
6 Dicembre 2012
#include <stdio.h>
#define N1 20
int main(int argc, const char * argv[])
{
//
INSERISCO DATI E STAMPO TITOLO
int divisore;
float resto;
printf("\tIDENTIFICAZIONE DEI DIVISORI DEL NUMERO 20\n");
//
STAMPO CAPO DI STAMPA ED IMPOSTO TERMINI E CICLI DI RISOLUZIONE
printf("\nI DIVISORI DEL NUMERO 20 SONO: \n\n");
for(divisore=1;divisore<=N1;divisore=divisore+1)
{
resto=N1%divisore;
if (resto==0)
printf("
%i\n", divisore);
}
//
FINE DEL PROGRAMMA
printf("\n\n");
return 0;
}
•
//
//
//
Scrivere un programma in grado di calcolare tutti i divisori di numero inserito da tastiera. IDENTIFICAZIONE DEI DIVISORI DI UN NUMERO INTRODOTTO DA TASTIERA
Elia Bertani, 3∞B
6 Dicembre 2012
#include <stdio.h>
int main(int argc, const char * argv[])
{
//
INSERISCO DATI E STAMPO TITOLO
int divisore, numero;
float resto;
printf("\tIDENTIFICAZIONE DEI DIVISORI DI UN NUMERO INTRODOTTO DA
TASTIERA\n");
//
INTRODUZIONE DA TASTIERA NUMEROINTERESSATO DALL'ANALISI
printf("\n\nINSERISCI IL NUMERO DA ANALIZZARE: ");
scanf("%i",&numero);
//
STAMPO CAPO DI STAMPA ED IMPOSTO TERMINI E CICLI DI RISOLUZIONE
printf("\nI DIVISORI DEL NUMERO INSERITO SONO: \n\n");
for(divisore=1;divisore<=numero;divisore=divisore+1)
{
resto=numero%divisore;
if (resto==0)
printf("
%i\n", divisore);
}
//
FINE DEL PROGRAMMA
printf("\n\n");
return 0;
}
• Scrivere un programma in grado di calcolare le tabelline dei primi 10 numeri naturali.
//
//
//
//
CALCOLO DELLE TABELLINE DA 1 A 10
Elia Bertani, 3∞B
5 Dicembre 2012
#include <stdio.h>
int main(int argc, const char * argv[])
{
//
INSERISCO DATI E STAMPO TITOLO DEL PROGRAMMA
int moltiplicando, moltiplicatore;
printf("\t\tCALCOLO DELLE TABELLINE DA 1 A 10\n\n\n\n");
// IMPOSTO LE CONDIZIONI DI ESECUZIONE DEL PROGRAMMA E SVOLGO LA
MOLTIPLICAZIONE TRA I TERMINI INTERESSATI
for(moltiplicando=1;moltiplicando<11;moltiplicando=moltiplicando+1)
{
for(moltiplicatore=1;moltiplicatore<11;moltiplicatore=moltiplicatore+1)
printf("%5i", moltiplicando*moltiplicatore);
printf("\n");
}
//
FINE DEL PROGRAMMA
printf("\n\n");
return 0;
}
Ciclo con controllo di testa (While) while (cond1)
ist1; Ciclo con controllo di coda (Do While) do
ist1;
while(condx) Generare numeri casuali infiniti in funzione dell’ora #include <stdio.h>
#include <time.h>
srand((unsigned)time(NULL)); Generare numero casuale dentro un range di valori stabilito rand()%(valore massimo-valore minimo+1)+minimo Compito per 14 dicembre 2012 Traduci i seguenti programmi: • Convertitore numerico da decimale a binario usando ciclo do -­‐ while. #include <stdio.h>
#include <stdlib.h>
#include <conio.h>
int main()
{
int numero,resto,contatore;
contatore=40;
printf("Inserisci numero decimale: ");
scanf("%i",&numero);
printf("\nNumero trasformato in binario: ");
do
{
resto=numero%2;
numero=numero/2;
contatore=contatore-1;
gotoxy (contatore-1,3);
printf("%i",resto);
}
while (numero!=0);
printf("\n\n");
return 0;
}
Generare 10 numeri compresi tra 5 e 20 e sommarli. •
#include <stdio.h>
#include <conio.h>
#include <time.h>
int main()
{
int s=0,n,i;
srand((unsigned)time(NULL));
for(i=1;i<=10;i++)
{
n=rand()%(20-5+1);
printf("n: %i\n",n);
s=s+n;
}
printf("\nSOMMA= %i\n",s);
return 0;
}
Generare numero casuale compreso tra 1 e 80 e stampare x asterischi. •
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
int numero;
char carattere='*';
printf("\t\t STAMPA DI n ASTERISCHI\n\n");
srand((unsigned)time(NULL));
numero=rand()%(80-1+1);
printf("Numero estratto: %i\n\n",numero);
for(numero=numero;numero!=0;numero=numero-1)
{
printf("%c",carattere);
}
printf("\n\n");
return 0;
}
•
Dati tre numeri casuali, ordinarli in modo crescente. #include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
int N1,N2,N3;
srand((unsigned)time(NULL));
N1=rand();
N2=rand();
N3=rand();
if(N1>=N2)
{
if(N2>=N3)
{
printf("A= %i\n",N1);
if(N2>=N3)
{
printf("B %i\n",N2);
printf("C= %i\n",N3);
}
else
{
printf("C= %i\n",N3);
printf("B= %i\n",N2);
}
}
else if(N1>=N3)
{
printf("A= %i\n",N1);
if(N2>=N3)
{
printf("B= %i\n",N2);
printf("C= %i\n",N3);
}
else
{
printf("C= %i\n",N3);
printf("B= %i\n",N2);
}
}
else
{
printf("C= %i\n",N3);
if(N1>=N2)
{
printf("A= %i\n",N1);
printf("B= %i\n",N2);
}
else
{
printf("B= %i\n",N2);
printf("A= %i\n",N1);
}
}
}
else if(N2>=N3)
{
printf("B= %i\n",N2);
if(N1>=N3)
{
printf("A= %i\n",N1);
printf("C= %i\n",N3);
}
else
{
printf("C= %i\n",N3);
printf("A= %i\n",N1);
}
}
else
{
printf("C= %i\n",N3);
if(N1>=N2)
{
printf("A= %i\n",N1);
printf("B= %i\n",N2);
}
else
{
printf("B= %i\n",N2);
printf("A= %i\n",N1);
}
}
printf("\n\n");
return 0;
}
Compito per l’8 gennaio 2013 Traduci i seguenti programmi in C. • Stampa i multipli di due andando a capo ogni quattro. #include <stdio.h>
int main(int argc, const char * argv[])
{
int a,b,c;
a=0;
c=1;
printf(“\t\tSTAMPA I MULTIPLI DI DUE ANDANDO A CAPO OGNI QUATTRO \n\n");
for(b=2;b<=120;b+=2)
{
printf("%i ",b);
a=a+1;
if(a==(4*c))
{
printf("\n");
c=c+1;
}
}
printf("\n\n");
return 0;
}
• Stampa una volta una, due volte due e così via (fino a 9). #include <stdio.h>
int main(int argc, const char * argv[])
{
int contatore,numero;
for(numero=1;numero<=9;numero=numero+1)
{
for
(contatore=numero;contatore<(numero+numero);contatore=contatore+1)
{
printf("%i",numero);
}
printf("\n\n");
}
printf("\n\n");
return 0;
}
• Programma che stampi somme progressive dei numeri interi con numero massimo inserito dall’utente. #include <stdio.h>
int main(int argc, const char * argv[])
{
int i,somma,nl;
somma=0;
i=0;
printf("Inserisci numero limite: ");
scanf("%i",&nl);
do
{
printf("%3d \n",somma);
i=i+1;
somma=somma+i;
}
while (i<nl);
return 0;
}
Funzioni Prototipo Chiamata Il loro utilizzo si ripartisce in 4 parti: Intestazione Ritorno X assoluto (Y);//prototipo di una funzione
Dove: • X: tipo di valore di ritorno • Assoluto: nome • Y: tipo del parametro passato alla funzione Vettori float T [ ];
Dove: • float: formato di dato. • T: nome del dato. • [ ]: numero dati massimo da immagazzinare (meglio abbondare). int A[10] La RAM, nell’esempio soprastante, dedica 10 locazione di memoria alla variabile di nome A. L’assegnazione di una variabile vettoriale avviene nel modo sotto riportato: A[1]=7.5;
Per stampare il su valore: printf("%f",T[12]);
Applicazione pratica dei vettori in un programma: int main(int argc, const char * argv[])
{
int i;
float T[24];
for(i=0;i<24;i++)
{
printf("T[%i] = ",i);
scanf("%f",&T[i]);
}
for(i=0;i<24;i++)
printf("T[%i]= %f\n",i,T[i]);
return 0;
}
Array a due dimensioni (Matrici) Servono per trattare grandi quantità di dati. Dichiarazione prima delle librerie: int A[10][5];
#include <stdio.h>
int main()
Caricamento di una matrice: int i,j;
for(i=0;i<10;i++)
for(j=0;j<5;j++)
{
printf("\nA[%i][%i]: ",i,j);
scanf("%i",&A[i][j]);
}
Stampa di una matrice: int i,j;
for(i=0;i<10;i++)
for(j=0;j<5;j++)
printf("\nA[%i][%i]: %i",i,j,A[i][j]);
Fare un programma con matrici e funzioni per calcolare la media di 50 valori void carica (void);
void stampa (void);
void media1 (void);
int A[10][5];
#include <stdio.h>
#include <conio.h>
int main(int argc, const char * argv[])
{
carica();
clrscr();
stampa();
media1();
return 0;
}
void carica (void)
{
int i,j;
for(i=0;i<10;i++)
for(j=0;j<5;j++)
{
printf("\nA[%i][%i]: ",i,j);
scanf("%i",&A[i][j]);
}
return;
}
void stampa (void)
{
int i,j;
for(i=0;i<10;i++)
for(j=0;j<5;j++)
printf("\nA[%i][%i]: %i",i,j,A[i][j]);
return;
}
void media1 (void)
{
int i,j,s;
float m;
s=0;
for(i=0;i<10;i++)
for(j=0;j<5;j++)
s=s+A[i][j];
m=s/50;
printf("\n\nMedia totale: %f",m);
return;
}
Scarica

Linguaggio C (v 10.1)