Crèdit 4: fonaments de programació.

a) Durada: 240 hores.

b) Objectius terminals.

Identificar els recursos del sistema informàtic necessaris per a la realització de programes.

Definir les estructures de dades estàtiques i dinàmiques necessàries per a la resolució de problemes en un llenguatge estructurat.

Dissenyar algorismes per a les operacions bàsiques d'altes, de baixes, de consultes i de modificacions en arxius.

Utilitzar la programació estructurada i modular per al disseny d'algorismes i l'elaboració de programes.

Codificar programes amb l'aplicació de tècniques recursives que optimin la programació, segons la documentació tècnica.

Especificar, en l'elaboració de programes, les condicions d'entrada, de sortida i d'error amb el corresponent tractament.

Desenvolupar els codis font en llenguatges de programació estructurada i modular, a partir dels algorismes dissenyats, i d'acord amb la sintaxi.

Obtenir els codis objecte a partir dels codis font.

Obtenir els codis executables a partir dels codis objecte, amb la utilització de llibreries, utilitats i altres recursos.

Comprovar que els recursos del sistema, del processador, de la memòria i dels perifèrics permeten la integració i l'enllaç de programes.

Depurar els mòduls de programació desenvolupats en un llenguatge de programació estructurada i modular, segons els criteris d'eficàcia i eficiència.

Controlar la qualitat del programa desenvolupat en un llenguatge de programació estructurada i modular, a partir de les especificacions establertes en el disseny i de les prestacions esperades per l'usuari.

Verificar el funcionament de cada mòdul d'una aplicació, les integracions i els enllaços.

Comprovar que l'accés i el tractament de les dades estan d'acord amb les directrius de l'administrador de dades del sistema i de les especificacions establertes en el disseny.

Comprovar que els formats d'entrada i de sortida del programa, i la funcionalitat de les dades s'ajusten als paràmetres definits.

Elaborar la guia d'usuari i la documentació completa de les fases de disseny, codificació, traducció, enllaç, depuració i verificació de programes elaborats amb programació estructurada i modular, de manera ordenada i clara.

Determinar les causes i la manera de resoldre les incidències aparegudes en les fases de codificació, traducció, enllaç i depuració de programes en llenguatge de programació estructurada, a partir del manual de referència.

Adaptar programes en llenguatge estructurat segons els nous requeriments establerts en el disseny.

Determinar les implicacions que produeixen les noves modificacions sobre les dades i els mòduls, amb l'ús de matrius de referències creuades entre mòduls i dades.

Comprovar l'eficiència i l'eficàcia de les prestacions i dels rendiments del programa elaborat en llenguatge de programació estructurada, en els processos d'adaptació i de disseny de programes.

c) Continguts de fets, conceptes i sistemes conceptuals.

1. Programa:

Instrucció i seqüència d'instruccions.

Tipus de programes: de gestió, científics, de disseny, d'ensenyament, simuladors.

Característiques dels programes: llegibilitat, portabilitat, eficàcia, modularitat, estructuració.

Fases bàsiques de desenvolupament d'un programa: anàlisi, algorismes, codificació en un llenguatge d'alt nivell, traductors, muntadors, verificació i documentació.

Control de qualitat d'una aplicació informàtica: factors, índex, mètriques de qualitat.

2. Estructures de dades:

Dades simples: numèriques, alfanumèriques, lògiques, punter. Operadors: prioritats.

Dades compostes internes estàtiques: cadenes, taules, registres.

Dades compostes internes dinàmiques: piles, cues, llistes, arbres.

Dades compostes externes, fitxers: camps, registres, tipus de fitxers, operacions. Tipus d'organització: seqüencial, relativa, seqüencial-indexada. Tipus d'accés: seqüencial i directe per valor i posició. Índex d'activitat i volatilitat. Sistema gestor de fitxers. Independència física de les dades.

3. Programació estructurada:

Definició i objectius.

Constants i variables.

Operacions simples: assignació, d'entrada, de sortida.

Operacions compostes: seqüència, alternativa, repetitiva.

Algorismes de tractament de cadenes: extracció, concatenació.

Algorismes de tractament de taules: recorreguts total i parcial, inserció, recerca seqüencial, ordenació, recerca dicotòmica.

Algorismes de tractament de piles: inserció i eliminació.

Algorismes de tractament de cues: inserció i eliminació.

Algorismes de tractament de llistes: recorregut, inserció, recerca i eliminació.

Algorismes de tractament d'arbres: recorreguts preordre, inordre i postordre, recerca, inserció, eliminació.

Algorismes de tractament de fitxers: creació, inserció, eliminació, consulta, modificació, còpia, fusió, ordenació, reorganització i partició.

Aplicació dels algorismes de tractament d'arbres en la implementació de fitxers indexats.

4. Programació modular:

Definició i objectius.

Anàlisi descendent: mòduls.

Procediments i funcions.

Pas d'arguments: per valor i per referència.

5. Introducció a la programació recursiva:

Recursivitat: directa i indirecta.

6. Llenguatge C:

Característiques i versions.

Tipus de dades: organització interna, operadors.

Instruccions d'entrada i de sortida: dispositius estàndards, impressora i fitxers.

Instruccions de control.

Funcions: pas d'arguments.

Llibreries: tipus, aplicació, accés, creació i modificació.

Traductors, muntadors, depuradors.

7. Llenguatge C ampliat amb un gestor de fitxers:

Utilització: accés seqüencial i directe per posició i valor.

Utilitats externes.

d) Continguts de procediments.

1. Anàlisi del problema que cal resoldre:

Recepció del problema.

Valoració dels avantatges i dels inconvenients del seu procés manual.

Determinació de les possibilitats de tractament informàtic.

