Come impari a programmare? [duplicare]

16

Possible Duplicates:
I still can't figure out how to program?
I'm graduating with a Computer Science degree but I don't feel like I know how to program

Non so se voi ragazzi avete un super cervello specifico per la programmazione, ma mi piacerebbe sapere come riuscite a imparare, capire e applicare la programmazione Java. Sono al grado 11 e abbiamo imparato affermazioni, oggetti, classi e matrici. Riceviamo test di programmazione ogni settimana e io sto fallendo. Ora abbiamo un progetto per fare BlackJack usando un modulo di JPanel. Anche memorizzare il ciclo while non è un problema; Penso che il problema sia applicarlo alla situazione (il mio amico non programma mai allo stesso modo dell'insegnante ma ottiene comunque gli stessi risultati).

    
posta Mpumi 11.04.2011 - 22:02
fonte

9 risposte

25

Si impara a programmare programmando. Non c'è davvero alcun sostituto per l'esperienza. Dopo aver risolto abbastanza problemi, inizi a creare associazioni mentali. Poi incontri qualcosa che devi fare ed è concettualmente simile a qualcosa che hai fatto prima che ti rendi conto che puoi risolverlo praticamente nello stesso modo in cui hai fatto l'altra cosa.

Ci sono davvero solo due parti da programmare: avere un repertorio di soluzioni ai problemi, e la capacità analitica di suddividere un grosso problema in sotto-problemi più piccoli, e poi spezzarli ulteriormente, finché non li si trasforma in singoli pezzi per cui hai una soluzione. Entrambe queste abilità sono costruite dall'esperienza.

EDIT: permettimi di aggiungere un'altra cosa. Se vuoi veramente imparare a essere un buon programmatore, pensa alle abilità di programmazione come i muscoli. Diventano più grandi quando li eserciti e li spingono al limite. Continua a cercare nuovi problemi da risolvere, cose che non hai ancora fatto e scopri come risolverli.

    
risposta data 11.04.2011 - 22:18
fonte
9

Ci sono due aree chiave:

  1. Risoluzione dei problemi (Capire il problema e come risolverlo)
  2. Astrazione (Capire come generalizzare e separare la risoluzione di un compito, questo è molto importante nei linguaggi OO come Java)

Alcuni di questi sono naturalmente più facili per alcune persone, proprio come la matematica o l'inglese potrebbe essere più facile. Se è qualcosa con cui ti trovi a lottare, allora la soluzione è più pratica, proprio come l'apprendimento della matematica.

    
risposta data 11.04.2011 - 22:06
fonte
5

È molto bello che tu stia chiedendo aiuto. La chiave per imparare a programmare è

  • Avere qualcosa che vuoi fare con esso è divertente, e questo è molto semplice.

Esempi:

  • Scrivi un programma che insulti a caso le persone, ad esempio "Come ti chiami?" "George" "Ciao George, sei uno snob piagnucoloso!"

  • Scrivi un programma che aiuti i tuoi genitori a tenere traccia della bolletta del telefono, dei minuti e del testo e tutto il resto.

  • Scrivi un programma che fa rimbalzare una palla sullo schermo, e poi magari fallo giocare a pong.

Memorizzare non è un buon modo per imparare la programmazione. Se hai qualcosa che vuoi fare, realizzerai lo scopo di ogni parte della lingua.

AGGIUNTO: Ok, se davvero non sai da dove cominciare, insegnavo questa roba quindi vediamo se posso aiutarti. Era 30 anni fa, quindi abbiamo usato il BASIC per la programmazione introduttiva, per poi passare a un linguaggio strutturato. Ora la gente mi salterà addosso per questo, e puoi ottenere cattive abitudini dal BASIC, ma continuo a pensare che faccia bene quando le persone iniziano dal nulla. Forse puoi fare la stessa cosa in Java, non lo so.

Scrivi e giochi con una serie di programmi, come ad esempio:

  • Un programma che ti stampa un saluto. Questo ti insegnerà come stampare una stringa.
  • Un programma che ti chiede il tuo nome e poi ti stampa un saluto. Questo ti insegnerà come inserire un nome in una variabile stringa e come usarlo in una stampa. Scoprirai che una variabile è come un contenitore con nome, e ciò che contiene è un numero o una stringa di caratteri, e il suo nome è diverso da quello che contiene.
  • Un programma che ti chiede di inserire una temperatura in Celsius e ti dice la stessa temperatura in Fahrenheight o viceversa. Questo ti insegnerà semplici istruzioni di assegnazione e l'uso di variabili e calcoli numerici. Spero che questo ti colpisca anche sul fatto che il computer non ti legge, che un programma è composto da pezzi semplici come un set di costruzione, l'ordine delle affermazioni è importante, e ogni affermazione non può essere avviata fino al completamento della precedente. (Alcuni neofiti pensano che dal momento che il computer sembra essere così veloce, deve fare tutto in una volta.)
  • Un programma che stampa un numero intero casuale compreso tra 0 e 9 o tra 1 e 10, fai la tua scelta. Per fare ciò, dovrai generare un numero casuale e manipolarlo nell'intervallo desiderato.
  • Un programma che stampa 100 numeri interi casuali tra 0 e 9 (ripetizioni consentite). Per fare questo, dovrai codificare un ciclo, con una variabile di indice, a meno che tu non voglia ripetere il codice 100 volte, che spero tu non faccia.
  • Ora puoi eseguire il programma di insulto, in cui inserisci il nome dell'utente, fai un numero casuale, usa il numero casuale, insieme a una o più istruzioni IF, per selezionare un insulto disgustoso e riportarlo all'utente. Quindi puoi utilizzare un ciclo per farlo ripetere più e più volte, se lo desideri.

A questo punto, sono state utilizzate istruzioni di stampa, istruzioni di input, variabili stringa e numeriche, istruzioni di assegnazione con calcolo, istruzioni IF e istruzioni di loop. Abbastanza buono!

  • Ora stai per colpire un dosso di velocità - array. Crea un programma che contiene 10 numeri in una variabile di matrice e li somma, stampando la somma. Ad esempio, anziché avere 10 variabili denominate A0, A1, A2 ... A9, puoi avere una singola variabile A che contiene 10 numeri (anziché 1). Si fa riferimento ai singoli numeri in esso tramite indicizzazione . Quindi, invece di dire, ad esempio, A2, puoi dire A [2]. Inoltre, se si dispone di un'altra variabile che contiene un numero, allora A [I] userebbe I per decidere quale numero in A si desidera selezionare. Quindi se hai un ciclo in cui I è la variabile indice, forse puoi vedere come puoi sommare tutti i numeri in A con solo circa 3 righe di codice.

Ci sono più dossi di velocità, come input / output di file, subroutine (a volte chiamate funzioni o metodi), e tutto in cose più moderne. Ma spero che ti possa iniziare. Come ho detto, devi acquisire rapidamente una base di competenze che puoi considerare di fare un semplice ma divertente progetto, come ad esempio il tuo black jack.

    
risposta data 11.04.2011 - 23:22
fonte
2

Sembra che tu non comprenda pienamente alcuni dei fondamenti. Nelle lezioni di informatica dopo aver superato i concetti di base come l'assegnazione, metà degli studenti tende a prendere piede, dove metà degli studenti si lascia indietro, ci sono due curve separate. Questo perché metà della classe ha imparato abbastanza elementi fondamentali per tirare avanti, taglia e incolla il codice dal libro, ma in realtà non lo capisce; poi devono scrivere codice più duro e colpiscono un muro.

Fa schifo, ma non c'è altro modo. Dato che stai imparando la programmazione in una classe, dovresti avere un libro di testo. Torna ai capitoli precedenti del libro di testo e leggi attraverso di loro. Quindi, prova tu stesso, scrivendo alcuni programmi DAVVERO semplici per testare ciò che sai e lentamente renderli più complessi e utilizzare tutti i diversi concetti.

Hai menzionato che memorizzare il loop non è un problema, ma come applicarlo. Beh, non c'è niente da memorizzare con un ciclo, a meno che non intenda la sintassi. Quello che devi imparare, ciò che devi capire, è ESATTAMENTE quello che fa il ciclo e che cosa puoi usare per.

Se ti stai chiedendo qual è il modo migliore per imparare a programmare: lo stai già facendo. Partecipa a un corso, con un curriculum strutturato che devi seguire, in modo che non finisca per soffiarlo o sfogliare un libro.

Non posso sottolineare abbastanza. Conoscere la differenza tra if (i = 10) e if (i == 10) è tutto. Conoscere i tuoi fondamenti è tutto nella scrittura del codice, nella comprensione degli algoritmi e nell'apprendimento dell'informatica.

    
risposta data 12.04.2011 - 06:38
fonte
1

Ecco perché il tuo amico è in grado di scrivere programmi in modo diverso rispetto al tuo insegnante. A questo punto o prima o poi (non ero sicuro se avesse avuto un'esperienza di programmazione precedente) ha preso il tempo per non solo imparare a replicare il programma, ma anche a capire cosa stanno facendo i comandi. Sono sicuro che lui (che fosse cosciente o meno) si è chiesto ogni volta che l'insegnante ha fatto un esempio, "che cosa sta facendo?" Forse si è anche chiesto in quel momento quale sarebbe stato un altro modo per farlo.

La cosa peggiore che puoi fare come programmatore è memorizzare una soluzione per un problema e non capire anche cosa sta succedendo. Se capisci cosa sta succedendo, puoi sempre ricreare la soluzione anche se l'hai dimenticata altrimenti. In genere è anche possibile modificare la soluzione per soddisfare altre esigenze di altri problemi. Se memorizzi solo la soluzione ma non pensi a come funziona o perché è la soluzione allora quando la dimentichi (che probabilmente lo farai), non potrai riutilizzarla più tardi.

Oltre a comprendere appieno il codice che vedi / scrivi, la cosa più importante che puoi fare per migliorare è la pratica.

    
risposta data 12.04.2011 - 07:32
fonte
1

Il viaggio di mille chilometri di esseri con single step !

Come costruisci una casa? Come si fa un vaso di terracotta? Come scrivi un tema?

Qual è il modo più comune per rispondere a queste domande?

Ottieni i materiali e gli strumenti giusti per costruire l'oggetto.

Materials
house = bricks / wood / mortar / nails
clay pot = clay / water / glaze
essay = paper / ink / idea(Topic) / vocabulary / research

Tools
house = spades / hammer / saw /
clay pot = potters wheel / hands
essay = pen / command of the language used to write it / structure (introduction, conclusion, body)

Mi stupisce sempre vedere come tutte le case sono costruite con le stesse cose, ma alcune sono migliori di altre. Sono opere d'arte, mentre altri non ti sentiresti al sicuro e dovrebbero essere abbattuti. Si tratta dell'abilità dei lavoratori nell'utilizzare insieme i materiali e gli strumenti e risolvere i problemi di costruzione di una casa. Alcune case sono opere d'arte, e questo dipende da quanto possono esprimere la loro creatività con quelle componenti.

Vorrei suddividere il tuo problema in due aree. Uno è comprendere gli strumenti e i materiali necessari per costruire una soluzione a un problema. E due è come risolvere un problema. Nella programmazione del materiale che usiamo nella forma più semplice ci occupiamo di queste cose SSI (sequenza, selezione, iterazione):

sequence = what order do you execute you instructions. Example from maths is (BODMAS) Brackets of Division multiplication, addition subtraction. You have to do some things before others.
selection = if statements, functions, methods how do you move around in your code
iteration = loops how do you repeat some thing.

Questi sono gli elementi costitutivi, una soluzione a qualsiasi problema che può essere espresso come codice. Conosci il tuo materiale, i suoi punti di forza e di debolezza. Come funziona. Questa è la base di tutta la programmazione. Cambia i nomi dalla lingua alla lingua, ma l'essenza rimane la stessa.

Gli strumenti tuoi computer, key board, monitor, compiler, text editor(IDE), API(application, programmers interface) and most importantly creativity / problem solving.

Il luogo in cui molti nuovi studenti fanno fatica a risolvere i problemi. Hanno tutti questi materiali che hanno appena imparato nella selezione e nell'iterazione delle sequenze. Semplicemente non vedono come costruire la casa o scrivere il tema con loro. La soluzione a questo problema è smettere di pensare al materiale, cioè utilizzo un loop o un if statement . Devi pensare molto più in modo astratto al problema. Scomporlo nei pezzi.

  • Ho bisogno di stampare il contenuto del file
    • Ho bisogno di ottenere il nome del file
    • Ho bisogno di recuperare il file dal disco rigido
    • mostra i contenuti
  • Chiedi all'utente di scegliere (eliminare, salvare, modificare)
    • Ho bisogno di un menu per visualizzare le scelte
  • esegue l'azione (cancella, salva, modifica)

È troppo facile per i nuovi studenti impantanarsi nei dettagli e non vedono chiaramente come risolvere un problema più complesso che è più lungo di poche righe. Problemi che richiedono di pensare a tutta la struttura del codice. Diventa difficile vedere come risolvi il problema (creativamente) e con cosa lo risolvi con (codice SSI). Non risolvi il problema con i materiali (SSI). Lo risolvi con gli strumenti giusti insieme ai materiali.

Quando inizi a scrivere un tema, non pensi a quanto dovrebbe durare una frase, quali parole usare. Pensi all'argomento come vuoi coprirlo, a quali sezioni divideresti il contenuto. Solo dopo ti siedi e pensi alla prima frase, al paragrafo introduttivo, al paragrafo conclusivo. Che parole userete. Sai come farlo perché ti sei esercitato, ti è stato insegnato il componente di un tema. La programmazione non è diversa.

Su una nota diversa. Una delle cose migliori che puoi fare è imparare a digitare più velocemente, ottenere un tutor di digitazione. Ci sono un certo numero di quelli gratuiti su internet. Questo aiuterà in ogni aspetto della risoluzione dei problemi, e usando i materiali e sperimentandoli. link

non accadrà durante la notte.

    
risposta data 12.04.2011 - 09:44
fonte
0

È davvero d'aiuto se ti piace farlo. Prima di iniziare la mia laurea in programmazione, odiavo qualsiasi lettura che fosse per la scuola, ma ora leggo volentieri tutti i miei libri di programmazione e poi alcuni. Lavoro anche attraverso ulteriori problemi per aiutare a capire nuovi concetti e aiutare gli altri studenti nel mio tempo libero. Non puoi metterti solo la metà del cuore.

Suggerirei di passare un giorno a seguire la lezione, fare tutta la lettura e lavorare su ciò che non capisci, quindi se hai ancora problemi a parlare con il tuo insegnante, di solito sono disposti a darti più tempo se ti stai impegnando.

    
risposta data 11.04.2011 - 22:20
fonte
0

La pratica è tua amica qui. L'altra cosa che vuoi fare è capire cosa sta facendo ogni riga del programma. C'è molto da capire quindi non provare a farlo tutto in una volta. Impara a suddividere il problema in un gruppo di piccoli pezzi e scopri come fare ciascuno, quindi uniscili. (Davvero questo è il cuore della programmazione).

Cosa direi se stai sbattendo la testa su Java prova qualcos'altro, Ruby, Python o Scheme potrebbero essere buone scelte. Nello specifico cercherò il libro "The Little Schemer" è una bella introduzione su alcuni concetti.

Oh e se rimani bloccato chiedi aiuto all'insegnante, questo è quello che lui / lei è lì per!

    
risposta data 12.04.2011 - 11:19
fonte
0

Penso che il modo migliore per imparare a programmare è immergerti in esso e renderlo la tua passione. Pensa a un programma davvero interessante che ti piacerebbe scrivere sarebbe davvero impegnativo. Ora trascorri un'intera estate sbattendo la testa contro il muro cercando di ottenere la cosa più semplice da comportarsi come previsto, individuando tutti gli errori di compilatore criptici che ti imbattono in infinito e trova buone risorse - libri, blog, tutorial, forum, questo sito - e usarli costantemente. Entro la fine dell'estate dovresti comprendere alcuni dei concetti chiave della programmazione. Comprenderli veramente sarà in grado di pensare a concetti astratti in modi che non hai mai avuto prima. Ma una volta che apprendi alcuni concetti chiave - OOP sarebbe una buona base - i concetti più avanzati diventeranno progressivamente più facili da capire.

Qualunque cosa tu faccia, non dare per scontato che andare in classe e svolgere compiti da soli sia sufficiente per imparare come programmare in modo efficace. Dubito seriamente che molte persone siano abili a programmare attraverso le lezioni da solo; per imparare veramente a programmare, devi scrivere molto codice, passare un sacco di tempo estremamente frustrato dal motivo per cui niente funziona mai la prima volta che lo provi, e poi respirando quel sospiro di sollievo e realizzazione quando qualcosa finalmente si riunisce che tu Ho lavorato molto duramente.

    
risposta data 13.04.2011 - 06:53
fonte

Leggi altre domande sui tag