|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Sep 2007
Messaggi: 1071
|
[C] Consigli, tips & trick per iniziare
Ciao ragazzi!
Vado subito al dunque. Quest'anno devo dare un esame di sistemi operativi, quindi devo studiarmi ANSI C in 2 settimane per poter iniziare a fare laboratorio. La programmazione in C avverrà in ambiente UNIX con compilatore gcc. Detto ciò, mi potete dare qualche consiglio riguardo all'ambiente di lavoro? Quale IDE, facile da usare, mi consigliare? (per ora ho messo su Esclipse + CDT) Qualche consiglio su errori stupidi che si commettono all'inizio e che portano via una marea di tempo? (sto cercando common pitfalls su google, ma vorrei un commento di esperienza personale) Pensate sia meglio un IDE o la semplice combinazione Gedit + gcc -o per compilare e eseguire? Qualche debugger facile da usare? (gdb?) Grazie a tutti per le risposte Thanks
__________________
Affari: ariakasneverborne, PanCar, Luk@°°°, Fabio310, kintaro oe, krike, fabry180384, dariox am2, chiadoz, windsofchange, dado1979, Rudyduca, aleforumista, Sheva77 |
|
|
|
|
|
#2 |
|
Member
Iscritto dal: Sep 2011
Messaggi: 68
|
Personalmente uso dev-c++ come ide, mi sono sempre trovato piuttosto bene, ma anche una combinazione di notepad++ e il semplice gcc può andare.
Per quanto riguarda le cose più ostiche del c, ti consiglio di comprendere veramente bene: 1.Allocazione dinamica della memoria. 2.Puntatori e aritmetica dei puntatori: in c non esistono tipi string, quindi ti ritroverai spesso a lavorarci, in più la costruzione di alberi liste ecc passa assolutamente per la conoscenza di questi, quindi...ti servono! 3.Struct: anche qui come sopra, le liste si basano sulle struct, gli alberi idem. Tutti i tipi di dato complessi in generale si basano su queste, quindi sono un'altra parte fondamentale del linguaggio. Per il resto il c è piuttosto intuitivo essendo un linguaggio procedurale, vai tranquillo, soffermati su questi tre passaggi e lo padroneggerai senza problemi. |
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Dec 2006
Messaggi: 3808
|
il CDT di eclipse ha un bel po' di bug noti: occhio!
usa CodeBlocks, per progettini piccoli va più che bene, ancora meglio, abituati da subito ad usare gcc da linea di comando perché sarà fin da subito la soluzione migliore e più flessibile di tutte. |
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Sep 2007
Messaggi: 1071
|
Grazie per i consigli
SI diciamo che è un po problematica la gestione della memoria dinamica, ma ci sto facendo l'abitudine piano piano A presto proverò code::blocks, dev c++ non è purtroppo disponibile per Linux. A riga di comando si usa gdb per eseguire istruzione per istruzione?
__________________
Affari: ariakasneverborne, PanCar, Luk@°°°, Fabio310, kintaro oe, krike, fabry180384, dariox am2, chiadoz, windsofchange, dado1979, Rudyduca, aleforumista, Sheva77 |
|
|
|
|
|
#5 | |
|
Senior Member
Iscritto dal: May 2001
Messaggi: 12945
|
Quote:
Ti consiglio di provare NetBeans con annessa estensione C/C++. |
|
|
|
|
|
|
#6 | |
|
Senior Member
Iscritto dal: Sep 2007
Messaggi: 1071
|
Quote:
.. ho visto adesso come funziona gdb
__________________
Affari: ariakasneverborne, PanCar, Luk@°°°, Fabio310, kintaro oe, krike, fabry180384, dariox am2, chiadoz, windsofchange, dado1979, Rudyduca, aleforumista, Sheva77 |
|
|
|
|
|
|
#7 | |
|
Member
Iscritto dal: Sep 2011
Messaggi: 37
|
Quote:
Saluti, netburst |
|
|
|
|
|
|
#8 |
|
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
|
E al posto delle dita utilizziamo una clava per premere i tasti sulla tastiera.
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro @LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys |
|
|
|
|
|
#9 | ||
|
Senior Member
Iscritto dal: Sep 2007
Messaggi: 1071
|
Quote:
Quote:
Comunque.. una domandina su fork(): dopo la chiamata a fork() qual è il processo che continua subito dopo? E' lo scheduler che decide se far continuare il padre o il figlio o un altro processo no? Lo dico perché vorrei sapere se si può prevedere chi continuerà la esecuzione del codice. Grazie
__________________
Affari: ariakasneverborne, PanCar, Luk@°°°, Fabio310, kintaro oe, krike, fabry180384, dariox am2, chiadoz, windsofchange, dado1979, Rudyduca, aleforumista, Sheva77 |
||
|
|
|
|
|
#10 |
|
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
|
No, dipende dall'implementazione del kernel/scheduler.
In teoria potrebbe continuare il padre, mentre il figlio sarebbe inserito nell'elenco dei processi "ready", poiché il suo tempo allocato non è ancora scaduto. Dall'altra parte, se ho eseguito un fork magari mi aspetterei che il figlio cominciasse subito a lavorare. Entrambe le scelte hanno pregi e difetti, e non mi sento di propendere per nessuna delle due.
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro @LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys |
|
|
|
|
|
#11 |
|
Senior Member
Iscritto dal: Sep 2007
Messaggi: 1071
|
per cui dipende dalla politica dello scheduler.. Grazie per chiarirmi questo dubbio
__________________
Affari: ariakasneverborne, PanCar, Luk@°°°, Fabio310, kintaro oe, krike, fabry180384, dariox am2, chiadoz, windsofchange, dado1979, Rudyduca, aleforumista, Sheva77 |
|
|
|
|
|
#12 | |
|
Senior Member
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
|
Quote:
__________________
As long as you are basically literate in programming, you should be able to express any logical relationship you understand. If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it. (Chris Crawford) |
|
|
|
|
|
|
#13 | |
|
Senior Member
Iscritto dal: Sep 2006
Messaggi: 1539
|
Quote:
Normalmente mi sembra di ricordare che non si usa nessun IDE. Il mio esame è stato vi -> editor compilare da linea di comando. |
|
|
|
|
|
|
#14 |
|
Senior Member
Iscritto dal: Sep 2007
Messaggi: 1071
|
si penso che per un po, all'inizio, userò la linea di comando + gedit, i problemi sono più che altro "teorici" nel senso che i programmi non sono molto lunghi.
Questa soluzione penso sarà quella usata anche in laboratorio (per l'assembler del mips usavamo kate + simulatore
__________________
Affari: ariakasneverborne, PanCar, Luk@°°°, Fabio310, kintaro oe, krike, fabry180384, dariox am2, chiadoz, windsofchange, dado1979, Rudyduca, aleforumista, Sheva77 |
|
|
|
|
|
#15 |
|
Member
Iscritto dal: Oct 2008
Messaggi: 192
|
a noi avevano fatto usare gedit + gcc ... abituati giusto a gcc per non avere momenti di panico per non averlo mai usato.
|
|
|
|
|
|
#16 | |
|
Senior Member
Iscritto dal: Sep 2007
Messaggi: 1071
|
Quote:
Comunque adesso sto facendo degli esercizi, magari stasera ne posto qualcuno per vedere come si possono migliorare
__________________
Affari: ariakasneverborne, PanCar, Luk@°°°, Fabio310, kintaro oe, krike, fabry180384, dariox am2, chiadoz, windsofchange, dado1979, Rudyduca, aleforumista, Sheva77 |
|
|
|
|
|
|
#17 | |
|
Senior Member
Iscritto dal: Sep 2007
Messaggi: 1071
|
Bene, ho fatto un esercizio e mi funziona, però mi piacerebbe che qualcuno gli desse un'occhiata per vedere dove si può migliorare o se ci sono degli 'errori' da novellino
Testo: Quote:
Codice:
#include <stdio.h>
#include <stdlib.h>
#define CIFRE_MAX 5
int main(){
int n, m, i, j, somma;
int** matrice;
char* stringa_input = (char*) malloc(CIFRE_MAX * sizeof(char));
puts("Inserisci la dimensione n:\n");
fgets(stringa_input, CIFRE_MAX, stdin);
n = atoi(stringa_input);
puts("Inserisci la dimensione m:\n");
fgets(stringa_input, CIFRE_MAX, stdin);
m = atoi(stringa_input);
// creo la matrice dinamica
matrice = (int**) malloc(n * sizeof(int*));
for(i = 0; i < n; i++)
matrice[i] = (int*) malloc(m * sizeof(int));
// chiedo all'utente di inserire i dati
for(i = 0; i < n; i++){
printf("\nRiga %d:\n", i);
for(j = 0; j < m; j++){
printf("\t(%d, %d)\t", i, j);
fgets(stringa_input, CIFRE_MAX, stdin);
matrice[i][j] = atoi(stringa_input);
}
}
// creo il vettore_somma per la somma
int* vettore_somma = (int*) malloc(n * sizeof(int));
for(j = 0; j < m; j++){
somma = 0;
for(i = 0; i < n; i++)
somma = somma + matrice[i][j];
vettore_somma[j] = somma;
}
// stampo il risultato
for(i = 0; i < n; i++){
for(j = 0; j < m; j++)
printf("%5d", matrice[i][j]);
puts("\n");
}
puts("Somma:\n");
for(i = 0; i < m; i++)
printf("%5d", vettore_somma[i]);
puts("\n");
// libero la memoria
for(i = 0; i < n; i++)
free(matrice[i]);
free(matrice);
free(stringa_input);
free(vettore_somma);
exit(0);
}
__________________
Affari: ariakasneverborne, PanCar, Luk@°°°, Fabio310, kintaro oe, krike, fabry180384, dariox am2, chiadoz, windsofchange, dado1979, Rudyduca, aleforumista, Sheva77 Ultima modifica di *andre* : 05-10-2011 alle 19:20. |
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 15:01.




















