Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
vuoi
o PayPal
tutte le volte che vuoi
Informatica
Informatica: scienza che studia
- rappresentazione
- elaborazione (automatica)
di informazioni.
Da fatti/conceitto interpretato e elaborato da un essere umano o da uno strumento automatico.
Elabo Automatica
- Insieme di regole (procedimenti, programmi)
macchina automatica.
- da un insieme di informazioni iniziali esegue le regole per ottenere un'insieme di info finali.
Es. Calcolo dell'area di un rettangolo
Area = b · h
Algoritmo
- procedimento, insieme di regole
procedimento matematico per la soluzione di un problema.
- l'algoritmo è una sequenza finita di azioni (passi di elaborazione) che risolve in modo automatico un problema.
Algoritmi Deterministici
y = f(x)
Come si rappresenta un algoritmo:
Area = b · h è un algoritmo
Linguaggio
di descrizione degli algoritmi:
- deve essere capito dalla macchina che lo esegue.
Modello di Von Neumann del 1945
Schema funzionamento unità centrale
- FETCH ⇒ reperire istruzione prox in memoria
- DECODE ⇒ capire cosa significa l'operazione
- EXECUTE ⇒ esecuzione dei passi necessari per l'operazione
La terna di operazioni: è un ciclo che dura finché il PC è acceso.
Linguaggio dei diagrammi di flusso
- descrivere degli algoritmi
- operazioni di Input/Output
- operazione logico-aritmetiche di elaborazione
- operazione di selezione
Problema
Dati 2 numeri interi a e b, calcolarne il max.
- acquisire valori di a e b
- Se a > b il max è a
- Se a < b il max è b
8 bit → 1 byte 0 → 255
16 bit → 2 byte 0 → 65536
32 bit → 4 byte | word, 8 byte 0 → 109
64 bit → 8 byte 0 → 18 * 1018
Es
1 2 3 4 5
0_2345 * 103
Memoria
nm4 bytei 000001max 000101max ← nm
Codifica ASCII
97 → 'a'
122 → 'z'
Problema
Dato un valore n e una sequenza di lunghezza n di numeri interi: calcolare il minimo
Autore: Lorenzo
Titolo: MCD tra due numeri
Data: 17/01/2009
Scopo: Confrontare due tipi di algoritmi che
#include<stdio.h> #include<conio.h> #include<math.h> int main() { long n,m,t; clrscr(); printf("Inserisci il primo numero:\n"); scanf("%ld",&n); printf("Inserisci il secondo numero:\n"); scanf("%ld",&m); if(n < m) t=n; else t=m; while (((n % t) !=0) || ((m % t) != 0)) t=t-1; printf("Il MCD è il numero %ld", t); getch(); }Conclusione: per calcolare l'MCD tra i numeri 123456789 e 987654321 vengono impiegati 42 secondi
#include<stdio.h> #include<conio.h> int main () { double n,m; clrscr(); printf("Inserisci il primo numero:\n"); scanf("%lf",&n); printf("Inserisci il secondo numero:\n"); scanf("%lf",&m); while (n!=m){ if (n>m) n=n-m; else m=m-n; } printf("Il MCD è: %lf ", n); getch(); } Conclusione: per calcolare l'MCD tra i numeri 123456789 e 987654321 viene impiegata una frazione di secondo#include <stdio.h>
int main
int i,n,k;
printf("Inserisci un numero tra 1 e 9: \n");
scanf ("%d", &n);
printf ("\n");
for (i=1; i<=n; i++)
{
//ciclo FOR per stampare un spazio in meno ogni riga (dall’alto)
for (k=n; k>i; k--)
printf (" ");
//Stampa i numeri da 1 a n
for (k=1; k<=i; k++)
printf ("%d", k);
//Stampa i numeri da n a 1
for (k=i; k>0; k--)
printf ("%d", k);
printf ("\n");
}
return 0;
}
/*Autore: Lorenzon Luca
Data: 30/01/2004
Titolo: Programma che calcola, mediante l'utilizzo di una funzione,
il fattoriale del numero dato in input
*/
#include <stdio.h>
/*Dichiarazione funzione*/
long Fattoriale(int n);
int main()
{
int num;
long f;
printf("Immetti un numero: ");
scanf("%d", &num);
/*Richiamo funzione*/
f=Fattoriale(num);
/*Stampa del fattoriale*/
printf("%d! = %d", num, f);
return 0;
}
/*FUNZIONE*/
long Fattoriale(int n)
{
long fatt=1, i;
for (i=2;i<=n;i++)
fatt*=i;
return fatt;
}
/*Autore: Lorenzon Luca
Data: 30/01/2004
Titolo: Programma che calcola, la radice quadrata
del numero dato in input
*/
#include <stdio.h>
/*Si definisce la precisione del numero dato in output*/
#define esp 0.001
int main ()
{
float n, n1, n2=1.0;
printf ("Immetti un numero: ");
scanf ("%g", &n);
n1=n;
/*Ciclo che segue l'algoritmo risolutivo*/
while ((n2-n1)>=esp || (n1-n2)>=esp)
{
n1=(n1+n2)/2.0;
n2=n/n1;
}
printf ("La radice quadrata di %g è %f", n, n1);
return 0;
}
#include <stdlib.h>
#include <time.h>
int rand ();
int srand (int seed);
int main ()
{
srand (time ((;0)));
}
int Bisestile (int ąnn0)
{
return ( — — )
}
void P();
Procedura = funzione che non ritorna alcun valore.
void Stampa Fattoriale (int b)
{
printf (";%ld/d/n", Fatturizio (n));
return;
}
- PUNTATORI -
l'indirizzi di memoria che corrispondono all'indirizzo di memoria di una data variabile,
void g (int*c a)
{
* a =*a + 5 // vai all'indirizzo delle var. a.
}
vo&iciec;d int main ()
{
int n = 3 ;
g (&n); // richiamo le var. puntate
return 0;
}
Esercizio
Data una sequenza di interi di lunghezza n letta in input n <= 1000, stampa la sequenza invertita. Es: 5 23 3 -> 3 23 5
#include <stdio.h> #define N 1000 int main () { int v[N]; int n, i; printf("inserire la lunghezza della sequenza (max %d)\n", n); scanf("%d", &n); while (n>N){ <---corrett³ for (i=0; i<n; i++); scanf("%d", &v[i]); for (i=n-1; i >= 0; i--); printf("%d", v[i]); return 0; }Problema
Data una sequenza di interi n letta in input e n <= 1000, calcolare il vicino della media.
#include <stdio.h> #include <math.h> #define N 1000 int main () { int V[N], h, ci somma, vicino; float media, min_distan; somma = 0; for (i=0; i<n; i++) { somma += V[i]; } media= (float) somma/n; min_distan = fabs(V[i] – media); vicino = 0; for (i=0; i<n; i++) { if (Abs(V[i] - media) < min_distan){ min_distan = fabs(V[i] - media); vicino = i; } printf ("Il vicino alla media %d", vicino}); return 0; } }void Datasucc(int *p_giorno, int *p_mese, int *p_anno)
{
if (*p_giorno=giorni_del_mese(*p_mese, *p_anno)
*p_giorno);
else if (*p_mese=12)
*p_giorno=1;
*p_mese=1;
else
*p_giorno=1;
*p_mese=1;
}
int contagiorni (int giorno1, int mese1, int anno1
int giorno2, int mese2, int anno2)
{
int conta_giorni=0;
while (giorno1!=giorno2 || mese1!=mese2 || anno1!=anno2)
{
Datasucc (&giorno1, &mese1, &anno1);
conta_giorni++;
}
return conta_giorni;
}