Introduction

Què és programar?

  • Descriure formalment la solució genèrica d’un problema de manera que un ordinador pugui calcular una solució concreta a partir d’unes dades concretes.

  • Per programar calen habilitats de disciplines com

    matemàtiques:

    per tal d’expressar els càlculs en llenguatges formals,

    enginyeria:

    per tal de dissenyar components, assemblar-los en sistemes complexos i avaluar alternatives i

    ciència:

    per tal d’observar el comportament de sistemes complexos, formular hipòtesis i comprovar les prediccions.

El llenguatge de programació Python

  • Python és un llenguatge de programació d’alt nivell (http://python.org/).

  • Els ordinadors només poden executar programes escrits en llenguatges de baix nivell.

  • Avantatges dels programes escrits en llenguatges de programació d’alt nivell:

    • S’escriuen més de pressa, són més curts, més fàcils de llegir i es més probable que siguin correctes.

    • Són portables.

Compiladors i intèrprets

  • Intèrpret.

  • Compilador, programa (o codi) font, programa objecte, programa executable.

  • Combinació compilador-intèrpret, byte-code (codi intermedi), màquina virtual. Python i Java.

L’intèrpret de Python

  • Python és un llenguatge interpretat

  • Dos modes de treball: shell mode i script mode.

  • Script mode: per programes.

  • Shell mode: per petits experiments.

Què és debugging?

  • Bugs, errors de programació. Poden ser errors lèxics, sintàctics, d’execució i lògics (semàntics).

  • Error lèxic (tokens):

    >>> ? + 5
    SyntaxError: invalid syntax
    
  • Error sintàctic:

    >>> 5 * 2)
    SyntaxError: unmatched ')'
    
  • Errors d’execució:

    >>> 3 + 'hola'
    Traceback (most recent call last):
      File "<pyshell#2>", line 1, in <module>
        3 + 'hola'
    TypeError: unsupported operand type(s) for +: 'int' and 'str'
    
    >>> 1/0
    Traceback (most recent call last):
      File "<pyshell#4>", line 1, in <module>
        1/0
    ZeroDivisionError: division by zero
    
  • Error lògic en calcular el tant per cent d’estudiants aprovats sobre el total:

    >>> aprovats = 5
    >>> total = 10
    >>> total/aprovats*100
    200.0
    
  • Debugging: correcció d’errors.

  • Vegeu algunes pautes per evitar cometre errors i corregir-los.

Valors i tipus

  • Valors de tipus enter (int).

    1285
    -5284327
    0
    

    Nombres sense coma ni punt decimal.

  • Valors de tipus real representats en coma flotant (float).

    12.85
    -528.4327
    0.0
    3e-4
    

    Nombres amb punt decimal o escrits en notació científica (-1.7e3).

  • Valors de tipus string o cadena (str).

    >>> 'Hola!'
    'Hola!'
    >>> "Digues com estàs."
    'Digues com estàs.'
    >>> """I les teves
    amistats,
       com van?"""
    'I les teves\namistats,\n   com van?'
    
  • Funció type.

    >>> type(-5284327)
    <class 'int'>
    >>> type(3e-4)
    <class 'float'>
    >>> type('Hola')
    <class 'str'>
    
  • El tipus s’ha deduït de la sintaxi del valor.

Variables

  • Les variables són noms que es refereixen a objectes.

  • Les dades en Python es representen mitjançant objectes.

  • Un objecte té associats un identificador, un tipus i un valor.

Noms de variables i paraules clau

  • Arbitràriament llargs i formats per lletres, dígits i _ començant per lletra.

  • No són noms de variables vàlids les paraules clau

    False      await      else       import     pass
    None       break      except     in         raise
    True       class      finally    is         return
    and        continue   for        lambda     try
    as         def        from       nonlocal   while
    assert     del        global     not        with
    async      elif       if         or         yield
    
  • Exemples de noms correctes:

    _abc
    lm1
    n_o
    _
    _1a
    h_3
    a94_3jl
    
  • Exemples de noms incorrectes:

    1xyz
    ab?
    b-a
    k+l
    @fgh
    

Assignment sentence

  • Sentència d’assignació: variable = valor.

    A partir d’aquest moment la variable es refereix (o fa referència) un objecte amb valor valor.

  • L’operador d’assignació (=) no és commutatiu.

  • Diagrama d’estat.

  • Les variables poden canviar l’objecte al que es refereixen.

  • Els objectes als quals no es refereix cap variable es destrueixen.

Author:

Antoni Soto i Riera

Date:

4/10/2010

Copyright:

Reconeixement-Compartir Igual 3.0 Espanya de Creative Commons

