Vai al contenuto
3Devoto

Imparare C (o C++)

Recommended Posts

Ragazzi mi appello al vostro aiuto :D

volevo imparare a programmare 1 pò in C (o c+++ ma penso che se non so C il C++ me lo sogno no? :D)

per caso sapreste consigliarmi qualche guida online?? o risorsa dove posso imparare (se c'è qualcosa tipo l'ecosystem x 3dsmax :D)

Ho scaricato la demo di Visual C++ quindi ho 30giorni x vedere se il C fa x me :D

sono proprio niubbo d programmazione (il max che ho scritto è stato qualche "scriptino" x irc) :D

grazie a tutti x l'aiuto :)

Condividi questo messaggio


Link al messaggio
Condividi su altri siti

miii che apsettative :ph34r: io volevo solo farmi 1 programmino x windows ke mi ricordasse i compleanni!!! :unsure:

cmq apparte gli scherzi una guida che sembra fatta bene l'ho trovata (anche se datata :D)

http://www.physics.it/lectures/Tricky_C.pdf (la posto cosìse serve a qualcuno :D)

ora chiedo a chi ne sa + d me :D se ho capito bene 1 cosa e scriverla e 1 altra compilarla... overo dopo scritto il programma devo "compilarlo" x avere il file eseguibie o cmq x permettere al windows di leggerlo... ora mi chiedo... in visual c++.. dove sta il tasto x compilare tutto :crying:

Condividi questo messaggio


Link al messaggio
Condividi su altri siti

Riguardo il compilarlo, per quel poco che mi ricordo di VisualBasic sei nel giusto... tu hai un progetto (con visualbasic era un file *.prg credo) con tanti codici che possono essere letti da tutti quelli che hanno VisualBasic...

Tu lo compili, cioè lo traduci in modo che possa essere compreso dal computer, hai un file *.exe che può essere aperto da tutti i computer che rispondono ai requisiti (di solito di sistema operativo, VB voleva windows, Java non ha problemi con qualuncque SO, C e C++ non so neanche che differenza hanno tra loro...) ;)

Non so dov'è il tasto compila in C, in VB era nel menu file, prova con qualcosa del genere...

Se invece il tuo problema sono i compleanni... ci sono in giro un po di software belli e pronti, ma so che non è quello il tuo vero obbiettivo! :lol:

:hello:

Condividi questo messaggio


Link al messaggio
Condividi su altri siti

