1. #1
    Didius's Avatar
    Registered
    19/02/05
    Posts
    137
    iTrader
    0
    Mentioned
    0 Post(s)
    Reputation
    0/0

    [PROG]TP <=> Python Analogien

    Goeiemidag


    Jullie weten wel dat turbo pascal nog altijd veel gebruikt wordt in het middelbaar om de leerlingen "probleem oplossend" denken aan te leren.

    Ik zoek daarvoor echter een alternatief. Er moet toch iets beter bestaan dan TP (lees moderner) maar toch even leesbaar.

    Sommige scholen gebruiken Javascript. Vind ik wel modern(er) maar toch niet even leesbaar als TP.


    Ik ben echter python aangeraden, en dat bevalt me goed. Het lijkt ook heel leesbaar. Ik zit echter wat in de problemen ermee. Bepaalde zaken moeten namelijk aangeleerd worden (volgens het leerplan). Zoals oplossen in deelproblemen.
    In pascal als volgt:
    Code:
    PROGRAM naamvanhetprogramma;
    VAR globale variabelen;
    
    PROCEDURE Deelprobleem1;
    VAR lokale variabelen;
    BEGIN
    END;
    PROCEDURE Deelprobleem2;
    BEGIN
    END;
    
    BEGIN
       Deelprobleem1;
       Deelprobleem2;
    END.
    Ik weet echter niet echt hoe zoiets eruitziet in python; iets als volgt?
    Code:
    def Deelprobleem1:
      instructies
    
    def Deelprobleem2:
       instructies
    
    Deelprobleem1
    Deelprobleem2
    Ook heel leesbaar, maar hoe zit het met de declaraties van globale en lokale variabelen hier?

    thnx
    no votes  

  2. #2
    Tyfius's Avatar
    Registered
    01/09/02
    Location
    Peutie
    Posts
    7,664
    iTrader
    0
    Mentioned
    4 Post(s)
    Reputation
    13/105
    Ik heb nu niet veel tijd en het zit zeer ver weg, maar een klein voorbeeldje:
    Code:
    #!/usr/local/bin/python
    
    # Variable scope
    
    first = 1
    
    def one():
        "Double a global variable, return it + 3."
        global first
        first *= 2
        result = first+3
        return result
    
    print one.__doc__
    print one()
    print one()
    print one()
    print "first now has the value",first
    print "result has the value",result
    no votes  

  3. #3
    Messias.'s Avatar
    Registered
    06/04/06
    Location
    BXL
    Posts
    4,415
    iTrader
    1 (100%)
    Mentioned
    0 Post(s)
    Reputation
    2/40
    Python is ge-wel-dig. Goeie keuze, vooral in combinatie met IDLE, de live interpreter voor, Python is dat een geweldig leerinstrument.

    Met het keyword def maak je inderdaad nieuwe functies/procedures aan. Ik ken geen woord TP, maar wat betreft variabelen: Python is net een dynamisch getypeerde taal en ontworpen om zoveel mogelijk boilerplate code te omzeilen. Een nieuwe variabele aanmaken is zo eenvoudig als:
    Code:
    tekst = "Dit is een string."
    x = 9 #dit is een integer
    y = 3.14 #dit is een float
    De interpreter bepaalt zelf welk soort type de variabele is. Dit heeft aantal voordelen en nadelen, maar voor eenvoudige programma's zijn geen van beide van belang.

    Ook moet je beseffen dat identatie een essentieel syntactisch element is van de taal. Een tab verkeerd plaatsen en je ligt overhoop met de interpreter. IDLE enzo plaatsen meestal wel zelf tabs waar nodig, maar bijvoorbeeld voor branching bij if/else, zal je je leerlingen wel moeten uitleggen dat de enkel de code die geindenteerd is zonder één van de takken wordt uitgevoerd als de voorwaarde voldaan is.

    Quote Originally Posted by Tyfius View Post
    This quote is hidden because you are ignoring this member. Show
    Code:
    # Variable scope
    
    first = 1
    
    def one():
        """Double a global variable, return it + 3."""
        global first
        first *= 2
        result = first+3
        return result
    
    print one.__doc__
    print one()
    print one()
    print one()
    print "first now has the value",first
    print "result has the value",result
    Even toelichten. Elke functie heeft standaard de .__doc__ member en die bevat de documentatiestring van de de functie. Ik denk echter dat Tyfius een typfoutje gemaakt heeft, want de documentatiestring begint en eindigt altijd met 3 aanhalingstekens. Door die member aan te roepen print je dus de tekst

    Double a global variable, return it + 3.
    Last edited by Messias.; 07-06-2007 at 18:08.
    I caught a glimpse and now it haunts me.
    no votes  

  4. #4
    Didius's Avatar
    Registered
    19/02/05
    Posts
    137
    iTrader
    0
    Mentioned
    0 Post(s)
    Reputation
    0/0
    Enkele zaken (ivm die variabelen, en indentaties) wist ik wel al, maar toch bedankt voor de informatie
    Wat is boilerplate code trouwens?

    Die .__doc__ member is idd wel handig! Iets dat ik ga onthouden

    Quote Originally Posted by Tyfius
    This quote is hidden because you are ignoring this member. Show
    # Variable scope

    first = 1

    def one():
    """Double a global variable, return it + 3."""
    global first, result
    first *= 2
    result = first+3
    return result

    print one.__doc__
    print one()
    print one()
    print one()
    print "first now has the value",first
    print "result has the value",result
    Moet die result ook niet na die global staan? Anders wordt hier compilatie fout gegeven.

    Maar die variabelen zijn nog niet echt duidelijk.

    Bijvoorbeeld (de typische BMI oefening ):
    Code:
    def vraagGewichtEnLengte():
       global gewicht, lengte
       gewicht = input('Geef je gewicht: ')
       lengte = input('Geef je lengte: ')
    
    def berekenBMI():
       global bmi
       bmi = gewicht/(lengte*lengte)
    
    def schrijfBMI():
       print "Bmi is ", bmi
    
    vraagGewichtEnLengte()
    berekenBMI()
    schrijfBMI()
    Dat werkt perfect maar die declaratie van die variabelen is precies zo, tja "anders" vergeleken met TP. Of misschien doe ik het fout?
    Bij elke deelprobleem apart de variabelen globaal declareren, terwijl dit in TP boveaan het programma moet (wat we logisch(er) is, aangezien het globaal is)
    Hoe zou dat programma trouwen opgesteld moeten worden indien er gewerkt wordt met parameters? Misschien krijg ik dan wat meer inzicht in de structuur.

    BTW: ik dacht om drpython (op ubuntu) te gebruiken als editor. Die laat zowel de interactieve modus toe, en het is ook gemakkelijk om .py bestanden te compileren.
    no votes  

  5. #5
    Tyfius's Avatar
    Registered
    01/09/02
    Location
    Peutie
    Posts
    7,664
    iTrader
    0
    Mentioned
    4 Post(s)
    Reputation
    13/105
    Ik dacht dat je je variabelen ook wel globaal moest declareren, zoals ik met die first doe. In het deelprogramma maak ge via de global dan gewoon bekend dat dit een globale variabele is.
    Ik heb in geen jaren nog python aangeraakt though, ben niet echt meer een referentie
    no votes  

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  

Log in

Log in