Programmering: if-setningar

Fram til no har programma våre bare vore ei liste med instruksjonar som kjører frå start til slutt. Men ein av dei viktigaste elementa i eit program er muligheten til å utføra bestemte instruksjonar bare når dei oppfyller bestemte betingelsar. Til dette kan vi bruka if-setningar. Strukturen er omtrent* slik; if (betingelse1) {blokk1} else if (betingelse2) {blokk2} else {blokk3}. Hvis programmet får tilslag på betingelse1, utfører det blokk1. Hvis ikkje sjekkar det om betingelse2 er oppfylt, og utfører i såfall blokk2. Hvis ingen av disse er oppfylt, vil blokk3 bli kjørt. Betingelsane består ofte i at vi testar om ein variabel er lik ein gitt verdi, eller større enn / mindre enn ein gitt verdi. Eksempel på dette er programmet under som finn evt. løysingar til ein andregradslikning vga. den såkalte abc-formelen. Her testar vi på uttrykket b2 - 4ac som vi skal seinare skal ta kvadratrota til. Hvis dette uttrykket, som blir kalla diskriminanten, er negativt har vi ingen svar. Hvis det er 0 har vi ett svar, og ellers (hvis det er større enn 0), så får vi to svar. Kjør programmet.
* Merk at dei tre programma skriv dette på ulike måtar.

Python


	import math

	a = float(input("Skriv inn a: "))
	b = float(input("Skriv inn b: "))
	c = float(input("Skriv inn c: "))

	d = b*b - 4.0 * a* c # diskriminanten

	if d < 0:
		print ("Likninga har ingen reelle løysingar")
	elif d == 0: # Merk dobbelt likhetstegn!
		x = (-b) / (2 * a)
		print ("Likninga har ei løysing: x =",x)
	else:
		kvadratrot = math.sqrt(d)
		x1 = (-b + kvadratrot) / (2 * a)
		x2 = (-b - kvadratrot) / (2 * a)
		print ("\nLikninga har løysingane: x =",x1,"og x =",x2)
	

Merk: 1) Vi må importera biblioteket math for å bruka sqrt. 2) I Python skriv vi "elif" i staden for "else if". 3) Her må vi ha med kolon ":" !

JavaScript


	a = prompt("Skriv inn a");
	b = prompt("Skriv inn b");
	c = prompt("Skriv inn c");

	d = b*b-4*a*c; //diskriminanten

	if (d < 0){
		document.write("Likninga har ingen reelle løysingar.");
	} else if (d == 0){ // Merk dobbelt likhetstegn!
		x = -b / (2 * a); 
		document.write("Likninga har ei løysing: x = " + x);
	} else {
		kvadratrot = Math.sqrt(d);
		x1 = (-b + kvadratrot)/(2 * a);
		x2 = (-b - kvadratrot)/(2 * a);
		document.write("Likninga har løysingane: x = " + x1+ " og x = " + x2 )
	}

Forklaring: Math.random()gir eit desimaltal mellom 0 og 0.99999... (dvs. 1 er ekskludert) Når vi multipliserer med 2, får vi eit eit desimaltall frå 0 og til 1.9999... Tilslutt runder vi svaret ned med Math.floor() til nærmaste heiltal, dvs 0 eller 1.

PHP

	
	$a = 1;
	$b = -5;
	$c = 6;

	$d = $b*$b - 4*$a*$c;

	if($d < 0){
		echo "Likninga har ingen svar!";
	} elseif($d == 0) { // Merk dobbelt likhetstegn!
		$x = -$b / (2 * $a);
		echo "Likninga har ett svar: x = ".$x;
	} else{
		$kvadratrot = sqrt($d);
		$x1 = (-$b + $kvadratrot)/(2 * $a);
		$x2 = (-$b - $kvadratrot)/(2 * $a);
		echo "Likninga har to svar: x = ".$x1." og x = ".$x2;
	}
	

Merk: PHP blir kjørt på ein server, og kan ikkje stoppa midt i ein kjøring for å få brukar-input. Derfor blir input til programma ofte gitt som parameterar vha GET eller POST metodane. For enkelhets skuld set vi a, b og c inne i programmet denne gongen. Dette kallast hardkoding.