Ciao Forty9669, io mi sono iscritto a questo forum apposta per risponderti.
Anche io sono nuovo nel mondo della programmazione e sto studiando da qualche mese il C++ da autodidatta come te, ma su un libro cartaceo.
Ho cominciato da piccolo, sono passato per il visual basic, per il C e il C++ studiando sui video tutorial di canali italiani famosi per l'apprendimento dei linguaggi di programmazione, dato che sei autodidatta li avrai sicuramente incontrati anche tu su YouTube.
Ma ben presto abbandonai tutto, perché mi scocciavo di vedere quei video così lunghi e mi scocciavo di stare fermo ad aspettare che il professore pensasse per me, e soprattutto perché per riuscire a comprendere bene i concetti della programmazione avrei dovuto essere un po' più maturo.
A 18 anni, cioè oggi, il governo italiano Renzi propone ai giovani neo diciottenni 500 euro da spendere in libri e cultura.
Grazie al bonus mi sono comprato tantissimi libri, tra cui alcuni per lo studio della lingua cinese, per la lingua giapponese, per la famiglia e ben due libri di programmazione.
La scelta su quale linguaggio studiare è ricaduta sul C++, per questi motivi: è moderno, puoi creare applicazioni sia per computer che per telefono, è potentissimo, è il più difficile, ma è il più completo, è orientato agli oggetti.
Io non voglio studiare mille linguaggi per poi arrivare al C++, non voglio partire per il basic, passare per il pascal o il phyton, per il java, qualche pazzo su internet parla addirittura di cominciare dall'html, passare per il C e poi alla fine arrivare al C++.
Io mi studio direttamente quello più difficile, così se dovessi usare altri linguaggi non troverei nessuna difficoltà avendo studiato su quello più difficile, è chiaro quello che voglio dire?
La maggior parte ti sconsiglia di partire dal C++? Ma se ti fai un giro su google americano ti assicuro che trovi molte persone che ti dicono il contrario, ti dicono di partire dal C++.
Questa è la risposta di un utente americano sulla questione ( presa dal forum "cplusplus" e tradotta in italiano ... ti consiglio di seguire quel forum se continuerai a studiare perché è una miniera d'oro):
http://www.cplusplus.com/forum
<< "Il C++ è un linguaggio perfettamente utile e buono per imparare a programmare. Ha tutti gli strumenti base che potresti trovare in qualunque altro linguaggio imperativo o orientato agli oggetti.
Imparare a programmare ha veramente poco a che fare con la scelta del linguaggio. Certo, alcuni linguaggi sono particolarmente indicati per imparare a programmare, per esempio il Python o il Pascal.
Ma imparare a pensare a quello che devi fare è molto più importante di scegliere un linguaggio di programmazione.
Imparare come funziona un computer e come esprimere i propri pensieri nei termini con cui il computer lavora, questo è il vero obiettivo, non studiare <dei linguaggi di programmazione a caso>
Non importa quale sia la tua scelta del linguaggio, dovrai accettare alcune strane linee di codice quando cominci. Nel caso del C++ si parla di roba tipo il simpatico int main( int argc, char** argv ).
Quando arriverà il momento, imparerai cosa significa e in che modo potrai usarlo correttamente, ma fino a quel momento non te ne devi preoccupare. Fai semplicemente un passetto alla volta.
Quindi considerato che di solito non è importante da quale linguaggio si parte, ma è importante che ti piaccia programmare, non ti scoraggiare se studiare ti prenderà molto tempo, probabilmente ti incasinerai il cervello su qualche concetto base della programmazione, come in tutte le altre discipline d'altronde. Quando finalmente riuscirai, proverai un particolare senso di soddisfazione e non smetterai più di studiare.">>
Insomma, ascolta i pareri degli altri, ma poi ragiona e valuta quello che secondo te è giusto. Nel mio caso quindi ho scelto C++.
Per quanto riguarda la scelta del libro sul quale studiare, ho fatto delle ricerche ed ho capito che c'è più discordanza sui libri che sulla scelta del linguaggio. Dato che a me interessava partire proprio dall'inizio ho scelto "C++ Fondamenti di programmazione (seconda edizione)" di Deitel (padre e figlio), mentre come secondo libro, più avanzato, "C++ Linguaggio, libreria standard, principi di programmazione" di Bjarne Stroustrup, il creatore del C++, da leggere alla fine del primo libro.
Questa è la recensione di un libro di cinese venduto da Amazon fatta da una ragazza (ho eliminato alcuni pezzi per renderlo più pertinente):
<< " Nel comprare il terzo volume di questa collana mi sono imbattuta in una recensione a dir poco negativa, a mio avviso del tutto esagerata. [...]
Ho studiato diligentemente e appassionatamente, non mi sono lasciata sfuggire neanche un carattere [...] ho passato giorni interi a scrivere [...] insomma, ho sfruttato al massimo il potenziale del libro [...] Dalla mia esperienza posso dirvi che il libro non è sicuramente perfetto, nessuno lo è, è comunque ottimo, ma non lasciatevi fuorviare da discorsi sulla qualità dei libri, perché il segreto è sfruttare al massimo anche la peggiore delle risorse che abbiamo a disposizione. Non crediate che basterà dare una letta, fare due ascolti per arrivare a padroneggiare il livello che il libro si propone perché non è così che funziona. [...] ci sono degli esercizi che vanno fatti e compresi [...] non esistono soluzioni rapide e facili, né per il cinese né per nessun'altra lingua. Ma dare la colpa ai libri scarsi significa illudersi che siano i libri i responsabili del nostro apprendimento e non noi stessi. " >>
Per quanto riguarda le copie digitali, partendo dal presupposto che il PDF di un libro non significa per forza che sia piratato, ormai tutti sanno che uTorrent consente di scaricare anche i libri di programmazione in PDF completi e gratuitamente, ma illegalmente e quindi punibile per legge, ma pochi sanno che google offre la possibilità di sfogliare un po' tutti i libri, compreso quello su cui sto studiando io, in anteprima, tipo per le prime 200 pagine, online e legalmente.
Qui puoi trovare per esempio le prime 200 pagine del libro su cui sto studiando io:
http://tinyurl.com/zvv96v
Io sono d'accordo con chi pensa che il libro cartaceo sia meglio del digitale, perché io mi sto trovando benissimo a studiare sul mio libro cartaceo, ma se devo solo leggere una pagina del mio stesso libro sul computer mi viene il vomito e mi passa la voglia.
Quello che posso dire sul libro che ho acquistato è che mi sto trovando bene, ma ho notato che ci sono alcuni errori di traduzione e di stampa, ma che non rendono assolutamente negativa l'esperienza di apprendimento.
Quando non capisco un'istruzione o un esercizio, la prima cosa che faccio è documentarmi su fonti online, possibilmente inglesi, se non ci capisco nulla passo alle fonti italiane, oppure cerco la traccia dell'esercizio su google e di solito mi spuntano già persone che hanno chiesto aiuto prima di me su quel problema. Se mancano oppure continui a non capire, basta che ti iscrivi a qualche forum come questo oppure molti altri sul web e domandi. Nessuno sarà disposto a darti tutto il codice ma molti saranno lieti di aiutarti con degli indizi. Gli indizi che ti daranno non saranno quasi mai espliciti, cioè le persone ti danno degli indizi su cui devi essere tu a ragionare e trovare la soluzione. Lo devono fare, perché ti devi abituare a ragionare da solo, non dovrai aver sempre bisogno di qualcuno che ti dia la pappa pronta.
Se non ci arrivi la gente può reagire bene, ti può scrivere parte del codice, oppure ti può mandare a quel paese in maniera più o meno garbata. è naturale, loro non si sono fatti di pappa pronta per arrivare dove sono.
Adesso veniamo al tuo codice:
Prima di tutto, se compilo il codice così come lo hai scritto, mi compare subito l'errore "string was not declared in this scope", cioè string non è stato dichiarato.
Praticamente il compilatore non sa cosa sia "string" o dove prenderla, vuole qualche informazione in piu su dove si trova string, perché non gli basta sapere che è incluso nella libreria "string".
La soluzione è di specificare dopo tutte le librerie (tutti gli #include) questo codice:
using namespace std;
significa, potrei dire qualche bagianata perché sono beginner come te, che "string" fa parte di un determinato spazio (namespace standard).
Non c'è bisogno di capirlo molto all'inizio, scrivilo e basta altrimenti non vai avanti.
Il problema centrale del tuo codice sta nel fatto che hai mischiato due linguaggi diversi, il C e il C++.
Scanf e printf sono due istruzioni del C, mentre le equivalenti in C++ di queste due sono rispettivamente "cin" e "cout".
Quando tu hai scritto scanf, hai inserito come tipo di variabile da ricevere %c, che dovrebbe essere "character", cioè un singolo carattere (ancora non me ne intendo di C ). In una variabile char non entra la parola "Stefano". E poi dopo gli hai detto di inserire il carattere letto in una variabile di tipo string (nome). "String" è un oggetto del C++, il C non sa come gestirlo.
Deciditi:
1) Se ti vuoi imparare il C++ devi togliere di mezzo "printf" e "scanf" e devi usare le sue istruzioni, cioè "cin", "cout" e "string".
2) Se ti vuoi imparare il C: togli di mezzo le "string" e lavora con i char e gli array di char.
Se vuoi sapere come si usano queste istruzioni il libro te le spiega nelle prime pagine, altrimenti puoi cercarti qualcosa su google oppure su Youtube se è meglio per te, cercando qualcosa tipo "cout C++ ita" e "cin C++ ita".
Per esempio il secondo risultato qui:
Il tuo codice in C++ (parti da questo):
#include <iostream>
#include <stdlib.h>
using namespace std;
int main ()
{
string nome;
string verifica = "Stefano" ;
cout << "Scrivi il tuo nome: ";
cin >> nome;
if ( nome == verifica )
{
cout << "\n" << "CORRISPONDE" << endl; //puoi usare "endl" al posto di "\n";
}
else
{
cout << endl << "NON CORRISPONDE" << "\n\n";
}
// Attento alla lettera maiuscola di Stefano!
system ("pause");
}
Ah a proposito, sui forum i codici vengono scritti tra i tag "
[CODE]", per differenziarlo dal testo normale.
[img]http://i67.tinypic.com/mutqon.png[/img]
L'ultima cosa, i libri sicuramente ti insegneranno che il codice deve essere ordinato e leggibile e le parentesi graffe devono seguire un certo ordine (indentatura), quindi mi raccomando scrivi sempre codice leggibile.
Se mi viene in mente qualcos'altro da dirti modifico il messaggio, in bocca al lupo!
P.S. Chiedo scusa ai senior della programmazione se ho detto qualche bagianata, sono un super beginner anch'io! f21