[Focus] Metodi di programmazione: l'algoritmo.

Discussioni su i vari linguaggi di programmazione; da ASP a C++...ecc.…

Moderatore: DialogiK

Rispondi
Avatar utente
DialogiK
Redazione HW Legend
Redazione HW Legend
Messaggi: 1111
Iscritto il: 3 giugno 2011, 18:55
GamerTag: --
ID PSN: --
Ha ringraziato: 0
Sei stato  ringraziato: 0
Contatta:

[Focus] Metodi di programmazione: l'algoritmo.

Messaggio da DialogiK »

#Introduzione
------------------------------------------------
Vi sono differenti metodi di programmazione che ogni sviluppatore usa per creare o definire meglio il codice del software che ha intenzione di creare, che stia lavorando in Java, C++, VB o con altri linguaggi. Generalmente, prima di iniziare a buttare giù il codice, un buon programmatore getta una sorta di pseudo-codice che non è direttamente compilabile o interpretabile e rappresenta degli algoritmi. Quindi, un buon programmatore non deve necessariamente essere bravo a scrivere pseudocodice, bensì a creare algoritmi, metodi di risoluzione di un problema attraverso un numero finito di operazioni logiche. La parola algoritmo deriva dalla latinizzazione del cognome di un matematico persiano, Mohammed al-Khowarizmi, il quale fu uno dei primi ad enunciare regole "passo passo" per svolgere comuni operazioni con i decimali. Dopo una breve parentesi storica, passiamo quindi ad introdurre il concetto di algoritmo

#L'algoritmo
---------------------------------------------
Sono tre i passi fondamentali da seguire nella risoluzione di un problema:

1. Analisi del problema e sviluppo dell'algoritmo, che descrive in un numero finito di operazioni la soluzione al problema posto
2. Codifica dell'algoritmo in un programma scritto in un linguaggio di programmazione, sia esso VB, C++, Java, etc.
3. Compilazione, esecuzione e validazione del programma attraverso uno specifico ambiente di sviluppo.

Nonostante l'algoritmo non dipenda direttamente dal linguaggio usato, non possiamo certamente farne a meno in quanto è solo grazie ad esso che possiamo implementare il codice e senza non riusciremmo a far fare al nostro programma ciò per cui è stato progettato. L'algoritmo ovviamente, non cambierà a seconda del linguaggio usato ed è l'elemento chiave della programmazione ed ha delle precise caratteristiche che passeremo ad elencare qui sotto.
Un algoritmo si compone di tre parti fondamentali che definiamo nel seguente modo: input, processo, output. In tutta la lunghezza delle tre fasi l'algoritmo dovrà conservare le sue caratteristiche fondamentali e dovrà essere:

1. Preciso, ovvero indicare con esattezza la sequenza di ogni passo da effettuare.
2. Deterministico, quindi deve produrre sempre lo stesso risultato ogni volta che viene eseguito.
3. Finito, deve contenere un numero finito di passi ed evitare che durante l'esecuzione vada quindi in errore di runtime.

#Esempi
---------------------------------------------
Di solito l'algoritmo prevede di essere trascritto sottoforma di organigramma e con i blocchi logici ( frecce, riquadri e rombi ), ma quando si tratta di ideare algoritmi di una certa importanza, i blocchi logici non faranno altro che confonderci quindi inizieremo sin da subito ad adottare il modello pragmatico, ovvero un elenco di un numero finito di passi di uno dei più classici problemi: determinare se un numero N è primo oppure no.

Codice: Seleziona tutto

 
1. Inizio
2. Porre x uguale a 2 ( x=2, dove x rappresenta i divisori del numero N preso in esame ).
3. Dividere N per x (N/x ).
4. Se il risultato di N/x è intero, allora N non è un numero primo, quindi andare al punto 7; in caso contrario, continuare ad eseguire il processo.
5. Sommare 1 a x ( x <---- x+ 1 )
6. Se x è uguale a N, allora N è un numero primo; in caso contrario, ritornare al punto 3.
7. Fine.
Vediamo un esempio di come questo algoritmo si possa tradurre in un linguaggio, ed in questo caso scegliamo proprio il C++ con due cicli for annidati: il primo prende il numero immesso dall'utente e lo passa al secondo for che troverà i suoi divisori. Se il numero non ne ha ( ad esclusione di 1 e se stesso ) allora produrrà un output. Volendo possiamo anche scegliere di continuare a calcolare usando altri numeri.

Codice: Seleziona tutto

#include <iostream>
main () {
    using namespace std;
    int fino, div, altro,;
    int num = 1;
    cout << "Fino a quanto vuoi calcolare i numeri primi?" << endl;
    cin >> fino;
    cout << endl;
    for (int j = 1; j < fino; j++) {
        div = 0;
        num++;
        for (int k = 2; k < num; k++) {
            if ((num % k) == 0) {
                    div = 1;
                    break;
            }
        }
        if (div == 0) {
            cout << endl << num;
        }
    }
    cout << endl << endl << "Vuoi ancora calcolare?" << endl;
    cout << "1 = SI" << endl << "2 = NO" << endl;
    cin >> altro;
    if (altro == 1) {
        system("cls");
        main();
    }
    return 0;
}
Lo stesso codice si sarebbe potuto fare usando sempre un ciclo For, ma inserendovi anche il metodo Case e allungando considerevolmente il codice rendendone complicata la comprensione. In questo caso sarebbe bene imparare poche ma semplici ...regole di stile, che esistono per ogni tipo di linguaggio.
Immagine


Regolamento mercatino
Modello base di vendita del mercatino: QUI
Modello base di acquisto nel mercatino:QUI
Trattative concluse con successo: ste.ru, Il Metallurgico, djFrex

Immagine
Rispondi

Torna a “Programmazione”