quesito per qualcuno che sa programmare in c++

InterNik":1p8473x2 ha detto:
lelesch81":1p8473x2 ha detto:
Se ti sentisse il mio prof. di Laboratorio di linguaggi ti direbbe:
"Se trovo un Go to nel progetto, non lo eseguno neanche.... Lo cancello... " :p :asd) :lol:
Rispondigli: mi scriva in assembler un banale programmello SENZA l'equivalente del goto (jmp) e poi guarda la sua faccia :asd)

Al livello "neofita" ok, tutto bene, mai il goto... oddio il goto che schifo!

Ad un livello di "consapevolezza" maggiore (matrix?)... ti rendi conto... che il goto è la base su cui si fondano i programmi :asd)

(bisogna in verità dire che sulla piattaforma x86 esistono innumerevoli salti condizionati, ma il discorso resta valido. Altre architetture non sono così "munifiche", ma è o non è un CISC [a livello ideale?])

Per gli "sbarbatelli"... cercate di non arrivare al lato "oscuro" (il mio) :asd)

E' un mese che lavoro presso uno studio di grafica & software gestionali, su varie piattaforme...

Inizio ad odiare il mondo dell'informatica... :mad2)
 
InterNik":11sr147c ha detto:
Ad un livello di "consapevolezza" maggiore (matrix?)... ti rendi conto... che il goto è la base su cui si fondano i programmi :asd)

Stai confondendo i linguaggi a basso livello con quelli ad alto livello.

E' normale che quando viene generato l'eseguibile scritto con un linguaggio ad alto livello, vengono generati dei jump: una banale istruzione "if" genera un codice con dei jump.

Ma un GOTO è veramente una cosa da evitare, per i motivi che ha detto antos. I benefici che portano vengono azzerati completamente dagli innumerevoli svantaggi.

Ed è SEMPRE (e ripeto SEMPRE) possibile sostituire il GOTO con una delle istruzioni di selezione (siano esse if annidati o costrutti switch).

Metti le mani a un codice scritto da un altro pieno di goto e dimmi poi se non lo uccideresti per aver scritto simili porcherie...
 
Gatito":1shlboli ha detto:
InterNik":1shlboli ha detto:
Ad un livello di "consapevolezza" maggiore (matrix?)... ti rendi conto... che il goto è la base su cui si fondano i programmi :asd)

Stai confondendo i linguaggi a basso livello con quelli ad alto livello.

E' normale che quando viene generato l'eseguibile scritto con un linguaggio ad alto livello, vengono generati dei jump: una banale istruzione "if" genera un codice con dei jump.

Ma un GOTO è veramente una cosa da evitare, per i motivi che ha detto antos. I benefici che portano vengono azzerati completamente dagli innumerevoli svantaggi.

Ed è SEMPRE (e ripeto SEMPRE) possibile sostituire il GOTO con una delle istruzioni di selezione (siano esse if annidati o costrutti switch).

Metti le mani a un codice scritto da un altro pieno di goto e dimmi poi se non lo uccideresti per aver scritto simili porcherie...

Infatti... bisogna tenere presente anche che i moderni compilatori hanno un livello molto alto di ottimizzazione che traducono il codice sorgente in codice macchina nel miglior modo possibile...

