Programmering

Significant Bit

Vilka är vi

Vad jobbar vi med

Varför programmera

  • Man vill slippa göra tråkiga saker
  • och göra roliga saker istället

Vad är program

Språk

Programspråk

Maskinkod på hålkort

Assembly

							
model small
.stack 100h
 
.data
msg     db      'Hello world!$'
 
.code
start:
        mov     ah, 09h   ; Display the message
        lea     dx, msg
        int     21h
        mov     ax, 4C00h  ; Terminate the executable
        int     21h
 
end start 
							
						

C

							
#include <stdio.h>
int main(int argc, char *argv[]) 
{
	printf("Hello Wordl!\n");
	return 0;
}
							
						

C#

							
// A Hello World! program in C#. 
using System;
namespace HelloWorld
{
    class Hello 
    {
        static void Main() 
        {
            Console.WriteLine("Hello World!");
        }
    }
}
							
						

Ruby

							
class Hello
  def say_hello
    puts "hello"
  end
end

program = Hello.new
program.say_hello
							
						

Varför olika språk

För att olika saker är viktiga

  • Prestanda
  • Portabelt
  • Uttrycksfullt
  • Struktur
  • Tycke och smak

Vi skall titta på Ruby

Centrala begrepp för programmering

Variabel

En namngiven plats i datorns minne, en slags förvaringslåda.
Samma sak i matten (den där x)

Variabler i Ruby skrivs med små bokstäver t.ex.

						
							omkrets = 3.145
						
					

Värde

Ett värde är något man kan lagra i en variabel.

Till exempel ett tal med värdet 12 eller en text med värdet "hej"

Typ

Alla värden har en typ, typen beskriver hur värdet skall tolkas och vad man kan göra med det.
Man kan säga att typen gör att innehållet får en betydelse.

Några exempel på några (udda)typer:

  • Heltal/Integers: 102
  • Flyttal/Floats: 1.20
  • Strängar/Strings: "hejsan"
  • Boolesk/Boolean: true/false

Uttryck

Man kan sätta samman värden, variabler, operatorer och funktioner till uttryck.
Till exempel kan man använda de fyra räknesätten på tal, och slå samman strängar och olika logiska operatorer för boolesk typer (och, eller, icke)

						
ett_tal = 1*10+20-2/10
en_strng = "Hejsan" + " Du gamle indian"
boolesk = a || b && !c
						
					

Tilldelning

Innebär att man ger en variabel ett värde. I de flesta språk symboliseras tilldelning med =

Nedan syns ett exempel på tilldelning, vi beräknar omkretsen av en cirkel med uttrycket på höger sida om tilldelningen. Alltså beräknas en cirkels omkrets från radien och tilldelas variabeln omkrets.

						
omkrets = 3.14 * 2 * radie
						
					

Funktion

En funktion en uppsättning instruktioner som körs efter varandra, man använder dem för att få byggblock som man kan återanvända
Funktioner har ett namn och kan utföra ett ”arbete”. De kan också ta parameterar och skicka tillbaka, returnera, ett värde.

							
def omkrets(radie)
	puts "Beräknar omkretsen av en cirkel"
	return 3.14*2*radie
end
							
						

Repetition, Upprepning, Loopar

Repetition, Upprepning, Loopar

Innebär att programmet kommer upprepa en uppsättning instruktioner tills dess att något vilkor eventuellt avbryter.

						
sum = 0
i = 0
while i < 10 do #Upprepa medans i är mindre än 10
	sum = sum + i
	i = i + 1
end

sum = 0
for i in 0..9
	sum = sum + i
end	
						
					

Alternativ

Betyder att datorn kan välja väg med hjälp av logiska uttryck. Alltså uttryck som antingen blir sanna eller falska.

== Jämför värden, i exemplet jämförs värdet 42 med det som finns i variabeln svar.

							
puts "Vad är svaret på allt?"
svar = gets.to_i() #Läs in tal från tangentbordet
if(svar == 42)
	puts "Rätt svar" 
else
	puts "Fel svar"
end	
							
						

Objektorienterad programmering / OOP

Ganska avancerat koncept

OOP - Klasser

Klasser är en användardefinierad typ.
På samma sätt som heltal eller strängar i Ruby.
En instans av en klass kallas objekt. Klassen är abstrakt, t.ex. Bok medan en instans av en klass kan vara en viss bok.
När man gör nya objekt från en klass i Ruby använder man funktionen new på klassen.

							
class Bok #Klass definition
  def initialize(name)
    @name = name
  end

  def name()
    return @name
  end	
end 

hitchiker = Bok.new("The Hitchhiker's Guide to the Galaxy")
puts hitchiker.name() #Skriver ut namnet på boken

							
						

Konstruktor

Har hand om att ställa in det nya objektet så att det är redo att användas.

Funktionen heter initialize och kan ta parameterar

							
class Bok
  def initialize(name)  #Konstruktor
    @name = name
  end

  def name()
    return @name
  end	
end 

hitchiker = Bok.new("The Hitchhiker's Guide to the Galaxy")
puts hitchiker.name() #Skriver ut namnet på boken

							
						

Instansvariabler

Är variabler som kan nås från alla funktioner i klassen.
@name är en instansvariabel. Det betyder att objektet har en variabel som kan nås från alla funktioner. Gör vi en ny Bok kommer den få en egen instansvariabel.

Instansvariabler startar alltid med ett @

							
class Bok
  def initialize(name)  #Konstruktor
    @name = name
  end

  def name()
    return @name
  end	
end 

hitchiker = Bok.new("The Hitchhiker's Guide to the Galaxy")
puts hitchiker.name() #Skriver ut namnet på boken

							
						

nog

Demon/Frågor

http://tryruby.org / kidsruby