no vabbè x i compleanni scherzavo :P cmq il tasto x compilarlo l'ho trovato e ho anche compilato... il fatto che non mi genera il file exe... ho seguito 1 paio d tutorial e ho fatto esattamente quello descritto... solo che non so xke nn mi genera il file exe :angry: tant'è che quando premo ctrl+f5 (che serve a far partile l'eseguibile) mi da percorso non trovato.. e poi me incazz :D

p.s. vuoi mette 1 software dei compleanni fatto da solo?? :D

edit: protesto indignatamente xke tutorial x visual basic ce ne sono a bizzeffe :crying: ok mo me metto sotto, me faccio sentire quando ho problemi concreti :D


Modificato da 3Devoto

Condividi questo messaggio


Link al messaggio
Condividi su altri siti

[advertising]

Fai crescere la comunità internet, crea un bel tutorialino sulla compilazione in c!

[/advertising]

prova a controllare di non averlo messo in una cartella inesistente, o di avrgli impostato di salvarlo...

3ds ad esempio, se non gli dici di salvare il rendering non lo fa!

ciao ciao! :hello:

Condividi questo messaggio


Link al messaggio
Condividi su altri siti

inanzitutto benvenuto nel fantastico mondo della programmazione !!!!!!!

il workspace lo hai salvato?

di solito l'exe te lo crea all'interno della cartella debug che si trova all'interno della cartella dove hai salvato il tuo progetto.

anche se non lo trovasse, una volta che premi su execute program ti chiede se lo vuoi creare e poi lo esegue.

Magari prova con un progetto nuovo(ad esempio win32 applicaton e poi scegli come tipo 'a tipical hello world application' giusto per verificare che tutto vada)

ciao!

Condividi questo messaggio


Link al messaggio
Condividi su altri siti

Assolutamente non mi posso perdere questo thread (dopo la mareata di c++ che mi sono sorbito)...

comunque iniziamo a chiarire un po' di concetti (spero solo di non farti venire il mal di testa in 5 minuti)

Differenze tra C e C++

Il C è un linguaggio adesso abbastanza vecchio ma perfettamente funzionale, linux è scritto in C, Blender (ahimè) è scritto in C e un sacco di altri programmi vecchiotti sono stati scritti con questo linguaggio (ho fatto due esempi su linux, ma anche tanti programmi sotto windows sono scritti in C). Generalmente il C produce un codice più veloce ma il codice diventa difficile da gestire quando il programma diventa molto grosso, soprattutto se non è organizzato bene.

C++ introduce una grossa novità rispetto al C che sono le classi (o dati astratti), in pratica ti permette di definire un tuo tipo di variabile con una sua rappresentazione interna e definire delle operazioni che agiscono su tale tipo di dato. Oltre ha introdotto altre novità ma che richiedono concetti più avanzati (ereditarietà, polimorfismo, template).

Con le classi si stravolge il modo di programmare, e spesso ci si complica molto la vita, però c'è l'enorme vantaggio di poter programmare per astratto, e se si impara a ragionare per classi il codice viene organizzato meglio.

Il codice generato è tendenzialmente più lento (più puntatori, tante chiamate a funzione), ma ci sono molti trucchi per velocizzare il codice, l'uso intensivo dei template per esempio rende il codice fulmineo.

Per farti un esempio di dato astratto, mettiamo caso che tu voglia fare un programma per disegnare e nel tuo programma fai un grande uso di quadrati. C++ ti permette di definire un dato astratto e chiamarlo quadrato, poi spetta a te descriverne la rappresentazione e il comportamento.

Per esempio:

un quadrato su un piano sarà descritto da un numero reale che ne indica la lunghezza del lato, due numeri che ne indicano la posizione nel piano e un altro numero reale che ne indica l'inclinazione rispetto all'asse X.

Poi dovrai farti delle funzioni che userai durante il programma..

magari lo vuoi disegnare, con un po' di matematica ti trovi i quattro vertici e poi tracci quattro linee. Poi ti puoi fare delle funzioni per calcolarne il perimetro (lato * 4), o l'area (lato*lato) e così via.

Nel tuo programma per la rubrica telefonica per esempio ti potresti fare una classe "Contatto" che ti permette di gestire al meglio un contatto all'interno della rubrica. L'intera rubrica può essere una classe e la sua rappresentazione sarà un elenco di contatti.

Ci dovrebbe essere rimasto ancora qualche sostenitore della superiorità del C, ma piano piano si stanno estinguendo con l'onnipresenza delle interfacce grafiche. Oggigiorno il C si usa principalmente per scrivere librerie (vedi sotto).

Comunque dipende che tipo di programmi devi fare, un programma molto semplice si fa bene (forse meglio) in C, un programma con la gestione delle finestre si organizza meglio in C++.

Compilazione

Tu quando scrivi il codice scrivi un documento di testo, lo puoi scrivere con visual studio, con notepad, con emacs, con qualsiasi programma, rimane sempre un file di testo, soltanto che invece di avere estensione .txt ha estensione .c (o .cpp). Il processore il testo non lo capisce, lui vuole una sfilza infinita di 011001111000110100100010101, il problema sorge quanto tu ti rendi conto che non vuoi scrivere una sfilza infinita di uni e di zeri, troppo noioso, gli zeri e li uni si organizzano male. Pensa te che prima si scriveva tanti uni e zeri facendo dei fori su delle schede perforate.. :S

Per evitare questa barbosità visual studio (che è un interfaccia che nasconde un compilatore e un linker) prende il tuo codice, lo trasforma in una via di mezzo tra una sorta di uni e di zero e dei riferimenti esterni. Dopo chiama un altro programma (linker) che unisce al tuo codice del codice già fatto (librerie) e collega i riferimenti messi prima ai posti giusti. Più o meno detto molto alla buona il tuo eseguibile nasce così.

Librerie

Anche negli esempi più stupidi ti sarai reso conto che ogni tanto devi chiamare delle funzioni che non hai scritto tu, ma sono fondamentali per far fare qualcosa di utile al tuo programma.

Da windows 95 in poi i programmi non hanno più accesso diretto all'hardware, quindi se vuoi stampare qualcosa su video dovrai fare (in C)

printf("heilà bella gente, come si sta nel mondo del digitale?");
oppure in C++
cout << "Qui niente male, e da voi?";

.

Printf è una funzione, abbastanza complicata, scritta da altra gente che usano una chiamata diretta alle risorse del computer (beh, in ambiente windows la chiamata viene intercettata, ma questo è un altro discorso).

cout invece è un oggetto (tra i più complicati che ti può capitare di trovare) che ha ridefinito l'operazione "<<" che fa più o meno la stessa funzione della printf.

Il codice che definisce il comportamento di queste funzioni è all'interno di librerie esterne, che non sono altro che un insieme di funzioni, oltre alle funzioni le librerie contengono anche le informazioni per andare a ripescare la funzione.

Per poter usare una funzione hai bisogno di collegare la libreria giusta al tuo programma, questo lavoro è fatto appunto dal linker.

Di librerie ce ne esistono tantissime, e le puoi scrivere anche tu.

Trovi tutte le opzioni sia del compilatore sia del linker cliccando di destro sul progetto, e infondo trovi "properties" le opzioni sono tantine... :rolleyes:

Se vuoi avere più tempo per decidere, Microsoft rilascia la versione gratuita di visual studio, altrimenti.. c'è gcc, il compilatore di linux che gira allegramente anche sotto windows, però non ha l'interfaccia grafica.

Leggi tutto tricky C, che è molto carino e spiega molto bene, c'ha imparato anche un mio amico che ritenevo negato. :P

Finito quello puoi iniziare a lavorare con le finestre di windows, così imparerai ad odiare windows come tutti noi e passerai alle QT. :D

Abbi pazienza e non demordere, It's a long way to the top (if you wanna rock'n'roll) (cit.)

Condividi questo messaggio


Link al messaggio
Condividi su altri siti
volevo imparare a programmare 1 pò in C (o c+++ ma penso che se non so C il C++ me lo sogno no? :D)

per caso sapreste consigliarmi qualche guida online?? o risorsa dove posso imparare (se c'è qualcosa tipo l'ecosystem x 3dsmax :D)

Ciao,

ho letto un po' tutto il thread e vorrei dare il mio piccolo contributo.

Innanzitutto la differenza tra C e C++,

fondamentalmente (a parte un po' di sintassi) e semplificando il discorso la differenza è che il C è un linguaggio di tipo procedurale, mentre il C++ e un linguaggio a oggetti;

che vuol dire?

http://it.wikipedia.org/wiki/Programmazione_procedurale

http://it.wikipedia.org/wiki/Programmazion...ta_agli_oggetti

Sia il C che il C++ però sono particolarmente ostici da imparare, con il secondo che ha in più tutta la parte di concetti tipici di un linguaggio OO, i soli concetti di puntatore -ti assicuro- ti daranno filo da torcere.

Il linguaggio, di per sè, poi è una delle parti da prendere in considerazione la seconda è l'ambiente di sviluppo cioè lo strumento con cui crei i programmi, esistono quelli in cui devi scriverti tutto il codice a mano, anche per inserire un semplice pulsante e ci sono gli ambienti che ti facilitano questo compito.

Per quello che vuoi fare tu ti consiglierei di utilizzare un ambiente come il Visual Basic (anche se non è propriamente un linguaggio OO ha delle caratteristiche di quest'ultimo) oppure il Delphi.

Questi hanno degli ambienti che ti semplificano enormemente lo sviluppo mettendoti a disposizione degli "oggetti" preconfezionati e pronti all'uso (Pulsanti, Finestre, Collegamenti al database etc.).

Purtroppo molti di questi ambienti sono a pagamento e per un uso semplicemente hobbistico penso non siano adatti.

La Microsoft, ha messo a disposizione a titolo assolutamente gratuito alcuni nuovi ambienti di sviluppo che si appoggiano al .NET framework (penso ne abbia sentito parlare), dove tutti i linguaggi sono completamente orientati agli oggetti e sono:

Visual Basic 2005 Express,

Visual C# 2005 Express

si possono scaricare gratuitamente gli ISO .

http://www.dotnetarchitects.it/default.asp...dnews&id=76

Esistono anche altri progetti opensource che ti consentono di usare il .net framework, ad esempio mono (www.mono-project.org) che ha anche il vantaggio di essere multipiattaforma, oppure sharpdevelop

http://www.icsharpcode.net/OpenSource/SD/

Si potrebbero scrivere pagine e pagine in merito ma credo che sarebbe fuori luogo, ho compresso qualche idea in queste righe ma la cosa migliore è rivolgersi a san google.

spero di non essere stato troppo confusionario.

ciao

stefano

Condividi questo messaggio


Link al messaggio
Condividi su altri siti

:wacko: :wacko: :wacko: ohi ohi non ricordavo che fosse così complicato... ma io ero rimasto a VB....

Dubbio... mi smebra di aver capito che C non consente di fare un'interfaccia tipo form, mentre C++ sì, è giusto?

Altro dubbio: Visual C# 2005 express... permette di programmare in C senza aquistare il software? Mi attira parecchio...

:hello: :hello:

Condividi questo messaggio


Link al messaggio
Condividi su altri siti

Ragazzi innanzitutto nn posso che ringraziarvi delle vostre risposte!! come sempre siete molto gentili ed esaurienti :) provo a risp a tutti

@ CresiCloc

guarda il tutorialino nn sono proprio in grado di farlo... si e no riesco ad accendere visual studio :D al mex posto qui nella discussione un "riassunto" di quello che imparo ogni giorno... mi farà bene anche a me x ripassare gli argomenti :)

cmq si era 1 hello world :D

@ coren

ho fatto esattamente così ma niente... nn riesco a salvare sto benedetto exe

@ ilmale

grazie mille della "piccola" spiegazione :D in parte alcune cose le avevo gia capite girando x internet xo mi hai dato molte nuove notizie grazie :P ma da quello che ho capito quindi posso provare a programmare direttamente in c++ senza dover fare "la gavetta" passando x C vero?? :P

@ Nemo1970

Grazie mille anke a te :) cmq il fatto del calendario era x scherzare :D io voglio imparare a programmare... purtroppo soffro d 1 malattia congenita chiamata "curiosità" e quando mi ingrippo su 1 cosa mi ci metto come 1 matto ad impararla :D

