PYTHON liburua/Lehen programak eta oinarrizko datu-motak

2. Lehen programak eta oinarrizko datu-motak aldatu

2.1. KAIXO GUZTIOI! aldatu

Agurtxo bat pantailaratzea izan ohi da programazio-lengoaia batean hasten denean probatzen den lehen programa. Horretarako, 2.1. programan ikus daitekeenez, Pythonez lerro bakar bat nahikoa da.

from google.colab import drive
drive.mount('/content/drive')
print ("Kaixo guztioi")

Programa hori martxan jarri eta probatzeko hiru aukera hauek ditugu:

  • .py luzapeneko fitxategi batean gorde (p2-1_Kaixo.py esaterako) eta python3 komandoaren bitartez abiarazi: (Horretarako Pythonek instalatuta egon behar du. Linux Debian eta antzekoetan (Ubuntu esatera ko) instalatzeko komandoa hau da: sudo apt-get install python3)
$ python3 p2-1_Kaixo.py 
Kaixo guztioi  
$
  • *#!/usr/bin/python3* zehaztea programaren lehen lerroan, exekutatzeko baimena eman (*chmod +x p2-1.py* komandoa) eta programaren izena (bidea zehaztuta) baino ez tekleatzea (*./p2-1.py*):
$ ./p2-1.py 
Kaixo guztioi  
$
  • idle3 ingurunea ireki eta zuzenean idaztea kodea:
Python 3.8.10 (default, Jun  2 2021, 10:49:15) 
[GCC 9.4.0] on linux
Type "help", "copyright", "credits" or "license()" for more information.
>>> print ("Kaixo guztioi")
Kaixo guztioi
>>>

Programek, erabilgarriak izango badira, datuak irakurri behar dituzte. Hori lortzeko modu errazena teklatutik datuak ematea da. Nola egin daiteke hori Pythonez? *input* funtioaren bidez (*raw_input* funtzioa Python zaharretan).

2.2. programa. Kaixo pertsonalizatua.

izena = input(Sartu zure izena: ) # sarrera 
print("Kaixo", izena) # irteera

2.2. programa exekutatzean zure izena sakatu behar duzu agur pertsonalizatua jaso baino lehen. Proba ezazu.

Edozein lerrotan '#' karakterea azaltzen bada, eskuinaldean datorren testua iruzkin edo ohartzat hartuko da. Beraz, interpretatzaileak ez dio kasurik egingo. '#' karakterea lerroko lehen karakterea bada, orduan lerro osoa hartzen da iruzkintzat. Beraz, 2.2. programan agertzen diren sarrera eta irteera hitzak ez dira kontuan hartuko programa exekutatzerakoan.

Behin programa bat ondo dabilela ikusi dugunean, oso praktikoa izaten da programaren bukaeran exekuzio bat(zuk) gehitzea, programaren erabilera dokumentatzeko.

Adibidez, 2.2. programa honela osa liteke:

izena = input("Sartu zure izena: ") # sarrera 
print("Kaixo", izena) # irteera 
# >>>  
# Sartu zure izena: Pythondegi 
# Kaixo Pythondegi 
# >>>

2.2. ALDAGAIAK, KONSTANTEAK ETA DATU-MOTAK aldatu

Jakina denez, programaren exekuzio osoan balio bera duten datuei konstanteak esaten diegu. Datu horiek erabili behar ditugunean zuzenean idazten ditugu ( "Kaixo" katea, edo 13 zenbakia adibidez), edo identifikadore bat erabiltzen dugu programan zehar balio hori zer den hobeto ulertzeko, adibidez:

pi = 3.14 
jaio_urtea = 1994

Aldagaiek, ordea, ez dute beti balio bera, baina identifikadore batez ezagutzen dira eta balio-aldaketak asignazio edo esleipen baten bitartez egin daitezke. Beste lengoaia batzuetan aldagai bat erabili baino lehen beharrezkoa da aldagai horrek zein motatako balioak hartu ahal izango dituen zehaztea, ea haren balioa zenbaki oso bat izango den edo zenbaki erreal bat, edo karaktere bat edo beste edozer. Horri esaten zaio aldagaia erazagutzea. Baina Python lengoaian horrelakorik ez da behar, zuzenean erabil daitezke aldagaiak lehenago erazagutu gabe; programen interpretatzaileak inplizituki inferituko du aldagaiaren mota aldagai horri esleituko zaion balioaren arabera. Beraz, aldagai bakoitza balio mota batekin lotzen du interpretatzaileak, eta balio mota hori memorian errepresentatzeko behar den bit-segida egokia erabiliko du. Aldagai bati balio bat esleitzen zaionean erabakitzen da haren mota.