Una volta ho detto a chi lavora con me, che in America si sviluppano massimo venti linee di codice al giorno per programmatore... loro si sono messi a ridere... poi gli ho detto di contare dopo due anni progetto quante linee erano effettivamente andate in produzione e di diveiderle per i giorni di alvoro di sviluppo... alla fine la media era di 12 o 13 linee sviluppate al giorno, visto che la maggior parte del alvoro era di sistemare quello che avevano scritto in precedenza... Lo sviluppo è la fase che costa di meno... la manutenzione invece costa tantissimo... quindi meglio sviluppare 10 linee fatte bene piuttosto che 100 di cavolate che prima o poi si devono rifare.... ma qui diventa lunga la questione... per imparare un linguaggio ci vuole poco (java io l'ho studiato in 2 settimane nel 1998)... per fare ad esempio analisi Object Oriented ci vuole invece molto studio ed esperienza e con java ho lo stesso approccio che avevo con l'ada e lo smalltalk ... conoscere un linguaggio non vuol dire sapere come si crea un software... per fortuna... altrimenti avrei finito di lavorare :p
 
Gatito":1cxztwhv ha detto:
Stai confondendo i linguaggi a basso livello con quelli ad alto livello.
Bhè... in verità no... anche perchè diciamo che un certo numero di paradigmi li conosco, e bene... :asd)
E' normale che quando viene generato l'eseguibile scritto con un linguaggio ad alto livello, vengono generati dei jump: una banale istruzione "if" genera un codice con dei jump.
In verità no, su x86 non sono jmp bensì salti condizionati, tipo je
Ma un GOTO è veramente una cosa da evitare, per i motivi che ha detto antos. I benefici che portano vengono azzerati completamente dagli innumerevoli svantaggi.
bhè i motivi secondo me sono innumerevoli altri...
Ed è SEMPRE (e ripeto SEMPRE) possibile sostituire il GOTO con una delle istruzioni di selezione (siano esse if annidati o costrutti switch).
Penso di non aver scritto un goto negli ultimi 18 anni... :D
Metti le mani a un codice scritto da un altro pieno di goto e dimmi poi se non lo uccideresti per aver scritto simili porcherie...
Se vuoi ti faccio mettere le mani su un codice scritto da un altro SENZA nessun goto e vediamo come te la cavi... Io lo faccio tutti i giorni, per lavoro, e ti assicuro che "assenza-di-goto" non significa affatto "buon programma" o "programma chiaro" o quello che preferisci.

E te lo dice uno che si è scritto un intero sistema operativo simil-unix (col VI) oltre 10 anni fa :nod)
 
antos":1pt6lom9 ha detto:
Infatti... bisogna tenere presente anche che i moderni compilatori hanno un livello molto alto di ottimizzazione che traducono il codice sorgente in codice macchina nel miglior modo possibile...
Bhè non sono molto d'accordo, è una cosa che faccio quasi tutti i giorni ed, in verità, non è che ci sia tutta questa "qualità"... In particolare con le estensioni o anche solo la gestione delle bubbles siamo moooolto lontani da "buoni" compilatori, ma questa è una mia opinione
Una volta ho detto a chi lavora con me, che in America si sviluppano massimo venti linee di codice al giorno per programmatore... loro si sono messi a ridere... poi gli ho detto di contare dopo due anni progetto quante linee erano effettivamente andate in produzione e di diveiderle per i giorni di alvoro di sviluppo... alla fine la media era di 12 o 13 linee sviluppate al giorno, visto che la maggior parte del alvoro era di sistemare quello che avevano scritto in precedenza...
Bhè si narra che Stallman scriva il 95% delle righe senza errori :lol:
Dai su le 20 righe/giorno è una "leggenda", pari all' 80/20...
Lo sviluppo è la fase che costa di meno... la manutenzione invece costa tantissimo... quindi meglio sviluppare 10 linee fatte bene piuttosto che 100 di cavolate che prima o poi si devono rifare....
Andiamo su, non generalizzare... del progetto che sto sviluppando ora ho scritto 94.501 righe, ed il cliente non mi chiama da SEI ANNI per segnalare bug... ai tuoi ritmi ci avrei impiegato 7800 anni!