p.s. mi unisco alla domanda di cresicloc x il fatto del visual c#

adesso mi metto e provo a fare qualcosa :) o meglio provo a superare sto benedetto scoglio del file exe k nn si genera... voglio il mio hello world! :crying:

Condividi questo messaggio


Link al messaggio
Condividi su altri siti

Vuoi l'hello world? E lo avrai, ragazzo!!

Io ne avevo fatto uno fighissimo, che ti chiedeva il nome:

Comp: Ciao come ti chiami?

Tu: 3Devoto

Comp: Piacere di conosceri, 3Devoto!

Poi ci avevo aggiunto un'opzione sullo stile: formale, informale, modulo, medievale ecc...

giunto a "rap" B) accade la disgrazia:

Comp: Yo, fratello, qual'è il tuo nome bello?

Tu: 3Devoto

Computer: Okey, 3Devoto!

Volevo che la risposta del compuer fosse in rima, ma non sono riuscito a creare un algoritmo che analizzasse il tuo nome e ti rispondesse in rima...

Non l'ho più continuato... :(

E dopo il raccontino, posso dire :hello:

Condividi questo messaggio


Link al messaggio
Condividi su altri siti
mi sembra di aver capito che C non consente di fare un'interfaccia tipo form, mentre C++ sì, è giusto?

