Komme i gang med C++, del 1: Installasjon av utviklingsmiljø

Også tilgjengelig på NIOs hovedside.

Windows

Vi anbefaler at du installerer Microsoft Visual C++ 2010 Express. Klikk på “Visual C++ 2010 Express”-linjen og deretter på “Install now” – da får du laste ned en liten fil som heter vc_web.exe. Kjør denne filen når den er lastet ned, og svar “Ja” eller “Fortsett” hvis du blir spurt om programmet får lov til å gjøre endringer på datamaskinen. For at du skal få installert Visual Studio må Windows-brukeren din være administrator eller du må ha et administratorpassord. Hvis du har en skolemaskin som du ikke er administrator på, spør systemansvarlig på skolen om de kan installere det for deg. Merk at du må være koblet til internett mens du installerer.

  • Hvorvidt du krysser av for “Yes, send information about my setup experiences to Microsoft Corporation” når installasjonsprogrammet starter er ikke viktig.
  • Velg “I have read and accept the license terms” (du kan lese hele betingelsesteksten hvis du vil, men den inneholder ikke noe skummelt).
  • Ikke velg å installere SQL Server 2008 Express (med mindre du har lyst til å lære deg å programmere mot databaser, noe som er kult, men ikke nyttig for NIO).
  • Behold den foreslåtte installasjonsmappen (C:\Program Files\Microsoft Visual Studio 10.0\), trykk Install, og finn på noe annet mens nedlastingen og installasjonen pågår. Trykk på Exit når installasjonen er ferdig.

Når installasjonen er ferdig, gå til Start-menyen og velg “Microsoft Visual Studio 2010 Express” -> “Microsoft Visual C++ 2010 Express” (dette ligger under “Programmer”/”Programs” hvis du har Windows XP). Første oppstart tar lengre tid enn vanlig. Klikk på “New Project…”, velg “Win32 Console Application”, og fjern krysset for “Create directory for solution”. Velg en (ny) mappe hvor du vil putte koden din, f.eks. E:\Programmer.

Når du klikker OK dukker “Win32 Application Wizard” opp. Velg “Application Settings” ute til venstre, la det stå på “Console application” og kryss av for “Empty project”. Klikk Finish.

Nå skal det se sånn ut:

Vi må nå legge til en kildekodefil. Høyreklikk på “Source Files”-mappen i “Solution Explorer”-vinduet ute til venstre og velg “Add” -> “New Item…”, velg “C++ File (.cpp)” og kall filen f.eks. main.cpp:

Skriv inn koden nedenfor eksakt slik den står her:

#include <iostream>

using namespace std;

int main() {
    cout << "Hello world!" << endl;
    cin.get();
    return 0;
}

Trykk enten F5 på tastaturet eller klikk på knappen med den grønne pilen for å starte programmet. Første gang du gjør dette vil du bli spurt om “This project is out of date. Would you like to build it?” Kryss av for “Do not show this dialog again” og klikk “Yes”. Nå burde et såkalt konsollvindu dukke opp og vise teksten “Hello world!”:

Gratulerer; du har skrevet og kjørt ditt første C++-program! Trykk Enter, så forsvinner vinduet og programmet avslutter. Det var litt strevsomt å komme i gang, men når Visual Studio og prosjektet først er oppe, kan man konsentrere seg om kodingen. Hvis du ikke har programmert før, skal vi snart publisere en kom i gang-guide for det også.

Hvis du skriver feil i koden, vil det sannsynligvis dukke opp en rød strek i nærheten, og når du prøver å kjøre programmet, vil du første gang få en melding om “There were build errors. Would you like to continue and run the last successful build?” Kryss av for “Do not show this dialog again” og klikk “No”. Gå til “View”-menyen og velg “Other Windows” -> “Error List” og klikk på “Errors”-knappen i vinduet som dukker opp, så får du en liste over feil.

