Vediamo un algoritmo utile a disegnare poligoni regolari con Scratch.
L’obiettivo è quello di prendere il numero dei lati in input e in base alla risposta disegnare un poligono regolare.
Esempio:
Se prendo in input il numero 4 disegnerò un quadrato.
Se invece prendo in input il numero 6 disegnerò un esagono e così via.
Cosa utilizzeremo per disegnare i poligoni con Scratch?
Utilizzeremo lo strumento penna. Infatti, la penna è uno strumento utilissimo di Scratch se si vuole disegnare qualcosa.
Algoritmo per disegnare poligoni regolari con Scratch
Prepariamo la nostra scena scegliendo uno stage (io ho messo semplicemente del colore) e lo sprite (il gattino è lo sprite di default). Dunque posizioniamo lo sprite in alto al centro in modo tale da avere lo spazio necessario per disegnare il nostro poligono regolare. Io ho messo come coordinate (x, y) 0 e 120.
Chiediamo quanti lati ha il nostro poligono e memorizziamo la risposta in una variabile che chiamiamo ad esempio lati.
Usiamo la penna giù (ricordiamo che di default la penna è sempre su, se vogliamo disegnare dobbiamo impostare penna giù) di un colore e spessore a nostra scelta per poter disegnare il nostro poligono.
Dopodiché realizziamo il nostro ciclo che permetterà al gattino di disegnare il poligono regolare. Il ciclo verrà ripetuto tante volte quanti sono i lati.
Ma di quanto dovrà ruotare il gattino?
Ricordiamo che i poligoni regolari hanno i lati uguali, gli angoli interni uguali e anche gli angoli esterni sono uguali.
La somma degli angoli esterni di un poligono regolare è un angolo giro ovvero 360 gradi.
Per cui l’angolo di rotazione della direzione di avanzamento, che il gattino deve eseguire, è pari a 360/lati.
La rotazione deve avvenire sempre con lo stesso angolo.
Quindi nel caso del quadrato dovrà ruotare di 360/4 ovvero 90 gradi. Nel caso di un esagono dovrà ruotare di 360/6 ovvero 60 gradi e così via.
I passi che dovrà compiere lo sprite sono sempre gli stessi proprio perché trattasi di un poligono regolare.
Ecco il semplice script che ho realizzato.
Chiaramente ci possono essere tanti altri modi per realizzare questo algoritmo, proponete pure la vostra nei commenti sotto.
In questa lezione implementeremo un semplice algoritmo per la ricerca di elementi uguali in un array.
Per implementare questo algoritmo utilizziamo le funzioni che poi richiameremo nella funzione principale main.
Quindi realizziamo una prima funzione che permette l’inserimento dei numeri interi nell’array.
Dopo implementiamo una funzione per la stampa degli elementi dell’array.
Poi implementiamo la funzione di ricerca che quando individua elementi uguali li visualizza in output.
Ricerca di elementi uguali in un array – Procedimento
La ricerca funziona in questo modo:
Si prende il primo elemento e si confronta con il secondo, dopo con il terzo e così via fino all’ultimo.
Dopo si prende il secondo elemento e si confronta con il terzo, e così via fino all’ultimo.
Si procede fino al penultimo elemento che verrà confrontato solo con l’ultimo.
Al termine si confronta la variabile che tiene traccia del conteggio e si visualizza in output il messaggio opportuno.
Ecco dunque il listato completo in linguaggio C dell’algoritmo per la ricerca di elementi uguali in un array.
#include <stdio.h>
#include <stdlib.h>
//Ricerca di elementi uguali in un array
#define MAX 100
int insert_array(int a[]){
int i, n;
printf("quanti elementi vuoi inserire?:");
scanf("%d", &n);
for(i=0;i<n;i++) {
printf("inserisci elemento %d:", i);
scanf("%d", &a[i]);
}
return(n);
}
int stampa_array(int a[], int n){
int i;
for(i=0;i<n;i++) {
printf("%d\t", a[i]);
}
return;
}
//ricerca elementi uguali
int ricerca_uguali(int a[], int n){
int i, j, f;
f=0;
for(i=0;i<n-1;i++) {
j=i+1;
while((j<n) && (f==0)) {
if(a[i]==a[j]) {
printf("\nelementi uguali trovati: %d \t%d", a[i], a[j]);
f+=1;
}
j++;
}
}
if(f==0)
printf("\nnon ci sono uguali");
else
printf("\nci sono uguali");
return;
}
int main(){
int n, a[MAX];
n=insert_array(a);
stampa_array(a, n);
ricerca_uguali(a, n);
}
Chiaramente questo è solo un semplicissimo esempio,, più avanti proporrò altri esercizi sugli array.
In questo tutorial realizziamo un algoritmo che crea due array con i numeri pari e dispari rispettivamente.
Scrivere un programma che, dato un vettore di interi, ne produca due contenenti, rispettivamente, i numeri pari e dispari del vettore iniziale.
Algoritmo che crea due vettori: uno con i numeri pari e uno con i dispari
Creiamo la funzione insert_array che si occupa di inserire gli elementi nell’array. Poi creiamo la funzione stampa_array che si occupa di stampare gli elementi dell’array. Infine creiamo la funzione array_divisi che si occupa di creare e successivamente stampare due array, uno che contiene i numeri pari e l’altro che contiene i dispari.
Nel main richiamiamo dunque le funzioni invocate.
Ecco quindi il listato completo:
#include <stdio.h>
#define MAX 100
int insert_array(int a[]) {
int i, n;
printf("elementi?:");
scanf("%d", &n);
for(i=0;i<n;i++) {
printf("elemento %d:", i);
scanf("%d", &a[i]);
}
return(n);
}
void stampa_array(int a[], int n) {
int i;
for(i=0;i<n;i++)
printf("\t%d", a[i]);
}
void array_divisi(int a[], int p[], int d[], int n) {
int i, j=0, k=0, s, t;
for(i=0;i<n;i++) {
if (a[i]%2==0) {
p[j]=a[i];
j++;
}
else
{
d[k]=a[i];
k++;
}
}
printf("\narray pari");
stampa_array(p,j);
printf("\narray dispari");
stampa_array(d,k);
}
int main() {
int a[MAX], p[MAX], d[MAX];
int n;
n=insert_array(a);
stampa_array(a,n);
array_divisi(a,p,d,n);
}
In questo semplice algoritmo abbiamo semplicemente creato due array con i numeri pari e dispari, rispettivamente.
In quest’articolo vedremo come creare un array di numeri positivi.
Chiediamo l’inserimento dei numeri in un array e se si inserisce un numero negativo, si richiede nuovamente l’inserimento.
Ecco il listato che rappresenta l’inserimento in un array di numeri positivi.
#include <stdio.h> int insert_array(int a[]) { int i; for(i=0;i<10;i++) { printf("inserisci il numero in posizione %d:", i); scanf("\t%d", &a[i]); while(a[i]<0) { printf("il numero non è positivo inserisci nuovamente il numero in posizione %d:", i); scanf("\t%d", &a[i]); } } } int stampa_array(int a[]) { int i; for (i=0;i<10;i++) printf("\t%d", a[i]); } int main() { int n, a[10]; insert_array(a); stampa_array(a); }
In questo breve tutorial vedremo un semplice esercizio sugli array.
Scrivere un programma che legge una sequenza di n interi e li memorizza in una array a, ne calcola il quadrato di ciascuno e lo memorizza in una array b, ne calcola il cubo, memorizzandolo in una array c, infine visualizza il contenuto di b e di c.
Ecco dunque il listato completo dell’esercizio sugli array in C:
#include <stdio.h>
#define MAX 100
int insert_array(int a[]) {
int i, n;
printf("quanti elementi vuoi inserire?:");
scanf("%d", &n);
for(i=0;i<n;i++) {
printf("inserisci elemento: %d", i);
scanf("%d", &a[i]);
}
return (n);
}
int stampa_array(int a[], int n){
int i;
for(i=0;i<n;i++)
printf("\t%d", a[i]);
return;
}
int quadrato_cubo(int a[], int n) {
int i;
int b[MAX], c[MAX];
for(i=0;i<n;i++) {
b[i]=a[i]a[i];
c[i]=a[i]a[i]*a[i];
}
printf("\narray b con i quadrati");
stampa_array(b,n);
printf("\narray c con i cubi");
stampa_array(c,n); return;
}
int main() {
int n;
int a[MAX];
n=insert_array(a);
stampa_array(a,n);
quadrato_cubo(a,n);
}
Quello presentato è solo un semplice esempio di sviluppo dell’esercizio sugli array proposto.