Pagina degli affiliati | Richiedi affiliazione





mir2017lCymn -- #file_links[c:\XRUMER_info\Projects\Mirprom\005_Google_links_mirprom_all_links.txt,1,NP].   ·   mir2017lCymn -- #file_links[c:\XRUMER_info\Projects\Mirprom\005_Google_links_mirprom_all_links.txt,1,NP].   ·   Ephenepsymn -- Wholesale Jerseys Cheap   ·   Ephenepsymn -- Wholesale NFL Jerseys   ·   Niksiimot -- epistick sverige http://tenderskin.se/skins-dnamic-compress...ick-sverige.php   ·   Ephenepsymn -- Cheap NFL Jerseys China Wholesale   ·   silverlCymn -- êóëîíû ñ òîïàçîì èç ñåðåáðà â ìîñêâå   ·   Ki_rydanov1985 -- ëå÷åáíûé òðåíàæåð áóáíîâñêîãî àìåíêà-Áóãñêàÿ   ·   Svetikbiz -- êèíåçèñ áóáíîâñêèé òðåíàæåð êóïèòü Ãàëè÷   ·   Svetikbiz -- áóáíîâñêèé òðåíàæåðû êóïèòü Èçÿñëàâ   ·   Kirilobiz -- òðåíàæåð îò ãðûæè ïîçâîíî÷íèêà áóáíîâñêîãî Þæíîóêðàèíñê   ·   Ki_rydanov1985 -- òðåíàæåð â äîìàøíèõ óñëîâèÿõ ïî áóáíîâñêîìó Ëóöê   ·   mir2017lCymn -- Àíäðóùåíêîà Âèðèíåÿ   ·   JamesKninC -- êâàðòèðà â áàëàøèõå íà ñóòêè   ·   Milanimef -- free dating   ·  
[ Faccine ]


    Reply to this topicStart new topicStart Poll

 Corso di C++ (Base), by Curti$
Curti$
Inviato il: 23/08/2009, 17:36:52
Quote Post


Offline

Street Racer (e Cestino) ufficiale di Cetramod™

Group Icon

Messaggi 2.292
Utente no 1.260
Iscritto il 04/11/08
Non scrive da 5417 gg
Non si vede da 5296 gg
Ratio 0.29



LIVELLO SPAZZATURA
57.4 ecoballe



Il corso che vi proporrò è tratto dal corso di "Fondamenti di Informatica" (Ingegneria Elettronica) A.A. 2008-2009. Il corso si occuperà di fornire le basi fondamentali della programmazione C++ via via introducendo argomenti sempre più complessi. Verranno spiegati in modo esauriente gli argomenti fondamentali del C++, descrizioni dettagliate e materiale per una maggiore comprensione fornite dal sottoscritto e molto altro ancora

Si ringrazia l'Ing. Luigi P. Cordella dell'Università degli Studi di Napoli - Federico II per gli appunti e programmi svolti in C++

Premessa - La Programmazione

