Algunes definicions importants:
Què és programar? És l'acció d'escriure instruccions correctes per a que siguin interpertades per una màquina.
Què és el software? Són programes. Un conjunt d'instruccions escrites correctament i executades damunt una màquina per aconseguir que aquesta realitzi alguna funció.
Fins a quin punt ens competeix programar? Això depèn de l'interès particular. Per a un enginyer és una necessitat.
Fins a quin punt depenem del software? Depèn de l'estil de vida, però normalment molt: mòbils, ordinadors personals, bancs, comandaments a distància, reproductors multimedia, dispositius d'oci,...
Llenguatges de programació:
Podem definir un llenguatge de programació com un conjunt de símbols i regles que serveixen per a comunicar idees a una màquina.
Els elements bàsics de qualsevol llenguatge de programació són:
Lèxic: conjunt de símbols i paraules clau. Cada llenguatge té el seu, encara que existeixen moltes similittus, ja que totes es basen en paraules angleses que recorden la seva funcionalitat (print, read, do, goto,...).
Sintàxi: regles que permeten escriure oracions amb sentit fent servir el lèxic específic.
Semàntica: significat de les oracions formulades.
En definitiva, els llenguatges de programació s'anomenen aixi perquè aprendre a programar és molt semblant a aprendre un nou idioma.
Classificació dels llenguatges de programació:
Segons la proximitat al llenguatge humà:
Llenguatge màquina: són lleguatges propis de cada màquina i fan servir les dades binàries tal com les fan servir el xips. Això provoca que sigui molt complicat programar així, que sigui fàcil cometre errors i que els programes no siguin portables d'una màquina a una altre. Ex.: 1110 0101 0000 0000
Llenguatges de baix nivell: fan servir una simbologia més propera que els llenguatges màquina, però encara allunyada del llenguatge natural.
El més important d'aquests és el llenguatge ensamblador. Ex.:
MOV AX,A
ADD AX,B
MOV C,AX
Llenguatges d'alt nivell: fan servir un lèxic i una sintaxi similars als humans. Quasi tots els llenguatges actuals són d'aquests tipus, i n'hi ha que s'han especialitzat molt i d'altres que compleixen funcions totalment diverses (Fortran, Cobol, Basic, Pascal, C, C++, Java, Delphi, HTML, SQL,...).Ex.:
c = a + b , que és exactament el mateix que hem escrit als exemples dels altres tipus de llenguatges.
Segons l'estil de programació:
Llenguatges imperatius: contenen un conjunt seqüencial d'ordres que modifiquen els valors en la memòria de l'ordinador (variables) per a obtenir un resultat.
Ex.: Fortran:
suma=0
do i = 1,100,2
suma = suma + i
end do
write(*,*) "La suma dels senars < 100 és = ", suma
Llenguatges declaratius: Només s'indica el que es vol obtenir sense donar ordres de com fer-ho. Internament el llenguatge incorpora els procediments per atendre a les peticions.
Ex. SQL: SELECT * FROM clientes WHERE sexo="M" ORDER BY nombre
Llenguatges orientats a objectes: estan basats en objectes i classes, que encapsulen un conjunt de dades i mètodes.
Ex.: Classe: cotxe.
Objecte: Ford Focus.
Mètode: getConsum();
Segons la manera d'executar-se:
Interpretats: les instruccions es tradueixen al llenguatge màquina a mesura que es van llegint. Això permet una major interacció amb el codi i requereix una menor quantitat de memòria. D'altra banda, només es podrà executar el programa als equips que tenguin l'intèrpret instal·lat.
Compilats: tot el codi es tradueix de cop i íntegrament al llenguatge màquina. Això fa que la primera execució després de realitzar canvis sigui més lenta, però per contra es genera un arxiu executable que es podrà excutar tantes vegades com sigui necessari i a qualsevol màquina sense tornar a compilar res (encara que no tengui instal·lat el compilador). Per tant, les següents execucions seran més ràpides. Per contra, les modificacions són menys interactives i el programa consumeix més memòria.
Metodologia de desenvolupament de programes:
Hi ha més d'una mètode, i el realment important és la comprensió total del problema a resoldre. Seguirem un exemple concret i realista per exposar un d'aquests mètodes: l'anàlisi d'entrada, procés i sortida (EPS). Bàsicament, aquest mètode té quatre passos:
Plantejament del problema en llenguatge natural: són les 18:00 i demà tinc un exàmen de Física que no he pogut preparar. Sé perfectament que no hi ha temps per fer-ho amb total garantia d'èxit. Què faig? Ho intent o pas de tot?
Redacció de l'enunciat en llenguatge científic (Anàlisi EPS):
Entrada: una moneda per prendre la decisió.
Procés: llançar la moneda. Cara, estudi; creu, descans.
Sortida: el que faré avui horabaixa.
Disseny de l'algoritme (pseudocodi): En aquest apartat es poden utilitzar els diagrames de flux com ajuda per analitzar o establir el pseudocodi.
Inici: estudiarONoEstudiar
Llançar una moneda.
Si "creu", anar al punt 6.
Si "cara", estudiar per l'examen.
Anar al punt 7.
Fer unes canyes amb els amics.
Anar a l'examen.
Fi.
Realització del programa al llenguatge triat per a l'ocasió (Fortran):
Program estudiarONoEstudiar
Implicit none
Integer iseed = 653984
Real*8 aleatori
aleatori = random(iseed)
if(aleatori<0.5d0){
write(*,*) "Creu, t'esperen per fer quatre birres"
}
else{
write(*,*) "Cara, t'ha tocat estudiat i ja has perdut mitja hora!"
}
End If
Stop
End
Diagrames de flux:
És una eina gràfica que ajuda a l'anàlisi del problema que es vol resoldre i al disseny del codi. S'utilitzen una sèrie de símbols per tal de representar cada fase del programa.
De manera que el diagrama de flux de l'exemple de l'apartat anterior serà:
Justificació i presentació del llenguatge triat per aquest curs:
El llenguatge de programació que estudiarem en aquest curs es Python, i l'eina de desenvolupament que farem servir per escriure els nostres programes serà IDLE que ve preinstal·lat a la Raspberry Pi. Aquest programa és un senzill IDE (Integrated Development Enviroment) que permet interactuar a l'usuari amb el llenguatge, editar programes i executarlos, depurar-los (ja veurem què significa això),...
Per tant, no s'haurà d'instal·lar ni configurar res per poder començar, encara que s'ha de tenir present que si es vol programar a l'ordinador de ca nostra, haurem de cercar informació a la web. Per a Windows, la pàgina oficial de Python permet la descàrrega de l'instal·lador d'aquest llenguatge i d'una versió de IDLE.
Perquè hem triat Python per aquest curs? Doncs les següents imatges ho expliquen prou clarament:
A Python, els arxius que s'escriuen tenen l'extensió .py, mentres que els executables d'aquests fitxers s'anomenen bytecode i tenen l'extensió .pyc. La creació d'aquest fitxer permet que Python no hagi de llegir el codi sencer cada vegada que vol executar un programa, sinó que només el torna a llegir si s'ha modificat.
El Python és:
Un llenguatge de programació dissenyat el 1991 per Guido van Rossum al CWI d'Àmsterdam. Des del seu naixement fou pensat per ser divertit d'aprendre i se li va posar el seu nom en honor als Monty Python.
És programari lliure de codi obert amb llicència GPL.
S'utilitza tant per aplicacions web com per aplicacions d'escriptori (multipropòsit).
És un llenguatge d'alt nivell i interpretat (es tradueixen les instruccions al llenguatge màquina a mesura que es llegeixen).
Exercicis:
A la següent imatge es pot veure un diagrama de flux que és correcte en la lògica, però no en la simbologia. Corregeix el diagrama de flux afegint el que consideris que falta i modificant la forma dels apartats.
2. Volem diseñar un programa que llegeixi 2 nombres naturals (a, b) i retorni si a és divisible entre b. Realitza l'anàlisi EPS i dissenya l'algoritme amb un diagrama de flux.
3. Donada una equació de 2n grau (ax2 + bx + c = 0), es vol escriure un programa que digui si tindrà dues, una o cap solució real. Realitza l'anàlisi EPS i dissenya l'algoritme amb un diagrama de flux.