Programutvikling for Mac OS X, del 1 - Komme i gang.

Programutvikling for Mac OS X, del 1 - Komme i gang.

Innleggav EinarJ » fre 19.11.2010 3:54

Sitter du inne med en knallidè til en app, men vet ikke helt hvor du skal begynne? Vel fortvil ikke, her er første del av App-utvikler-guiden. Hvor vi skal lære å starte et prosjekt i XCode, og bittelitt C.

Etter å ha lekt litt med utviklerverktøyene til Mac OS X i en del år, tenkte jeg at det kanskje var greit å lage en guide for de litt ferskere til gamet, en slags "hvordan komme i gang"-guide til utvikling på mac, siden de færreste kanskje har tatt i utvikling fra før, går jeg vekk fra stilen til Switch-guiden, hvor jeg "oversatte" windows-uttrykk til mac-uttrykk, og forsøker å forklare alt helt fra scratch, så de av dere som har tatt i utvikling før, får nesten bære litt over med dette.

Først av alt, må det sies at apputvikling ikke er noe du kan komme HELT rett fra gata, og bare sette i gang med, det er en del grunnleggende ting du bør kunne før du setter i vei mot App Store, i denne utgaven, skal vi gå gjennom de helt grunnleggende tingene som må gjøres, for å kunne starte å utvikle. I første omgang holder vi oss til Mac OS X som mål:

Programmer skrives i programmeringsspråk, selve skrivingen av "koden" kan du gjøre i nesten alt fra TextEdit til Word, men dette er ikke nødvendigvis de riktige verktøyene for jobben (på samme måte som du KAN spikre inn spiker med stein, selv om en hammer er et mer praktisk verktøy), det er nemlig veldig nyttig å ha et verktøy som kan hjelpe deg litt på veien, og vise deg om det du har gjort er riktig. Samtidig vil "koden" du har skrevet på et tidspunkt måtte gjøres om til noe maskinen din kan kjøre, vi trenger altså helst et verktøy til å løse disse oppgavene.

Det er her XCode kommer inn, XCode er en såkalt "IDE" (Integrated Development Environment). Hvilket betyr at XCode både har en teksteditor beregnet på å redigere kode, og en kompilator, som tar seg av å oversette koden til maskinkjørbare filer. XCode er gratis, men krever registrering hos Apple Developer Connection:
XCode

Etter at du har installert XCode, vil du finne XCode i Macintosh HD/Developer/Applications/XCode.

Så, hvordan kommer vi i gang med et helt enkelt program i XCode?
Vel, bilder taler mer enn tusen ord heter det:
761352
Det første du ser når du kjører XCode for første gang er dette vinduet, som gir deg valget mellom å hoppe i det, eller å lese noen av Apples tutorials, her får du også en liste over nylig åpnede prosjekter, i denne omgang, velger vi "Create a New XCode-project". Som fører oss til dette skjermbildet:
761356
Dette kan se litt forskjellig ut hvis du valgte å laste ned XCode uten iOS SDKen, uansett, velg Mac OS X Application på venstre side, og Command Line Tool på høyre side.Trykk "Choose"
761357
Gi prosjektet et navn, og velg evt en plassering, trykk så "Save". Og vi havner her:
761358
Vi trykker på "main.c", og ser at Apple allerede har lagt inn et skjelett-program i prosjektet vårt, det klassiske "Hello World"-eksempelet. Legg også merke til den røde teksten i lista over, den skal vi komme tilbake til.

Men først, la oss kjøre dette skjelettprogrammet, for å se hva det gjør. MEN, før vi gjør dette, må vi åpne et vindu som ikke automatisk er åpent, nemlig konsollen til XCode. Du KAN kjøre programmet uten, men da ser du ikke hva som skjer.
Trykk RUN på menylinja, og velg Console
761359
Ok, da dukker dette vinduet opp:
761360
Trykk "Build and Run", og legg merke til at to ting skjer, teksten som var rød, ble nå svart, og en haug med tekst kom opp i vinduet vårt.
761361
Vi ser bort fra all den ikke-fete teksten her, og oppdager at jaggu, "Hello, World!" står skrevet i vinduet vårt, mon tro hvordan vi kan få programmet til å skrive noe annet?
761362
Som du kanskje gjettet, kommer "Hello, World!" fra linja som starter med printf, \n-en i teksten er en måte å be om "newline" på, altså enter. Vi bytter om på teksten til "Hello, Mac1\n", og kjører:
761363

Gratulerer, vi har nå kjørt "vårt" første program i XCode, det er mye annet morsomt vi kan gjøre med dette programmet, men det får vente til neste del av guiden.

Så, hva har vi klart i denne omgang? Vi har alle verktøyene vi trenger for å lage nesten et hvilket som helst program, og vi har kjørt et enkelt ferdigspikret program skrevet i programmeringsspråket C. Hvorfor har vi kjørt et program i C, når Apple bruker Objective-C spør du kanskje? Vel, Objective-C er en utvidelse av C, all C-kode er gyldig Objective-C-kode, så det er et greit sted å starte, uten å komplisere alt. Neste gang skal vi ta en liten kikk på Interface Builder, og helt enkle GUI-programmer, men jeg anbefaler alle som er interessert i å lære mer, å kikke på noen grunnleggende C-, eller Objective-C innføringsguider rundt om på nettet frem til da.

