Informatik, Grundlagenfach, Musterlösungen




       
Willkommen       Chemie       Physik       Informatik       Maturaarbeiten       Dies & das       Suchmaschine      

Musterlösungen

Musterlösungen (Lokal gespeichert unter homepage_rainer_ch/informatik_1_klaessler)

Springe zur Musterlösung ...

Die Musterlösungen werden noch aufgeschaltet. Und wer Source-Code lesen kann soll belohnt werden.



_____________________________________________________________________________________________

Hausaufgaben, 1. Doppelstunde:

  • Aufgabe 1.1: Schreibe ein Programm unter Verwendung des Befehls repeat, welches folgende Treppe zeichnet.
    Lösung:



    Häufigster Fehler: nach der repeat-Anweisung müssen die zu wiederholenden Befehle eindeutig eingerückt sein.

  • Aufgabe 1.2: Welche Figur wird von folgendem Programm gezeichnet?
    Lösung:



  • Zum Anfang der Seite






_____________________________________________________________________________________________

Hausaufgaben, 2. Doppellektion: Unterprogramme, Repetition diverse Befehle inklusive repeat







_____________________________________________________________________________________________

Hausaufgaben, 3. Doppellektion: Repetition, Variablen, Kreis zeichnen

  • Aufgabe 3.1: Was zeichnet folgendes Programm?
    Lösung:



  • Aufgabe 3.2: Welchen Wert hat die Variable s am Schluss?
    Lösung: s hat den Schlusswert 15


  • Aufgabe 3.3: Finde die Fehler.
    Lösung:



  • Zum Anfang der Seite






_____________________________________________________________________________________________

Hausaufgaben, 4. Doppellektion: Selektion und Zufall

  • Häufige Fehler 4.1:
    • '=' anstelle '=='
    • wenn '!=' verwendet wird, so müssen alle auszuschliessenden Zahlen mit 'AND' verknüpft werden 
    • beim Konstrukt if zahl in .... folgen geschweifte Klammern '{}' und nicht runde Klammern '()'
  • mehrere Lösungen für das gleiche Problem, z.B. Strich links unten nach links mitte:
    - if zahl in {0,2.6,8}                               oder
    - if zahl == 0 or zahl == 2 or zahl == 6 or zahl == 8               oder
    - if zahl != 1 and zahl != 3 and zahl != 4 and zahl != 5 and zahl != 7 and zahl != 9
  • Aufgabe 4.2:
    • random()*2  ............. liefert Zahlen zwischen 0 und 2
    • random()*2 + 1  ............. liefert Zahlen zwischen 1 und 3
    • (random()+1)*3  ............. liefert Zahlen zwischen 3 und 6
    • random()*2-1  .............  liefert Zahlen zwischen -1 ('0-1') und 1 ('2-1')
    • random()*50 + 50 sowie (random()+1)*50 ......... liefert Zahlen zwischen 50 und 100
    • random()*(b-a)+a ......... liefert Zahlen zwischen a und b
    • Hinweis: raindint(a,b) .... liefert ganze Zahlen !
    • Hinweis: random(-1,1) ... liefert nicht das erwünschte Resultat (Zufallszahlen zwischen -1 und + 1). Die Angabe der Argumente an die Funktion selbst geht nur bei randint(), z.B. randint(1,6)
  • Zum Anfang der Seite






_____________________________________________________________________________________________

Hausaufgaben, 5. Doppellektion: Glücksspiel

  • a) 200+150+100+50 = 500
  • b) 150 + 100 + 50 = 300
  • c) bleibt in der zweiten while-Schleifen für immer (oder zumindest bis zum nächsten Stromunterbruch) hängen, die Länge des Striches wird somit immer grösser, strebt gegen Unendlich
  • d) auch hier ... die Bedingung in der zweiten while-Schleife ist immer wahr ... gleich wie c, die Länge des Striches wird somit immer grösser, strebt gegen Unendlich
  • Zum Anfang der Seite






_____________________________________________________________________________________________

Hausaufgaben, 6. Doppellektion: Rekursion





_____________________________________________________________________________________________

_____________________________________________________________________________________________

 

für Zwischendurch ...

 

from gturtle import *
from random import randint
makeTurtle()

#   Idee: Gegeben ist ein gleichseitiges Dreieck.
#   Ecke oben : A, links B, rechts C. Aktuell so, dass C im Ursprung 0/0
#   1. Es wird nun eine der drei Ecken zufällig gewählt und 
#               die halbe Strecke von P bis zur gewählten Ecke gezeichnet.
#   2. Der Endpunkt der 'gezeichneten' Strecke heisse nun wieder P. Dort einen Dot machen
#   3. Wiederhole ab 1., bis die gewählte Anzahl Strecken 'gezeichnet' sind.

hideTurtle()
seite=300 
lt(30)

a_x = 0 ; a_y = 0 ; b_x = 0 ; b_y = 0 ; c_x = 0 ; c_y = 0

#
#   zeichnet Dreieck, speichert die Position der Ecken. ACHTUNG: diese 
#   Variabeln müssen global sein ! 'In Python hat jeder Befehl seine lokalen Variabeln'
#

def zeichne_dreieck(seite):
        global a_x ; global a_y; global b_x ; global b_y; global c_x ; global c_y
        fd(seite)
        lt(120)
        a_x = getX() ; a_y = getY()
        fd(seite) ; lt(120)
        b_x = getX() ; b_y = getY()
        fd(seite) ; lt(120)
        c_x = getX() ; c_y = getY()
       
zeichne_dreieck(seite)

# print "a_x = ", a_x, " a_y = ", a_y
# print "b_x = ", b_x, " b_y = ", b_y
# print "c_x = ", c_x, " c_y = ", c_y


penUp()     ## nur Punkte machen !!

print " ich beginne nun mal zu zeichnen ... "
repeat 12345:
#   aktuelle Position speichern ... könnte auch direkt gemacht werden, 'übersichtlicher'
    aktuell_x = getX() # ; print "aktuell_x = ", aktuell_x
    aktuell_y = getY() # ; print "aktuell_y = ", aktuell_y  

#   wähle zufällig Zahl 1-3 ... 1: Ecke A, 2: Ecke B, 3: Ecke C
    z=randint(1,3)  
    if z == 1 : ziel_x = a_x ; ziel_y = a_y
    if z == 2 : ziel_x = b_x ; ziel_y = b_y
    if z == 3 : ziel_x = c_x ; ziel_y = c_y

#   print " ziel ... x = ", ziel_x, "   .. y = ", ziel_y
#   print " "
#   Bewege dich zum ziel, aber nur Hälfte x, Hälfte y 
    moveTo((ziel_x+aktuell_x)/2, (ziel_y+aktuell_y)/2)
    dot(3)    


print " fertig ... cool, gelle ?! "


Zum Anfang der Seite