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 startFör att göra livet enklare och istället för att skriva maskinkod direkt. Namn på instruktioner- Lättare att läsa, fungerar bara på en viss typ av maskin, fortfarande rätt svårt, många instruktioner att lära sig utantill, spagettitrasselkod Assemblator översätter till maskinkod. flytta 09h till register ah. ladda effekt address till register dx. anropa interupt 21 flytta 4c00h till register ax anropa interupt 21
#include <stdio.h> int main(int argc, char *argv[]) { printf("Hello Wordl!\n"); return 0; }C ett av världens mest använda språk, För att få ett körbart program måste man först kompilera programmet, kan kompilera till olika datorer. Men måste kompileras om för varje dator. Mer läsbart än assembler, lättare att hitta fel, kompilatorn varnar för "dumma saker" Loopar och variabler
// A Hello World! program in C#. using System; namespace HelloWorld { class Hello { static void Main() { Console.WriteLine("Hello World!"); } } }C# är ett programspråk från Microsoft, kompileras också men istället till ett format som en virtuell maskin kan köra, ett slags program som kör program. Fördelen är att man inte behöver kompilera om programmet så länge den virtuella maskinen finns för datorn man vill köra programmet på. Objektorienterat, bra på att kapsla in beteende, kompilatorn kan varna för fel. Långsammare än C, men bättre möjlighet att sturkturera program Java är väldigt likt C# och körs också på en virtuellmaskin
class Hello def say_hello puts "hello" end end program = Hello.new program.say_helloRuby är ett interpreterat språk. Körs av en tolk och översätts inte till maskinkod, istället tolkar tolken programmet medans det körs. Lätt att ändra i program, kan köras på alla datorer där det finns en tolk som förstår språket. Metaprogrammering, alltså propgram som skriver program är lättare. Python, php
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.145omkrets är en variabel här, man kan plocka fram värdet som är sparat i variabeln och använda den och man kan spara nya värden i variabeln.
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"
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:
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 && !cUttryck är en kombination värden, variabler, operatorer och funktioner och spottar tillbaka ett nytt värde. Uttryck kan vara allt från en enda variabel till ett sammansatt uttryck av många variabler, operatorer och funktioner.
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 * radieTilldelning sparar värden från uttryck.
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
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 endFor, while, each, reduce, map osv
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" endDatorn kan välja väg genom programmet beroende på hur uttryck tolkas.
Ganska avancerat koncept
Vi går över på att prata om OOP, kallar det OOP. Ruby är ett objektorienterat språk. Betyder att man bryter ned problem genom att fundera på hur objekt kan samverka. Istället för att bara ordna program med hjälp av funktioner bryter man ner programmet i objekt. Objekten inkapslar både funktioner och dataKlasser ä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å bokenInitialize constructor. Visa anrop till name i puts
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å bokeninga, en eller flera parametrar värdet i new skickas till initialize
Ä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å bokenNås ifrån olika funktioner i en klass. Delas inte mellan olika objekt
http://tryruby.org / kidsruby