PDA

View Full Version : [C]a questo punto....utilizzi pratici!??!


D4rkAng3l
01-06-2005, 00:09
Ciao,
all'uni stò studiando C (informatica...a breve avrò l'esame)...il programma del primo corso arriva fino alle liste...poi c'è programmazione 2 (non ho ancora visto bene gli argomenti..in linea di massima algoritmi di ordinamento efficenti, tabelle di hash, alberi e ricerca negli alberi e altre cose)....in fatto pratico con queste mie nozioni di C cosa ci potrò fare?nulla di concreto?come programmatore cosa mi manca per pensare ad ottenere qualcosa di un minimo professionale e qualificante dal punto di vista lavorativo?

71104
01-06-2005, 00:30
forse ti stai chiedendo come mai tu conosca il linguaggio di programmazione C (assieme al C++ sono i più potenti e i più usati nel mondo del lavoro) ma ancora non riesca a produrre qualcosa di concreto appunto; diciamo un programma che esca dalla solita console e visualizzi ad es. una bella finestra ridimensionabile disegnata da te con tanti bottoncini, caselle di testo, check boxes, radio buttons, e così via :p un programma con interfaccia grafica insomma :)
oppure come mai non riesci a creare immagini 3D, a produrre suoni dalla scheda audio, eccetera eccetera. :)

la risposta è che una volta che hai seguito e superato i corsi di Prog. I e II tu sei già un programmatore, ma non riesci a fare le cose che ho detto sopra semplicemente perché non conosci le librerie da utilizzare per farle, e il motivo è semplice: all'università inizialmente ti insegnano a fare programmetti scemi scemi che possono essere compilati sia su Linux che su Windows, e quindi ti fanno usare solo le librerie standard del C (che sono cross-platform); inoltre inizialmente lo scopo non è tanto quello di farti fare roba strafica e programmi fantascientifici inimmaginabili, quanto quello di farti apprendere la logica della programmazione, i suoi strumenti e il loro uso (tipi, variabili, funzioni, ricorsività, liste, pile, vettori, puntatori, strutture... tutta sta roba qua), e per questi scopi le librerie standard del C sono sufficienti.

ma giustamente tu vuoi anche produrre qualcosa di tangibilie, qualcosa che non sia una sequenza idiota di istruzioni C che "legge da STDIN e scrive su STDOUT", e mi pare anche giusto! :)
e allora devi usare le librerie apposite, che possono essere cross-platform e funzionare su più OS, ma possono anche non esserlo.
ti faccio un esempio per Windows (dato che io ho sempre programmato lì): tra i 2000 e rotti files presenti in una normale installazione di Windows, troviamo (tra l'altro) device drivers e DLL di sistema; ora, per farla molto (ma molto) breve ed essenziale, come fa un tuo programma (ad esempio un videogioco) a creare una finestra a tutto schermo dove visualizzare un'immagine 3D? funziona così: i device drivers (forniti dai produttori della scheda video e del resto dell'hardware implicato in tutto il processo) si occupano della gestione dell'hardware, e quindi inviano "messaggi" di IO ad es. alla scheda video dicendole come leggere la memoria video, come fare questo, come fare quello, ecc. la gestiscono insomma (i device drivers vengono realizzati necessariamente in assembly oltre che C); le DLL di sistema interrogano e inviano comandi ai drivers, ed implementano un sistema comodo e semplice di gestire le tue periferiche.
quando tu scrivi il tuo programma, in esso tu includi tutti gli headers necessari all'importazione di funzioni dalle DLL di sistema (che in questo caso saranno kernel32.dll, user32.dll, gdi32.dll, opengl32.dll e qualcun altra se usi OpenGL; se usi DirectX è più complicato) e scrivi il codice necessario per chiedere alle librerie (alle DLL) di Windows e di OpenGL di fare questo e di fare quello, di aprire una finestra a tutto schermo, di disegnarci sopra, di renderizzare un cubo, una sfera, quello che ti pare. poi compili il programma, lo fai partire, questo dice a Windows e OpenGL di fare tutte ste cose, e Windows e OpenGL da bravi si occuperanno di gestire tutto quello che hai creato (finestra, cubo, sfera e compagnia bella) e di inviare ai drivers i comandi necessari per disegnare il tutto sullo schermo.
ora nota bene che questo della grafica 3D fatta con OpenGL era solo 1 esempio (mi è venuto in mente xkè ho appena letto 1 thread su OpenGL :p), ma per altre tipologie di programmi è tutto analogo (si tratta solo di usare le librerie giuste :))

D4rkAng3l
01-06-2005, 00:53
mmm pensavo di vedermi il capitolo sulle API di win presente sul manuale...puuò essere utile?

71104
01-06-2005, 01:18
mmm pensavo di vedermi il capitolo sulle API di win presente sul manuale...puuò essere utile?
CENTRO!! :)
può essere utile eccome, io sono cresciuto con quelle :D
quando a 13 anni programmavo in Delphi ero curioso di capire come funzionava la VCL, e la debuggavo ed esploravo spesso: inevitabilmente giungevo alle API Win32... :)

e se poi un solo capitolo non ti basta (dubito che possa bastare, le Win32 sono sconfinate) fatti un giro in MSDN ;)

ciao

D4rkAng3l
01-06-2005, 10:06
CENTRO!! :)
può essere utile eccome, io sono cresciuto con quelle :D
quando a 13 anni programmavo in Delphi ero curioso di capire come funzionava la VCL, e la debuggavo ed esploravo spesso: inevitabilmente giungevo alle API Win32... :)

e se poi un solo capitolo non ti basta (dubito che possa bastare, le Win32 sono sconfinate) fatti un giro in MSDN ;)

ciao

mmm bene, intanto provo a dare prog 1, che tanto mi steccano doh :cry: , poi mentre studio per il programma di programmazione 2 vedo di integrare con qualcosa di più carino...

Leggendo Linux Pratico mi pare che tempo fà era illustrato un proggettino su come realizzare un semplice server di chat in C...magari gli dò un'occhiata...anche se a livello di programmazione di rete e socket non sò nulla

VegetaSSJ5
01-06-2005, 11:15
darkangel hai un manuale delle api di win in italiano??

D4rkAng3l
01-06-2005, 11:39
darkangel hai un manuale delle api di win in italiano??
No...sul manuale di C che ho c'è un capitolo sulle Api...prima mi sono visto l'introduzione al capitolo in questione e cmq dice che sono trattati solo gli argomenti basilari dell'argomento

VegetaSSJ5
01-06-2005, 11:48
ah ho capito, cmq posso sapere come si chiama il libro?

D4rkAng3l
01-06-2005, 12:16
è il manuale di C della McGrowHill o come diavolo si scrive (da quello che ho visto fà cagare a tutti però io mi ci sono trovato bene per ora...molto meglio che con il Deitel...almeno per prog 1 ho trovaot tutto...chiaro e conciso...sul deitel ripeteva sempre le stesse cose e alla fine mi ci perdevo)