Hvis du vil lage et nytt program, går det an å starte en ny utgave av Visual Studio og lage et nytt prosjekt med et annet navn. Men dette er litt strevsomt, så det kan være enklere å bruke det samme prosjektet, og bare sette inn en annen kildekodefil i stedet. Høyreklikk på main.cpp i Solution Explorer-vinduet og velg “Exclude From Project”. (Filen blir ikke slettet; den vil forsvinne fra prosjektet, men vil fortsatt ligge på E:\Programs\HelloWorld\main.cpp.) Nå kan du legge til en ny kildekodefil med et annet navn (kildekodefilene kan hete hva som helst, men det skal alltid stå int main() i koden). Hvis du vil ha main.cpp tilbake, kan du høyreklikke på “Source Files” og velge “Add” -> “Existing Item”. Men det går ikke an å ha flere kildekodefiler med main() i prosjektet samtidig.

Mac

På Mac anbefaler vi å laste ned “Command Line Tools for XCode” herfra: https://developer.apple.com/downloads/ (man må registrere seg for å få tilgang). Når du har registrert deg, søker du etter “command line tools” og velger nyeste utgave for din versjon av OS X som vist på bildet.

Når den er lastet ned åpner du .dmg-filen og starter installasjonsprogrammet.

Du trenger ikke endre noe i prosessen.

For å prøve om installasjonen var vellykket åpner du Terminal (CMD+SHIFT og skriv inn “Terminal”) og så skriver du kommandoen:

g++ --version

Resultatet bør se omtrent slik ut:

Nå er du klar for å kompilere kode! Åpne en ren tekst editor, f.eks GEdit (om du ikke allerede har en favoritteditor, er dette et godt valg, siden den er lett å lære og er tilgjengelig under finalen i Bergen og i de internasjonale rundene).

Du kan nå kopiere koden fra http://www.cplusplus.com/doc/tutorial/program_structure/ inn i filen, lagre den som f.eks helloworld.cpp og kompilere:

g++ helloworld.cpp -o helloworld

Hvis alt gikk bra, fikk du ingen feilmeldinger.

Da kan du også kjøre programmet med kommandoen

./helloworld

Nå ser du at programmet har skrevet ut teksten “Hello World!” på kommandolinjen. Da er alt satt opp!

Linux

All programvaren du trenger følger sannsynligvis med din Linux-distribusjon og er allerede installert. Følg instruksjonen for Mac fra stedet med kommandoen:

g++ --version

Topcoder

Topcoder arrangerer en rekke forskjellige programmeringskonkurranser fra algoritme- til designkonkurranser og mye annet. Denne posten er ment som en starthjelp til dem som ønsker å delta på algoritmekonkurransene SRM (Single-round matches). Dette er en av de eldste konkurranseformene hos Topcoder, og det blir arrangert flere slike hver måned med flere tusen deltakere hver gang. Oppgavene er en fin blanding av programmering, algoritmer og matematikk ogburde kunne gi utfordringer til personer på alle nivåer.

Registrering

For å ta i bruk systemet må man først registrere en bruker. Dette gjøres fra her. Det kan være greit å huke av for at man er i ‘high school’ ettersom topcoder også arrangerer egne algoritmekonkurranser kun elever i videregående skole.

Starte appleten

Du har nå registrert deg og er klar for å starte appleten for første
gang. Den finner du på Topcoder sine hjemmesider i øvre venstre
hjørne som symbolet O(n). I nettlesere med javastøtte vil appleten
kjøre direkte fra nettleseren. Du kan også laste ned appleten til en passende lokasjon, navigere deg dit i terminalen og kjøre appleten ved hjelp av javaws.

Typisk: >>>> javaws ContestAppletProd.jnlp

Etter dette er det bare å fylle inn brukernavn og passord og du er i gang.

Påmelding til srm

Påmeldingen er mulig å gjøre i tidsrommet fra 2 timer til 5 minutter før konkurransen starer. Dette gjøres ved å starte appleten, velge
‘Active Contests’ – ‘Register’. Merk at det er begrenset med plasser til konkurransen og at det relativt ofte blir fult. Det kan derfor være smart å melde seg på så tidlig som man har mulighet til om man ønsker å delta.

Editor

Jeg vil anbefalle deg å bruke en plugin sammen med editoren fra Topcoder, da dette vil gjøre livet ditt mye lettere. Det finnes mange forskjellige muligheter, blant annet en som heter kawigiedit. Om du følger dokumentasjonen skal det være en smal sak å få satt den opp.