For de ivrige: lyninnføring i enkel C
Det blir kanskje litt brått å slutte der, så en liten forsmak på C-koding er helt klart på sin plass, jeg kommer til å hoppe over en del detaljer i de neste avsnittene, da vi skal tilbake til C-koding i en senere Del av guiden. Men altså:

Først av alt, hvis du vil forsøke deg på noe, er det bare å renske vekk linja med "printf" fra koden, og skrive din egen kode der, "return"-linja må få bli stående enn så lenge. Skulle noe gå virkelig skeis, så er det bare å renske fila tilbake til slik du ser på bildene over, eller evnt bare å starte et nytt prosjekt.

Så til saken, vi har allerede sett at "printf()" har noe med å skrive ting ut til Konsollen å gjøre, søsterfunksjonen heter "scanf()", begge disse er såkalte "funksjoner", som tar noen "argumenter", og gjør noe med dem. Argumentet, er det som står mellom (), i det første eksempelet var dette "Hello World\n", og da sa jeg at \n var en magisk sak som ga deg ny linje, vel, la oss introdusere en litt mer tricky sak, nemlig "%d".

printf("%d \n",42);

Skriver ut 42, men hvorfor skrev vi ikke bare 42?, vel prøv følgende:

printf("%d \n", 42+1);

Nåh? Fancy. Men for å komme til det virkelig artige, så må vi introdusere noe som heter variabler. Vi har ikke engang lært hva variabler er ennå, ei heller funksjoner, men en lyninnføring er på sin plass. En variabel er en "merkelapp" for en verdi, tenk på den som en bås som kan holde en verdi. Vi hopper over detaljene og holder oss til det enkle:

int x = 42;

Da kan X brukes istedenfor 42 overalt ellers i programmet ditt, men, som en liten tankevekker, kan du også skrive x = x + 1, dette bryter litt med algebratankegangen fra skolen, men det betyr: "X skal nå være det X var + 1", altså 43. Så, hvordan kan vi bruke dette til noe?

Vel, se på følgende kodebit:

int x = 42;
printf("%d",x);


Den skriver også ut 42, hmmm, men hva om vi vil sette x til noe brukeren selv skriver inn da? Vel, her kommer scanf inn i bildet.

int x=0;
printf("Skriv et tall:");
scanf("%d",&x);
printf("Du skrev %d\n",x);


Legg merke til &-tegnet, scanf må ha dem, printf må ikke, men, kule ting man kan gjøre med printf/scanf stopper ikke der, prøv å bytte den siste linja der med:
printf("Du skrev %d, det dobbelte av det, er :%d\n",x,x*2);

Og, for å gi dere en liten ekstra godbit å leke med: if, if fungerer slik at den sjekker et utsagn, hvis det stemmer, så gjøres det som står mellom de påfølgende krøllparentesene, i motsatt fall skjer enten ingenting, eller man kan skrive en else-blokk under.

int x=42;
if(x==42)
{
    printf("42 er kult");
}
else
{
    printf("Ikke 42? Det er ikke artig.");

}
If krever doble likhetstegn for likhet, og kan også sjekke større og mindre, både med og uten lik >,<,<=,>=, samt ulik: !=. Helt på tampen, kan jeg nevne while, som vil repetere det som står mellom krøllparentesene, så lenge uttrykket er sant, men som ellers skrives på samme måte som if (dog har den ingen else) Min utfordring til dere, er da:

Lag et program som lar "brukeren" gjette tall, svaret er selvfølgelig noe du har valgt på forhånd. For ekstra creds, gi brukeren tilbakemelding om tallet er større eller mindre enn det han har gjettet.


Det var all C-innføringen for denne gang, håper det ikke gikk ALT for fort frem, vi kommer sterkere tilbake i en senere Del av guiden, til da kan jeg virkelig anbefale HowStuffWorks-guiden jeg har linket til for å få litt mer taket på C.

Videre lesning:
CProgramming.com Intro to C
HowStuffWorks - C Programming
En rimelig kortfattet Objective-C Tutorial
En litt lengre Objective-C Tutorial
Allikevel anbefaler jeg de som er interessert, å skaffe seg en god C/Objective-C bok.

Og, forøvrig, feedback og tips mottas med glede, er det noe som er uklart i guiden, si ifra, så skal jeg prøve å få det fikset, går jeg for fort frem, eller alt for sakte, er det også greit å få vite.

OPPDATERT
Lyninnføring i C lagt til.

Del 2 er nå ute

Moderator
Brukerens avatar
medlem i 235 måneder
 

Fantastisk initiativ. En

Innleggav nubbiz » fre 19.11.2010 4:42

Fantastisk initiativ. En litt bedre forklaring på koden gjør hadde kanskje vært et lite tips?
Kan det selv, men for helt ferske nybegynnere så hadde det kanskje hjulpet.

