Algoritmi e Flow-Chart

"Imparare a programmare è imparare a pensare"

( Steve Jobs ).

Algoritmi

La programmazione costituisce una parte fondamentale dell’informatica.

Infatti solo attraverso di essa si apprende la logica che ci permette di comunicare al computer le azioni da effettuare.
Il computer non dispone di una conoscenza a priori e senza il nostro aiuto non è in
grado di svolgere alcuna operazione.

Tutto quello che vogliamo che esso compia deve essere specificato nei minimi dettagli; in altre parole è compito del programmatore trasmettere i termini del problema al computer insieme con le operazioni da eseguire; solo a questo punto l’utente può richiedere alla macchina di svolgere una determinata azione.
Il terminie di algoritmo deriva dal nome di un matematico arabo Al-Khuwarizmi, vissuto nel IX secolo. Quando ci troviamo di fronte ad un problema, tentando di sviluppare un procedimento di soluzione cerchiamo l’algoritmo; cioè

DEFINIZIONE di Algoritmo
 "L’algoritmo è un insieme di operazioni (non solo di natura matematica) che portano alla soluzione di un problema."
L’algoritmo deve possedere caratteristiche di completezza e logicità: deve prevedere
ogni azione necessaria al raggiungimento della soluzione e la sequenza delle
operazioni deve rispettare la logica del problema.

Diagrammi di flusso o flow-chart

 ESCAPE='HTML'

Struttura sequenziale

Esempio di struttura sequenziale

Scriviamo l'algoritmo di un programma che permetta all'utente di inserire i valori di A e B e visualizzi sullo schermo il prodotto dei due numeri.

Algoritmo del prodotto.

Inizio

definiamo  A, B, C di tipo intero

leggi A

leggi B

assegna a C il risultato del prodotto C=A*B

stampa C

fine

Selezione binaria o booleana

selezione-binaria ESCAPE='HTML'

Selezione multipla

selezione multipla ESCAPE='HTML'

Iterazione con controllo di uscita o di coda o do ... while

controllo di coda ESCAPE='HTML'

Cioè: ripeti la sequenza di comandi specificata, finchè condizione non diventa vera

(ripeti…finchè in italiano è ambiguo, perché a volte assume il significato di mentre;

in questo caso invece qui corrisponde all’inglese repeat … until).

In altre parole ripeti le istruzioni dentro le parentesi graffe fintantoche e' verificata la condizione.

Con il do...while il programma viene eseguito almeno una volta perchè la verifica della condizione e' in coda.

Esempio con il do..while

Supponiamo adesso di voler simulare una cassa del supermercato, che chieda di inserire il valore del prodotto comparato, esegue lo sconto del 10 per cento sul totale e visualizza il totale scontato del 10 per cento.

Per far ciò impostiamo il programmo con l'istruzione do...while e terminiamo la somma dei prodotti inserendo lo zero.

Alla fine il programma visualizzera' la somma totale, lo sconto del dieci per cento e il prezzo totale scontato.

Ciclo While o ciclo con controllo di testa

Lo schema di iterazione è uno schema in cui un’azione o un gruppo di azioni
può essere ripetuta un numero di volte finito o infinito. Nella risoluzione di un
problema può essere necessario ripetere un insieme di operazioni elementari
(LOOP = CICLO) fino a quando non si raggiunge una determinata condizione.

while ESCAPE='HTML'

Lo schema di iterazione indefinita (cioè non conosciamo a priori il numero di
ripetizioni necessarie) viene anche detto con controllo di testa o con controllo di
entrata. In questo caso se all’inizio del ciclo la condizione è subito FALSA il ciclo
non viene mai eseguito. Esso ha il seguente schema:

struttura while ESCAPE='HTML'

Esempio con il while

Questo programma stampa a video tutti i numeri compresi tra zero e dieci attravero un ciclo while. 

Un ciclo while e' anche detto ciclo con controllo di testa, in quanto la condizione del test ,cioe' la condizione del while , e' inserita in testa alle istruzioni contenute nelle parentesi graffe del ciclo while.