Selecció del tractament informàtic més adient.

Documentació de les fases anteriors.

2. Descomposició modular:

Interpretació del tractament informàtic seleccionat en la fase d'anàlisi del problema que cal resoldre.

Exploració dels blocs diferenciats o repetitius dins el tractament informàtic.

Elaboració dels organigrames corresponents.

Documentació de la fase.

3. Disseny d'algorismes:

Identificació de les dades d'entrada i de sortida i dels seus canals.

Establiment d'una estratègia per determinar la seqüència d'accions.

Determinació de la seqüència d'accions.

Representació de la seqüència d'accions corresponents.

4. Codificació d'algorismes:

Elecció del llenguatge adient.

Selecció de l'editor existent en el sistema informàtic.

Traducció de la seqüència d'accions de l'algorisme.

Verificació de la sintaxi del llenguatge seleccionat.

5. Correcció d'errors de codificació:

Selecció de l'editor existent en el sistema informàtic.

Edició del fitxer font que s'ha de corregir.

Rescriptura de les instruccions amb errors.

6. Traducció d'un mòdul de programació:

Elecció del fitxer font que s'ha de traduir.

Selecció del programa traductor.

Generació del fitxer objecte.

Execució del procediment de correcció d'errors de codificació per als casos de no generació.

Documentació del fitxer font traduït i dels paràmetres utilitzats.

7. Muntatge d'un programa:

Identificació dels fitxers objectes que cal muntar.

Selecció del programa muntador.

Determinació dels paràmetres d'execució.

Generació del fitxer executable sobre els fitxers objectes.

Execució del procediment de correcció d'errors de codificació per als casos de no generació.

Documentació dels fitxers objectes muntats i dels paràmetres utilitzats.

8. Verificació d'un programa:

Determinació dels resultats esperats i dels criteris de valoració.

Selecció de la bateria de proves.

Execució del programa amb els paràmetres corresponents.

Observació del funcionament del programa en totes les opcions i situacions possibles.

Comparació dels resultats obtinguts amb els esperats.

Detecció de les fases de desenvolupament de programes on hi ha error.

Elaboració de la documentació de la bateria de proves, execució i resultats obtinguts.

9. Desenvolupament de programes:

Anàlisi del problema que cal resoldre.

Descomposició modular.

Disseny de l'algorisme per a cada mòdul.

Codificació dels algorismes.

Traducció dels mòduls.

Muntatge del programa.

Verificació del programa.

Documentació del programa.

10. Producció de la guia d'usuari i de documents adjunts al programa:

Identificació dels elements i dels processos que s'han d'incloure al document o guia.

Selecció de l'estructura de la guia d'usuari.

Determinació del format, ordre i esquema de presentació.

Obtenció de la informació, dades dels processos, resultats de les proves i de les representacions gràfiques.

Estructuració de les dades.

Redacció del text descriptiu del programa, dels canvis i de les proves.

Redacció de la guia d'usuari.

Revisió i edició.

11. Adaptació de programes:

Interpretació dels nous requeriments.

Identificació de les dades i dels mòduls de programació afectats pels nous requeriments.

Reconeixement de les implicacions sobre les dades i els mòduls.

Determinació dels canvis que s'han d'introduir.

Reajustament de les noves dades i mòduls.

Comprovació del fet que les noves dades i mòduls no afecten l'eficàcia i eficiència de les prestacions, ni el rendiment del programa.

e) Continguts d'actituds.

1. Execució sistemàtica del procés de resolució de problemes:

Presa de decisions a l'hora d'integrar i muntar programes i rutines, i d'introduir canvis als programes dissenyats amb metodologia que actualment ja no utilitza l'empresa.

2. Execució sistemàtica de la comprovació dels resultats:

Constància a l'hora de revisar i corregir els errors detectats en la provatura de programes en la fase de programació.

3. Optimació del treball:

Eficàcia per elaborar, adaptar i provar programes en llenguatges de programació estructurats.

4. Ordre i mètode de treball:

Seqüència i ordenació de les accions a l'hora de dissenyar els algorismes i d'efectuar canvis en els programes.

Pulcritud i rigor a l'hora d'editar, traduir, muntar, executar i verificar programes en llenguatges estructurats.

5. Responsabilitat en el treball:

Cura d'elaborar programes que siguin clars i llegibles.

6. Participació i cooperació en el treball d'equip:

Col·laboració amb els altres programadors, si fa al cas, a l'hora de dissenyar i efectuar canvis en els programes.

Interès per les opinions dels altres sobre el programa desenvolupat.

7. Execució independent del treball:

Autosuficiència per mantenir-se informat de les innovacions, tendències i tecnologies en llenguatges de programació de tercera generació.

Rigor en la programació, l'adaptació i la provatura de programes en llenguatges estructurats.

8. Confiança en si mateix:

Seguretat a l'hora de programar, adaptar i provar programes en llenguatges de tercera generació.

9. Comunicació empàtica:

Interès pel missatge i per l'interlocutor a l'hora de rebre el problema que cal resoldre amb tractament informàtic, i en l'elaboració de la documentació.

10. Creativitat:

Curiositat per esbrinar els problemes que cal resoldre mitjançant la programació estructurada.

11. Obertura a l'àmbit professional i la seva evolució:

Interès pels avenços tecnològics en llenguatges estructurats.

12. Adaptació a noves situacions:

Resposta a noves situacions en la utilització de nous llenguatges estructurats.

13. Progrés i promoció dins de la professió:

Constància i esforç per aprendre la utilització de nous llenguatges estructurats.

14. Valoració de resultats:

Argumentació del resultat obtingut amb el programa elaborat en llenguatges estructurats.

Justificació de la decisió dels algorismes emprats en la resolució del problema.