Programazioan sartu

Programatzen hasten

1 Zer da programatzea?

Programatzea ordenagailu bati jarraibideak ematea da, zeregin bat bete dezan. Horretarako, eman nahi ditugun jarraibideak jasotzen dituen kode iturria idazten da. Horrek azken emaitza gisa aplikazio informatiko bat sortzen du (programa, webgunea, bideojokoa, …).

Programatzea askotan sukaldaritza-errezeta bat sortzearen antzekotzat hartzen da, non egin beharreko urrats guztiak (programa) zehaztu behar diren, gero beste sukaldari batek (ordenagailuak) interpretatzeko. Jarraibideren bat behar bezala adierazten ez bada, errezetak (egindako programa) ez du funtzionatuko.

Exact Instructions Challenge adibide bat da konparazio horretatik.

Programatzea sukaldaritza-errezeta bat idaztea bezalakoa da: erabili beharreko urrats eta osagai guztiak deskribatu behar dira.

1.1 Zertarako balio du programatzeak?

Programatzeak zereginak automatizatzeko, jokoak sortzeko, aplikazioak egiteko, robotak kontrolatzeko eta askoz gehiagorako balio du. Gaur egun erabiltzen dugun ia guztian badago programazioa barruan: mugikorrak, autoak, garbigailuak, webguneak, etab.

Egin nahi dugun aplikazioaren arabera, programazio-lengoaia bat edo bestea erabili beharko dugu.

2 Programazio-lengoaiak

Ordenagailuek ez dute gure hizkuntza zuzenean ulertzen. Haiekin “hitz egiteko”, programazio-lengoaiak erabiltzen ditugu, hau da, ordenagailuak ulertu eta exekutatu ditzakeen jarraibideak idazteko modu bereziak.

Hainbat hizkuntza daude, eta bakoitzak bere ezaugarriak ditu. Batzuk ikasteko errazagoak dira, beste batzuk azkarragoak edo indartsuagoak zeregin jakin batzuetarako. Programazio-lengoai ezagunen adibide batzuk:

  • Python: oso erraza, hasteko aproposa. Zientzian, robotikan, adimen artifizialean… erabiltzen da.
  • C / C++: oso azkarra, bideojokoetan, sistema eragileetan, robotetan erabiltzen da.
  • Java: enpresetan, mugikor-aplikazioetan (Android), sistema handietan oso erabilia.
  • JavaScript: webgune interaktiboak egiteko erabiltzen da. Web-nabigatzailean exekutatzen da (Chrome edo Firefox bezalakoetan).
  • PHP: webguneak sortzeko erabiltzen da.
  • Scratch edo Edublocks: blokeekin programatzen da, oso bisuala eta erraza hasteko.

2.1 Programazio-lengoaia baten osagaiak

Eguneroko bizitzan erabiltzen ditugun hizkuntzek bezala, programazio-lengoaiak ere arauak dituzte. Hizkuntz naturalen arauak hain zuzen ere:

  • Alfabetoa: Hizkuntzak erabiltzen dituen hitzak osatzeko sinboloen multzoa. Normalean letrak, digituak eta sinboloak dira (+, -, :, (), [], …).
  • Lexikoa: Hizkuntzak programatzeko gordeta dituen hitzak. Lexikoko hitz bat gaizki idazten bada, programa ezingo da konpilatu/exekutatu.
    • if, else, for, while, …
  • Sintaxia: Hizkuntzak dituen arauak, hitz-kate batek esaldi balioduna osatzen duela ziurtatzeko. Hizkuntza naturalean honako desberdintasuna izango litzateke:
    • “Nik auto bat gidatzen dut”
    • “Autoa gidatzen ni”
  • Semantika: Esaldiak zentzua duela zehazten du (ondo idatzita egon daiteke, baina zentzurik ez izan). Honako esaldi hauek dira adibideak hizkuntza naturalean:
    • “Nik auto bat gidatzen dut”
    • “Auto batek ni gidatzen nau”

2.2 Lengoaia motak

Ordenagailuak makina-kodea soilik ulertzen du (bateko eta hutseko kodea, kode binarioa). Horregatik, Python edo Java bezalako hizkuntzetan idatzitako programek itzulpena behar dute ordenagailuak exekutatu ahal izateko.

Itzulpena nola egiten den kontuan hartuta, hizkuntzak honela sailkatzen dira:

  • Interpretatutako hizkuntzak
  • Konpilatutako hizkuntzak
  • Hibridoak diren hizkuntzak

Bilatu gutxienez 2 programazio-lengoaia mota bakoitzerako.

Programazio-lengoaiak bereizteko beste irizpide asko daude. Bereizketa hauek sakonagoak dira, eta ez gara horietan sartuko, baina hurrengo taulan batzuk ikus daitezke.

Bereizketa-irizpideak Sailkapena
Abstrakzio-mailaren arabera Maila baxuko hizkuntzak. Maila altuko hizkuntzak.
Programazio-paradigmaren arabera Inperatiboak. Deklaratiboak. Objektuetara bideratuak. Funtzionalak. Logikoak.
Helburuaren arabera Helburu orokorrekoak. Helburu espezifikokoak (adibidez, datu-baseetarako edo web-erako).
Sintaxiaren arabera Sintaxi sinplekoak (Python bezala). Sintaxi zorrotzekoak (Java edo C++ bezala).
Tipatzearen arabera Estatikoa. Dinamikoa. Indartsua. Ahula.
Memoria-kudeaketaren arabera Eskuzko kudeaketa dutenak (C bezala). Zabor-biltzailea dutenak (Java edo Python bezala).
Hardwareari edo sistemari orientazioaren arabera Sistema-hizkuntzak. Aplikazio-hizkuntzak.

2.2.1 Hizkuntza interpretatuak

Interpretatutako hizkuntza batek interpretatzaile bat behar du; hau da, zure iturburu-kodea lerroz lerro irakurri eta zuzenean exekutatzen duen programa bat. Hizkuntza interpretatu ezagunen artean honako hauek ditugu:

  • Python
  • JavaScript
  • PHP

Hizkuntza interpretatu batekin programatzeko urratsak hauek dira:

  1. Kodea idazten duzu (adibidez, Python-en).
  2. Interpretatzaileak irakurri eta pausoz pauso exekutatzen du.
  3. Errore bat badago, momentu horretan gelditzen da.

Hizkuntzaren eta bere interpretatzailearen arabera, 2. eta 3. urratsak alda daitezke. Zenbait kasutan, interpretatzaileak iturburu-kode osoa irakurtzen du eta, idazkeran akatsen bat badago, ez du exekutatzen eta errorea erakusten du, inolako jarraibiderik exekutatu aurretik.

Iturburu-kodea beste ordenagailu batera eramaten baduzu eta interpretatzailea instalatuta ez badago, programa ez da exekutatuko.

Abantailak Desabantailak
Probatzeko errazak izaten dira. Normalean motelagoak dira konpilatutakoak baino.
Ikasteko eta proba azkarrak egiteko aproposak.