Assignacions múltiples

  • Una variable pot canviar el valor al que es refereix:

    a = 3
    a = 7
    
  • Sentència d’assignació (=) vs igualtat (==):

    • La igualtat és simètrica i l’assignació no:

      a = 7
      7 = a
      
    • La igualtat matemàtica sempre és certa, l’assignació pot fer que dues variables es refereixin al mateix valor, però pot canviar:

      a = 5
      b = a     # a i b es refereixen a 5: són iguals
      a = 9     # ara ja no
      

Actualitzant variables

  • El nou valor de la variable depèn de l’anterior:

    x = x + 1
    
  • És un error actualitzar una variable que no s’ha inicialitzat:

    x = 0
    x = x + 1
    
  • Incrementar (sumar 1) i decrementar (restar 1)

    x = 0
    x = x + 1
    

Sentències

  • L’assignació i les expressions són sentències.

  • L’assignació produeix un canvi en l’entorn: modifica variables. Les expressions no. Veieu Online Python Tutor.

  • Un programa és una seqüència de sentències (composició seqüencial).

Avaluació d’expressions

  • Expressió: combinació de valors, variables i operadors.

    >>> a = 5.7
    >>> a - 3**2
    -3.3
    
  • Avaluació d’una expressió: realitzar els càlculs indicats pels operadors a partir dels valors i dels valors de les variables que hi apareixen.

  • Un valor és una expressió i una variable també.

    >>> 3
    3
    >>> a = 5.7
    >>> a
    5.7
    
  • Una variable ha d’estar inicialitzada per poder participar en una expressió.

    >>> b
    Traceback (most recent call last):
      File "<pyshell#21>", line 1, in <module>
        b
    NameError: name 'b' is not defined
    >>> b = -1
    >>> b
    -1
    
  • Avaluar una expressió no és el mateix que escriure el seu valor.

    >>> a = 5.7
    >>> a - 3**2
    -3.3
    >>> print(a - 3**2)
    -3.3
    
  • L’avaluació d’una expressió és una sentència vàlida, però en un script no té cap efecte.

Operadors i operands

  • Operadors: símbols que representen càlculs (suma, producte, …).

  • Operands: valors sobre els que actuen els operadors.

  • Exemples: +, *, /, **, %, (, ).

  • Divisió entera: //.

Ordre de les operacions

  • Prioritat: parèntesis, elevar, multiplicació i divisió, suma i resta.

    >>> 3 + 5 * 2 ** (3 - 1)
    23
    >>> 3 + (5 * (2 ** (3 - 1)))
    23
    
  • Associativitat: d’esquerra a dreta excepte per elevar a una potència.

    >>> 5 - 3 - 2
    0
    >>> (5 - 3) - 2
    0
    >>> 5 - (3 - 2)
    4
    
    >>> 2 ** 3 ** 4
    2417851639229258349412352
    >>> 2 ** (3 ** 4)
    2417851639229258349412352
    >>> (2 ** 3) ** 4
    4096
    
  • Vegeu Evaluation order al Manual de Referència de Python.

Operacions sobre strings

  • Exemples d’operacions il·legals.

    'a' / 'b'
    'a' - 'b'
    'a' ** 3
    
  • Concatenació (+) i repetició (*).

    >>> c = 'Hola' + 'Joan'
    >>> c
    'HolaJoan'
    >>> d = '-' * 5
    >>> d
    '-----'
    

Composition

Program = Composition of simple sentences written one after the other (sequential order) and executed in that same order.

Assignació múltiple

  • Exemple:

    >>> a, b = 3, 'xyz'
    >>> a
    3
    >>> b
    'xyz'
    

Comentaris

  • Els programes els executen els ordinadors però els llegeixen els humans.

  • Els comentaris adreçats als humans tenen com a objectiu facilitar la lectura dels programes.

  • Sintaxi #.

    >>> # 3
    >>> 3
    3
    

Sortida

Author:

Antoni Soto i Riera

Date:

4/10/2010

Copyright:

Reconeixement-Compartir Igual 3.0 Espanya de Creative Commons

Assignacions múltiples

  • Una variable pot canviar el valor al que es refereix:

    a = 3
    a = 7
    
  • Sentència d’assignació (=) vs igualtat (==):

    • La igualtat és simètrica i l’assignació no:

      a = 7
      7 = a
      
    • La igualtat matemàtica sempre és certa, l’assignació pot fer que dues variables es refereixin al mateix valor, però pot canviar:

      a = 5
      b = a     # a i b es refereixen a 5: són iguals
      a = 9     # ara ja no
      

Actualitzant variables

  • El nou valor de la variable depèn de l’anterior:

    x = x + 1
    
  • És un error actualitzar una variable que no s’ha inicialitzat:

    x = 0
    x = x + 1
    
  • Incrementar (sumar 1) i decrementar (restar 1)

    x = 0
    x = x + 1
    

Exercicis

  • topics/intr/Conversions/index: 2 i 5.

  • topics/intr/Física/index: 3.

  • topics/intr/Geometria/index: 4, 5.

  • topics/intr/Percentatge/index