No, non fraintendiamo, si può fare tutto anche in C, soltanto che in C il codice risultante sarà meno pulito. Poi dipende da come uno si sa organizzare.

ma da quello che ho capito quindi posso provare a programmare direttamente in c++ senza dover fare "la gavetta" passando x C vero?

Se il tuo obbiettivo finale è imparare il C++ allora sì. È inutile impararsi una sintassi per poi doversela dimenticare (anche se quasi uguale).

Alle superiori ho fatto prima il C e poi il C++, all'università invece siamo partiti direttamente con il C++ (c'era gente che veniva dal classico e non aveva mai programmato prima).

Naturalmente parti da cose semplici e riservati in fondo le cose complicate come le classi, ereditarietà e polimorfismo.

Condividi questo messaggio


Link al messaggio
Condividi su altri siti
ohi ohi non ricordavo che fosse così complicato... ma io ero rimasto a VB....

Dubbio... mi smebra di aver capito che C non consente di fare un'interfaccia tipo form, mentre C++ sì, è giusto?

Spero di non dire una castroeria, anche perchè con l' ANSI C sono fermo alle interfacce a caratteri.

Comunque direi che anche in ANSI C si può fare un'interfaccia tipo form, è solo una questione di difficoltà e tempo (molto tempo), il C++ ti offre un paradigma di programmazione più adatto per fare certe cose e insiemi di librerie che magari in ANSI C non esistono.

