Guida alla Programmazione generale (indirizzata verso il C#)
di
Ultima.
-Introduzione
Questa guida servirà ad apprendere le fondamenta fondamentali ( XD ) di più o meno tutti i linguaggi di programmazione. Sarà basata all'unione di tante altre guide trovate su internet e a quello che sono riuscito ad apprendere nell'ultimo anno e mezzo di programmazione. Anche se sarà indirizzato verso il C# (altrimenti non l'avrei messo in questa sezione) le informazioni saranno utili per capire bene l'inizio di qualsiasi linguaggio di programmazione. Inizialmente potrete pensare che queste non siano informazioni molto utili, ma non è così.. al contrario delle altre guide del forum, non si farà da subito pratica, ma ci saranno circa 4 o 3 lezioni di teoria generale (come questa appunto). Vi chiedete il perchè?
Semplice, esistono tanti linguaggi di programmazione e molte persone ne hanno scritte delle guide per apprenderli, ma queste persone danno più o meno per scontato che voi conosciate queste informazioni di base, come ad esempio cosa sono blocchi e iteratori o le condizioni o molte altre cose.. si potrebbe fare il paragone anche con la geometria in cui ad esempio avendo la definizione del quadrato devi sapere anche quella dei poligoni e quindi degli angoli e dei lati e ancora delle linee spezzate e delle semirette fino ad arrivare agli enti primitivi.
Nel corso di queste lezioni apprenderete in forma essenziale il linguaggio C# e le basi di tutti i linguaggi come (almeno credo) si dovrebbero studiare a scuola ( si dovrete studiare per apprenderli, mi dispiace XD)
Senza perdere altro tempo, scordate momentaneamente TUTTO ciò che sapete sulla programmazione e iniziamo con la prima lezione: Gli algoritmi. :D
-Problemi e Algoritmi
L'algortimo descrive una serie di azioni che risolvono un problema.
Bene detto così, non si capisce molto bene, quindi cerchiamo di scendere ai particolari.
Un problema, come sapete, è un quesito a cui si dà una risposta. Quindi esistono dei dati sconosciuti o una domanda e il problema viene risolto quando si trovano quei dati o si risponde alla domanda. Per arrivare a questo stato bisogna agire su determinati oggetti ( come il telecomando per il problema di accendere una tv). Di conseguenza in un problema ci sono:
-una situazione iniziale
-una situazione finale (quella che si vuole ottenere)
-delle azioni che servono a raggiungere il proprio scopo
Ecco qualche esempio:
Spoiler
Come si può vedere la soluzione nella vita reale è rappresentata dallo scenario finale.Nell'ambito della programmazione invece la soluzione è rappresentata dalle azioni. Queste azioni sono definite dall'algoritmo.
Quindi si può dire che
la soluzione di un problema è l'algoritmo che descrive le azioni necessarie per passare dalla situazione iniziale a quella desiderata (finale)
Più precisamente l'algoritmo non descrive la soluzione a un problema specifico ma ad una classe di problemi
Il concetto di classe di problemi implica la distinzione tra problemi generali e problemi specifici.
Un esempio di problema specifico può essere questo: << 6x -4= 0 >> la cui soluzione è ovviamente <
Il 2° problema è quindi il problema generale di cui il 1° problema è un problema specifico.
É importante creare degli algoritmi per problemi generali che l'esecutore eseguirà in relazione a un problema specifico appartenente alla stessa classe di problemi per la quale l'algoritmo è stato proggettato.
-Soggetto ideatore e Soggetto esecutore
Presi in considerazione un problema e un algoritmo è necessario capire che c'è una grande differenza fra il soggetto esecutore e il soggetto ideatore. Infatti il primo indica l'entità che esegue alla lettera le azioni descritte nell'algoritmo sugli oggetti senza saperne lo scopo e il secondo rappresenta colui che crea l'algoritmo.
Di conseguenza esistono due tipi di processi:
-processo di risoluzione attraverso cui il soggetto esecutore preoduce l'algoritmo che rappresenta la soluzione al problema
- processo di esecuzione in cui il soggetto esecutore esegue le azioni descritte nell'algoritmo
In poche parole, il soggetto ideatore è il programmatore e il soggetto esecutore è la macchina. Per questo il soggetto esecutore ha bisogno di una lista di azioni che soddisfano dei requisiti:
-devono essere messe in ordine, l'esecutore deve sapere sempre quali sono inizio e fine dell'algoritmo e sapere qual è la prossima azione da svolgere
-le istruzioni non devono essere ambigue, ossia, la macchina deve sapere che tipo di azioni svolgere e su quali oggetti
-l'esecutore deve saper eseguire le istruzioni
Un esempio di istruzione che non deve essere assegnata può essere quindi la seguente:
-dai ad n eroe quanti HP vuoi
-Schema di riepilogo
Essendo giunti quasi alla fine della prima (e abbastanza scarna) lezione ecco uno schema di riepilogo:
-c'è uno stato iniziale in cui gli oggetti si trovano in un certo stato
-il soggetto ideatore attraverso il processo di risoluzione dà le istruzioni al soggetto esecutore
-il soggetto esecutore manipola gli oggetti descritti nello stato iniziale seguendo le istruzioni dell'algoritmo
-attraverso il processo di esecuzione gli oggetti ottengono lo stato desiderato (situazione finale)
Bene non vi lascio esercizi (anche perchè non me ne vengono in mente di particolari) e se avete domande potrete postarle e io o chiunque altro sappia la risposta cercheremo di rispondervi. :D
















