|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Oct 2004
Messaggi: 1945
|
[C]Progettare un buon programma
Devo fare un progetto in C per l'università! Un po di tempo fa avevo anche chiesto alcuni consigli! Oggi comincio! Volevo sapere se c'erano dei metodi per la progettazione! Ad esempio per Java conosco UML e mi sono trovato molto bene per la progettazione di applicazioni anche con un numero molto elevato di classi! Per quanto riguarda invece il C esiste qualche cosa del genere? O magari anche solo dei consigli sui passi da fare per la scrittura del codice! Non vorrei fare troppa confusione dato che è il mio primo progetto in C e sicuramente avrò molto da scrivere!
Grazie |
|
|
|
|
|
#2 |
|
Member
Iscritto dal: Sep 2007
Messaggi: 259
|
Tanto per iniziare non pensare minimamente alle classi..... ti crea solo confusione. C non è un linguaggio object oriented, ma procedurale.
E' buona norma analizzare per bene il problema prima di iniziare a scrivere codice, molti sbagliano e presi dalla fretta iniziano a programmare andando a tentativi Dopo aver fatto una bella e corposa analisi, prendi foglio e penna ed inizia con la pseudocodifica... Ti facilita un bel pò le cose, gli errori più grossolani li riesci ad identificare in questa fase.. Vantaggi? Non dovrai riscrivere tutto il codice! Inoltre in questa fase decidi anche le strutture dati che andrai ad utilizzare.. Dopo aver fatto questo puoi cominciare con il codice.... Ricorda sempre: - Header file - Variabili Globali - Strutture - Prototipi - Corpo del programma Se posso darti qualche altro consiglio rimango a disposizione... Ciao e in bocca al lupo!!
__________________
Ho concluso trattative con: Fuckaldo -- Fede -- HTCPTC ----------------------------------------------------------- Mobo: MSI P43 Neo-F ATX CPU: Intel E7300 2.66Ghz HD 1: Seagate Barracuda 250Gb SATA2 Ram: 2* 1Gb Corsair XMS DDR2 800MHZ Scheda Video: Gigabyte HD5670 1gb DDR5 |
|
|
|
|
|
#3 | ||
|
Senior Member
Iscritto dal: Oct 2004
Messaggi: 1945
|
Quote:
Quote:
Ora comincio a buttare giù qualche riga di progetto e poi ti faccio sapere se ho problemi... |
||
|
|
|
|
|
#4 |
|
Member
Iscritto dal: Sep 2007
Messaggi: 259
|
Sai quante volte è capitato a me!!!
Dopo un pò capisci che una buona analisi ti fa risparmiare la metà del tempo! Per qualsiasi cosa chiedi pure.... C lo uso abbastanza in questo periodo.
__________________
Ho concluso trattative con: Fuckaldo -- Fede -- HTCPTC ----------------------------------------------------------- Mobo: MSI P43 Neo-F ATX CPU: Intel E7300 2.66Ghz HD 1: Seagate Barracuda 250Gb SATA2 Ram: 2* 1Gb Corsair XMS DDR2 800MHZ Scheda Video: Gigabyte HD5670 1gb DDR5 |
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Oct 2004
Messaggi: 1945
|
Grandi raga
|
|
|
|
|
|
#6 | |
|
Senior Member
Iscritto dal: Nov 2001
Città: Bastia Umbra (PG)
Messaggi: 6395
|
Quote:
PS: scherzo
__________________
:: Il miglior argomento contro la democrazia è una conversazione di cinque minuti con l'elettore medio :: |
|
|
|
|
|
|
#7 |
|
Member
Iscritto dal: Sep 2007
Messaggi: 259
|
Se il TSO è quello che ho capito io..... Concordo!!
__________________
Ho concluso trattative con: Fuckaldo -- Fede -- HTCPTC ----------------------------------------------------------- Mobo: MSI P43 Neo-F ATX CPU: Intel E7300 2.66Ghz HD 1: Seagate Barracuda 250Gb SATA2 Ram: 2* 1Gb Corsair XMS DDR2 800MHZ Scheda Video: Gigabyte HD5670 1gb DDR5 |
|
|
|
|
|
#8 |
|
Senior Member
Iscritto dal: May 2001
Messaggi: 12904
|
Quotone, per l'università abbiamo scritto un programma peer2peer sotto linux, e carta e penna sono fondamentali per poter affrontare progetti di un certo tipo.
|
|
|
|
|
|
#9 |
|
Senior Member
Iscritto dal: Oct 2004
Messaggi: 1945
|
Ora mi trovo davanti a un piccolo dilemma!
Devo decidere se gestire i client che vogliono connettersi con i thread oppure creare dei figli con fork! Il problema in definitiva qual'è! Se io ho delle variabili globali con le fork saranno modificate sia dal padre che dai figli! Solo che il padre continuerà a vederle come le modifica lui e il figlio altrettanto dato che effettivamente con la fork sto creando un nuovo processo! Per ovviare a questa cosa dovrei utilizzare uno spazio di memoria condivisa con shmget! Utilizzando i thread questa cosa non succede! Anche dalla vostra esperienza secondo voi cosa potrebbe essere meglio usare?? Con i thread avrei maggiori performance aumentando un po la complessità comunque! |
|
|
|
|
|
#10 |
|
Senior Member
Iscritto dal: May 2001
Messaggi: 12904
|
Io dico di utilizzare i thread.
Se stai sotto linux, c'è l'ottima libreria pthread. Non è così complesso gestirli con quella libreria. |
|
|
|
|
|
#11 |
|
Senior Member
Iscritto dal: Feb 2006
Messaggi: 1304
|
Io per i thread sto usando Boost::thread...
certo Boost è una roba immensa e ridondante, ma Thread fa proprio il suo dovere. Non devi impararti assolutamente niente se non i concetti di alto livello (mutex, concorrenza, starving etc)... che possono uscire fuori quando hai una condivisione delle risorse. Basta che dichiari un operatore overloaded "()" nella tua classe e chiami: Codice:
thread( boost::ref( ilTuoOggetto ) ); Molto comodo EDIT: Ops Boost è C++. Come non detto
|
|
|
|
|
|
#12 | |
|
Senior Member
Iscritto dal: Oct 2004
Messaggi: 1945
|
Quote:
Ho cominciato a scrivere del codice! Io sono sempre stato per i thread però un mio amico mi aveva fatto cambiare idea neanche ricordo per quale motivo però! Comunque ora ci rifletto un po su! Mi faccio una lista di pro e contro! |
|
|
|
|
|
|
#13 | |
|
Senior Member
Iscritto dal: Feb 2010
Messaggi: 466
|
Quote:
anche sotto windows con pthread-w32 ( http://sourceware.org/pthreads-win32/ ) |
|
|
|
|
|
|
#14 | |
|
Senior Member
Iscritto dal: May 2001
Messaggi: 12904
|
Quote:
- Devi gestire un numero fisso di processi/thread e magari li crei tutti subito senza gestirli dinamicamente: in quel caso la differenza di tempo tra la creazione di processi e la creazione di thread è tutto sommato irrilevante. - I processi ti consentono maggiore stabilità poiché ognuno gira in uno spazio di memoria separato (per questo in IE8 ogni tab è un processo). Viceversa se devi gestire un alto numero di richieste, dinamicamente, è consigliato usare i thread. Per altro sia il numero di processi che il numero di threads dovrebbe essere limitato in tutti i SO (un po' di versioni fa in Linux non era così, tant'è che era soggetto a fork-bomb, potevi creare un numero elevato di processi, magari con un while infinito ed impallare il sistema Ultima modifica di WarDuck : 25-02-2010 alle 17:38. |
|
|
|
|
|
|
#16 |
|
Senior Member
Iscritto dal: Feb 2010
Messaggi: 466
|
per una semplice chat , almeno due th ci vogliono , uno che gestisce l'invio dei dati e uno che gestisce la ricezione.
|
|
|
|
|
|
#18 |
|
Senior Member
Iscritto dal: Feb 2010
Messaggi: 466
|
|
|
|
|
|
|
#19 |
|
Senior Member
Iscritto dal: Oct 2004
Messaggi: 1945
|
effettivamente non l'ho capita nemmeno io
Comunque non devo fare una chat! Il mio progetto è un elenco telefonico remoto (ma può funzionare anche in locale)! Quindi non ho un numero ben preciso di client connessi! Comunque magari il mio prof (che tra l'altro è un qualcosa di disumano, un vero debugger umano) potrebbe avere una valutazione migliore nel vedere che sono stati usati i thread anzichè delle fork! |
|
|
|
|
|
#20 | |
|
Senior Member
Iscritto dal: Feb 2010
Messaggi: 466
|
Quote:
In genere in questi casi si usano soluzioni multithread , in cui un il th principale è in ascolto, quando riceve una chiamata , questa viene gestita da un th separato mentre il principale si rimette in ascolto |
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 23:26.




