Questo ciclo si differenzia dal ciclo DO..WHILE  ( cioe' con controllo di coda) perche' in questo caso se la condizione del test e' subito falsa il programma non viene mai esesguito.

Output del programma della media con il while

La funzione gotoxy

Il software dev C non ha tutte le istruzioni che aveva il turbo C della Borland.

Per i nostalgici di questa funzione dico che è possibile utilizzarla ancora se scriviamo una nuova funzione con il dev C ed eventualmente la salviamo nella nostra libreria personale e la richiamiamo tutte le volte che vogliamo. Come si realizza una libreria personale verrà trattato in un altro modulo all'interno di questo sito.

Scriviamo quindi la funzione

gotoxy(int column, int line)

per muovere le scritture sullo schermo.

Questa funzione e' molto utile per abbellire la nostra console di uscita o il nostro output.

Vediamo il seguente programma che visualizza tre scritture posizionate in tre coordinate distinte che possiamo variare a piacere:

 

#include<stdio.h>
#include<conio.h>
#include<windows.h>
#include<dos.h>

using namespace std;

void gotoxy( int column, int line ) {
COORD coord;
coord.X = column;
coord.Y = line;
SetConsoleCursorPosition( GetStdHandle( STD_OUTPUT_HANDLE ), coord);
}

main() {
gotoxy(15,10);
cout<<"Elettronicadoc";
gotoxy(30,14);
cout<<"Elettronicadoc";
gotoxy(15,20);
printf("GRAZIE A TUTTI I FANS DI ELETTRONICADOC");
getch();
}

Altro metodo per realizzare la funzione gotoxy in Dev C++

Eseguiamo adesso un altro metodo per utilizzare la funzione gotox,y del vecchio C della borland, utilizzando il software Dev C++.

Scriviamo quindi due scritte con la funzione printf spostandoci nelle coordinate dichiarate dalla funzione gotoxy.

 

#include<stdio.h>
#include<windows.h>
#include<stdlib.h>
#include<conio.h>

void gotoxy(int x, int y) {
                for (int i = 0; i < y; i++) {
                printf("\n");
                }
                for (int i = 0; i < x; i++) {
                printf(" ");
                }
                }
main()
{     gotoxy(20,10);
      printf("CIAO A TUTTI");
      gotoxy(30,5);
      printf("da Elettronicadoc");
      getch();
      }

L'output in uscita del precedente programma e' il seguente:

Introduciamo il colore sulla schermata.

Coloriamo lo schermo con il Dev C++.

Programma svolto in Dev C++

Vediamo adesso come scrivere un programma che visualizzi la scritta ITIS con sfondo e testo di colore diverso

#include <stdio.h>
#include <conio.h>//per l'istruzione getch()
#include <stdlib.h>//per l'istruzione system
main()
{

system("color 2a"); //colore verde sfondo e verde chiaro testo
 
  printf("\n\n\n\n\n\n\n");
  printf("\t\tXX  XXXXXX   XX     XXX   \n");
  printf("\t\tXX    XX     XX    X      \n");
  printf("\t\tXX    XX     XX    X      \n");
  printf("\t\tXX    XX     XX    X      \n");
  printf("\t\tXX    XX     XX     XXX   \n");
  printf("\t\tXX    XX     XX        X  \n");
  printf("\t\tXX    XX     XX        X  \n");
  printf("\t\tXX    XX     XX        X \n");
  printf("\t\tXX    XX     XX     XXX   \n");
  printf("\n\n\thttp:\\www.elettronicadoc.altervista.org");
  getch();
  system("cls");
 
  system("color 2e");//colore verde sfondo e giallo testo
 
  printf("\n\n\n\n\n\n\n");
  printf("\t\tXX  XXXXXX   XX     XXX   \n");
  printf("\t\tXX    XX     XX    X      \n");
  printf("\t\tXX    XX     XX    X      \n");
  printf("\t\tXX    XX     XX    X      \n");
  printf("\t\tXX    XX     XX     XXX   \n");
  printf("\t\tXX    XX     XX        X  \n");
  printf("\t\tXX    XX     XX        X  \n");
  printf("\t\tXX    XX     XX        X \n");
  printf("\t\tXX    XX     XX     XXX   \n");
  printf("\n\n\thttp:\\www.elettronicadoc.altervista.org");
  getch();

}