Konstanteei dagokionez, programazio egituratuak gomendatzen duen irizpide bat gogoratu nahi dugu: konstanteak identifikadoreekin (balioa aldatzen ez duten aldagaiak) erabiltzearena hain zuzen. Irizpide horren arabera, konstanteak zuzenean erabili beharrean, konstanteei hasieran izen edo identifikadore bat eman behar zaie eta geroko erabilera guztietan identifikadore hori erabili beharko da. Horrela, programak irakurgarritasunean irabaziko du, eta inoiz konstantearen balioa aldatu beharko balitz, behin bakarrik aldatu beharko litzateke, izen-ematean.

Adibidez, BEZ zergaren balioa erabili behar bada programa batean, behin bakarrik definituko da, hasieran. Aldatu beharko den egunean hasierako balio hori aldatzea izango da egin beharko den aldaketa bakarra.

Bestalde, eragile aritmetiko nagusiak +, -, * eta /) metagailu moduan erabil daitezke +=, -=, *= eta /= eragile berriak sortuz. 3.2. taulan baliokidetzak azaltzen dira.

3.2 taula. Eragile aritmetikoak metagailu gisa.
ERAGILEA FORMATUA BALIOKIDEA
+= x += y x = x+ y
-= x -= y x = x- y
*= x *= y x = x* y
/= x /= y x = x/ y

(+= eta *= karaktere-kateekin ere erabil daitezke, kateatzeak eta errepikapenak bideratzeko.)

BEZ = 0.21

Edozein kasutan Pythonek ez ditu konstanteak eta aldagaiak bereizten, programatzailearen lana da bereizketa hori egitea. Hauxe da horretarako proposatzen dena: konstanteen izenak letra larriz idaztea eta global moduan definitzea; aldagaiak, berriz, lokalak eta letra xehez (edo denak xehez baina lehen letra larriz).

Datu-motak aldatu

Datu-moteetara itzuliz, Pythonek ondoko oinarrizko datu-motak ezagutzen ditu (2.1. taula):

  • Karaktere-kateak edo stringak (str). Adibidez: 'Kaixo' edo 'emaitza' edo "Agur". Komatxo sinpleak zein bikoitzak erabil daitezke (Pythonek ez ditu bereizten). Kate hutsa ere izan daiteke.
  • Osoko zenbakiak (int). Adibidez: 12 edo -5.
  • Zenbaki errealak (float). Adibidez: 3.14 edo -0.5.
  • Boolearrak (bool). Bi balio baino ez ditu onartzen True (egiazkoa) eta False (faltsua).
  • Zerrendak. Adibidez: [31, 28, 31, 30] edo ['positibo', 'negatibo', 'zero']. [] zerrenda hutserako erabiltzen da, hasieraketetan batez ere. Zenbakienak, karaktere-kateenak eta bestelako osagaiz osatuta egon daitezke, baita elementu heterogeneoz ere.
  • Baliorik gabekoak (None).
2.1. taula. Oinarrizko datu-motak
KODEA ADIBIDEA ESANAHIA
str 'Euro' karaktere-katea
int 1024 osoko zenbakia
float 3.14 zenbaki erreala; kontuz, puntu hamartarra (ez koma)
bool True egiazkoa edo faltsua
[ ] ['ireki', 'itxi'] zerrenda (osagaiak komaz bereizita zehaztu behar)
None mota hutsa

Beste oinarrizko mota batzuk badira, hiztegiak eta tuplak esaterako, baina konplexuagoak direnez, hurrengo kapituluetarako geratuko dira, batez ere 6.erako.

Datu-motak bereiztea garrantzitsua da programazioan, konputagailuan modu oso diferentean errepresentatzen baitira zenbaki osoak, errealak, eta karaktereak esate baterako. Karaktere bat errepresentatzeko nahiko izan daitezke 8 bit, baina zenbaki erreal bat errepresentatzeko ez da nahikoa, gehiago behar izaten dira, 64 adibidez. Bestalde zenbaki osoekin erabil daitezkeen eragiketak ezin daitezke erabili karaktereekin. Zein litzateke 'kaixo'*'jon' eragiketaren emaitza? Ez dauka zentzurik. Beraz, aldagai baten mota bat finkatzen dugunean finkatzen ari gara aurrerantzean aldagaiak hartu ahal izango dituen balio posibleen mota (aldagaiaren mota zenbaki errealena bada, ezin izango diogu jarri karaktere bat balio gisa), eta finkatzen ari gara aldagaia zein eragikaretekin erabili ahal izango dugun eta zeinekin ez.

