Corso di Fondamenti di Informatica Macroarea di Ingegneria 2017/18 Tutor: prof. Francesco De Vincenzi
MATLAB: IF a più vie - Esempio g=input('inserisci il giorno: '); m=input('inserisci il mese: '); a=input('inserisci l''anno: '); if((g>=1 && g<=31 && (m == 1 m==3 m==5 m==7 m==8 m==10 m==12))... (g>=1 && g<=30 && (m ==4 m==6 m==9 m== 11))... (g>=1 && g<=28 && m==2)... (g==29 && m==2 && mod(a,4)==0)) disp('data valida'); else disp('data non valida!'); gennaio, di 31 giorni febbraio, di 28 giorni (29 se bisestile) marzo, di 31 giorni aprile, di 30 giorni maggio, di 31 giorni giugno, di 30 giorni luglio, di 31 giorni agosto, di 31 giorni settembre, di 30 giorni ottobre, di 31 giorni novembre, di 30 giorni dicembre, di 31 giorni
MATLAB: Ciclo FOR o (con contatore) Permette di ripetere più volte una sequenza di istruzioni. Il numero di ripetizioni è controllato da un contatore che assume un valore iniziale e cambia valore ad ogni ripetizione. Istruzione 1 Istruzione 2... Istruzione n for indice = valori Istruzione 1 Istruzione 2 Istruzione n
MATLAB: Ciclo FOR o (con contatore) Permette di ripetere più volte una sequenza di istruzioni. Il numero di ripetizioni è controllato da un contatore che assume un valore iniziale e cambia valore ad ogni ripetizione. for indice = valori Istruzione 1 Istruzione 2 Istruzione n Esempi di indice = valori i = 0:10 num = 3:100 pari = 0:2:100 decr = 10:-1:0 dec = 0:0.1:1
MATLAB: Esempi - Ciclo FOR o (con contatore) %calcola i quadrati dei primi 10 numeri for i=1:10 q=i^2; disp(q); %somma tutti i pari da 0 a 100 totale=0; for i=0:2:100 totale=totale+i; disp (totale); %calcola i resti di 100 diviso i for i=1:10 resto=mod(100,i); disp (resto); %conta tutti i dispari da 0 a 100 totale=0; for i=1:2:100 totale=totale+1; disp (totale);
MATLAB: Esempi - Ciclo FOR annidati %genera tutte le coppie i,j %con i e j compresi tra 1 e 10 for i=1:10 for j=1:10 disp(i); disp(j); %genera tutte le coppie i,j %con i e j pari e compresi tra 1 e 10 for i=2:2:10 for j=2:2:10 disp(i); disp(j); %genera tutte le coppie i,j %con i e j compresi tra 1 e 10 %e i<j for i=1:10 for j=i+1:10 disp(i); disp(j); %genera tutte le coppie i,j %con i e j compresi tra 1 e 10 %e i<j e j in ordine decrescente for i=1:10 for j=10:-1:i+1 disp(i); disp(j);
MATLAB: Esempi IF interno ad un ciclo FOR %genera tutti i valori tra 1 e 10 %aggiungo pari o dispari for i=1:10 disp(i); if (mod(i,2)==0) disp('pari'); else disp('dispari'); %genera tutti i valori tra 1 e 100 %divisibili per 7 o 13 for i=1:100 if (mod(i,7)==0 & mod(i,13)==0) disp(i); %verifica se un numero è primo n=input('inserisci un numero'); m=n/2; primo=true; for i=2:m if mod(n,i)==0 primo=false; if (primo) disp('il numero è primo'); else disp('il numero non è primo');
MATLAB: Esercizi 1) Scrivi uno script che pre in input un numero ed elenca tutti i divisori del numero. 2) Scrivi uno script che pre in input due numeri e conta quanti divisori hanno in comune. 3) Scrivi uno script che fa la somma di tutti i numeri primi tra 1 e 100. 4) Scrivi uno script che conta quanti numeri primi ci sono tra 0 e 100. 5) Scrivi uno script che pre in input due numeri x ed y (tra 1 e 1000 con x<y) e calcola quanti quadrati interi ci sono tra x ed y
Scrivi uno script che pre in input due numeri a e b e verifica se a è multiplo di b. Se si, calcola e mostra il rapporto tra a e b. Altrimenti, comunica che a non è divisibile per b. Scrivi uno script che pre in input due numeri e comunica se sono entrambi pari, entrambi dispari o uno pari e uno dispari. Scrivi uno script che pre in input due numeri e comunica se il maggiore dei due è pari o dispari Scrivi uno script che verifica se un numero è un quadrato. In tal caso, calcola e mostra la sua radice altrimenti comunica che non è un quadrato. Scrivi uno script che pre in input due numeri x ed y e calcola la somma di tutti i numeri divisori sia di x che di y
MATLAB: Ciclo while Permette di ripetere più volte una sequenza di istruzioni. Il ciclo viene ripetuto finchè la condizione logica posta ad inizio ciclo è vera. Quando la condizione diviene falsa, il ciclo termina. Istruzione 1 Istruzione 2... Istruzione n while condizione Istruzione 1 Istruzione 2 Istruzione n
MATLAB: Ciclo while - esempi %Somma una serie di valori in %input finchè la somma supera 100 somma=0; while somma<=100 b=input('inserisci un valore'); somma=somma+b; disp (somma); %Trova il più piccolo divisore %(diverso da 1) di un numero y=input('inserisci un valore'); x=2; while mod(y,x)~=0 x=x+1; disp(x); %Raddoppia y finchè y diventa maggiore di x x=input('inserisci un valore'); y=input('inserisci un valore'); while y<=x y=y*2; disp(y);
MATLAB: Ciclo while - Esercizi 1) Scrivi uno script che pre in input un numero e lo raddoppia finchè diventa maggiore di 100. Mostra il numero di volte che il numero viene raddoppiato. 2) Scrivi uno script che pre in input due numeri x ed y e trova il più piccolo numero maggiore di y divisibile per x. y=8 x=4 valore calcolato=? 3) Scrivi uno script che pre in input due numeri x ed y e trova il massimo comun divisore. Metodo: assegna a m il più piccolo tra x ed y e fai decrescere m finchè non diventa divisore di entrambi. 4) Scrivi uno script che pre in input due numeri x ed y e trova il minimo comune multiplo. Metodo: genera uno a uno tutti i multipli di x e di y finchè trovi un mutiplo comune.