Altro dubbio: Visual C# 2005 express... permette di programmare in C senza aquistare il software? Mi attira parecchio...

C# è un nuovo linguaggio, molto simile a Java, completamente orientato agli oggetti, che usa una sintassi C-Like e che si appoggia sul .NET Framework e ne sfrutta le sterminate librerie.

Disquisire qui sul .NET Framework sarebbe troppo lungo, se vuoi posso darti qualche link di approfondimento, anche se una semplice ricerca su google ti tirerà fuori tonnellate di materiale.

Microsoft fornisce a titolo del tutto gratuito alcuni ambienti di sviluppo, di cui Visual C# 2005 Express ne è uno degli esponenti e anche se con alcune limitazioni permette di sviluppare prodotti anche commerciali.

Tutta la linea Express segue questa filosofia e abbiamo:

C#

C++

Visual Basic

WebDeveloper

J# (ahhhhhh!)

Qui trovi info

http://www.microsoft.com/italy/msdn/prodot...stdexp.mspx#EZB

E non solo, anche il motore di SQL Server, nella sua versione Express è del tutto gratuita, e viene anche distribuita con il tool grafico di amministrazione.

Spero di essere stato, almeno un po', esaustivo.

ciao

stefano

Condividi questo messaggio


Link al messaggio
Condividi su altri siti
p.s. mi unisco alla domanda di cresicloc x il fatto del visual c#

Ho già risposto a CresiCloc, quindi ti rimando al post di risposta.

ciao

stefano


Modificato da Nemo1970

Condividi questo messaggio


Link al messaggio
Condividi su altri siti
Microsoft fornisce a titolo del tutto gratuito alcuni ambienti di sviluppo, di cui Visual C# 2005 Express ne è uno degli esponenti e anche se con alcune limitazioni permette di sviluppare prodotti anche commerciali.

Tutta la linea Express segue questa filosofia e abbiamo:

C#

C++

Visual Basic

WebDeveloper

J# (ahhhhhh!)

Qui trovi info

http://www.microsoft.com/italy/msdn/prodot...stdexp.mspx#EZB

E non solo, anche il motore di SQL Server, nella sua versione Express è del tutto gratuita, e viene anche distribuita con il tool grafico di amministrazione.

Spero di essere stato, almeno un po', esaustivo.

ciao

stefano

Oh che bello! Un amico mi aveva detto che qualuncque software per programmare, anche quelli per insegnare ai bambini, costavano miliardi.... mi sa che aveva paura che diventassi programmatore... :angry:

Mi sa che forse forse ricomincerò anch'io a programmare... :wub:

Grassie e :hello:

Condividi questo messaggio