2.2.2 Hizkuntza konpilatuak

Konpilatutako hizkuntza batek konpilatzaile bat behar du; honek iturburu-kode osoa fitxategi exekutagarri batean bihurtzen du. Konpilazioaren emaitzak makina-kodea (bitarra) sortzen du, eta hori sistema eragileak eta CPUak zuzenean interpretatzen dute. Hizkuntza konpilatu ezagunen artean honako hauek daude:

  • C
  • C++
  • Rust

Hizkuntza konpilatuekin programatzean, urrats sinplifikatuak hauek dira:

  1. Kodea idazten duzu (adibidez, C++-en).
  2. Konpilatzen duzu, eta horrek fitxategi exekutagarri bat sortzen du (adibidez, programa.exe).
  3. Fitxategi hori exekutatu daiteke, iturburu-koderik edo konpilatzailerik gabe.

Konpilatutako programak beste ordenagailu batera eraman daitezke eta zuzenean exekutatu (betiere arkitektura eta sistema eragilea berdinak badira). Batzuetan, mendekotasunak (dependencias) ere instalatu behar izaten dira (adibidez, jokoetan DirectX).

Abantailak Desabantailak
Exekutatzean oso azkarra. Zerbaitek aldatzen bada, berriro konpilatu behar da.
Programa handietarako edo errendimendua behar dutenetarako aproposa. Programa handi bat konpilatzea denbora har dezake.
Erroreak konpilatzean agertzen dira.

2.2.3 Hizkuntza hibridoak

Hibridoak diren hizkuntzek bi munduen onena konbinatzen dute: lehenik, kodea konpilatzen dute formatu bitarteko batera, eta gero interpretatu edo exekutatzen dute makina birtual baten bidez. Hizkuntza hibridoen adibideak:

  • Java (JVM erabiltzen du)
  • C# (.NET erabiltzen du)
  • Kotlin (batez ere Androiden erabiltzen da)

Hizkuntza hibrido batean programatzean, urratsak hauek dira:

  1. Kodea idazten duzu (adibidez, Java-n).
  2. Formatu bitarteko batera konpilatzen duzu (bytecode Java-n). Java-ren kasuan, JDK (Java Development Kit) erabiliz konpilatzen da.
  3. Bytecode hori makina birtual batean exekutatzen da, adibidez JVM (Java Virtual Machine).

Kasu honetan, programa exekutatu nahi den ordenagailuan interpretea instalatuta egon behar da.

Abantailak Desabantailak
Abiadura ona. Makina birtuala instalatuta egon behar da.
Portabilitatea: programa bera sistema desberdinetan funtzionatzen du. Batzuetan, konfigurazioa pixka bat konplexuagoa izan daiteke.

3 Pentsamendu logikoa eta arazoen ebazpena

Programa baten kode-iturria idatzi aurretik, garrantzitsua da programatzaile baten moduan pentsatzen ikastea. Programazioa ez da soilik jarraibideak idaztea, baizik eta arazoak pausoz pauso konpontzea.

Programatzea puzzle bat konpontzea bezalakoa da. Arazoa aztertu behar duzu, nola zati txikitan bana dezakezun pentsatu, eta zati bakoitza jarraibide argiekin ebatzi.

Programatzen hasi aurretik, konpondu nahi dugun arazoa ulertu behar dugu eta nola konponduko dugun pentsatu.

Idatzi diskotekako atezain izateko programa baten jarraibideak. Kontuan hartu behar duzu 18 urtetik gorakoak soilik sar daitezkeela. Erantzuna.

4 Programatzean egiten diren akatsak

Programatzean, normala da gauzak lehenengo aldian ez funtzionatzea. Hiru akats mota oso ohikoak dira:

  • Sintaxi-akatsak: Kodeak “ortografia-akats” bat du. Adibidez, parentesi bat ahaztea edo hitz gako bat gaizki idaztea.
  • Logika-akatsak: Kodea exekutatzen da, baina ez du zuk nahi zenuena egiten. Adibidez, > ikurra jartzea < ordez. Akats hauek programa exekutatzean bakarrik ikus daitezke.
  • Exekuzio-akatsak: Programa martxan dagoenean blokeatzen da. Programa “apurtzen” duen jarraibide bat idatzi da: zeroz zatitzea, balio “arraroak” dituen aldagai bat irakurtzea…

Garapen ingurunea: Edublocks

5 EduBlocks-en sarrera

EduBlocks bloke bidezko programazio-ingurune bat da, hainbat hizkuntzatan programatzeko erabil dezakeguna, horien artean Python. Scratch bezalakoa da, baina bloke bakoitza Python kode-lerro bati dagokio. Horrela, Python nola funtzionatzen duen ikasi dezakegu idazketa edo formatu-erroreez kezkatu gabe.

5.1 Zergatik erabili blokeak hasteko?

Bloke bidezko programazioa ikusgarriagoa da, ikasteko aproposa, eta errazagoa ulertzeko. Idazketa-erroreak saihesten lagunduko digu, adibidez, parentesi bat ahaztea edo hizkuntza-gako bat gaizki idaztea.

Gainera, kodearen egitura modu errazean ezagutzen lagunduko digu. EduBlocks-ek Python kodea ere erakusten digunez, poliki-poliki ikasteko aproposa da.

5.2 Proiektuak sortzen EduBlocks-en

EduBlocks nabigatzailean erabiltzeko bere webgunera jo behar dugu: https://app.edublocks.org, eta bertan erregistratu, saioa hasi, edo zuzenean programatzen hasi gaitezke. Erregistratzen bagara, sortutako proiektuak gordeko dizkigu.

“Python” hautatzen badugu, proiektu bat sortzeko hurrengo leihoa agertuko zaigu:

Hemen aukeratu dezakegu:

  • Project name: Proiektuaren izena. Izena esanguratsua jarri behar dugu, gero berriz aurkitzeko.
  • Mode: Programazio-hizkuntza aukeratzeko. Python agertu behar da.
  • Type: Bloke bidez programatu edo zuzenean testuan idatzi nahi dugun aukeratzeko. Blocks hautatuko dugu.

Create botoia sakatzean, programatzen hasteko ingurunea agertuko zaigu:

Hiru atal bereiz daitezke:

  • Programatzeko erabiliko ditugun bloke mota desberdinen taldeak.
  • Blokeak kokatzeko eremua.
  • Programatzen ari garenaren Python kode-iturburua.

5.3 Bloke-taldeak

Bloke-talde desberdinak azalduko ditugu, nahiz eta oraingoz ez den beharrezkoa haien esanahia sakon ulertzea:

Programazio-hizkuntzak normalean “moduluetan” banatuta egoten dira, eta hizkuntzaren ezaugarri jakin batzuk erabiltzeko, dagokion modulua inportatu behar da. EduBlocks-en badira moduluak datetarako, matematikarako…

Aldagaiak sortzeko bloke-talde hau erabili behar dugu, ondoren haiek erabili ahal izateko. Geroago aldagaiak sakonago aztertuko ditugu.

