Gå til innhold

Nybegynneroppgaver innenfor programmering


Anbefalte innlegg

Hei!

 

Jeg har lenge hatt lyst til å lære meg å programmere, og har da allerede anskaffet meg bok og trolig

det jeg trenger. Nå som jeg tilsynelatende har tid til overs, så tenkte jeg at jeg muligens kanskje

kunne prøve meg på nytt.

 

Jeg leser en bok, og det er veldig greit med tanke på forklaringer, eksempler og oppgaver i slutten

av hvert kapittel, men jeg savner noen reelle oppgaver. Altså, det å svare på spørsmål om innholdet

til det forgående kapitlet og forklare hvorfor noen kudesnutter ikke fungerer og den slags er greit,

men jeg savner oppgaver der jeg skal lage et praktisk program. Det er kanskje krevende, ettersom

det å lage praktiske programmer med omtrent nær null kjennskap til programmering(sspråket) virker

vanskelig, men synes fortsatt det muligens kunne ha vært gode øvelser for dem som lærer seg å

programmere.

 

Så det jeg lurer på, er om noen kjenner til en internettside e.l. som har lagt opp programmeringsoppgaver

(gjerne i forskjellige språk) til nybegynner, som de kan henvende seg til og prøve å utføre?

 

- rafael

Lenke til kommentar
Videoannonse
Annonse

Først og fremst er det enklest å lage console programmer, som f.eks. utfører matte oppgaver, sorterer en tekstfil, regner gjennomsnittet av en liste med tall, linked list teori osv.

Ikke tenk på GUI med en gang, for det er veldig innviklet i C++

 

En oppgave jeg fikk (I vanlig C) var at jeg fikk en liste med koordinater og linjer, og lage et program som fant den korteste veien til et gitt punkt med et annet utgangspunkt.

Endret av GeirGrusom
Lenke til kommentar
Hvilken bok leser du?

 

Fant ingen sider, leita litt dårlig.

Jeg prøver å lære meg C med hjelp av "Sam's Teach Yourself: C for Linux Programming". Og takk for

at du tok deg tiden til å lete.

 

Jeg er egentlig ganske lat som ikke har gjort det selv. Håpet (og håper fortsatt) på at noen på forumet

allerede har noen forslag.

 

Først og fremst er det enklest å lage console programmer, som f.eks. utfører matte oppgaver, sorterer en tekstfil, regner gjennomsnittet av en liste med tall, linked list teori osv.

Ikke tenk på GUI med en gang, for det er veldig innviklet i C++

 

En oppgave jeg fikk (I vanlig C) var at jeg fikk en liste med koordinater og linjer, og lage et program som fant den korteste veien til et gitt punkt med et annet utgangspunkt.

Det er forsåvidt det jeg også har hatt i tankene. Å lage GUI med

mine kunnskaper i programmering ville være å strekke seg altfor langt. Det er bare det at jeg ønsker

å prøve å programmere litt mer, der jeg tar i bruk det jeg har lært meg så langt.

 

Det var f.eks. et eksempel i boken som skulle vise hvordan man tok i bruk egendefinerte

funksjoner. Som et praktisk eksempel for en nybegynner, så skulle funksjonen regne ut 'volumet'

for en kube (den gitte variablen opphøyet i tredje). Her er eksempelet fra boken:

/* Demonstrates a simple function */
#include <stdio.h>

long cube(long x);

long input, answer;

int main(void)
{
  printf("Enter an integer value: ");
  scanf("%ld", &input);
  answer = cube(input);
  /* Note: %ld is the conversion specifier for */
  /* a long integer */
  printf("\nThe cube of %ld is %ld.\n", input, answer);
 
  return 0;
}

/* Function: cube() - Calcs the cubed value of a variable */
long cube(long x)
{
  long x_cubed;

  x_cubed = x * x * x;
  return x_cubed;
}

Siden jeg hadde lyst til å ta i bruk det jeg så langt hadde lest, så tenkte jeg at jeg kunne prøve å

forbedre kodesnutten. To kapitler tidligere hadde jeg lest litt om hvordan C setter av minne til

de forskjellige variablene og hvor store verdier de kan holde, så tenkte jeg meg at det muligens

er en grense for hvor stor input kan være dersom programmet skal kjøre feilfritt. Kort fortalt så

prøvde jeg å sette en grense for hvor stor (og liten) input-verdien kunne være, og resultatet ble

følgende:

#include <stdio.h>
#define MAX_CUBE 1625 /* The third square of the maximal unsigned long value.
                        If the computer exceeds this value, it will probably err. */

int input, cube(int x);
unsigned long answer;

int main(void) {
       printf("Enter an integer value: ");
       scanf("%d", &input);
       if (input < MAX_CUBE && input > 0)
               answer = cube(input);
       else {
               printf("The chosen value is either too big or too small, please try again.\n");
               return 0;
       }
       printf("\nThe cube of %d is %ld.\n", input, answer);
       return 0;
}

int cube(int x) {
       unsigned long x_cubed;
       x_cubed = x * x * x;
       return x_cubed;
}

Maksimalverdien som er definert i begynnelsen av programmet er for 32-bit prosessorer, og er tatt fra et eksempel i boken.

 

- rafael

Endret av Rafael
Lenke til kommentar
  • 2 uker senere...

Si det. Et godt eksempel på at jeg burde ha fulgt retningslinjene til boken om å skrive kommentarer!

Det kan også nevnes at det er noen feil i koden. Jeg tror koden opprinnelig skulle ta imot et tall fra

brukeren og opphøye det i tredje. Resultatet som blir gitt tilbake har en begrensning for hvor stort

det kan være (ut ifra hva slags arkitektur man kjører programmet på), og derfor skulle jeg prøve å ta

hensyn til at man ikke kunne gi et for stort tall til at det gikk uttover begresningene til 32-bit-

arkitekturen.

 

Er litt usikker på hvordan jeg skal forklare det med korrekt terminologi, men håper du forstår. Det var

dessuten bare et forsøk på å utelukke feil i programmet, og jeg vet ikke om det ble gjort korrekt.

 

- rafael

Lenke til kommentar

Syns programmet ditt så helt fint ut ved en rask gjennomlesning. Du finner mange oppgaver i problemløsning i arkivet på følgende side:

 

http://www.nio.ntnu.no (jeg er forsåvidt han fyren i rød genser på bildet til høyre)

 

Disse oppgavene går mer på algoritmer og matematikk, men det er absolutt noe som er nødvendig å øve på for å bli en god programmerer. De er ikke praktisk rettet i den forstand at de er realistiske oppgavetekster, men det bør ikke være vanskelig å tenke seg til situasjoner i den virkelige verden samme problem kunne oppstått.

 

Om du har lite kunnskaper om algoritmer og datastrukturer, kan det være greit å finne en bok om temaet ved siden av. Mange av oppgavene er godt forklart med løsning, og det bør gå an å lære en del av å lese løsningsforslagene.

 

Håper du finner noe nytte i det! ;)

Lenke til kommentar

Aha! Jeg viste ikke at det fantes noe slikt engang! Kjempekult!

 

Takker meget for lenken. Spesielt synes jeg det var utrolig kult at NTNU hadde satt i gang et

initiativ for informatikkinteresserte ungdommer på videregående skole. Hvorfor har ikke jeg hørt

om dette før? Kunne nok ikke ha vært med selv uansett, men ...

 

Setter stor pris på lenken. Takker meget! :)

 

- rafael

Endret av Rafael
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...