Disegnare poligoni regolari con scratch

Disegnare poligoni regolari con scratch

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

disegnare poligoni in 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.

script poligoni scratch

Chiaramente ci possono essere tanti altri modi per realizzare questo algoritmo, proponete pure la vostra nei commenti sotto.

Alcuni link utili

Numeri primi in Scratch

La successione di Fibonacci in Scratch

Massimo fra tre numeri in Scratch

Minimo tra 3 numeri in Scratch

Numeri perfetti con algobuild

Numeri amicabili

Selecion sort in Scratch

Ricerca di elementi uguali in un array

Ricerca di elementi uguali in un array

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.

Alcuni link utili

Indice argomenti linguaggio C

La funzione fopen

La funzione fclose

Funzione fprintf

Funzione fscanf

Allocazione dinamica della memoria con malloc

Strutture in C

Typedef struct in C

Esercitazione sulle struct in C

Realizzare un menù di scelta in C

Strutture complesse in C

Come sommare gli elementi della cornice esterna

Come sommare due matrici

Matrice trasposta

Prodotto tra matrici

Ricerca elementi in una matrice

Tavola pitagorica in C

Array con i numeri pari e dispari

Array con i numeri pari e dispari

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.

Alcuni link utili

Indice argomenti linguaggio C

La funzione fopen

La funzione fclose

Funzione fprintf

Funzione fscanf

Allocazione dinamica della memoria con malloc

Strutture in C

Typedef struct in C

Esercitazione sulle struct in C

Realizzare un menù di scelta in C

Strutture complesse in C

Come sommare gli elementi della cornice esterna

Come sommare due matrici

Matrice trasposta

Prodotto tra matrici

Ricerca elementi in una matrice

Tavola pitagorica in C

Array multidimensionali

Quick sort in C

Selection sort in C

Merge sort in C

Insertion Sort in C

Array di numeri positivi

Array di numeri positivi

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);
}

Link utili:

Array o vettori

Selection sort in C

Merge sort in C

Insertion Sort in C

Esercizio sugli array

Esercizio sugli array

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.

Alcuni link utili

Indice argomenti linguaggio C

La funzione fopen

La funzione fclose

Funzione fprintf

Funzione fscanf

Allocazione dinamica della memoria con malloc

Strutture in C

Typedef struct in C

Esercitazione sulle struct in C

Realizzare un menù di scelta in C

Strutture complesse in C

Come sommare gli elementi della cornice esterna

Come sommare due matrici

Matrice trasposta

Prodotto tra matrici

Ricerca elementi in una matrice

Tavola pitagorica in C

Array multidimensionali

Quick sort in C

Selection sort in C

Merge sort in C

Insertion Sort in C