ma qui diventa lunga la questione... per imparare un linguaggio ci vuole poco (java io l'ho studiato in 2 settimane nel 1998)... per fare ad esempio analisi Object Oriented ci vuole invece molto studio ed esperienza e con java ho lo stesso approccio che avevo con l'ada e lo smalltalk ...
Bhè dissento completamente, per conoscere bene java direi che ci vogliono un 5 anni, per fare un elaborato in ada o smalltalk bastano 3 mesi...

Se intendiamo, for, while, assegnazioni etc allora conosco circa 28 linguaggi di programmazione... Anzi, dammi l'elenco di un qualsiasi linguaggio ed in un pomeriggio lo so usare (a parte Forth che mi ha preso quasi 2 mesi :mecry) )

conoscere un linguaggio non vuol dire sapere come si crea un software... per fortuna... altrimenti avrei finito di lavorare :p
Concordo in pieno: che c'entrano linguaggi e software? E' come conoscere l'alfabeto e scrivere una poesia. Non è la stessa cosa! :OK)

Quello su cui vorrevo porre l'acccento è "non formalizzarsi troppo sul PROCESSO", bensì sul "PRODOTTO".

Oggi, specie nell'università, ma anche in alcune aziende, ci si riempie la bocca con "progettazione", "oggetto", "certificazione ISO".

Che sono 3 parole ormai prive di significato.

Se tizio scrive un "buon" programma con un goto, e caio uno "pessimo" senza, per me è meglio tizio.

Non è lo "strumento", o il paradigma, a fare la qualità del software
:lol:
 
Allora calma ragazzi..... :D
Sto iniziando a muovere i primi passi per programmare in c.
Non ho mai fatto nulla di simile.
Sto facendo un corso di c all' università e quindi devo riuscire a cavarmela per giugno quando avrò l'esame.
Ho usato il system(pause) in modo che dopo avermi dato il risultato aspetta che io premo un tasto prima di finire tutto e quindi ho modo di leggere il risultato.
A volte uso anche il getchar ma il system(pause) mi piace di piu perchè almeno viene scritto "Premere un tasto per continuare..." :)
Come mai dite che è fatto in c e non c++?
Io il progetto l'ho salvato in *.cpp quindi credevo di aver compilato con Dev-C++ in c++appunto.
Ciaooo
 
mezzostordito":27iwtjox ha detto:
Come mai dite che è fatto in c e non c++?
Io il progetto l'ho salvato in *.cpp quindi credevo di aver compilato con Dev-C++ in c++appunto.
Ciaooo
Perchè contiene unicamente istruzioni C e non C++, usa le librerie di input/output C e non C++ etc.

E' un programma C "liscio".

Se avessi voluto farlo C++ avresti dovuto creare una classe "punto" (con i relativi attributi), una class "piano" con i metodi opportuni etc.etc.

Il C++ è "compatibile" al 99% col C: puoi scrivere un programma C, darlo in pasto ad un compilatore C++, ed ottenere un eseguibile.

Questo avviene perchè (quasi tutte) le "estensioni" C++ estendono, appunto, il C "liscio"

Edit: scusa mi rendo conto che ho dato per scontato che ti abbiano spiegato almeno a grandi linee 'cos'è' C++.

Sintetizzando al massimo l'idea (che, come tutte le idee, può essere buona o meno a seconda del problema che devi affrontare) è quello di creare un certo numero di "entità", le classi, che modellano la realtà che vuoi descrivere.

In questo caso una scelta ragionevole è quella di partire da una classe "punto", che altro non è che un insieme di 3 coordinate

poi puoi costruirti una classe "retta", ed una "piano", estendendo opportunamente la classe "punto".

Oltre agli attributi (=variabili) andrebbero anche posti i vari metodi
(costruttori, costruttori di copia, distruttori ) e soprattutto quelli di "elaborazione", stampa e così via.

Poi, fatto questo, li dovresti istanziare (=dichiarare degli oggetti) e manipolarli.

---
Come vedi il discorso è assai diverso rispetto all'approccio "procedurale"-stile C della tua bozza.

Buon lavoro e se ti servono info chiedi pure :baby)
Mica si nasce con la scienza infusa nel DNA! :OK)
 
InterNik":xnd3wrjb ha detto:
E' normale che quando viene generato l'eseguibile scritto con un linguaggio ad alto livello, vengono generati dei jump: una banale istruzione "if" genera un codice con dei jump.
In verità no, su x86 non sono jmp bensì salti condizionati, tipo je

Visto che sei cosi' "esperto" avrai capito benissimo che parlavo di salti in generale, è inutile che puntualizzi.

