2.Lær at programmere: Bogstaver

Bogstaver 

 2. Bogstaver

Nu har vi  lært alt om tal, men hvad med bogstaver? ord? tekst?

Når vi snakker om grupper af bogstaver i et program kalder vi det 'strenge'. (Du kan tænke det som et banner hvorpå du har en bogstavstreng.) For at lave  det lettere at se hvilken del af koden der er i en streng, vil jeg farve strenge røde. Her er nogle strenge:
'Hello.'
'Ruby er fedt.'
'5 er mit favorittal ...  hvad er dit?'
' Fido   siger  #%^?&*@! når han slår foden .'

'           '

'' 

Som du kan se kan strenge have tegnsætning, tal, symboler og mellemrum indeni sig .. ikke kun bogstaver. Den sidste streng har ikke noget i sig overhovedett; Vi kan kalde den en tom streng.

Vi har brugt 'puts' til at printe tal. Nu vil vi bruge den til bogstaver:

puts 'Hallo, verden!'
puts ''
puts 'Farvel.'

Hallo, verden!


Farvel.


Det gik jo fint. Prøv at lave dine egne strenge.

 At regne med strenge


Ligesom du kan regne med tal, kan du også regne med strenge! Nåe ja ... en slags regning... du kan lægge strenge sammen. Lad os prøve at lægge to strenge sammen og se hvad 'puts' gør med det:

puts 'jeg elsker' + 'æblekage.'

jeg elskeræblekage

Ups! jeg glemte at lave mellemrum mellem  "elsker" og "æblekage". Mellemrum betyder normalt ikke noget men det gør de når de er inden i strenge. (Det er sandt hvad man siger: "computere gør ikke det du vil have dem til, de gør kun hvad du beder dem om"). Lad os prøve det igen:

puts 'jeg elsker ' + 'æblekage.'
puts 'jeg elsker' + ' æblekage.'

jeg elsker æblekage
jeg elsker æblekage

(som du kan se var det ligemeget hvilken streng jeg satte mellemrummet i).

Så man kan altså lægge strenge sammen, men man kan også gange dem (Altså med et tal). Se her:

puts 'blink ' * 4

Blinkende øjne

(Det var bare for sjov - man får dette)

blink blink blink blink

Hvis man lige tænker over dét en ekstra gang, giver det faktisk mening. 

7*3 betyder faktisk 7 + 7 + 7  så 'moo' * 3 betyder jo bare 'moo' + 'moo' + 'moo''

12 eller  '12'


Før vi går videre bør vi sikre os at vi forstår forskellen mellem tal og ciffer (digit)
12 er et tal men '12' er en streng bestående af 2 cifre.

Lad os lege lidt med det:
puts  12  +  12
puts '12' + '12'
puts '12  +  12'

 24
1212
12  +  12

Og hvad så med dette:

puts  2  *  5
puts '2' *  5
puts '2  *  5'

10
22222
2  *  5

Disse eksempler var ret lette at gå til. Hvis du ikke er ret omhyggelig med strenge  tal, så kan du let få  problemer...

Problemer

Det kan være at du nu har prøvet  et par ting som ikke virkede. Hvis du endnu ikke har det, kan du se et par stykker her:

puts '12' + 12
puts '2' * '5'

#<TypeError: can't convert Fixnum into String>

Hmmm... en fejl meddelelse. Problemet er at du ikke rigtigt kan lægge et tal sammen med en streng, eller gange en streng med en anden streng. Det giver ikkke meget mere mening end dette:

puts 'Betty' + 12
puts 'Fred' * 'John'

Her er noget andet du skal være klar over: 

Du kan skrive 'gris' * 5 i et program, som vil betyde 5 sæt af strengen 'gris' lagt sammen. Men du kan ikke skrive 5 * 'gris' for det vil betyde 'gris' sæt af 5 hvilket jo ikke giver mening.
 

Til sidst kan vi se på hvad jeg skal gøre hvis jeg ville have strengen "Du har Hans's hat på!" printet. Vi kan prøve med dette:

puts 'Du har Hans's hat på'

Ja det ville ikke virke.  Jeg vil ikke engang prøve det. Computeren troede vi var færdige med strengen. (Det er grunden til at det er rart at have en tekst editor der kan lave farvekode for dig.) Så hvordan kan vi fortælle computeren at vi ikke er færdige med strengen? Vi kan undgå ('escape') apostroffen sådan her:

puts 'Du har Hans\'s hat på' 

Du har Hans's hat på

Den omvendte skråstreg - også kaldet backslash - er undtagelses tegnet. Med andre ord, hvis du har en omvendt skråstreg og et andet bogstav, bliver de nogle gange til et nyt tegn. De eneste tegn en backslash laver undtagelser for er  apostrof og backslash tegnet selv. (Når man tænker det igennem må escape tegn altid escape dem selv.) Jeg vil lige komme med lidt flere eksempler:

puts 'Sms\'er  sendes hurtigt!'
puts 'backslash ved slutningen af strengen:  \\'
puts 'op\\ned'
puts 'op\ned'

Sms'er sendes hurtigt!
backslash ved slutningen af strengen:  \
op\ned
op\ned

Da en backslash ikke laver nogen undtagelse for bogstavet 'n' men laver en undtagelse for sig selv, bliver de to sidste linier ens når de printes. De er ikke ens i koden, men ens i udprintningen. Hvis du har andre spørgsmål så læs endelig videre. Jeg kan jo  ikke  besvare álle spørgsmål på én side..



 

 

 




Af Chris Pine

oversat af Gunner Carstens

Original tekst

Indledning

Kapitel 1 - Tal

Kapitel 2 -Bogstaver

Kapitel 3 Variable og tildelinger

Kapitel 4 Blande det hele sammen

Kapitel 5 Mere om metoder

Kapitel 6 Kontrol med strømmen

Kapitel 7 Sæt og Gentagere

Kapitel 8 Skriv dine egne metoder

Kapitel 9 Klasser

Kapitel 10 Blokke og Procs

Kapitel 11 Hvad nu?







Opgaver