Link al messaggio
Condividi su altri siti
Oh che bello! Un amico mi aveva detto che qualuncque software per programmare, anche quelli per insegnare ai bambini, costavano miliardi.... mi sa che aveva paura che diventassi programmatore... :angry:

Beh i compilatori gratuiti mi sa che ci sono sempre stati (sicuramente non per tutti i linguaggi), magari erano a riga di comando quindi per progetti un po' grandi piuttosto scomodi, ma utilizzabili.

Questi della MS sono piuttosto carucci e ci puoi fare un sacco di cose.

Mi sa che forse forse ricomincerò anch'io a programmare... :wub:

Grassie e :hello:

Bene, allora buono studio.

ciao

stefano

Condividi questo messaggio


Link al messaggio
Condividi su altri siti

ragazzi sto diventando scemo con sto fatto dell'exe :wallbash: :wallbash: io mi rendo conto che soffro di una forma di deficienza che mi impedisce di fare le cose bene ma stavolta nn riesco a trovare l'errore...

allora... io procedo così x fare sto benedetto hello world... (cresi se risolvo sta cosa te faccio il programma che calcola la percentuale di lardo in base ad altezza e peso :D)

apro il mio visual studio... vado su nuovo --> progetto --> e scelgo applicazione console win32 --> do il nome "hello" --> nella procedura guidata metto la spunta a progetto vuoto

successivamente vado ancora in nuovo --> file --> file di C++ (.cpp)

e incollo ste righe di codice

#include <iostream>


int main()

{

	  std::cout << "Hello World!\n";

	  return 0;

}

premo F7 x farlo compilare... premo CTRL+F5 x lanciarlo... tadaaaaaaaa:

impossibile avviare il programma "e:\...\hello\debug\hello.exe

impossibile trovare il percorso specificato

:crying::crying::crying: e l'ho provato anche su un altro pc... niente niente!!!! :crying:

sono affranto, triste e sconfortato!ù

penso d essere il primo a nn riuscire a scrivere hello world...


Modificato da 3Devoto

Condividi questo messaggio


Link al messaggio
Condividi su altri siti

ma hai salvato il file cpp, vero?

Perché tu hai fatto F7, nessun file (salvato) era aggiunto al progetto e non ti ha fatto niente.

in output ti dovrebbe essere uscito questo

========== Build: 0 succeeded, 0 failed, 1 up-to-date, 0 skipped ==========

CRTL+F5 prima non aveva fatto niente, quindi adesso non trova il file. :P

Controlla sempre l'output, se è andato tutto a buon fine ti deve scrivere

========== Build: 1 succeeded, 0 failed, 0 up-to-date, 0 skipped ==========

cioè che ha compilato con successo 1 progetto.

Condividi questo messaggio


Link al messaggio
Condividi su altri siti
io procedo così x fare sto benedetto hello world... (cresi se risolvo sta cosa te faccio il programma che calcola la percentuale di lardo in base ad altezza e peso :D)

penso d essere il primo a nn riuscire a scrivere hello world...

è una qualche allusione sul fatto che sono grasso? -_- non sono poi così grasso! :P semplicemente non sono poi tanto palestrato...

secondo me l'hello world è un programma molto complicato perchè è il primo che si fa, e all'epoca non ci capisci ancora niente... :)

Certo che sei proprio imbranato! :devil:

:TeapotBlinkRed:


Modificato da CresiCloc

Condividi questo messaggio


Link al messaggio
Condividi su altri siti
Approfitto della discussione per chiedervi se conoscete MinGW e cosa ne pensate.

Delle minGW penso che non sono cross platform, quindi tanto vale se uno ha la licenza per Visaul studio di usare le MFC.

In caso uno non avesse la licenza di visual studio molto meglio wxWidgets o le Qt (quelle gratis, attualmente non ho 50.000$ per la versione commerciale).

Condividi questo messaggio


Link al messaggio
Condividi su altri siti

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Ospite
Rispondi

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


  • Navigazione recente   0 utenti

    Non ci sono utenti registrati da visualizzare in questa pagina.

×
×
  • Crea nuovo...