Oinarrizko blokeak dira, datuak bistaratzeko, teklatutik datuak jasotzeko, testua zenbakietara bihurtzeko…

Testuarekin lan egiteko blokeak: testuak konbinatzea, maiuskulak edo minuskulak bihurtzea, letrak kontatzea…

Atal honetan, eragiketa matematikoak egiteko blokeak daude. Horiek erabili ahal izateko matematika-modulua inportatu behar da.

Talde honetan programen logikarako oso garrantzitsuak diren blokeak daude. Geroago ikusiko dugu nola erabili.

Zerrendekin eragiketak egiteko blokeak, hau da, datu-mota bat.

Talde honetan errepikapen-lanak egiteko oso garrantzitsuak diren blokeak daude. Geroago ikusiko eta erabiliko ditugu.

Funtzioak sortzeko blokeak.

Marrazteko blokeak. “turtle” modulua inportatu behar da.

Grafikoak sortu nahi baditugu (lerroak, barra horizontalak…) bloke hauek erabil ditzakegu.

Zenbaki aleatorioak sortu behar baditugu, talde honetako funtzioak erabil ditzakegu.

Talde honetako blokeek web-orrietan eskaerak egiteko, bertatik informazioa lortzeko edo JSON fitxategietako datuak jasotzeko aukera emango digute.

5.4 Programatzen hasten gara

Ikasteko modurik onena programatzea da! Programa sinple bat egingo dugu EduBlocks erabiltzen ikasteko eta erabilienak diren blokeak non dauden eta zertarako balio duten ikusteko.

5.4.1 Kaixo Mundua!

Hizkuntza jakin batean programatzen ikasten dugunean, lehenengo egiten den programa “kaixo mundua” izenez ezagutzen da. Pantailan mezu bat erakusten duen programa sinple bat da: "Kaixo mundua!".

Programatzeko honako hau egin behar dugu:

  1. Joan Statements kategoriara.
  2. Arrastatu hau dioen blokea: print("Hello World"), pantailan inprimatzeko balio duena.
  3. Egin klik blokean eta aldatu hau agertzeko: "Kaixo mundua!".
  4. Sakatu botoia

Edublocks-en honako hau izan beharko genuke:

Python iturburu-kodea

#Start code here
print("¡Hola mundo!")

Eta emaitza hau izan beharko luke:

Python hasieratik

6 Zer da Python?

Python interpretez exekutatzen den programazio-lengoaia bat da, Guido van Rossumek 1989an sortua. Oporretan sortu zuen eta Python izena jarri zion Monty Python’s Flying Circus telesailagatik.

Van Rossumek bere hizkuntzarako zituen helburuak hauek ziren:

  • Python erraza, intuitiboa eta lehiakide nagusiak bezain indartsua izan behar zuen.
  • Proiektua kode irekikoa izango zen, edonork lagundu ahal izateko.
  • Python-en idatzitako kodea ingelesezko edozein testu bezain ulergarria izango zen.
  • Python eguneroko jardueretarako egokia izan behar zuen, prototipoak denbora gutxian egiteko aukera emanez.

Python hizkuntza sinple eta indartsu gisa duen garrantzia ulertzeko, garrantzitsua da jakitea Ruby eta Swift bezalako ondorengo hizkuntzetan eragina izan duela.

6.1 Nork erabiltzen du

Python ordenagailu-sistemen arlo askotan erabiltzen da:

  • Zereginak automatizatzea: ordenagailuan errepikakorrak diren zereginak egiteko scriptak sortzea. Oso ohikoa da GNU/Linux inguruneetan.
  • Web garapena: Flask edo Django bezalako framework-ekin web orriak eta aplikazioak sor daitezke.
  • Datuen analisia: datu-zientzian eta estatistikan erabiltzen da, Pandas edo NumPy libutegiekin.
  • Adimen Artifiziala eta Ikasketa Automatikoa (Machine Learning): gaur egun ereduak trebatzeko gehien erabiltzen diren lengoaiaetako bat da.
  • Zientzia eta ikerketa: unibertsitateetan eta laborategietan oso erabilia da kalkulu eta simulazioetarako.
  • Bideojokoak: Pygame bezalako liburutegiekin joko sinpleak sor daitezke. 3D inguruneetan ere erabil daiteke, hala nola Blender-en, eta Unity eta Unreal-en scriptak egiteko.
  • Hezkuntza: programatzen ikasteko aproposa.

6.2 Non erabil dezakegun

Aipatu bezala, Python interpretez exekutatzen den lengoaia denez, beharrezkoa da interpretea instalatuta izatea sortutako programak exekutatzeko, edo programak exekutatzeko aukera ematen duen plataforma bat erabiltzea.

Python gure ordenagailuetan erabili nahi badugu:

  • GNU/Linux: GNU/Linux banaketa gehienek Python instalatuta dakarte lehenetsita, programa askoren mendekotasun gisa erabiltzen delako (pakete-sistemak, monitorizazio-programak…).
  • MacOS: MacOS-ek lehenetsita Python interpretea instalatuta dakar, baina ez da normalean azken bertsioa izaten.
  • Windows: Interpretea instalatu behar da. Microsoft Store-tik manager edo eskuragarri dauden bertsioak instala daitezke, baita Python web ofizialetik ere.

Python web-aplikazio hauetatik ere erabil daiteke:

  • Edublocks: Oinarrizko kontzeptuak ikasteko erabiliko dugun sistema.
  • Jupyter: JupyterLab-ek aukera ematen du web-aplikazio baten bidez programa txikiak sortzeko, grafikoak egiteko eta datu-zientzian aritzeko, dokumentazioarekin batera.
  • Google Colab: Google-k ostatatutako Jupyter Notebook zerbitzua da, GPU eta TPU bezalako konputazio-baliabideak erabiltzeko aukerarekin.

Plataforma hauetan baliteke murrizketaren bat egotea. Izan ere, litekeena da hirugarrenen liburutegiak instalatu ezinik egotea.

6.3 Python-en bertsioak

Hizkuntza naturalekin gertatzen den bezala, programazio-lengoaiak denborarekin eboluzionatzen dira. Programazio-lengoaietan, denboraren poderioz bertsio berriak ateratzen dira, hobekuntzak gehituz eta batzuetan zaharkitutako gauzak kenduz.

Python 2.0 2000ko urrian kaleratu zen, eta adar horretako azken bertsioa (2.7.18) 2020an. Python 3 2008an atera zen, hizkuntzaren diseinuan zeuden oinarrizko akats batzuk zuzentzeko asmoz. Horrek ekarri zuen zenbait aspektutan atzera-bateragarritasuna galtzea (2.0 bertsiorako idatzitako programak ezin dira 3.x interpretearekin exekutatu aldaketarik egin gabe).

Urte askotan zehar, Python 2.7.X eta 3.X bertsioak elkarrekin egon dira, proiektu handiak migratzeko denbora emateko, baina 2020an erabaki zen 2.X bertsioei euskarria (soporte) kentzea. Gaur egun ikusten dugun kode oro 3 bertsio edo handiagoarena izan beharko luke.