Hello world!

Det er nå på tide at du får skrevet noen linjer i appleten. Gjennom
‘Practice Rooms’ -> ‘SRMs’ får du opp en liste over tidligere konkurranser. Det er nå bare å velge seg en SRM, de merket med ‘div2′ vil være oppgaver på samme nivå som du vil møte i din første konkurranse. Når du har gjort dette vil appleten din se ut omtrent som under en konkurranse. Under ‘select one’ vil du kunne velge mellom tre problemer av ulike vanskelighetsgrad, merket tilsvarende med poengene de gir. Når du har valgt ett problem vil ‘Competetion Arena’ bli åpnet. Her vil du få presentert ett problem og noen tilhørende testcases i øvre vindu, og et område for koding i nedre vindu. Etter at du har lest problemet og er klar for koding velger du foretrukket språk (Java, C++, C# eller VB) og trykker ‘generate code’. Den ferdig genererte koden er det kawigi edit som har laget, det er nå klart for å kode løsningen din inn i funskjonen som kawigi edit genererte.

  • ‘Compile’ kompilerer koden din.
  • ‘Test’ gir deg muligheten til å teste koden din på testcasene du er gitt.
  • ‘Submit’ sender inn koden din til Topcoder.

Ellers har appleten en del andre funskjoner som er mer eller mindre selvforklarende. Etter at du har submitet koden din kan du lukke ‘Competetion Arena’ og velge ‘Practice Options’ -> ‘Run system test’ for å teste koden din mot alle testcasene. Om den blir godkjent her ville løsningen din blitt godkjent under konkurransen også. Ellers merket du kanskje at poengene dine sank etter at du åpnet problemet. Dette er for å premiere personer som klarer å løse et problem raskt. Men om løsningen din er feil får du ingen poeng, så det er bedre å ta den tiden man trenger å få poeng enn å ta feil og få ingen..

Om konkurransene

En SRM er delt opp i to faser. Først koder man i 1 time og 15 minutter, her vil man få tre problemer av forskjellig vanskelighetsgrad som vanligvis gir 250, 500 og 1000 poeng. For hvert av problemene du klarer får du poeng etter hvor raskt du løste det. Du vil ikke få tilbakemelding på om løsningen din er riktig før konkurransen er over, så du må lese oppgaveteksten nøye og bruke de testcasene du har fått på en god måte. Etter man er ferdig å kode er det 5 minutters pause før Challenge phase begynner, som varer i 15 minutter. Her vil man ha muligheten til å studere løsningene til de andre deltakerne i samme rom som deg (når konkurransen begynner blir man tildelt et rom sammen med 20 andre deltakere). Om man finner en løsning man tror er feil kan man teste løsningen opp mot et testcase man selv lager. Om løsningen faktisk gir feilt svar på testcaset du lagde får du 50 poeng ekstra og løsningen blir merket som feil, ellers mister du 25 poeng. Etter dette vil alle løsningene som forsatt står igjen bli testet av systemet. Poeng for løsningene som også består denne testen sammen med eventuelle poeng fra challenge phase vil utgjøre din endelige poengsum. Etter dette vil Topcoder gjennomføre en rating prosess hvor du vil få en rating basert på hvordan du presterte. Ellers kan man se hvordan de andre i samme rom som deg gjør det underveis i konkurransen ved å velge ‘Tools’ -> ‘Room Summary’.

Lykke til med din deltakelse på Topcoder sine arrangementer! Håper du finner problemene like morsomme og utfordrende som det jeg gjør =)

Bootcamp begins

Og herved er NIO bootcamp i gang. Måtte kunnskap og programmeringslyst komme ut av denne siden i mange år!

Første treningen blir 10. oktober kl. 17.00 – 18.15 på topcoder. Mer informasjon om hvordan konkurransene på topcoder blir avholdt kommer snart.

I mellomtiden vil jeg oppfordre dere til å delta på NCPC 2012 til helgen. Merk at påmeldingsfristen er på torsdag, altså i morgen.