Föreläsningsmaterial (Logik, if-satsen & iteration) Logiska uttryck och boolska variabler Relationsoperatorer i Java Relationsoperatorer i java Lika med == Ej lika med!= Större än > Större än eller lika med >= Mindre än < Mindre än eller lika med <= Logiska operatorer i Java Logiska operatorer i java OCH && ELLER ICKE! Logik_1.java class Logik_1 //Data om en bil boolean registrerad; boolean laglig; registrerad = true; /* Variabeln laglig tilldelas värdet sant (true) om det är sant att bilen är registrerad. laglig = registrerad; System.out.println("Bilen får framföras på allmän väg: " + laglig); Logik_2.java class Logik_2 //Data om en bil boolean registrerad; boolean korforbud; boolean laglig; registrerad = true; korforbud = true;
/* Variabeln laglig tilldelas värdet sant (true) om bilen är registrerad OCH (&&) om den INTE (!) är belagd med körförbud. laglig = registrerad &&!korforbud; System.out.println("Bilen får framföras på allmän väg: " + laglig); Logik_3.java class Logik_3 //Data om en bil boolean registrerad; boolean korforbud; boolean tillstand; boolean laglig; registrerad = true; korforbud = true; tillstand = true; /* Variabeln laglig tilldelas värdet sant (true) om bilen är registrerad OCH (&&) om den INTE (!) är belagd med körförbud, ELLER ( ) om den har särskilt tillstånd. laglig = registrerad &&!korforbud tillstand; System.out.println("Bilen får framföras på allmän väg: " + laglig); Logik_4.java /* Detta program utvärderar påståendet att två inmatade tal är identiska. För detta ändamål används likhetsoperatorn ('=='). class Logik_4 int tal_1; int tal_2; boolean jamforelse; //Läs in det första talet och omvandla det från String till datatypen 'int'. indata =JOptionPane.showInputDialog("Skriv in det första talet"); tal_1 = Integer.parseInt(indata); //Läs in det andra talet och omvandla det från String till datatypen 'int'. indata =JOptionPane.showInputDialog("Skriv in det andra talet"); tal_2 = Integer.parseInt(indata); // Den boolska variabeln 'jamforelse' tilldelas värdet true om tal_1 och tal_2 // är lika. jamforelse = tal_1 == tal_2; JOptionPane.showMessageDialog(null,"Påståendet att talen är lika är: " + jamforelse);
Logik_5.java /* Detta program tar reda på om ett inmatat tal är inom intervallet 25 och 75. class Logik_5 int tal; boolean inom_intervall; //Läs in talet och omvandla det från String till datatypen 'int'. indata =JOptionPane.showInputDialog("Skriv in talet"); tal = Integer.parseInt(indata); /* Den boolska variabeln 'inom_intervall' tilldelas värdet true om tal är STÖRRE ÄN ELLER LIKA MED 25 (>=) OCH (&&) om tal är MINDRE ÄN ELLER LIKA MED 75 (<=) inom_intervall = (tal >= 25) && (tal <= 75); JOptionPane.showMessageDialog(null,"It is " + inom_intervall + " that " + tal + " is within the interval."); Logik_6.java /* Detta program läser in ett lösenord via en dialogruta och jämför om lösenordet är korrekt, samt meddelar användaren om accesstatus. class Logik_6 String password; boolean access; //Läs in lösenordet. password =JOptionPane.showInputDialog("Skriv in lösenordet:"); // Se upp för nedanstående typ av jämförelse. // Den kan se 'rätt' ut men jämför något annat än det avsedda: // access = password == "matrix"; // Korrekt jämförelse access = password.equals("matrix"); JOptionPane.showMessageDialog(null,"Accesstatus: " + access);
If-satsen: villkorsstyrd exekvering Betyg_1.java class Betyg_1 int g; int vg; int resultat; g = 18; vg = 27; indata = JOptionPane.showInputDialog("Skriv in ditt tentamensresultat"); resultat = Integer.parseInt(indata); // Om resultatet är större än eller lika med gränsen för VG... if (resultat >= vg) JOptionPane.showMessageDialog(null, "Du har fått betyget VG"); // Om resultatet är större än eller lika med gränsen för G if (resultat >= g) JOptionPane.showMessageDialog(null, "Du har fått betyget G"); // Om resultatet är större mindre än gränsen för G if (resultat < g) JOptionPane.showMessageDialog(null, "Du har fått betyget U"); Betyg_2.java class Betyg_2 int g; int vg; int resultat; g = 18; vg = 27; indata = JOptionPane.showInputDialog("Skriv in ditt tentamensresultat"); resultat = Integer.parseInt(indata); // Om resultatet är större än eller lika med gränsen för VG... if (resultat >= vg)
JOptionPane.showMessageDialog(null, "Du har fått betyget VG"); // Om resultatet är större än eller lika med gränsen för G else if (resultat >= g) JOptionPane.showMessageDialog(null, "Du har fått betyget G"); // Om resultatet är större mindre än gränsen för G else if (resultat < g) JOptionPane.showMessageDialog(null, "Du har fått betyget U"); Betyg_3.java class Betyg_3 int g; int vg; int resultat; g = 18; vg = 27; indata = JOptionPane.showInputDialog("Skriv in ditt tentamensresultat"); resultat = Integer.parseInt(indata); // Om resultatet är större än eller lika med gränsen för VG... if (resultat >= g) // Om resultatet är större än eller lika med gränsen för G if (resultat >= vg) JOptionPane.showMessageDialog(null, "Du har fått betyget VG"); else JOptionPane.showMessageDialog(null, "Du har fått betyget G"); else JOptionPane.showMessageDialog(null, "Du har fått betyget U"); Iterationer Tabell.java /* Skriver ut femmans multiplikationstabell class Tabell
int antal = 10; int tabell = 5; for(int i = 1; i <= antal; i++) System.out.println(i + " x " + tabell + " = " + i*tabell); Tabeller_1_10.java /* Skriver ut ettans t.o.m. tians multiplikationstabell class Tabeller_1_10 int antal = 10; for(int i = 1; i <= antal; i++) for(int j = 1; j <= antal; j++) System.out.println(i + " x " + j + " = " + i*j); WhileTest.java import javax.swing.*; /* Demonstrerar användning av villkorsloopen while class WhileTest String villkorstals = JOptionPane.showInputDialog("Mata in det tal som skall gissas!"); int villkorstal = Integer.parseInt(villkorstalS); int tal = 1; int raknare = 0; while (tal!= villkorstal) String tals = JOptionPane.showInputDialog("Mata in ett tal!"); tal = Integer.parseInt(talS); raknare++; //räknar antalet inmatningar JOptionPane.showMessageDialog(null, "Det tog dig " + raknare + " gånger för att gissa rätt.");
Sokning.java import javax.swing.*; /* "Sökning" class Sokning String sokord = JOptionPane.showInputDialog("Ange det ord som skall sökas!"); boolean funnen = false; while (!funnen) String indata = JOptionPane.showInputDialog("Ange indatatext"); if (indata.equals(sokord)) //kontrollerar om inmatat ord är lika som sökordet funnen = true; JOptionPane.showMessageDialog(null, "Sökordet " + sokord + " fanns."); Övningsuppgifter 1. Betrakta nedanstående text: Det kommer att hållas en föreläsning på fredag om läraren inte är sjuk och hans barn är friskt. Detta gäller under förutsättning att lärarens bil fungerar på fredag eller om det finns en passande buss som läraren kan använda sig av. I händelse av att läraren på grund av sjukdom eller transportproblem inte kan infinna sig till föreläsningen kan en vikarie sättas in om en sådan finns tillgänglig. I så fall hålls föreläsningen som planerat. Denna text beskriver förutsättningar för att föreläsningen ska hållas, uttryckt i naturligt språk (i konstrast till ett programmeringsspråk). Försök att med stöd i texten göra ett javaprogram som: deklarerar variabler av typen boolean som kan representera de olika förutsättningarna för att föreläsningen ska hållas tilldelar de olika förutsättningsvariablerna värden utvärderar huruvida det är sant (true) att föreläsningen hålls. 2. Hur kan programmet Logik_5.java förändras så att det undersöker om det inmatade talet inte är inom intervallet 25 till och med 75? 3. Gör ett program som undersöker om ett inmatat tal är inom något av intervallen 1 till 10 eller 50 till 60?
4. Antag att ett program ska läsa in ett tal och avgöra om detta talet är udda eller jämnt. Om talet är udda så ska ett meddelande om detta skrivas ut. I annat fall ska användaren meddelas att talet är jämnt. Hur kan ett sådant program utformas? 5. Konstruera ett program som summerar alla jämna tal mellan 0-30. 6. Skriv ett program som skriver ut talen 1-100. Utskriften ska formateras så att det sker en radbrytning vid varje jämt tiotal. Tex: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 osv 7. Skriv ett program som låter användaren mata in ett ord. Programmet ska därefter upprepa detta ord ett slumpvis antal ggr (minst 2 ggr, max 8 ggr). Exempel: Mata in ett ord: EKO EKO EKO EKO Tips: Skriv så här för att få ett slumptal mellan 2 och 8. int random = (int) (Math.random()*7) +2;