Gaur egun Python 3.13 bertsioan dago (zehazki 3.13.5).

7 Aldagaiak

Aldagai bat ordenagailuaren RAM memorian datu bat gordetzeko erabiltzen dugun izen bat da. Imajinatu dezakegu etiketa duen kutxa bat bezala, non balio bat gordetzen dugu eta gero erabili, aldatu edo bistaratu dezakegu.

EduBlocks-en aldagai bat sortzeko:

  1. Joan “Variables” kategoriara.
  2. Sakatu botoia aldagaia sortzeko. Pop-up bat agertuko zaigu aldagaia izendatzeko: nombre_usuario. Ikusiko duzu orain kategorian 2 bloke berri agertzen direla (bat aldagaia balioz hornitzeko eta bestea erabiltzeko).
Aldagaiari balio bat esleitzeko
Aldagaiaren balioa erabiltzeko

Pythonen, aldagaiak modu dinamikoan definitzen dira. Horrek esan nahi du ez dugula zehaztu behar datu mota deklaratu aurretik.

Aldagaiei balio esleitzeko

#Start code here
nombre_usuario = "Rubén"
nombre_usuario = 1

Lehenengo esaldian aldagaiei balio bat esleitzen diogu, eta ondoren balio hori beste batekin ordezkatzen dugu. Datu horiek mota desberdinekoak dira. Beste programazio-lengoaia batzuetan ezin da datu mota desberdinak aldagai berean esleitu.

Programazio-lengoaiek lexiko propioa dutenez, hitz horiek ezin izango ditugu aldagaien izen gisa erabili, bestela errorea emango du. Dokumentazio ofizialean hitz erreserbatuak daude, adibidez: False, await, if, else, …

Badira hitz erreserbatu batzuk ezin ditugunak aldagaien izen gisa erabili.

7.1 Datu motak

Pythonen, erabiltzen dugun datu bakoitzak mota bat du, eta horrek adierazten du ze informazio mota ordezkatzen duen eta zer egin daitekeen harekin. Datu motak ezagutzea garrantzitsua da programa batean behar bezala erabiltzeko.

Jarraian mota arrunten deskribapen laburra:

Izena Adibidea kodean Deskribapen laburra
int adina = 18 Zenbaki osoak, dezimalik gabe. Positiboak edo negatiboak izan daitezke
float prezioa = 3.99 Dezimaldun zenbakiak. Positiboak edo negatiboak izan daitezke
str izena = "Ruben" Testua, beti komatxo artean
bool aktibo = True Egia (True) edo gezurra (False)
list frutak = ["udarea", "mahatsa"] Elementuen zerrenda ordenatua eta aldakorra
tuple koordenadak = (3,5) Zerrenda ordenatua, aldatu ezin dena
dict nork = {"izena": "Ruben", "adin": 42} Datuak gako : balio (key: value) formatuan
set zenb = {1, 2, 3} Errepikaturik gabeko multzoa, ordenik gabe
NoneType ezer = None Baliorik eza adierazten du

Garrantzitsua da programazioan datu mota desberdinak ulertzea eta bakoitzaren erabilera jakitea.

Jarraian, datu mota sinpleenak erabiliz Edublocks eta Python kodeko adibideak ikusiko ditugu. Geroago gainerako datu motak ikusiko ditugu.

Sortu programa bat lehen bost datu motetarako aldagaiak erabiliz eta haien balioak pantailaratu.

7.1.1 Zenbaki osoak (int)

Dezimalik gabeko zenbakiak dira, positiboak edo negatiboak.

Aldagaiak zenbaki osoekin

edad = 20
puntos = -5

7.1.2 Zenbaki dezimalak (float)

Dezimalak dituzten zenbakiak dira (coma flotante). Positiboak edo negatiboak izan daitezke.

Osagaiak floats

precio = 14.5
valor = -2.3

7.1.3 Testu-kateak (str)

Komatxo artean dauden testuak dira, eta letrak, zenbakiak edo ikurrak izan ditzakete. Garrantzitsua da kontuan izatea, nahiz eta testuaren edukia zenbaki bat izan, mota ezberdina dela.

Variables con texto

nombre = "Ruben"
numero = "5"
entero = 5

Garrantzitsua da bereiztea “numero” eta “entero” aldagaiek bi datu mota guztiz desberdinak direla.

7.1.4 Booleanoak (bool)

Bi balio posible bakarrik dituzte: True (egia) edo False (gezurra). Eragiketa logikoak egiteko edo egia/gezurra bakarrik izan daitezkeen datuak gordetzeko erabiltzen dira.

Variables con booleans

mayor_de_edad = True
usado = False

Datuen sarrera eta irteera

8 Datuen irteera print() funtzioarekin

Nahiz eta aurretik datuak nola erakusten diren ikusi dugun, orain hobeto azalduko dugu nola funtzionatzen duen.

Python iturburu-kodea

#Start code here
print("Hola")
print(123)

Kodean ikusten dugu print erabiltzen dugula; hau hizkuntzaren barneko funtzio bat da, eta parametro bat pasatzen diogu. Parametro hori testu bat edo bestelako datu mota bat izan daiteke.

Aldagai baten balioa ere parametro gisa pasa diezaiokegu:

Python iturburu-kodea

#Start code here
nombre_usuario = "Ruben"
print(nombre_usuario)

Edublocks-ek ez digu uzten existitzen ez diren aldagaiak erabiltzen, baina existitzen ez den aldagai bat inprimatzen saiatzen bagara, honelako errorea jasoko dugu:

Iturburu-kodea errorearekin

#Start code here
nombre_usuario = "Ruben"
print(nombre)

Errorea exekutatu ondoren

NameError: name 'nombre' is not defined

Existitzen ez den aldagai bat erabiltzen badugu, gure kodea exekutatzean errorea gertatuko da.

8.1 Datuak kateatzea print() funtzioarekin

Print funtzioak parametro bat baino gehiago pasatzeko aukera ematen digu, pantailan datu gehiago erakusteko agindu bakarra erabiliz.

Text” blokeen taldean, print-ari testu gehiago gehitzeko bloke bat daukagu, eta testu horien artean aldagaiak ere sar ditzakegu.

Python iturburu-kodea

#Start code here
nombre_usuario = "Ruben"
print("Hola", nombre_usuario)

Bestela, irteera formateatu dezakegu modu sofistikatuago batean, emaitza politagoa izan dadin. Horretarako, f funtzioa erabiltzen da.

Python iturburu-kodea

#Start code here
nombre_usuario = "Ruben"
print(f"Hola {nombre_usuario}")

8.2 Parametro bereziak: “sep”, “end”

Print funtzioak bi parametro berezi ditu, eta horiek lehenetsitako balio bat dute, guk aldatu dezakeguna. Parametro horiek hauek dira:

  • sep: gainerako parametroak kateatzeko erabiltzen den bereizlea zehazten du. Lehenetsitako balioa hutsune bat da.
  • end: string-a nola amaitzen den zehazten du. Lehenetsitako balioa lerro-jauzi bat da, programazioan normalean “\n” gisa adierazten dena.