Un programma è un insieme di istruzioni che descrivono la sequenza delle operazioni che un esecutore deve compiere (si dice anche: l'algoritmo che deve essere eseguito) per assolvere un determinato compito
Possiamo raggruppare le istruzioni in tre grandi categorie:
  • Istruzioni di ingresso o uscita (input/output): consentono di acquisire dall'esterno quanto necessario ai fini dell'esecuzione del compito prescritto o di fornire all'esterno i risultati dell'elaborazione eseguita;
  • Istruzioni di elaborazione: descrivono le azioni elaborative (operazioni) da compiere;
  • Istruzioni di controllo di sequenza: consentono di gestire l'ordine in cui le istruzioni vanno eseguite.
Il C++

Inoltre è bene capire cos'è il C++:

Il C++ è un linguaggio di programmazione di alto livello orientato agli oggetti (Object Oriented Programming - OOP), cioè, un linguaggio di programmazione che prevede di raggruppare in un'unica entità (in una classe) sia le strutture dati che le procedure che operano su di esse, creando per l'appunto un "oggetto" software dotato di proprietà (dati) e metodi (procedure) che operano sui dati dell'oggetto stesso. Inoltre è un linguaggio all-purpose (per tutti gli usi)
La traduzione del programma che verrà scritta spetta ai compilatori, che traducono dapprima tutto il programma e poi lo mandano in esecuzione (a differenza degli interpreti che traducono e mandano immediatamente in esecuzione ogni singola istruzione)

In C++ un programma è un insieme di "funzioni". Una funzione è un sottoprogramma che può essere eseguito solo su chiamata di un altro programma. Una funzione può chiamare un'altra funzione o anche se stessa (ricorsione). L'unica funzione che può essere eseguita autonomamente è la funzione main (), che pertanto deve necessariamente essere presente in un programma per poter chiamare ogni altra funzione

Componenti di un programma

I componenti di un programma sono tre:
  • Commenti (documentazione) - rivolti all'utente
  • Dichiarazioni - rivolti al traduttore
  • Istruzioni eseguibili - rivolti all'esecutore
Struttura di programma

Ecco com'è strutturato un programma:

CODE
/*Program nome e scopo. Questo è un commento.*/
Intestazioni: #include<>
Eventuali dichiarazioni globali
Eventuali prototipi di funzioni chiamate nel programma
tipo main ()
{
Dichiarazioni locali
Istruzioni
}
Eventuale seequenza di funzioni, ognuna
tipo nome_funzione1 (lista parametri formali)
{Dichiarazioni locali
Istruzioni}


Nella situazione più semplice (e anche più comune), il tipo del main dovrebbe essere void (vuoto). Questo era possibile con gli standard C++ precedenti, ma non più possibile con l'ultimo standard che richiede l'indicazione di un tipo (di norma int). Se il tipo del main o di una funzione non è void, occorre che le istruzioni siano terminate da un return valore, con valore dello stesso tipo della funzione. Si può anche non assegnare un tipo a main: per default il tipo sarà int. Il return 0 restituisce 0 a main. Se non c'è il return, in compilazione si ha un Warning, ma il programma viene eseguito ugualmente

Le intestazioni di minima sono:

CODE
#include<iostream.h>//Secondo il vecchio standard

#include<iostream>//Secondo il nuovo standard
using namespace std;


Se si lavora in ambiente Dev C++ occorre che l'ultima istruzione del main sia:

CODE
system("PAUSE");//Richiede l'intestazione #include<stdlib.h> secondo sia il nuovo che il vecchio standard


In assenza di questa istruzione, la finestra di lavoro nella quale sono visualizzati i dati di input e di output, verrebbe immediatamente chiusa alla fine dell'esecuzione del programma impedendo di fatto la valutazione dei risultati dell'elaborazione

L'intestazione #include<iostream> e using namespace std; permette di utilizzare l'istruzione cin>> cout<<

cin e cout stanno rispettivamente per console input e console output mentre ">>" e "<<" indica lo stream (flusso) dei dati

cin>> (immettere dati)
cout<< (visualizzare dati)

Dichiarazioni

Sono possibili:
  • Fuori da ogni funzione
  • Entro le funzioni
  • Nelle liste di parametri formali
Dichiaratori di tipo:
  • int (intero)
  • float (reale)
  • double (doppio)
  • char (carattere)
  • bool (booleano)
  • void (vuoto)
Modificatori di tipo:
  • short
  • long
  • signed
  • unsigned
N.B. Per quest'ultimo bisogna conoscere necessariamente la rappresentazione dei numeri nei registri di memoria in un calcolatore con la tecnica fixed point (virgola fissa) e floating point (virgola mobile) con Mantissa ed Esponente. Vi fornirò personalmente degli appunti al riguardo con le relative illustrazioni, perchè per quanto mi possa sforzare di spiegarvi la tecnica non riuscirò ad essere abbastanza comprensibile visto che è anche un concetto abbastanza delicato e di fondamentale importanza per quasi tutti i linguaggi di programmazione orientati agli oggetti

Tipo enumerativo:

CODE
enum tipo {lista identificatori} lista variabili


oppure

CODE
enum tipo {lista identificatori}
tipo lista variabili


Definizione di tipo:

CODE
typedef tipo nuovo_tipo;
nuovo_tipo lista variabili;


Es:
CODE
typedef enum (falso, vero) boolean;
boolean flag


Le istruzioni (costrutti di programmazione) sono ascrivibili a tre classi, a seconda del meccanismo che mettono in essere per controllare la dinamica del programma nel corso dell'esecuzione

Costrutti:
  • Seriali
  • Selettivi
  • Ciclici
Costrutti Seriali

Istruzioni di I/O (si legge AI/O):

CODE
cin>>lista di variabili
cout<<lista di variabili o stringa di caratteri


QUOTE
cin e cout stanno rispettivamente per console input e console output mentre ">>" e "<<" indica lo stream (flusso) dei dati

cin>>   (immettere dati)
cout<< (visualizzare dati)


Video tutorial - Basic Input and Output -> Si ringrazia XoaX.net per il video tutorial

Istruzioni di calcolo e assegnazione:

La forma tipica è:

CODE
variabile=espressione


"variabile" ed "espressione" sono due registri di memoria. L'istruzione dice di copiare nel registro "variabile" il valore contenuto nel registro "espressione"

Istruzioni di chiamata di sottoprogrammi (funzioni)

Sono possibili espressioni di ognuno dei tipi definiti. In esse possono figurare i seguenti operatori:

int -> + - * / % ++ --
float e double -> + - * /
char -> è trattabile come intero
bool -> ! && ||
di relazione -> > < >= <= == !=

Precedenze fra operatori

! (> >= < <=) (== !=) && || (++ --) (* / %) (+ -)

Compatibilità fra tipi diversi
Conversione automatica: regola di dominanza double, float, int, char
Il tipo bool è comunque trattato come intero

Casting: es, (float) var

Esempi:

Secondo il vecchio standard (Dev4.01), si poteva scrivere come segue:

CODE
/*Il primo programma*/
#include<iostream.h>
#include<stdlib.h>
void main()
{
cout<<"Questo e\' il mio primo programma";
system("PAUSE");
}


Prova
Questo e' il mio primo programma Premere un tasto per continuare

Secondo l'ultimo standard C++ (Dev 5) le intestazioni debbono scriversi nella forma mostrata di seguito:

N.B. Il tipo del main non può essere void. I nomi di alcuni file di intestazione, se facenti parte della libreria C++, debbono essere preceduti dalla lettera c. Gli analoghi file della libreria C possono però essere inclusi con la notazione del vecchio standard

Si può perciò scrivere:

CODE
/*Il primo programma*/
#include<iostream>
#include<cstdlib>
int main()
{
cout<<"Questo e\' il mio primo programma";
system("PAUSE");
return 0;//Restituisce valore 0 al main perchè di tipo int
}


oppure:

CODE
/*Il primo programma*/
#include<iostream>
using namespace std;
#include<stdlib.h>
int main()
{
cout<<"Questo e\' il mio primo programma";
system("PAUSE");
return 0;
}


Il compilatore dell'ambiente Dev5-C++ aderisce al nuovo standard, quindi d'ora in poi ci si adeguerà al formalismo del nuovo standard C++, ma per semplicità, useremo le librerie del C ovunque possibile. Scriveremo quindi:
#include<stdlib.h> e non #include<cstdlib>
ma
#include<iostream>
using namespace std;
e non:
#include<iostream.h> (che non sarebbe accettato dal Dev5)

Download Dev-C++

D'ora in avanti possiamo cominciare a sviluppare i nostri primi programmi in C++. Per il Download del compilatore andate a questa pagina

Il nostro primo vero programma

Premessa

D'ora in avanti entreremo nel vivo della programmazione realizzando i nostri primi programmi in C++. Un buon programmatore deve associare alle proprie conoscenze informatiche l'ingegno per la risoluzione di qualsiasi problema. Ciò per dire che bisogna usare la testa nella programmazione, perchè senza di essa non si va da nessuna parte biggrin.gif

Ecco come si presenta il compilatore

User posted image

Per creare il file sorgente basta cliccare sul foglio cerchiato in rosso nell'immagine (o in alternativa Ctrl+N). Prima però andate su Strumenti->Opzioni dell'Editor andate su Mostra e spuntate la casella Numeri di Linea. Così se il compilatore vi rileverà un errore nel codice vi segnalerà anche il rigo in cui si trova l'errore così da facilitarvi la correzione wink.gif

Programma che risolve un sistema di due equazioni in due incognite

Vi riporterò il codice del programma per poi spiegarvi per filo e per segno ogni singolo passaggio. Potete fare copia-incolla dal tag Code e copiarlo sul vostro compilatore così potrete anche eseguirlo, l'importante è capire il procedimento wink.gif

CODE
/*Program sistema di due equazioni in due incognite*/
/*Prima versione: attenzione! Questo programma potrebbe non funzionare correttamente per motivi che spiegheremo in seguito*/

//Intestazioni di minima

#include<iostream>
using namespace std;
#include<stdlib.h>

int main()
{

//Dichiarazioni

float a,b,c,d,e,f; //Variabili di input
float x,y; //Variabili di output

cout<<"Assegna valore ad a,b,c,d,e,f\t";
cin>>a>>b>>c>>d>>e>>f; //Assegna valore alle variabili da console

x=(c*e-b*f)/(a*e-b*d); //Algoritmo risolutivo
y=(a*f-c*d)/(a*e-b*d); //Algoritmo risolutivo

cout<<"Il valore di x e/':"<<x<<endl;
cout<<"Il valore di y e/':"<<y<<endl;

system("PAUSE");
return 0;
}


Prova

Assegna valore ad a,b,c,d,e,f
2 4 6
1 3 5
Il valore di x e':-1
Il valore di y e':2

Si noti che la fase di analisi che ha preceduto il progetto del programma non è stata condotta adeguatamente. Non si è tenuto conto della possibilità che il determinante dei coefficienti sia nullo. Pertanto il programma non funziona correttamente per qualsiasi insieme di dati in ingresso

I caratteri "/*" e "*/" servono per inserire dei commenti abbastanza lunghi (solitamente quelli che superano più di un rigo) e il commento va interposto tra /* e */

CODE
/*Questo è il mio primo
programma*/


mentre il doppio slash "//" è valido solo per un rigo, e se si vuole "invadere" il rigo seguente è necessario ripetere il doppio slash

CODE
//Questo è il mio primo
//programma


Ricordo che i commenti non sono visti dal compilatore, ma servono esclusivamente all'utente, quindi potete scriverci quello che volete senza subire ritardi nella compilazione e di conseguenza senza peggiorare il costo computazionale e la presentazione dei dati di output

Ritornando al programma possiamo notare le intestazioni di minima che consentono di utilizzare i costrutti seriali cin e cout e l'inclusione delle librerie standard del C++

Dopo le intestazioni inseriamo la funzione main, indispensabile per poter chiamare qualsiasi altra funzione (il concetto di funzione verrà ripreso più in là nel corso)

Fatto ciò passiamo alle dichiarazioni delle variabili di input assegnandone un tipo (float). Col tipo float possiamo assegnare in ingresso numeri reali (con la virgola per intenderci), se invece le avevamo dichiarate di tipo int potevamo immettere in ingresso solo numeri interi

Dapprima tramite il cout digitiamo l'istruzione che l'utente dovrà eseguire, e poi tramite il cin immettiamo i valori alle singole variabili

Poi troviamo l'algoritmo risolutivo, ovvero, il cuore del programma, quello che ci permette di risolvere il problema. L'algoritmo è la chiave di tutti i programmatori, più esso è sintetizzato e migliore sarà il programma e migliore sarà il suo costo computazionale

Infatti l'algoritmo

CODE
x=(c*e-b*f)/(a*e-b*d);
y=(a*f-c*d)/(a*e-b*d);


può essere raffinato (vedremo poi come)

Una volta eseguito l'algoritmo bisogna rappresentare sulla finestra di output i dati ricavati dal programma tramite il cout (vedi programma)

N.B. Nel C++ vengono utilizzati alcuni codici per rendere più comprensibile il programma in fase di output:

\t carattere di tabulazione: stessa funzione del TAB
\n carattere di accapo (oppure cout<<endl;): permette di andare a capo
per scrivere la "e'" (verbo) è necessario interporre tra la "e" e l'accento " ' " uno slash altrimenti non verrà rilevato dal compilatore come carattere ASCII (vedi programma)

Per compilare il programma andate su Esegui->Compila, scegliete dove compilare il programma e in caso di esito positivo (programma privo di errori sintattici) verrà creato l'eseguibile. Per eseguire il programma andate su Esegui->Esegui

Programma che risolve un sistema di due equazioni in due incognite (versione migliorata)

Vediamo come migliorare il precedente programma per quanto riguarda il costo computazionale

CODE
/*Program sistema di due equazioni in due incognite*/
/*Seconda versione: attenzione! Questo programma potrebbe non funzionare correttamente per motivi che spiegheremo in seguito*/

//Intestazioni di minima

#include<iostream>
using namespace std;
#include<stdlib.h>

int main()
{

//Dichiarazioni

float a,b,c,d,e,f; //Variabili di input
float x,y; //Variabili di output
float det; //Determinante

cout<<"Assegna valore ad a,b,c,d,e,f\t";
cin>>a>>b>>c>>d>>e>>f; //Assegna valore alle variabili da console

det=(a*e-b*d);

x=(c*e-b*f)/det; //Algoritmo risolutivo
y=(a*f-c*d)/det; //Algoritmo risolutivo

cout<<"Il valore di x e/':"<<x<<endl;
cout<<"Il valore di y e/':"<<y<<endl;

system("PAUSE");
return 0;
}


Ecco il programma, stavolta migliorato per quanto riguarda il costo computazionale

Non abbiamo fatto altro che dichiarare una variabile det, assegnando a questa variabile il determinante dell'equazione. Poichè il determinante dell'equazione compare in entrambe le istruzioni possiamo migliorare il programma mettendo in evidenza il polinomio (a*e-b*d) così da semplificare la traduzione al compilatore

N.B. Quando si introducono nuove variabili nel programma ricordate sempre di dichiararle! La dichiarazione di una variabile in C++ non fa altro che riservare in memoria un registro, e questo registro verrà poi "riempito" da un valore numerico (o carattere) a seconda delle esigenze del programmatore

Questo lavoro verrà fatto in automatico dal compilatore, però è bene capire il procedimento wink.gif

Si noti che la fase di analisi che ha preceduto il progetto del programma non è stata condotta adeguatamente. Non si è tenuto conto della possibilità che il determinante dei coefficienti sia nullo. Pertanto il programma continua a non funzionare correttamente per taluni insiemi di dati in ingresso. Il programma è stato invece migliorato per quanto riguarda il costo computazionale e la presentazione dei dati di output

Programma che risolve un sistema di due equazioni in due incognite (versione completa)

Prima di svolgere il programma è necessario introdurre un nuovo costrutto che sarà d'ora in poi onnipresente in quasi tutti i programmi che tratteremo in questo corso

Costrutti selettivi

IF..THEN (o semplicemente IF)

CODE
if (espressione)
{
Blocco;
}
Seguito programma


Ovvero, se (IF tradotto in italiano) è verificata l'espressione tra parentesi, esegui il blocco di istruzioni (Blocco), in caso contrario salta l'istruzione IF e prosegui con il programma

IF..THEN..ELSE (o semplicemente IF..ELSE)

CODE
if (espressione)
{
Blocco 1;
}
else
{
Blocco 2;
}
Seguito programma


Ovvero, se (IF tradotto in italiano) è verificata l'espressione tra parentesi, esegui il blocco 1 e prosegui con il programma saltando l'ELSE, altrimenti (ELSE tradotto in italiano) esegui il blocco 2 e poi prosegui con il programma

Blocco è una sequenza di istruzioni. In ogni caso, se Blocco è costituito da una singola istruzione, le parentesi graffe che lo delimitano si possono eliminare

espressiome è in linea di principio una espressione booleana o di relazione, cioè suscettibile di assumere valore booleano. Per la chiarezza del programma è opportuno attenersi a questa regola. In pratica, per il modo in cui è definito il tipo booleano in C++, qualsiasi espressione aritmetica lecita nel linguaggio potrebbe essere usata, assumendo come valori booleani lo 0 (false) e ogni valore diverso da 0 (true) (vedi algebra di Boole)

Video tutorial - Costrutto If, Else If, Else -> Si ringrazia XoaX.net per il video tutorial

Ecco riportata la versione definitiva del programma che risolve un sistema di due equazioni in due incognite

CODE
/* Program sistema di due equazioni in due incognite */
/* Terza versione: versione definitiva con esempio d'uso del costrutto if..else */

//Intestazioni di minima

#include<iostream>
using namespace std;
#include<stdlib.h>

int main()
{

//Dichiarazioni

float a,b,c,d,e,f; //Variabili di input
float x,y; //Variabili di output
float det; //Variabile di algoritmo

cout<<"Assegna valore ad a,b,c,d,e,f\t";
cin>>a>>b>>c>>d>>e>>f; //Assegna valore alle variabili da console

det=(a*e-b*d); //Calcolo del determinante del sistema
if (det!=0) /* Se il determinante è diverso da 0, quindi ammette soluzioni, esegui il calcolo delle soluzioni */
{ //Calcolo soluzioni
x=(c*e-b*f)/det; //Algoritmo risolutivo
y=(a*f-c*d)/det; //Algoritmo risolutivo

cout<<"Il valore di x e/':"<<x<<endl; // Manda il risultato delle soluzioni
cout<<"Il valore di y e/':"<<y<<endl; // in output da console
}
else // Altrimenti, il caso opposto al precedente, ovvero, se det è uguale a 0
/* Caso soluzioni inesistenti */
cout<<"\n Il sistema non ammette soluzioni (det=0)"; /* Manda in output il seguente messaggio per avvertire all'utente che il sistema non ammette soluzione (det=0) */

system("PAUSE"); /* Blocca la schermata di output (quella nera per intenderci) per prendere nota dei risultati dell'elaborazione */
return 0; // Restituisce al main valore 0
}


Ora il programma funziona correttamente per ogni insieme di dati in ingresso. Il programma è anche stato migliorato per quanto riguarda la documentazione

PROVE

Assegna valore ad a,b,c,d,e,f
2 4 6
4 2 8

Il valore di x è: 1.66667
Il valore di y è: 0.666667


Assegna valore ad a,b,c,d,e,f
2 1 5
8 4 6

Il sistema non ammette soluzioni (det=0)

Programma massimo fra tre

Il programma che andremo a trattare a breve si occuperà di individuare, dati tre valori in input, il massimo fra i tre con il semplice utilizzo del costrutto IF

Vediamo come sarà strutturato il codice:

CODE
/* Program max_fra_tre (esempio d'suo del costrutto if) */

//Intestazioni di minima

# include <iostream>
using namespace std;
#include <stdlib.h>

int main()
{
float a,b,c; //Variabili di input
float max; //Variabile di output

cout<<"Assegna valore ad a,b,c\t";
cin>>a>>b>>c;

max=a; //Pongo nel registro "max" il valore della variabile assunta da "a"

if(b>max) //Confronto max (cioè "a") con b
{
max=b; //Pongo nel registro "max" il valore contenuto nel registro "b"
} //End if

if(c>max) //Confronto max (cioè "a" o "b") con c
max=c; //Pongo nel registro "max" il valore contenuto nel registro "b"

cout<<"\nIl massimo valore è: "<<max; //Stampo su console il valore di "max"

system("PAUSE");
return 0;
} //End main


PROVA

Assegna valore ad a,b,c
2.3
4.5
1.7

Il massimo valore è: 4.5

Passiamo all'analisi del programma

Abbiamo dichiarato tre variabili di tipo float (il programma prevede di individuare il massimo fra tre) che saranno le nostre variabili di input che verranno inserite da console e una variabile "max" che conterrà il massimo valore tra i tre

L'algoritmo da utilizzare è il seguente: parto nel caso in cui la variabile "a" è quella che ha il valore massimo, quindi copio nel registro "max" il valore contenuto nel registro "a" (potete scegliere arbitrariamente il valore da inserire in "max")
Poi tramite il costrutto IF effettuo una serie di confronti che determineranno il massimo fra i tre

CODE
if(b>max)
{
max=b;
}


Che viene tradotto così:
SE b>max, ovvero, se il contenuto del registro "b" è maggiore di quello di "max" (che contiene inizialmente il valore di "a") copia nel registro "max" il valore contenuto nel registro "b" poichè risulta essere maggiore di quello di "a", in caso contrario salta l'IF e prosegui con il programma

N.B. Nell'istruzione precedente le parentesi graffe che delimitano il costrutto IF possono essere eliminate perchè contengono un'unica istruzione (come già precisato all'inizio del corso)

Passiamo all'istruzione successiva

CODE
if(c>max)
max=c;


Ora in "max" sarà contenuto il maggiore tra "a" e "b" (dipendente dai valori assegnati in input da console), quindi passiamo al successivo confronto con "c" per determinare chi tra i tre risulta essere il maggiore. Ciò viene tradotto:
SE c>max,ovvero, se il contenuto del registro "c" è maggiore di quello di "max" (che contiene il valore di "a" o di "b" a seconda dell'assegnazione in input), copia nel registro "max" il valore di "c" poichè risulta essere maggiore del valore contenuto da "max", in caso contrario salta l'IF e prosegui con il programma

N.B. Si può notare che le parentesi graffe che delimitano lIF nell'ultima istruzione sono praticamente assenti per motivi sopraccitati

CODE
cout<<"\nIl massimo valore è: "<<max;


Stampa su console il valore di "max", che in definitiva corrisponde al massimo valore tra le variabili a, b e c

Avviso

Per QUALSIASI dubbio non esitate a chiedere in questo topic o a contattarmi in privato wink.gif

Non appena possibile realizzerò la seconda parte del corso, forse la più interessante riguardante la realizzazione di semplici programmi aritmetici con il Dev-C++. Ogni passaggio e frammento di codice verrà commentato opportunamente per rendervi la vita quanto più facile possibile

Quindi restate sintonizzati adminpower.gif

Da Cetramod per ora è tutto...Curti$...Napoli...a voi in studio glop.png

Messaggio modificato da Curti$ il 28/08/2009, 17:27:05




Si vis pacem, para bellum

user posted image
PMEmail PosterUsers WebsiteMSN
Top
bringhate
Inviato il: 24/08/2009, 10:50:26
Quote Post


Offline

Modder, Figologo e Tessitore Di Cassate Ufficiale

Group Icon

Messaggi 1.669
Utente no 779
Iscritto il 12/01/08
Non scrive da 5415 gg
Non si vede da 2496 gg
Ratio 0.2



REPUTAZIONE
59.76 pt



Questi sono gli appunti che mi avevi detto nell'altro topic no?




PMEmail PosterICQMSN
Top
Curti$
Inviato il: 24/08/2009, 11:59:32
Quote Post


Offline

Street Racer (e Cestino) ufficiale di Cetramod™

Group Icon

Messaggi 2.292
Utente no 1.260
Iscritto il 04/11/08
Non scrive da 5417 gg
Non si vede da 5296 gg
Ratio 0.29



LIVELLO SPAZZATURA
57.4 ecoballe



No, questa è solo una panoramica del C++, serve solo per dare un'idea di com'è la sintassi del C++ infatti è stata fatta completamente da me smile.gif

Oggi svilupperò la seconda parte prendendo spunto dagli appunti, comincerò a sviluppare i primi programmi in C++ e li commenterò a dovere

Gli appunti che ho in se per se già sono semplificati, ma io li semplificherò ulteriolmente, quindi se sei interessato ti consiglio di seguire questo corso

Ovviamente c'è bisogno di sapere un bel pò di cose teoriche al riguardo, come l'organizzazione della memoria nei calcolatori elettronici (stack), le varie operazioni che si possono fare su di esso (di push e di pop), record di attivazione, funzioni, aritmetica dei puntatori e molte altre cose

Se vi sfugge qualcosa sarò lieto di aiutarvi, perchè questo corso può rivelarsi davvero una mano santa per chi decide di cimentarsi in questo linguaggio di programmazione wink.gif




Si vis pacem, para bellum

user posted image
PMEmail PosterUsers WebsiteMSN
Top
Orichalcon
Inviato il: 24/08/2009, 13:50:26
Quote Post


Offline

Warning-man ufficiale di Cetramod

Group Icon

Messaggi 563
Utente no 1.540
Iscritto il 08/05/09
Non scrive da 5417 gg
Non si vede da 5377 gg
Ratio 0.08



REPUTAZIONE
67.55 pt



Curt....secondo me dovresti mettere uno screen di un file scritto in C++...e poi spiegare (in "gergo" preferibilmente) con qualcosa che funzia...perche fino a qui non ci ho capito molto...

se mettiamo ad esempio:

QUOTE
;R-Cube Menu File

;

;author: Rich Whitehouse (modified by Orichalcon)

;description: intro menu stuff





menu

{

name  "titlescreen"

x  "0"

y  "0"

w  "854"

h  "480"

texture  "assets/menus/textures/main_backdrop"

drawtype "TitleScreen"

ratiocorrect "1"

}

cosa signifa tutto questo? e le XYZ??come interagiscono con gli object??
e come mai nel secondo ; non ce scritto niente??(dovesse indicare il tipo di file giusto??che tu hai detto che ci deve essere scritt qualcosa).....

e cosa in effetti va scritto per costruire un programma? e come si fa ad una texture ordinare un movimento? o si fa in altro modo?.....

Scusa le domande stupide..... XD.gif (P.S. come mai in Linux riesco ad aprire un file scritto in C++ con il notepad,ad editarlo, e che questo rimanga funzionante??mentre su Win mi serve VS200- ??)




user posted image
PMEmail PosterMSN
Top
Curti$
Inviato il: 24/08/2009, 14:28:55
Quote Post


Offline

Street Racer (e Cestino) ufficiale di Cetramod™

Group Icon

Messaggi 2.292
Utente no 1.260
Iscritto il 04/11/08
Non scrive da 5417 gg
Non si vede da 5296 gg
Ratio 0.29



LIVELLO SPAZZATURA
57.4 ecoballe



QUOTE (Orichalcon @ Oggi, 2:50 pm)
Curt....secondo me dovresti mettere uno screen di un file scritto in C++...e poi spiegare (in "gergo" preferibilmente) con qualcosa che funzia...perche fino a qui non ci ho capito molto...

se mettiamo ad esempio:

cosa signifa tutto questo? e le XYZ??come interagiscono con gli object??
e come mai nel secondo ; non ce scritto niente??(dovesse indicare il tipo di file giusto??che tu hai detto che ci deve essere scritt qualcosa).....

e cosa in effetti va scritto per costruire un programma? e come si fa ad una texture ordinare un movimento? o si fa in altro modo?.....

Scusa le domande stupide..... XD.gif (P.S. come mai in Linux riesco ad aprire un file scritto in C++ con il notepad,ad editarlo, e che questo rimanga funzionante??mentre su Win mi serve VS200- ??)

Guarda che quello che ho scritto io fino ad ora è solo una panoramica del C++

Inoltre con l'inserimento delle librerie MSDN si aggiungono ulteriori istruzioni al programma che bisogna imparare direttamente dalle librerie. Di certo un gioco come Avalanche, che utilizza un motore grafico abbastanza potente, non utilizza le librerie standard del C++, ma vanno aggiunte via via nuove librerie per gestire un simile gioco

Il ";" viene usato nel C++ per indicare la fine di un istruzione

QUOTE
e cosa in effetti va scritto per costruire un programma? e come si fa ad una texture ordinare un movimento? o si fa in altro modo?.....


A breve farò un esempio di programma per rendere meglio l'idea

Ori tu punti troppo in alto, qui si fornisce una base del C++, non puoi pretendere di capire simili cose se non sei riuscito nemmeno ad apprendere la panoramica che ho fatto sul C++

Se hai intenzione di imparare il C++ e non hai mai avuto a che fare con linguaggi di programmazione segui il mio corso, se non hai capito qualche passaggio basta che chiedi e sarò felice di aiutarti wink.gif

Per il resto non so se il notepad funge da modificatore ma di certo non funge da compilatore, quindi rimane pur sempre inutile modificare il file sorgente con il notepad




Si vis pacem, para bellum

user posted image
PMEmail PosterUsers WebsiteMSN
Top
lparcshinoda
Inviato il: 24/08/2009, 14:44:55
Quote Post


Offline

Webmaster / Ideatore / Fondatore

Group Icon

Messaggi 4.438
Utente no 2
Iscritto il 13/01/07
Non scrive da 5412 gg
Non si vede da 1295 gg
Ratio 0.5



STRONZATE DETTE
67.3 ton



suppongo che quei ; siano dei commenti wink.gif

cmq ori, penso che PRIMA di leggerti QUESTO "corso base" dovresti fare un CORSO BASE (ma molto base) sulla programmazione, compilatori, macchine virtuali, linguaggi OOP e librerie.




".... e guideremo i giocatori verso la terra promessa ...."

user posted image
PMUsers Website
Top
Curti$
Inviato il: 24/08/2009, 15:04:32
Quote Post


Offline

Street Racer (e Cestino) ufficiale di Cetramod™

Group Icon

Messaggi 2.292
Utente no 1.260
Iscritto il 04/11/08
Non scrive da 5417 gg
Non si vede da 5296 gg
Ratio 0.29



LIVELLO SPAZZATURA
57.4 ecoballe



Secondo sia il nuovo che vecchio standard il commento è accompagnato dopo il doppio slash "//" per commenti brevi e "/*" e "*/" per commenti più lunghi (in genere quelli che occupano più di una riga) wink.gif

Il ";" serve per segnalare al compilatore che quell'istruzione è finita, però andando per logica, il frammento di codice postato da Ori, quello dovrebbe essere un commento

Comunque mi farebbe piacere, come ha fatto Ori, se criticaste tongue.gif

Ricordo che comunque il corso è esposto in maniera "universitaria" quindi ci vuole una minima base informatica (modello di Von Neumann, macchina di Turing, struttura di un registro di memoria, teoria e progetto delle reti logiche, ALU, Control Unit ecc ecc)

Sinceramente non so fino a che punto possa servire questo corso, però la programmazione non è una cosa da niente wink.gif

Aggiornamento

Inserito il programma che permette di risolvere un sistema di due equazioni in due incognite

PS Il programma non tiene conto del caso in cui il determinante dei coefficienti sia nullo (a breve posterò il programma completo) e inoltre l'algoritmo risolutivo presenta un alto costo computazionale (verrà migliorato nel prossimo programma)

Per qualsiasi dubbio contattatemi via PM o fatemi sapere in questo topic wink.gif

Restate sintonizzati adminpower.gif

Messaggio modificato da Curti$ il 24/08/2009, 17:20:04




Si vis pacem, para bellum

user posted image
PMEmail PosterUsers WebsiteMSN
Top
Xabaras
Inviato il: 25/08/2009, 19:36:01
Quote Post


Offline

GTX - Great Teacher Xabaras

Group Icon

Messaggi 3.304
Utente no 123
Iscritto il 28/03/07
Non scrive da 5416 gg
Non si vede da 2337 gg
Ratio 0.38



COSE VIVE DIVORATE
64.94 tranci



'mmarò mimmo che robba ohmy.gif

io sono piuttosto ignorante riguardo a queste cose, anche se il buon cid ogni tanto me le sparava a tradimento mostrandomi il frutto del suo lavoro come se ci dovessi effettivamente capire qualcosa, forse leggendomi un pò di stà guida ben benino in futuro la cosa non sarà più pura utopia, quindi complimentoni riot.gif

PS: preciso comunque che ritengo tutti quelli che scelgono facoltà che studia stè cose dei geniali sadomasistici PAZZI.




PMEmail Poster
Top
Curti$
Inviato il: 25/08/2009, 20:40:42
Quote Post


Offline

Street Racer (e Cestino) ufficiale di Cetramod™

Group Icon

Messaggi 2.292
Utente no 1.260
Iscritto il 04/11/08
Non scrive da 5417 gg
Non si vede da 5296 gg
Ratio 0.29



LIVELLO SPAZZATURA
57.4 ecoballe



L'impatto iniziale forse potrà non essere dei migliori soprattutto per chi non ha mai programmato in vita sua ^^

La guida si predispone nel fornire una BASE per quanto riguarda il C++ dando comunque per scontato che chi farà uso di questo corso abbia conoscenze informatiche come quelle già sopraccitate

Spero solo sia valsa la pena ^^

QUOTE
'mmarò mimmo che robba ohmy.gif


rovatfl.gif

Aggiornamento

Inserito il programma che permette di risolvere un sistema di due equazioni in due incognite (versione migliorata)

PS Il programma non tiene conto del caso in cui il determinante dei coefficienti sia nullo (a breve posterò il programma completo) però l'algoritmo risolutivo è stato migliorato per quanto riguarda il costo computazionale smile.gif

Messaggio modificato da Curti$ il 25/08/2009, 21:09:42




Si vis pacem, para bellum

user posted image
PMEmail PosterUsers WebsiteMSN
Top
Curti$
Inviato il: 26/08/2009, 03:10:32
Quote Post


Offline

Street Racer (e Cestino) ufficiale di Cetramod™

Group Icon

Messaggi 2.292
Utente no 1.260
Iscritto il 04/11/08
Non scrive da 5417 gg
Non si vede da 5296 gg
Ratio 0.29



LIVELLO SPAZZATURA
57.4 ecoballe



Ho fatto un piccolo ma divertente quiz in C++ biggrin.gif

Quiz_by_Curti$

Nel download è presente sia l'eseguibile del programma che il file sorgente, così chiunque si può divertire a customizzare il programma a proprio piacimento smile.gif

PS Se sbaglierete la risposta si chiuderà la finestra di output (causa programmatore pigro tongue.gif ) anche se alla fine bastava inserire uno straccio di "do while" nel programma :boig:




Si vis pacem, para bellum

user posted image
PMEmail PosterUsers WebsiteMSN
Top
Xabaras
Inviato il: 26/08/2009, 04:24:08
Quote Post


Offline

GTX - Great Teacher Xabaras

Group Icon

Messaggi 3.304
Utente no 123
Iscritto il 28/03/07
Non scrive da 5416 gg
Non si vede da 2337 gg
Ratio 0.38



COSE VIVE DIVORATE
64.94 tranci



il messaggio promozionale finale la dice lunga rovatfl.gif




PMEmail Poster
Top
Orichalcon
Inviato il: 26/08/2009, 12:53:00
Quote Post


Offline

Warning-man ufficiale di Cetramod

Group Icon

Messaggi 563
Utente no 1.540
Iscritto il 08/05/09
Non scrive da 5417 gg
Non si vede da 5377 gg
Ratio 0.08



REPUTAZIONE
67.55 pt



e gia...altro che pigro.....cmq quello "io mi sono rincoglionito...tu cosa aspetti?" e "causa programmatore pigro tongue.gif " non li ho visti....si vede che sei pigro....

P.S. sapevo le prime 2 ma la terza....cmq e molto diverso da altri file in C++ che io abbia visto....




user posted image
PMEmail PosterMSN
Top
Cid89
Inviato il: 26/08/2009, 13:17:10
Quote Post


Offline

Burper ufficiale di Cetramod

Group Icon

Messaggi 1.890
Utente no 25
Iscritto il 16/02/07
Non scrive da 5418 gg
Non si vede da 5387 gg
Ratio 0.22



LUNGHEZZA BARBA
63.21 cm



Perché il tipo di main non può essere void? io lo faccio sempre o.o




user posted image
Alla faccia della next generation.

user posted image
PMEmail PosterUsers WebsiteMSN
Top
Curti$
Inviato il: 26/08/2009, 13:26:37
Quote Post


Offline

Street Racer (e Cestino) ufficiale di Cetramod™

Group Icon

Messaggi 2.292
Utente no 1.260
Iscritto il 04/11/08
Non scrive da 5417 gg
Non si vede da 5296 gg
Ratio 0.29



LIVELLO SPAZZATURA
57.4 ecoballe



Perchè utilizzi il vecchio standard, e molto probabilmente anche le intestazioni di minima che utilizzi saranno diverse wink.gif




Si vis pacem, para bellum

user posted image
PMEmail PosterUsers WebsiteMSN
Top
Curti$
Inviato il: 27/08/2009, 12:55:24
Quote Post


Offline

Street Racer (e Cestino) ufficiale di Cetramod™

Group Icon

Messaggi 2.292
Utente no 1.260
Iscritto il 04/11/08
Non scrive da 5417 gg
Non si vede da 5296 gg
Ratio 0.29



LIVELLO SPAZZATURA
57.4 ecoballe



Aggiornamento

Fatte un bel pò di cose...

-Inserita finalmente la versione definitiva del programma che permette di risolvere un sistema di due equazioni in due incognite. Il programma oltre ad essere stato migliorato sul costo computazionale è stato migliorato anche per quanto riguarda la documentazione per rendere la vita più facile ai terzi che faranno uso di questo corso

-Inserito il primo vero costrutto del programma con le relative spiegazioni: If, Else If, Else

-Inseriti due video tutorial: costrutti seriali cin e cout e spiegazione approfondita sul costrutto selettivo If, Else If, Else con tanto di rappresentazione (il tutto in inglese)

Restate sintonizzati adminpower.gif




Si vis pacem, para bellum

user posted image
PMEmail PosterUsers WebsiteMSN
Top
Curti$
Inviato il: 28/08/2009, 17:31:42
Quote Post


Offline

Street Racer (e Cestino) ufficiale di Cetramod™

Group Icon

Messaggi 2.292
Utente no 1.260
Iscritto il 04/11/08
Non scrive da 5417 gg
Non si vede da 5296 gg
Ratio 0.29



LIVELLO SPAZZATURA
57.4 ecoballe



Aggiornamento

- Inserito nuovo programma che permette di ricercare, dati tre valori in ingresso, il massimo fra di essi e di stampare il valore ottenuto in output

Si ringrazia XoaX.net per i video tutorial (in inglese) che vi consiglio di vedere, davvero molto dettagliati

Restate sintonizzati adminpower.gif




Si vis pacem, para bellum

user posted image
PMEmail PosterUsers WebsiteMSN
Top

Topic Options   Reply to this topicStart new topicStart Poll

 



Marketing ROI Sito fondato da Marco Bortone nel Gennaio 2007. Tutti i diritti relativi al drCMS appartengono a Marco Bortone, suo creatore. Il CMS è in continuo sviluppo e per maggiori informazioni sulle Relases e sui dettagli tecnici visitate il sito dell'Autore oppure la pagina del CMS.

Creative Commons License Questo/a opera è pubblicata sotto una Licenza Creative Commons. Questo sito ed il suo contenuto sono stati creati con il solo scopo di aiutare giocatori e fan di questi fantastici giochi a godere al massimo di prodotti a volte non ufficiali e spesso non realizzati da noi.

SquaresoftI diritti per la versione PC appartengono alla Eidos Interactive.
Final Fantasy ® è un marchio registrato Squaresoft Squaresoft e Square-Enix Square-Enix TM. Tutti i diritti su musiche, immagini e files parziali tratti dai giochi appartengono ad essi.