Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 16

Discussione: Linguaggio sbagliato?

  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2008
    Messaggi
    7

    Linguaggio sbagliato?

    Ciao a tutti.
    Mi divertivo a programmare in basic "qualche" anno fa (c64 e amiga...). Le poche conoscenze che avevo erano venute provando a programmare qualcosa e risolvendo via via i vari problemi.
    Mi è venuta voglia di provarci con il PC dopo molti anni e da qui nascono i problemi... quale programma usare? Il VB mi sembrava semplice ed in grado di gestire la grafica in modo immediato ed intuitivo.
    Ho così deciso di provare ed ho scelto come programma "studio" la creazione di un poker (giochino già fatto precedentemente con il c64).

    Ci ho lavorato su qualche giorno e ho l'impressione di aver fatto la scelta sbagliata
    I problemi sono iniziati subito perchè non capivo come gestire la struttura dela programma, che abitualmente era composta da un unico listato, mentre qui si gestiscono solo sub-routine legate a singoli "eventi" (non conosco bene il linguaggio e non conosco quindi le definizioni esatte, spero di riuscire a farmi capire). Mi sembra di capire che anche gosub e goto funzionano solo all'interno della stessa routine...
    Ho comunque continuato la programmazione pensando che andando avanti avrei risolto man mano i vari problemi.
    La parte principale del gioco era quindi fatta: la grafica, mescolare/distribuire le carte, far si che il computer riconoscesse le combinazioni ecc... però ad un certo punto, mi sono trovato a delle difficoltà insormontabili.
    Non essendo un esperto di programmazione mi è difficile essere chiaro nello spiegare le difficoltà da me incontrate, spero di riuscirci.
    Qui ogni pulsante ripropone una subroutine, mentre io avrei bisogno di una struttura unica che utilizzasse i vari pulsanti non sempre allo stesso modo, inoltre ho bisogno di suboutine non legate ad azioni dell'utente, richiamabili da qualsiasi punto del programma.
    Per esempio se il giocatore non apre, ho bisogno di far pensare il pc-giocatore, quindi sono costretto ad inserire il codice all'interno di questa routine di apertura del giocatore, ma se non apre nessuno devo ritornare alla routine della puntata iniziale ed a questo punto deve aprire il pc-giocatore... e lo deve fare nella routine in cui si è fatta la puntata. In questo modo devo rifare molte volte le stesse routine.
    Con il vecchio basic 2.0 ed un opportuno utilizzo di goto e gosub, la programmazione mi sembrava molto più snella e semplice, con la sua struttura unica e le varie routine/sub-outine.
    Non so se riesco a far capire il problema, ma in pratica la struttura del gioco mi risulta legata a pulsanti, immagini, label o quant'altro, mentre a me servirebbe che ci fosse una struttura unica slegata dal dato pulsante/immagine/label, ma che li richiamasse quando servono.

    E' perchè conosco ancora troppo poco il linguaggio o invece ho scelto un linguaggio sbagliato? Esiste in alternativa un linguaggio semplice, molto simile al basic, che utilizzi il solito vecchio tipo di programmazione lineare, con un bel listato unico?

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    No ... devi abbandonare l'idea di "goto" , "gosub" e altra "robaccia" del genere oltre che devi adottare la programmazione Object Oriented o, quanto meno, Event Driven ...

    Il vecchio stile di programmazione (C64 e simili, vari BASIC o QBASIC ...) e' tanto ma tanto obsoleta ...

    In poche parole, prima di (ri)cominciare a programmare, fai un bel "Clear" di quello che sai e riparti da zero ... magari con un linguaggio come C# e con tanti e tanti libri da leggere "prima" di mettere mani al codice ...

    Libri che non ti spieghino solamente le caratteristiche del linguaggio (quello per ultimo) ma la "filosofia" della programmazione OO.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it
    Registrato dal
    Apr 2008
    Messaggi
    7
    D'accordo, quella è la strada migliore.
    Però quello che volevo fare era appunto non buttare via quanto finora appreso perchè non me la sentivo di cominciare da zero. Cioè, se tra i linguaggi esistenti trovassi qualcosa che si avvicinasse al vecchio modo di programmare, mi sarebbe senz'altro più facile migrare gradualmente verso nuovi linguaggi.

    Del resto io sono fermo alla costruzione del programma con diagrammi che qui sono assolutamente impraticabili.

    Una domanda, in cosa consiste il vantaggio di una programmazione Object Oriented ? Per adesso io ne ho provato solo i limiti

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Originariamente inviato da Mauro01
    Però quello che volevo fare era appunto non buttare via quanto finora appreso perchè non me la sentivo di cominciare da zero.
    No ... devi solo mantenere quell' "intuito" tipico del programmatore esperto che gli permetter di trovare il "modo per risolvere" un problema ma non tutte le cognizioni specifiche sulla programmazione "spaghetti" perche' queste ultime ti complicheranno la vita.

    Non butterai quindi qualcosa che ti serve ma che ti impedisce di "fare il salto" verso la programmazione moderna ...

    Cioè, se tra i linguaggi esistenti trovassi qualcosa che si avvicinasse al vecchio modo di programmare
    No ... c'e' un "muro" tra i due modi di programmare.

    Del resto io sono fermo alla costruzione del programma con diagrammi che qui sono assolutamente impraticabili.
    Cancella anche questi dalla tua mente ...

    Una domanda, in cosa consiste il vantaggio di una programmazione Object Oriented ? Per adesso io ne ho provato solo i limiti
    E' una "domandona" ... non si puo' rispondere in un forum ... per questo ti consigliavo libri e libri anche sulla "filosofia" della OOP ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    Utente di HTML.it
    Registrato dal
    Apr 2008
    Messaggi
    7
    Ok, vado a comprarmi un libro.

    Nell'esperimento che ho fatto fino ad un certo punto tutto progrediva bene, riuscivo a risolvere i vari problemi che si presentavano ed entravo nell'ottica diversa, fino a che non sono arrivato al nocciolo del programma scelto. Cioè la necessità di dover far fare al programma continue scelte non legate al'oggetto, ma alla situazione (Poker: girano i turni di chi ha le carte e di chi deve parlare, il programma è legato alle situazioni non agli oggetti; in ognuna di queste piccole azioni, devo utilizzare una particolare routine, molto spesso la stessa, ma dev'essermi acessibile da qualsiasi posizione in cui mi trova... ecco perchè il goto ed il gosub avrebbero risolto il mio problema).

    Non ho molto tempo però da dedicarci, era questo il limite, comunque voglio provare, mi consigli C o C++?

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Ti ripeto ... niente goto o gosub ... vedrai che e' possibile fare di tutto e meglio ...

    Meglio C# ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  7. #7
    Utente di HTML.it
    Registrato dal
    Apr 2008
    Messaggi
    7
    Grazie dei consigli, ho preso due manualetti per cominciare, uno per C# ed uno per VB6.

    Permettimi di romperti per l'ultima volta le scatole ^^ Ho bisogno di capire come devo mutare il mio modo di pensare e soprattutto capire che c'è una soluzione anche se io al momento non riesco a trovarla.
    Userò l'esempio del mio programma. Non so se tu conosci il Poker, spero di si, perchè qui l'esempio della difficoltà è molto calzante. Tieni conto che uso VB da pochi giorni e che passo direttamente dal Basic di 20 anni fa... allora:

    Io (giocatore) Punto, ho il mio bel pulsante al cui click inizia il mio codice. Una volta puntato, i 3 giocatori gestiti dal PC, decidono se aprire, quindi devo inserire una routine che gestisca l'apertura di seguito a questa routine legata al pulsante "Punto".
    Ora nessuno apre, la parola tocca a me che ho la possibilità di passare o aprire: Passo.
    Il PC diventa mazziere e punta (questa routine di puntata è scritta quindi anche nel pulsante "Passo" e già era scritta nel pulsante "Punta"), i PC devono decidere se aprire o meno (quindi serve una routine di apertura legata al pulsante "Passo", ma una era già scritta nel pulsante "Punta").
    Con l'aggiunta di altre complicazioni (rilancio, buio, controbuio), mi troverei a riscrivere continuamente routine simili e complicando sempre di più i vari pezzi di codice con sub-routine che dovrebbero regolare più eventi tra l'altro già regolati da altre routine.

    La soluzione con il vecchio sistema era semplice: c'è un flusso di dati principale che si snoda tra le varie fasi del gioco, da qui si diramano le varie sub-routine che regolano gli eventi, per poi ritornare nel flusso principale che regola gli eventi principali.
    Il diagramma di flusso posso progettarlo ad inizio progetto.

    Ma con VB (che è l'unico per adesso che ho provato ad usare), che approccio dovrei avere con questi problemi? Come potrei farmi un progetto iniziale?

  8. #8
    Ciao !

    Anch'io parecchi anni fa' utilizzavo il vecchio AmigaBasic, con discreti risultati e soddisfazione, a parte la velocita' di elaborazione e la... mancanza di un hard-disk ! (qui qualche "ragazzino" strabuzzera' gli occhi )...

    Per qualche anno ho "abbandonato" i computer, e successivamente... mi sono ritrovato su una moderna macchina, veloce e potente... con l'imbarazzo di dover scegliere un linguaggio di programmazione (non riesco proprio a limitarmi ad utilizzare programmi fatti da altri)... C++... C#... Java... Basic.Net...

    Avendo nel frattempo smanettato un po' con Excel in ufficio, e relativo VBA, ho ovviamente scelto il VB6, probabilmente la piu' obsoleta fra le alternative, ma tant'e'...
    Certo, all'inizio non e' semplice entrare nell'ordine d'idee del flusso di programma event-driven, ma ci si abitua in fretta !

    Passo finalmente a dirti "la mia":

    1) non e' questione di linguaggio, TUTTI i moderni linguaggi non seguono piu' la rigida struttura dei vecchi.

    2) "Ci ho lavorato su qualche giorno e ho l'impressione di aver fatto la scelta sbagliata"... SI', ma non nel senso del linguaggio: sei partito da un esempio di programma troppo complesso per iniziare a capire le interazioni fondamentali... probabilmente avevi una discreta abilita' di programmazione sul vecchio Basic, ma qui devi prima capire la logica di funzionamento.

    3) parli di Sub sempre legate ad un pulsante, ma NON e' cosi': puoi definire tutte le Sub che vuoi e richiamarle dove vuoi, ci mancherebbe !

    4) avrai visto che il programma "parte" dal caricamento del primo Form del progetto, e' pero' possibile definire una Sub Main (il nome DEVE essere quello), ed impostare questa Sub come "oggetto" di partenza, simulando un po' quello che era una volta l'inizio del "listato".

    5) scordati proprio i GoTo e Gosub, dovrai utilizzare sempre delle procedure (Sub) con la relativa differenza di accesso alle variabili (globali/locali)

    Per ora ciao, a risentirci !
    IceCube_HT (VB6 fan Club)

  9. #9
    Utente di HTML.it
    Registrato dal
    Apr 2008
    Messaggi
    7
    In effetti sono partito da un programmino complesso, ma che avevo già fatto, quindi non pensavo di dover utilizzare un approccio diverso ai vari problemi.
    In effetti, come dici tu, tutti i linguaggi ormai non utilizzano più la struttura a cui ero abituato, ho cercato in rete dappertutto e, a meno di non voler utilizzare il QBasic , non c'è alternativa al dover ricominciare quasi da zero ^^

    Però mi sembra di capire di aver sbagliato io a voler cominciare senza prima studiare bene (non l'ho mai fatto, pensavo non servisse neppure adesso ), infatti non sapevo nulla della Sub Main; se riesco ad utilizzarla come il "cuore" del programma, il gioco è fatto.
    Mi rimane ancora il problema (che per me è il più importante) di poter passare da una routine all'altra senza passare per un'azione dell'utilizzatore e come passare da una routine a questa Sub Main sempre senza nessuna azione da parte dell'utente del programma, ma probabilmente studiando con un po' di pazienza riesco a venirne a capo.

    Grazie a tutti per l'aiuto


    @edit

    Originariamente inviato da icecube_HT 3) parli di Sub sempre legate ad un pulsante, ma NON e' cosi': puoi definire tutte le Sub che vuoi e richiamarle dove vuoi, ci mancherebbe !
    Ecco, è questo quello che mi serve.
    Ma una volta definita la mia etichetta in una sub, richiamandola da un'altra, VB mi ritornava un errore che diceva che non era possibile utilizzare il gosub al di fuori di una routine e questo mi spiazzava.
    Ora a me non interessa utilizzare goto o gosub, ma ho bisogno di passare da una routine all'altra senza che questo presupponga il clickare di un dato tasto.
    Il leggere che non si può fare, mi aveva bloccato ed effettivamente non avevo più cercato soluzioni al problema (utilizzo molto la rete per la soluzioni ai piccoli problemi), sapendo che è possibile farlo, cercherò il modo.
    Ciao e grazie

  10. #10
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Originariamente inviato da Mauro01
    Il leggere che non si può fare, mi aveva bloccato ...
    Per il VB6 ad esempio puoi scrivere una funzione generica

    codice:
    Private Function FuncA() As Long
       ' ...
       FuncA=1
    End Sub
    e quando ti serve la richiami dall'interno di un'altra

    codice:
    Private Function FuncB() As Long
       Dim x As Long
       
       x = FuncA()
    
       FuncB=x
    End Sub
    No MP tecnici (non rispondo nemmeno!), usa il forum.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.