Parametro horiek nola erabil daitezkeen azaltzen duten adibide pare bat:

Python iturburu-kodea

#Start code here
nombre_usuario = "Ruben"
print("Hola", nombre_usuario, sep="_", end="!")
print(1)
print("Te llamas", nombre_usuario, sep=":", end="?")
print(1)

Irteera eskuineko irudian bezala izan beharko litzateke. print(1) gehitu dira, end parametroa aldatzean eta bere balio lehenetsiarekin nola eragiten duen ikusteko. Bestela, balio horiek jarri ezean, Edublocks-ek akats bat du eta ez du emaitza erakusten.

9 Datu-sarrera input() bidez

Programa gehienek erabiltzaileen input-a behar dute. Kasu honetan, erabiltzaileari bere izena idazteko eskatuko diogu, eta gero agurtuko dugu. Erabiltzaileak idatzitako balioa aldagai batean gorde behar da.

Egin beharreko urratsak:

  1. Sortu aldagai bat.
  2. Hartu aldagaia balio batekin esleitzeko blokea.
  3. Joan Statements atalera eta hartu Input blokea. Jarri aurreko bloke barruan, eta testu gisa idatzi: “Zein da zure izena?”. Honek erabiltzaileari balioa eskatuko dio.
  4. Inprimatu pantailan “Kaixo” dioen testu bat, lortutako datuaren balioarekin.

Edublocks-en honako hau izan beharko genuke:

Blokeen kodea

Python iturburu-kodea

#Start code here
nombre_usuario = input("¿Cómo te llamas? ")
print(f"Hola {nombre_usuario}")

Eta programaren erabileraren ondoren, emaitza hau izango da:

Garrantzitsua da ulertzea lortutako input-a beti izango dela “string” motakoa, erabiltzaileak sartutakoarekin. Berdin dio testua zenbakiak bakarrik badira ere. Ondoren ikusiko dugu nola bihurtu datuak mota desberdinen artean.

Sortu programa bat (erantzuna begiratu gabe) erabiltzaileari galdera hauek egiteko eta azken emaitzan jasotako datu guztiekin esaldi bat inprimatzeko:

  • Bere izena
  • Bere adina
  • Bizi den hiria

Datu moten bihurketa

10 Zergatik beharrezkoa den datuak bihurtzea

Batzuetan beharrezkoa da datu baten mota aldatzea zenbait eragiketa egin ahal izateko. Adibidez, erabiltzaileari bere adina eskatzen diogu eta ikusi nahi dugu zenbaki lehena (primo) den edo ez.

Datuen bihurketa egiten ez badugu, lortuko dugun emaitza ez da espero duguna izango, eta gure programak ez du gu nahi duguna egingo.

Datu mota batetik bestera pasatzeari mota-bihurketa edo type casting deitzen zaio, eta Python-ek modu errazean egitea ahalbidetzen du.

10.1 Bihurketa-funtzio arruntenak

Jarraian datu mota ezberdinen arteko bihurketa nola egiten den azaltzen duen taula labur bat. Bihurketa hauetako batzuk ez daude Edublocks-en.

Funtzioa Zer egiten du Adibidea
int() Zenbaki osora bihurtzen du int("5") → 5
float() Hamartarreko zenbakira bihurtzen du float("3.14")3.14
str() Testu-katera bihurtzen du str(10) → "10"
bool() Balio logikora (True edo False) bool(0)False
list() Zerrenda bihurtzen du list("hola")["h", "o", "l", "a"]
set() Multzo bihurtzen du (elementu errepikaturik gabe) set([1, 2, 2]){1, 2}
tuple() Tupla bihurtzen du tuple([1, 2])(1, 2)

10.2 Datu mota ezagutzea

Aldagai baten datu mota ezagutu nahi badugu, type() funtzioa erabil dezakegu. Hona hemen kode-adibide bat:

Datu mota ezagutzeko

nombre = "Ruben"
print(type(nombre))
print(type(nombre).__name__)

Zein da azken bi esaldien arteko aldea?

Eragile arruntak

11 Zer dira eragileak

Programazioan, eragileak kalkuluak egiteko edo balioak konparatzeko erabiltzen diren ikurrak dira. Batzuetan datu mota jakin batzuekin erabili daitezke, eta beste batzuetan edozein motarekin, beraz, beharrezkoa da egoki erabiltzea.

Jarraian dauden eragile motak azalduko ditugu, eta nahiz eta adibideetan zenbakiak erabili, garrantzitsua da ulertzea ohikoena aldagaiekin erabiltzea dela.

12 Eragile aritmetikoak

Eragiketa matematikoak egiteko balio dute, eta datu mota zenbakidunekin erabiltzen dira.

Eragilea Izena Adibidea Emaitza
+ Batuketa 3 + 2 5
- Kenketa 7 - 4 3
* Biderketa 5 * 2 10
/ Zatiketa 7 / 2 3.5
// Zatiketa osoa 7 // 2 3
% Moduloa (hondarra) 7 % 2 1
** Berreketa 2 ** 3 8

Kontuan hartu beharrekoak:

  • / zatiketak beti ematen du koma daraman zenbaki bat (float), nahiz eta zehatza izan.
  • // zatiketa osoak emaitza ematen du dezimalik gabe, eta int sortzen du.
  • % moduloak zatiketaren hondarra ematen du, int motakoa.
  • Bi datu mota konbinatuz gero, emaitzak behar den datu mota erabiliko du emaitza ondo adierazteko.

Edublocks-en, eragiketa hauek Math atalean daude, eta eragilea goitibeherako menu baten bidez hauta daiteke.

Idatzi programa bat laukizuzen baten azalera (oinarria x altuera) kalkulatzeko bi aldagairekin (ez begiratu emaitza). Datuak erabiltzaileari eskatu behar dizkiozu. Gogoratu datu moten bihurketa.

13 Eragile logikoak

Balioak konparatzeko erabiltzen dira emaitza logiko bat lortzeko: egiazkoa (True) edo faltsua (False).

Eragilea Esanahia Adibidea Emaitza
== Berdina 3 == 3 True
!= Desberdina 3 != 5 True
< Txikiagoa 2 < 5 True
<= Txikiago edo berdina 3 <= 3 True
> Handiagoa 7 > 10 False
>= Handiago edo berdina 4 >= 5 False
is Objektu bera a is b True a eta b objektu bera badira
is not Objektu bera ez a is not b True objektu desberdinak badira

Erabilitako adibide guztiak zenbakiekin dira, baina ohikoena aldagaiekin erabiltzea da. Edublocks-en Logic taldean daude.

Zein balio itzultzen dute honako adierazpen hauek? (pentsatu lehenik eta gero egiaztatu Python-en, erantzuna ikusi aurretik):

  • 3 == "3"
  • 4 <= 4.0
  • "kaixo" != "Kaixo"

13.1 Eragile bereziak: “is” eta “is not”