InterNik":xnd3wrjb ha detto:
Ed è SEMPRE (e ripeto SEMPRE) possibile sostituire il GOTO con una delle istruzioni di selezione (siano esse if annidati o costrutti switch).
Penso di non aver scritto un goto negli ultimi 18 anni... :D
Metti le mani a un codice scritto da un altro pieno di goto e dimmi poi se non lo uccideresti per aver scritto simili porcherie...
Se vuoi ti faccio mettere le mani su un codice scritto da un altro SENZA nessun goto e vediamo come te la cavi... Io lo faccio tutti i giorni, per lavoro, e ti assicuro che "assenza-di-goto" non significa affatto "buon programma" o "programma chiaro" o quello che preferisci.

E te lo dice uno che si è scritto un intero sistema operativo simil-unix (col VI) oltre 10 anni fa :nod)

Oddio, ho trovato il "dio" dei programmatori! :D :D :D

Torna sulla terra che non sei l'unico che fa questo lavoro...
:asd) :asd) :asd) :asd) :asd) :asd) :asd) :asd) :asd) :asd)
 
mezzostordito":i7yt7ks7 ha detto:
InterNik":i7yt7ks7 ha detto:
mezzostordito":i7yt7ks7 ha detto:
come si usa la funzione goto???
Io ho bisogno che lui vada dopo un if alla riga 45 ma no riesco a trovare la sintassi giusta.
Grazie
NOOOOO DIMMI CHE NON VUOI USARE IL GOTO IN UN PROGRAMMA C++!!!! TI PREGOOOOOO

SE LO FAI DIVENTI IL MIO MITO A VITA!

perchè??? è comodo almeno salta a destra e sinistra....cmq sai come devo scrivere?

la goto è ritenuta la rovina del C++, non è strutturata come funzione..!
 
Il goto è il principio dello "Spagetti Code", ovvero il codice incasinato (hai presente un piatto di spaghetti??). Evitalo come la peste, qualunque prof ti segherebbe le gambe appena ne vedesse l'ombra...
 
Gatito":1ettf798 ha detto:
Oddio, ho trovato il "dio" dei programmatori! :D :D :D
In verità... sì... L'Anticristo... :asd)
Torna sulla terra che non sei l'unico che fa questo lavoro...
:asd) :asd) :asd) :asd) :asd) :asd) :asd) :asd) :asd) :asd)
Purtroppo vivo nella geena... :lol:

PS Certo che non sono l'unico, quaggiù siamo in tanti! :D
 
cn73":2c8oy9bw ha detto:
Il goto è il principio dello "Spagetti Code", ovvero il codice incasinato (hai presente un piatto di spaghetti??). Evitalo come la peste, qualunque prof ti segherebbe le gambe appena ne vedesse l'ombra...
Io... no ! :nuovi010) :lol1)
 
mezzostordito":lmw4hll6 ha detto:
ma sto goto è bellissimo ne ho usati una ventina nel programma alla fine al posto dei contatori uno spettacolo si risolve tutto in un attimo :D

il goto è come tirarsi la zappa sui piedi... forse nei programmi semplici vale la pena usarlo, ma come ti hanno già detto un programma con i goto è poco leggibile e spesso provoca qualche problemino quando la complesità aumenta...

abbasso i goto!! :asd)
 
FlorianoL":1mmctlny ha detto:
mezzostordito":1mmctlny ha detto:
ma sto goto è bellissimo ne ho usati una ventina nel programma alla fine al posto dei contatori uno spettacolo si risolve tutto in un attimo :D

il goto è come tirarsi la zappa sui piedi... forse nei programmi semplici vale la pena usarlo, ma come ti hanno già detto un programma con i goto è poco leggibile e spesso provoca qualche problemino quando la complesità aumenta...

abbasso i goto!! :asd)

l'ho usato al posto di un contatore nel senso che dopo che aveva fatto un un' operazione andava alla fine del programma senza piu dover calcolare il resto
 
Top