Aldagaiei hasierako balio bat esleitu behar zaie, horrela balioaren mota aldagaiari lotzen baitzaio. Esleipenak idazteko eredua hau da:

    aldag_izena = balioa

Hiztegi eta zerrenda motetako aldagaien balioak funtzio batez ere eslei daitezke; dict() funtzioa erabiltzen da hiztegietarako eta list() zerrendetarako. Funtzio eraikitzaileak esan ohi zaie azken horiei.

Ondoko lerroan karaktere-kate motako mezu1 aldagaia definitzen da, balioa karaktere-katea da eta:

    mezu1 = 'Eskerrik asko'

Karaktere-kateak komatxo bakunen artean zein komatxo bikoitzen artean idatz daitezke (biak erabat baliokideak dira, beste lengoaietan ez bezala). Karaktere bakunak karaktere-kateen kasu partikularrak dira. Hona hemen karaktere-kate motako adibide batzuk: 'a', "eguna" , 'Euro', "John's house" (Komatxo sinplea kate barruan dagoela adieraztea errazten du hemen komatxo bikoitzaren erabilerak).

Karaktere ez-inprimagarriak (lerro-bukaerako karakterea adibidez), ordea, ezin dira teklatuaren karaktere bakunen bidez adierazi. Hori dela-eta, Pythonek alderantzizko barra (‘\’ karakterea) duten konstanteak sortu ditu (C lengoaiarenak ere halaxe dira), 2.2. taulan ikus daitezke batzuk. Alderantzizko barra duen karaktere berezi bat beste edozein karaktere bezala erabil daiteke karaktere-kateetan.

2.2. taula. Ihes-karaktereen erabilera:
KODEA ESANAHIA
\n lerro-bukaera
\' komatxo bakuna
\" komatxo bikoitza
\t tabulazioa
\ alderantzizko barra

Lerro bat baino gehiago hartzen duten esaldietan ' ' ' (hiru komatxo) erabiltzea gomendatzen da. Adibidez:

bertsoa = '''Baga, biga, higa, 
laga, boga, sega, 
zai, zoi, bele, 
arma, tiro, pum''' 
print(bertsoa)
Baga, biga, higa,
laga, boga, sega,
zai, zoi, bele,
arma, tiro, pum

Hiru komatxoak hasieran eta bukaeran jartzen dira, tartean hainbat lerro sar daitezkeela. Lerro-bukaera adierazten duten karaktereak ere biltegiratuko dira.

Balio bat beste mota batera pasatzeko bihurketa esplizituak aldatu

Bihurketa esplizitua adierazteko datu-motari dagokion kodea funtzio gisa erabiltzen da. Adibidez, karaktere-kate bat eta zenbaki erreal bat zenbaki oso bihurtzeko int() funtzioa erabiliko da, jatorrizko espresioa parametro gisa zehaztuz. Ildo beretik datu bat karaktere-kate bihurtzeko str() erabiliko da. Adibidez:

PI = 3.14 
sarrera = '5' 
pistr = str(PI) # pi zenbakia karaktere-kate moduan 
zenb = int(sarrera) # '5' karakterea zenbaki oso moduan erabiltzeko 
print(PI, sarrera, pistr, zenb)
3.14 5 3.14 5

2.3. PROGRAMA SINPLEAK. AGINDU-SEGIDAK aldatu

Programa bat agindu-segida ordenatu bat da. Programa sinpleenetan hiru moduko aginduak baino ez daude:

  • datuak irakurtzeko input modukoak
  • esleipenak (kalkuluak egiteko eta aldagaietan gordetzeko)
  • emaitzak inprimatzeko print modukoak

Programa bat exekutatzea (martxan jartzea edo egikaritzea ere esaten dugu) bere aginduak banan-banan (programan dauden ordena berean) exekutatzea da.

2.3. programan kapitulu honetan azaldu diren hainbat kontzeptu agertzen dira, adibide praktiko baten bitartez. Iruzkin hutsak lerroak kenduta programan sei lerro daude, eta bakoitzean agindu bat, lehenengo laurak esleipenak dira eta azken biak emaitzak idazteko print modukoak.

2.3. programa. Konstanteak, aldagaiak eta mota-bihurketak, oinarrizko geometrian erabilita:

# Konstantea 
PI = 3.14159 
# Irakurketa eta bihurketa  
r = float(input("Sakatu erradioaren neurria: "))  
# Kalkuluak  
perimetroa = 2 * PI * r  
azalera = PI * r * r 
# Idazketa  
print ("Azalera:", azalera)  
print ("Perimetroa:", perimetroa)

Agindu horiek exekutatuz gero lortzen dena hau da:

Sakatu erradioaren neurria: 1
Azalera: 3.14159
Perimetroa: 6.28318