Bi eragile berezi daude, programan erabiltzen diren objektuen memoriaren kudeaketa kontuan hartzen dutenak. Bi eragile hauek programa aurreratuetan erabiltzen dira, memoria kudeatu nahi dugunean, beraz, ez ditugu erabiliko.

“is” eta “is not” erabilera

a = [1, 2, 3]
b = a         # b-k a objektu berari egiten dio erreferentzia memorian
c = [1, 2, 3] # c-k balio bera dauka, baina beste objektu bat da

print(a is b) # True
print(a is c) # False
print(a == c) # True, balioak berdinak direlako

Hemen ikus daitezke erabilera gehiagoren adibideak eta azalpen aurreratu bat kasu berezietarako.

Ez ditugu bi eragile berezi hauek erabiliko.

14 Eragile logiko konbinatuak: “and”, “or”, “not”

Baldintzak konbinatzeko balio dute. Hurrengo kapituluan hobeto ulertuko ditugu.

Operador Significado Ejemplo Resultado
and Eta (biak egiazkoak) 3 < 5 and 10 > 2 True
or Edo (gutxienez bat egiazkoa) 3 > 5 or 10 > 2 True
not Ez (balioa ezeztatzen du) not True False

Zein balio itzultzen dute honako adierazpen hauek? (pentsatu lehenik eta gero egiaztatu Python-en, erantzuna ikusi aurretik):

  • True == True and False == True
  • 5 > 3 and 4 < 2
  • 5 > 3 or 4 < 2
  • not (7 <= 7)
  • not (0)

Kontrol egiturak

15 Kontrol-egiturak

Kontrol-egiturak funtsezkoak dira programazioan, eta horregatik programazio-lengoaia guztiek dituzte.

Egitura hauei esker, programak erabakiak har ditzake edo ekintzak errepikatu modu automatikoan, baldintza jakin batzuen arabera. Haiei esker, programa adimentsuago eta erabilgarriagoak sor ditzakegu.

Kontrol-egiturak honela bereizten dira:

  • Baldintzak
  • Begistak (bucles)

Garrantzitsua da ulertzea kontrol-egiturek kode-blokeak sortzen dituztela, eta hauek exekutatu daitezkeela, edo ez. “Bloke” hauek bereizten dira egitura barruan tabulazioa erabiltzen delako. Aurrerago hobeto ikusiko dugu adibideetan.

Python kodean tabulazioa oso garrantzitsua da.

Beste programazio-lengoaia batzuek egitura gehiago izan ditzakete, edo beste hitz erreserbatu batzuk. Guk ikusiko ditugunak ia hizkuntza guztietan agertzen dira, beraz, oso garrantzitsua da nola funtzionatzen duten ulertzea.

Kontrol-egiturak funtsezkoak dira programazioan. Garrantzitsua da nola erabiltzen diren ikastea.

15.1 Baldintzak

Baldintzazko egiturek programari aukera desberdinen artean hautatzeko aukera ematen diote, baldintza bat egiazkoa den edo ez kontuan hartuta. Baldintzaren arabera, kode-bloke bat edo bestea exekutatuko da.

15.1.1 “if” baldintza

if baldintzak baldintza bat betetzen bada kode-bloke bat exekutatu behar dela adierazteko erabiltzen da. Fluxu-diagrama hauxe litzateke:

Ikus dezagun zer gertatzen den:

  • “Kodea 1” gure programan beti exekutatuko da.
  • if baldintzara heltzen da, errombo formakoa, eta baldintza aztertzen da:
    • Baldintza betetzen bada: “Kodea A” exekutatzen da.
    • Baldintza betetzen ez bada: bloke hori saltatu eta ohiko fluxuarekin jarraitzen da.
  • “Kodea 2” beti exekutatuko da.

Edublocks-en kodean eta haren Python-eko baliokidean ikusteko, hauxe dugu adibide bezala:

Python iturburu-kodea

#Start code here
edad = 18
print("Hola")
if edad >= 18:
  print("Eres mayor de edad")
print("Adios")

if blokea Edublocks-en Logic taldean dago. Ikus dezagun kodeak zer egiten duen:

  1. Aldagai bat sortzen da, int datu motakoa, 20 balioarekin.

  2. Pantailan “Kaixo” mezua inprimatzen da.

  3. edad >= 18 baldintza aztertzen da. Baldintza hau True da? Bai, 20 handia delako 18 baino, beraz if bloke barruan dagoen kodea inprimatzen da: “Adin nagusikoa zara”.

    Begiratu if esaldiaren ondorengo kodearen tabulazioa nola dagoen.

  4. Pantailan “Agur” mezua inprimatzen da.

Azter dezagun if edad >= 18: kodea, oso garrantzitsua baita ondo idaztea, bestela sintaxi-erroreak izango ditugu.

  • if: egitura baldintzazkoaren gako-hitza da.
  • edad >= 18: aztertzen den baldintza da.
  • :: baldintza beti bi puntuekin : amaitzen da.

Oso garrantzitsua da ikustea if barruko kode-blokea eskuinera tabulazioa eginda dagoela hutsuneekin. Horrek esan nahi du tabulazio-maila berean dagoen kode guztia if barruko blokean dagoela, bloke bera dela.

Bloke barruko lerro guztiek tabulazio bera izan behar dute. Horrela ez bada, kodea exekutatzean "IndentationError: unexpected indent" errorea izango dugu edo kodea nahi ez dugun lekuan exekutatuko da.

Azter itzazu hurrengo adibideak eta egiaztatu kodearen tabulazioa nola dagoen. Noiz exekutatzen da print agindu bakoitza?

Kode zuzena

#Start code here
edad = 18
print("Hola")
if edad >= 18:
  print("1")
  print("2")
  print("3")
print("Adios")

Tabulazio txarra

#Start code here
edad = 18
print("Hola")
if edad >= 18:
  print("1")
   print("2")
 print("3")
print("Adios")

Ondo dago?

#Start code here
edad = 18
print("Hola")
if edad >= 18:
  print("1")
  print("2")
print("3")
print("Adios")

Python-eko kodean tabulazioa oso garrantzitsua da.

15.1.1.1 Habiaratutako kontrol-egiturak

Kontrol-egiturak habiaratu (anidar) egin daitezke. Horrek esan nahi du egitura baten bloke barruan beste egitura batzuk sar daitezkeela (kasu honetan, baldintzazkoak).

Azter ezazu hurrengo adibidea, egiaztatu kodearen koska nola dagoen. Zer inprimatzen da pantailan? Eta…

  • edad = 17 bada?
  • edad = 67 bada?

Python iturburu-kodea

#Start code here
edad = 20
print("Hola")
if edad >= 18:
  print("Eres mayor de edad")
  if edad >= 65:
    print("¿Estás jubilado?")
print("Adios")

Egitura bat bestearen barruan habiatu nahi dugunean, koska jarraitu behar da, horrek zehazten baitu non exekutatuko den kodea.

GOGORATU! Python-eko kodean koska oso garrantzitsua da.

15.1.2 “if else” baldintza-egitura