Brukerens avatar
medlem i 193 måneder
 

Enig. Utrolig bra initiativ.

Innleggav ArmaToGedon » fre 19.11.2010 6:56

Enig. Utrolig bra initiativ. Kan ikke vente på del 2.

Brukerens avatar
medlem i 195 måneder
 

Veldig bra!!

Innleggav theC » fre 19.11.2010 8:41

Veldig bra!!
medlem i 207 måneder
 

@Einarj Akkurat dette jeg

Innleggav chelloo » fre 19.11.2010 9:21

@Einarj
Akkurat dette jeg letet etter! Nå har jeg noe å kose meg med i helgen:)
medlem i 168 måneder
 

You made my day..

Innleggav Randy » fre 19.11.2010 9:40

You made my day.. nesten..

Jeg synes du burde fortsatt med del 1 et lite stykke til. Du bør alltid avslutte slike deler med noe vi kan øve på til neste gang. Når en har skriftet teksten etter "printf" et par ganger er det ikke mye mer å gjøre. Du har linket til relevant lesning, og kudos for det, men personlig ble jeg glad da jeg så denne guiden på norsk, i et fora jeg kjenner godt. Hadde du tatt med en liten innføring i enkle funksjoner f.eks, kunne vi prøvd og feilet med det helt til del 2 kom ut.. :)
medlem i 217 måneder
 

Å fantastisk! Altfor lite

Innleggav Firestone » fre 19.11.2010 9:47

Å fantastisk! Altfor lite stoff av denne typen!

Brukerens avatar
medlem i 226 måneder
 

Ahh, selvfølgelig, skal se

Innleggav EinarJ » fre 19.11.2010 9:50

Randy: Ahh, selvfølgelig, skal se om jeg får til et lite addendum i løpet av dagen, Del 1 var egentlig mest tenkt som en "sjekke interessen"-sak, for å avgjøre hvor lista skal legges, og evt, hvor mange Del-er jeg orker å lage. Jeg har ikke laget føljetong i dette formatet før, så det slår meg helt klart at jeg burde ha gitt publikum noe å leke med til neste Del er klar.

Moderator
Brukerens avatar
medlem i 235 måneder
 

Hva med å porte open source

Innleggav ggt667 » fre 19.11.2010 9:57

Hva med å porte open source prosjektet fra hva det nå enn er nå til Cocoa Document based?

svn co https://pencil-planner.svn.sourceforge. ... il-planner pencil-planner

For kommandolinjeverktøy anbefaler jeg å ta utgangspunkt i kildekoden til ls fra gnu file utils. Den har en fin tilnærming til case/switch for parametere som samtidig er en fin kommandointerpreter.
Sist endret av ggt667 den fre 19.11.2010 10:12, endret 2 ganger.

Brukerens avatar
medlem i 241 måneder
 

Re: Programutvikling for Mac OS X, del 1 - Komme i gang.

Innleggav AreB » fre 19.11.2010 10:13

Bra tiltak!

Hva med om Mac1, laget en egen fane som heter "Tutorial" så kan man der ha et mer blogg-lignende oppsett på den delen av siden.

Eksempel på en slik blogg er: blog.spoongraphics.co.uk

Men igjen, dette liker jeg:)

Brukerens avatar
medlem i 224 måneder
 

Tusen takk!

Innleggav chorion » fre 19.11.2010 10:19

Hjertelig takk for dette, ser fram til fortsettelsen. Kommer du til å dekke iOS-programmering også, og hvordan dette skiller seg fra MacOS-programmering?
medlem i 175 måneder
 

Nydelig

Innleggav KriSkj » fre 19.11.2010 10:24

Superbra insj !
Nå skal jeg som newbie leke meg!

Brukerens avatar
medlem i 211 måneder
 

Der, har jeg lagt til en

Innleggav EinarJ » fre 19.11.2010 10:43

Der, har jeg lagt til en liten smak på C-kode, sånn siden det kan ta mer enn noen dager før neste avsnitt i serien kommer ut.

@chorion: iOS? Tja, kanskje, jeg tenkte å gå litt inn i Obj-C/Interface Builder fremover, så avstanden mellom de to platformene vil vel ikke gjøre seg gjeldende med det første. Vi får se når den tid kommer, aldri si aldri.

Moderator
Brukerens avatar
medlem i 235 måneder
 

Veldig bra guide - ser frem

Innleggav Pacmac » fre 19.11.2010 11:19

Veldig bra guide - ser frem til del 2!

Jeg kan anbefale en bok som heter "Learning C on the Mac". Dette er en helt basic bok som går ut ifra at den som leser den ikke har vært borti programmering tidligere.

Brukerens avatar
medlem i 225 måneder
 

Takk!! Skal prøve dette

Innleggav mordor » fre 19.11.2010 11:19

Takk!! Skal prøve dette når jeg får tid. Har alltid hatt lyst til å lære litt om programmering på mac.

Brukerens avatar
medlem i 247 måneder
 

Neste

Returner til Artikler (Mac1)



Hvem er i Forumene

Registrerte brukere: Google [Bot]



cron