else hitz erreserbatua erabiltzen da if-aren baldintza betetzen ez denean exekutatuko den kode-blokea adierazteko.

if-else” baldintzan, bi blokeetako bat beti exekutatuko da.

Fluxu-diagrama honakoa izango litzateke:

  • “Kodea 1” beti exekutatuko da gure programan.
  • if baldintzara iristen da, eta baldintza aztertzen da:
    • Baldintza betetzen bada: “kodea A” exekutatzen da.
    • Baldintza betetzen ez bada: else-ko “kodea B” exekutatzen da.
  • “Kodea 2” beti exekutatuko da.

Ikusten den bezala, “if-else” egitura erabiltzean beti exekutatuko da kode-bloke bat.
Honako kodea erabiliko dugu adibide gisa:

Python iturburu-kodea

#Start code here
edad = 17
print("Hola")
if edad >= 18:
  print("Eres mayor de edad")
else:
  print("Eres menor de edad")
print("Adios")

else blokea Edublocks-en ere Logic taldean dago. Kodeak zer egiten duen ulertuko dugu:

  1. Aldagai bat sortzen da, balioa 17 duena, eta int datu motakoa da.
  2. Pantailan “Kaixo” inprimatzen da.
  3. edad >= 18. Baldintza hau True al da? Ez, beraz else blokera pasatzen da eta bertako edukia exekutatzen da.
  4. Pantailan “Agur” inprimatzen da.

Gehitu else blokean, erantzuna ikusi gabe:

  • 13 baino handiagoa bada: idatz dezala “Eres adolescente”
  • Bestela, 6 baino handiagoa bada: idatz dezala “¿En qué curso estás?”
  • Bestela: idatz dezala “¿Sabes montar en bici?”

15.1.3 “elif” baldintza-egitura

elif laburbilduz else eta if bateratzen dituen egitura da, else barruan bloke bat egin beharrik gabe.
Baldintza bat baino gehiago dagoenean ebaluatzeko erabiltzen da, eta lehen baldintza egiazkoa denean ebaluazioa gelditzen da.

Python iturburu-kodea

#Start code here
edad = 6
print("Hola")
if edad >= 18:
  print("Eres mayor de edad")
elif edad >= 13:
  print("Eres adolescente")
elif edad >= 6:
  print("¿En qué curso estás?")
else:
  print("¿Sabes montar en bici?")
print("Adios")

Aurreko adibidean ikus daiteke nola gehitu diren baldintza batzuk. Ikus dezagun zer gertatzen den edad = 6 denean:

  1. edad >= 18: Ez, beraz hurrengo aukerara salto egiten da. Aurretik else izango litzateke, baina kode honetan baldintza berri bat dago.
  2. edad >= 13: Ez, beraz salto egiten dugu.
  3. edad >= 6: Bai! Beraz, baldintza honetan dagoen kode blokea exekutatzen da, eta ez da “ur-jauzi”aren gainerakoa (hau da, else) aztertzen jarraitzen.

Konparatu/parekatu kode hau aurreko ariketaren soluzioarekin.

15.1.4 Ariketa

Egin ondorengo ariketa. Hainbat soluzio posible daude, beraz saia zaitez bi egiten: bata egitura if-else erabiliz, eta bestea elif erabiliz.

Idatzi programa bat (erantzuna ikusi gabe) nota bat (0tik 10era) eskatzeko eta adierazteko ea:

  • “Suspenso” (< 5)
  • “Aprobado” (5 - 6.9)
  • “Notable” (7 - 8.9)
  • “Sobresaliente” (9 - 10)

15.2 Bukleak

Begizta edo bukle bat egitura bat da, baldintza bat betetzen den bitartean agindu multzo bat automatikoki errepikatzeko aukera ematen duena. Python-ek bucle mota nagusi bi ditu: while eta for.

Lan errepikakorrak egiten duen kodea behin eta berriro ez idaztea helburu dauka, errepikatzea oso eraginkorra (ineficiente) delako. Adibidez, 1etik 10era arteko zenbakiak erakutsi nahi baditugu, print() 10 aldiz idatzi beharrean bukle bat erabil dezakegu.

Bukle bat idaztean kontuan hartu behar da baldintza noizbait bete ez dadila, bestela bukle infinitu batean sartuko ginateke.

Kontuz ibili bukleak idazterakoan, bukle infinituak ez sortzeko.

15.2.1 “while” buklea

Baldintza bat betetzen den bitartean agindu multzo bat errepikatzeko balio du. Baldintza betetzeari uzten dionean, buklea gelditzen da eta programaren ohiko fluxuarekin jarraitzen da.

Fluxu-diagrama kontuan hartuta:

  1. “Kodea 1” beti exekutatuko da gure programan.
  2. “while baldintza” esaldira heltzen da eta aztertzen da:
    • Baldintza betetzen bada: “Kodea A” exekutatzen da eta 2. pausora itzultzen da.
    • Baldintza betetzen ez bada: buklearen blokea saltatzen da.
  3. “Kodea 2” exekutatzen da.

Adibide bat egingo dugu lehenengo 10 zenbakiak inprimatzeko. Edublocks-en, bukleak Loops taldean daude.

Python iturburu-kodea

#Start code here
contador = 1
while contador <= 10:
  print(contador)
  contador = contador + 1

Aurreko kodetik nabarmendu dezakegu:

  • contador = 1: aldagaia hasieratzen dugu 1 balioarekin.
  • while: buklean sartuko garela adierazteko hitz gakoa da.
    • contador <= 10:: buklearen blokean sartzeko baldintza da.
    • contador = contador + 1: hau da esaldi garrantzitsuena, aldagaiaren balioa iterazio bakoitzean handitzen dugulako. Hau gehitzen ez badugu, bukaezinako bukle batean egongo ginateke, kontagailuak beti 1 balio lukeelako.

Egin programa bat (erantzuna ikusi gabe) erabiltzaileari zenbaki bat eskatzeko eta 0ra iritsi arte zenbaki guztiak alderantzizko ordenean inprimatzeko.

Egin programa bat (erantzuna ikusi gabe) 1etik 100era arteko zenbaki guztien batuketa emaitza lortzeko.

15.2.2 “for” buklea

for buklea sekuentzia baten elementuak banan-banan aztertzeko erabiltzen da: zerrenda bat (list), multzo bat set, testu-kate bat, range() erabiliz zenbakien tarte bat…

Jarraian adibide bat zerrenda bat erabiliz:

Python iturburu-kodea

#Start code here
personajes = ["Mario", "Zelda", "Lara Croft"]
for personaje in personajes:
  print(f"Me gustan las sagas de {personaje}")

Jarraian, aurreko kodearen azalpen garrantzitsuena:

  • personajes: elementu desberdinak dituen zerrenda motako aldagaia da.
  • for: bukle batean sartuko garela adierazteko hitz gakoa da.
    • personaje: aldagaia sortzeko balio du; aldagai horri zerrendako elementu bakoitza esleituko zaio, bukle zerrenda zeharkatzen duen bakoitzean.
    • in personajes:: personajes zerrendaren edukia zeharkatuko dela adierazten du.

Iteratzen dugun aldagaiari izen egokia aukeratzea garrantzitsua da; zentzua izan behar du.

Beste adibide bat range() funtzioarekin. Funtzio honek parametro kopuru desberdinak onartzen ditu:yu

  • range(10): 0tik adierazitako zenbakiaren “ken 1” arteko zerrenda bat sortzen du (adierazitako zenbakia ez da sartzen).
  • range(start,stop,step): start-etik hasi eta stop baino bat gutxiagora arteko zerrenda bat sortzen du, step-en araberako jauziekin (ez bada jartzen, lehenetsia 1 da).

Python iturburu-kodea

#Start code here
for i in range(10):
  print(f"El {i}")
print("Nuevo contador")
for i in range(-10, 10):
  print(f"El {i}")

Sortu for bukle bat 0tik 400era, 5eko jauziekin. Erantzuna.

Egin programa bat (erantzuna ikusi gabe) erabiltzaileari zenbaki bat eskatzeko eta bere biderketa-taula inprimatzeko 10era arte (sartutako zenbakia 10 baino handiagoa bada, taula zenbaki horretara arte egingo da).

15.2.3 Bukletan erabilgarriak diren instrukzioak

Bukletan erabili daitezkeen instrukzio batzuk daude, oso erabilgarriak izan daitezkeenak:

  • break: Bukaera iritsi baino lehen buklea uzteko balio du.
  • continue: Iterazio honetako gainerako kodea exekutatu gabe, buklearen hurrengo iteraziora pasatzeko balio du.

Egin programa bat (erantzuna ikusi gabe) 1etik 30era arteko zenbakiak inprimatzeko, baina:

  • 7, 15 eta 23 zenbakiak inprimatu gabe saltatu.
  • 27 zenbakira iristean buklea amaitu.

Ariketen erantzunak

16 Programa discoteca

  1. Pedir DNI a la persona.
  2. Comprobar si la edad es mayor o igual que 18 (edad>=18).
  3. Si es mayor o igual → dejar entrar.
  4. Si es menor → no dejar entrar y apartar de la cola.
  5. Dejar que avance la siguiente persona.
  6. Ir a la instrucción 1.

17 Programa con inputs

Código fuente en Python

#Start code here
nombre = input("¿Cómo te llamas?")
edad = input("¿Cuántos años tienes?")
ciudad = input("¿Dónde vives?")
print("Hola", nombre, "tienes", edad, "años y vives en", ciudad)
print(f"Hola {nombre} tienes {edad} años y vives en {ciudad}")

18 Ejercicio aritméticos

Escribe un programa que calcule el área de un rectángulo (base x altura) usando dos variables. Los datos se los tienes que pedir al usuario.

Recuerda usar la conversión de tipos de datos.

Código fuente en Python

#Start code here
base = float(input("Introduce la base "))
altura = float(input("Introduce la altura "))
print("El área es", base * altura)

18.1 Ejercicios de operadores lógicos

¿Qué valor devuelven las siguientes expresiones? (piénsalas primero y luego compruébalo en Python):

  • 3 == "3"
  • 4 <= 4.0
  • "hola" != "Hola"

Código fuente en Python

#Start code here
print(3 == "3")
print(4 < 4.0)
print("hola" != "Hola")

18.2 Ejercicios de operadores lógicos combinados

¿Qué valor devuelven las siguientes expresiones? (piénsalas primero y luego compruébalo en Python):

  • True == True and False == True
  • 5 > 3 and 4 < 2
  • 5 > 3 or 4 < 2
  • not (7 <= 7)
  • not (0)

Código fuente en Python

#Start code here
print(True == True and False == True)
print(5 > 3 and 4 < 2)
print(5 > 3 or 4 < 2)
print(not 7 <= 7)
print(not 0)

19 Ejercicios de condicionales

19.1 Ejercicio de notas

Escribe un programa que pida una nota del 0 al 10 y diga si es:

  • “Suspenso” (< 5)
  • “Aprobado” (5 a 6.9)
  • “Notable” (7 a 8.9)
  • “Sobresaliente” (9 a 10)

Solución con “else anidados” y “elif”:

Código fuente en Python

#Start code here
print("¿Qué nota has sacado?")
nota = float(input(""))
if nota <= 5:
  print("Suspenso")
else:
  if nota <= 6.9:
    print("Aprobado")
  else:
    if nota <= 8.9:
      print("Notable")
    else:
      print("Sobresaliente")

Código fuente en Python

#Start code here
print("¿Qué nota has sacado?")
nota = float(input(""))
if nota <= 5:
  print("Suspenso")
elif nota <= 6.9:
  print("Aprobado")
elif nota <= 8.9:
  print("Notable")
else:
  print("Sobresaliente")

19.2 Ejercicio “else anidado”

Amplía el código del ejemplo if-else para que cuando entre en el else se compruebe:

  • si es mayor de 13: que escriba: “Eres adolescente”
  • si no, pero es mayor a 6: escriba: “¿En qué curso estás?”
  • si no: escriba: “¿Sabes montar en bici?”

Código fuente en Python

#Start code here
edad = 6
print("Hola")
if edad >= 18:
  print("Eres mayor de edad")
else:
  if edad >= 13:
    print("Eres adolescente")
  else:
    if edad >= 6:
      print("¿En qué curso estás?")
    else:
      print("¿Sabes montar en bici?")
print("Adios")

20 Ejercicios de bucles

20.1 Bucle inverso

Haz un programa que pida un número al usuario, e imprima todos los números en orden inverso hasta llegar a 0.

Código fuente en Python

#Start code here
print("Introduce un número")
numero = int(input(""))
while numero >= 0:
  print(numero)
  numero = numero - 1

20.2 Contador

Haz un programa que sume todos los números del 1 al 100.

Código fuente en Python

#Start code here
numero = 100
contador = 0
total = 0
while contador <= numero:
  total = total + contador
  print(contador, "-", total)
  contador = contador + 1
print("Total", total)

20.3 Bucle for

Crea un bucle for desde 0 hasta 400 usando pasos de 5.

Código fuente en Python

#Start code here
for i in range(0, 400, 5):
  print(i)

20.4 Tabla de multiplicar

Haz un programa que pida un número al usuario, e imprima su tabla de multiplicar hasta el 10 (si el número introducido es mayor a 10, la tabla será hasta el mismo número).

Código fuente en Python

#Start code here
print("Introduce un número")
numero = int(input(""))
maximo = 10
if numero > maximo:
  maximo = numero
for i in range(maximo + 1):
  print(f"{numero}x{i}={numero * i}")

20.5 Instrucciones break y continue

Haz un programa que imprima del 1 al 30, pero:

  • Salte los números 7 y 15 sin imprimirlos.
  • Pare el bucle si llega al número 23.

Código fuente en Python

#Start code here
for i in range(1, 30):
  if i == 23:
    break # your code
  if i == 7 or i == 15:
    continue # your code
  print(i)