ENGINYERIA AERONÀUTICA COMPUTACIÓ I PROGRAMACIÓ Guia de l’assignatura ENGINYERIA AERONÀUTICA 30008 Computació i Programació. Guia de l’assignatura Aprovada en C.A.A de data 8/06/05 Modificada en CAA de data 27/06/08 1 Crèdits: 6 ( 3 teoria + 3 pràctiques) Crèdits ECTS: 4,8 Tipus Obligatòria Coordinador: Fatos Xhafa (fatos@lsi.upc.edu) Altres Professors: Marta Gatius i Vila (gatius@lsi.upc.es), Josefina López (jlopez@lsi.upc.edu), Alfons Valverde (alfons@lsi.upc.edu), Oscar Romero (oromero@lsi.upc.edu), Ivan Bruque (ibruque@lsi.upc.edu), Àngela Martín (amartin@lsi.upc.edu) Departament: Llenguatges i Sistemes Informàtics Presentació Coneixements previs Coneixements bàsics de matemàtiques corresponents al nivell exigit en les proves d'accés a la universitat. Relació amb altres assignatures En aquesta assignatura es presenten mètodes bàsics de disseny d'algorismes i fonaments de la programació necessaris per a moltes altres assignatures del Pla d'Estudis, com són: Automàtica i control, Càlcul d'estructures: mètode dels elements finits, Projecte final de carrera, Sistemes elèctrics i electrònics, Sistemes de navegació i Tecnologia aeroespacial. Objectius generals L'objectiu d'aquesta assignatura és presentar una introducció al disseny d'algorismes i a la programació. En la part teòrica de l'assignatura s'introdueix un llenguatge algorítmic a través del com es tracta de desenvolupar la capacitat d'entendre i construir algorismes. Aquest llenguatge algorítmic s'utilitza també per a presentar conceptes bàsics de programació, com tipus de dades, expressions, instruccions, així com tècniques bàsiques d'abstracció de procediments i dades. Tots aquests conceptes s'il·lustren a través d'exemples d'algorismes senzills de recerca, recorregut, ordenació, filtrat i càlcul numèric. En la part pràctica de l'assignatura s'apliquen els continguts de programació estudiats en la part de teoria a exercicis concrets de programació en el llenguatge C. S'introdueixen els fonaments de la programació en aquest llenguatge, i es presenten algunes tècniques importants d'abstracció que faciliten la comprensió, utilització i construcció de programes de mitjana envergadura. En aquesta assignatura és considera important que els estudiants apliquin els conceptes de reutilització i minimització del consum de recursos en els seus projectes informàtics, contribuint d’aquesta manera al desenvolupament sostenible 1 ENGINYERIA AERONÀUTICA 30008 Computació i Programació. Guia de l’assignatura Aprovada en C.A.A de data 8/06/05 Modificada en CAA de data 27/06/08 2 Temari Mòdul 1. Conceptes Bàsics Tema 1. Introducció (1 hora) Tema 2. Tipus de dades bàsiques, variables, constants i expressions (4 hores) Tema 3. Instruccions bàsiques: assignació, entrada, sortida i control (7 hores) Mòdul 2. Abstracció de Procediments Tema 1. Accions i funcions: definició, paràmetres i cridada (8 hores) Tema 2. Seqüències: recerca i recorregut (8 hores) Tema 3. Disseny descendent (8 hores) Mòdul 3. Abstracció de Dades Tema 1. Vectors i matrius: definició i operacions associades (8 hores) Tema 2. Algorismes d'ordenació (8 hores) Tema 3. Estructures: definició i exemples (8 hores) Objectius específics dels mòduls Mòdul 1. Conceptes Bàsics L'objectiu d'aquest mòdul és presentar els conceptes bàsics de la programació. En primer lloc es descriuen les eines bàsiques que ofereixen els llenguatges de programació per a la representació de la informació: els tipus de dades bàsiques, i els conceptes de variable, constant i expressió. A continuació s'introdueixen les instruccions bàsiques que ofereixen els llenguatges de programació per a obtenir, manipular i presentar a l'usuari aquesta informació: instruccions d'entrada i sortida, instrucció d'assignació i instruccions de control. Així mateix es pretén que l'alumne sigui capaç d'utilitzar tots aquests conceptes construint algorismes i programes senzills en el llenguatge de programació C Mòdul 2. Abstracció de Procediments L'objectiu d'aquest mòdul és la introducció de tècniques bàsiques d'abstracció de procediments. El coneixement de tècniques d'abstracció és fonamental en la programació perquè permet controlar la complexitat dels programes estructurant-los en mòduls relativament senzills que es relacionen entre si. En aquest mòdul es presenten els conceptes d'acció i funció, que permeten referir-se mitjançant un només nom a seqüències d'instruccions. Es defineix el concepte de paràmetre i la seva tipologia, i s'expliquen els mecanismes de cridada i pas de paràmetres. Es descriu així mateix el concepte de seqüència, de gran utilitat pràctica en el processament de dades, i les operacions bàsiques associades al processament de seqüències: recerca i recorregut. Finalment s'introdueix la tècnica de disseny i descomposició de programes coneguda com disseny descendent i s'il·lustra la seva utilització amb abundants exemples d'algorismes i programes en el llenguatge de programació C 2 ENGINYERIA AERONÀUTICA 30008 Computació i Programació. Guia de l’assignatura Aprovada en C.A.A de data 8/06/05 Modificada en CAA de data 27/06/08 3 Mòdul 3. Abstracció de Dades L'objectiu d'aquest mòdul és la presentació i utilització de tècniques bàsiques d'abstracció de dades de la programació. Això es realitza mitjançant la introducció del concepte d'estructura de dades i l'estudi de dos tipus fonamentals d'estructures de dades: matrius i estructures. Les matrius es caracteritzen per agrupar conjunts de dades homogènies i perquè l'accés als seus components es realitza indicant la seva posició. La seva presentació es realitza començant amb la definició de les matrius uni-dimensionals (e.i., vectors) i de les principals operacions d'accés i modificació associades a aquest tipus d'estructura de dades, i continuant amb la definició de matrius multi-dimensionals. A continuació es descriuen diversos algorismes d'ordenació, i s'il·lustra la seva aplicació amb abundants exemples d'algorismes i programes C. La presentació d'aquests algorismes és important no només per la seva utilitat pràctica, sinó també perquè ofereixen a l'alumne l'ocasió d'estudiar alguns algorismes de mitjana complexitat al llarg del curs. Finalment s'introdueix el concepte d'estructura, que es caracteritza per agrupar conjunts de dades heterogènies i perquè l'accés als seus components es realitza indicant el nom de la component en lloc de la seva posició. Es descriuen els principals operadors de definició, accés i modificació de les estructures, i es presenten exemples d'estructures de dades que combinen matrius i estructures per a la representació d'informació de complexitat creixent. La descripció d'aquests conceptes va acompanyada d'abundants exemples i exercicis de disseny d'algorismes que realitzen càlculs amb matrius i estructures; i de construcció de programes C que il·lustren la definició de matrius i estructures en aquest llenguatge de programació, i la utilització dels seus respectius operadors d'accés i modificació. Metodologia de treball Sessions teoria, problemes Les classes que es realitzaran en l'aula consistiran en classes de teoria pròpiament dites, on es presentaran conceptes, eines i tècniques de programació, i en classes de problemes, on es realitzaran exercicis de disseny d'algorismes que ajudin a comprendre i aplicar els conceptes i tècniques de programació introduïts en les classes de teoria. Pràctiques, laboratoris Les classes de pràctiques, que es realitzaran en el laboratori, consistiran en la realització d'una sèrie d'exercicis de programació per part dels alumnes. S'elaborarà un guió de pràctiques per a cada sessió, en el qual haurà informació sobre la representació en el llenguatge C dels conceptes a estudiar, exemples de programes C que utilitzin aquests conceptes i exercicis per a realitzar durant la sessió de pràctiques. S'utilitzarà el compilador de C/C++ de distribució gratuïta Dev C++. Organització en mòduls y temps de dedicació del estudiant De forma orientativa s'ofereix un càlcul aproximat del temps de classe presencial i d'estudi personalitzat per part de l'alumne que requereix aquesta assignatura. El temps reflectit en la columna “Temps de lectura” comprèn el temps aproximat d'estudi que deu dedicar l'alumne tant a la lectura de llibres i apunts recomanats, com a la realització d'exercicis pràctics i programes proposats en les classes de laboratori. Temps de Classe 12 hores 24 hores 24 hores 60 hores Mòdul Mòdul 1: Conceptes bàsics Mòdul 2: Abstracció de procediments Mòdul 3: Abstacció de dades Temps Total 3 Temps d’estudi 12 hores 24 hores 24 hores 60 hores Temps Total 24 hores 48 hores 48 hores 120 hores ENGINYERIA AERONÀUTICA 30008 Computació i Programació. Guia de l’assignatura Aprovada en C.A.A de data 8/06/05 Modificada en CAA de data 27/06/08 4 Importància i dificultat dels mòduls El mòdul 1, Conceptes bàsics, és clau per a la comprensió de l'assignatura, ja que la resta dels mòduls pressuposen i requereixen el coneixement dels conceptes bàsics introduïts en aquest mòdul. Es tracta d'un mòdul relativament senzill. Requereix la comprensió dels conceptes bàsics, i fonamentalment la realització d'abundants exercicis de disseny d'algorismes i construcció de programes. El mòdul 2, Abstracció de procediments, és molt important per al seguiment de curs, ja que la major part dels algorismes i programes que es presenten en el mòdul següent utilitzen accions i funcions. La definició d'accions i funcions, i la seva correcta utilització (cridada) en els programes és fonamental per al seguiment de l'assignatura. El concepte de seqüència i de les operacions utilitzades fonamentalment per al procés de seqüències té importància pràctica i resulta útil per a comprendre molts dels exemples i exercicis que es proposen més endavant. Aquest mòdul requereix una major capacitat d'abstracció per part de l'alumne, que deu comprendre i utilitzar correctament els conceptes d'acció i funció El mòdul 3, Abstracció de dades, és molt important també perquè presenta conceptes necessaris per al processament de grans volums de dades complexes. Els alumnes estan familiaritzats normalment amb el concepte de matriu, de manera que en principi no presenta major dificultat. El concepte d'estructura és senzill, però la seva novetat pot requerir un poc més d'estudi. La major dificultat d'aquest mòdul consisteix en la combinació d'ambdós elements, que pot suposar l'establiment de diversos nivells d'abstracció de dades. Els algorismes d'ordenació tenen gran importància teòrica i pràctica en el camp de la programació. La seva comprensió pot requerir un estudi detingut per part de l'alumne. Materials Bibliografia bàsica [Ker 91] B.W. Kernighan y D.M. Ritchie, El lenguaje de programación C, Pearson Educación (1991). [Prie 97] A. Prieto, A. Lloris y J.C. Torres, Introducción a la informática, McGraw Hill (1997). [Pe 00] M.A. Peña y J.M. Cela, Introducción a la programación en C, Edicions UPC (2000). [Van 92] J. Vancells y E. López, Programació: Introducció a l'algorísmica, Eumo Editorial (1992). Bibliografia complementaria [Abel 96] H. Abelson, G.J. Sussman y J. Sussman, Structure and interpretation of computer programs (2nd edition), MIT Press (1996). [Bal 93] J.L. Balcazar, Programación metódica, McGraw Hill (1993). [Cas 93] J. Castro, F. Cucker, X. Messeguer, A. Rubio, L. Solano y B. Valles, Curso de programación, McGraw Hill (1993). [Fran 01] X. Franch, J. Marco, X. Molinero, J. Petit y F. Xhafa, Informática básica, Edicions UPC (2001). [Ga 01] M. Gatius, Complements d'informàtica. Recull de problemes, Unicopi (2001). [Sie 02] A. Sierra y M. Alfonseca, Programación en C/C++, Anaya Multimedia (2002). [Stro 98] B. Stroustrup, El lenguaje de programación C++ (tercera edición), Addison Wesley (1998). 4 ENGINYERIA AERONÀUTICA 30008 Computació i Programació. Guia de l’assignatura Aprovada en C.A.A de data 8/06/05 Modificada en CAA de data 27/06/08 5 Avaluació Es realitzaran dos exàmens: un examen parcial i un examen final. Aquests exàmens tindran caràcter teòric-pràctic, això és, contindran igual percentatge de preguntes de pràctiques que de teoria. Els alumnes realitzaran també una sèrie d'exercicis pràctics de programació que es lliuraran i avaluaran al llarg del curs. L'avaluació de l'assignatura doncs compren tres parts: Primera avaluació (Examen Parcial): 20% de la nota final. Segona Avaluació (Examen Final): 50% de la nota final Nota de Laboratori: La nota de laboratori es calcularà en base de: • Nota de les sessions lliurades: Durant el curs es farà entrega de les sessions de laboratori desenvolupades durant les sessions. En acabar una sessi_o de laboratori es far_a lliurament dels programes demanats. Les sessions de laboratori seran avaluades pel professor. Les sessions de laboratori avaluaran el 15% de la nota final (NSL nota sesssions laboratori). Aquesta avaluació es fa en concepte de l'avaluació continuada. • Projecte de programació: Al final del curs s'haurà de presentar un projecte de programació que avalua el 15% de la nota final. El projecte consisteix a dissenyar i implementar un petit projecte informàtic que es realitzar_a en grups de dues persones. La qualificació del projecte es determinarà per la mitjana geométrica entre la nota del projecte lliurat (NP) i de la nota d'una pregunta de l'examen final (NPE) que versarà sobre el projecte, és a dir la nota de projecte laboratori (NPL) será avaluada: NPL = NPE * NP Nota Fina: La nota final, NF, es calcularà en base de la nota de l'examen parcial (NEP), la nota de l'examen final (NEF), la nota de les sessions laboratori lliurades (NSL) i la nota de projecte de laboratori (NPL) segons la fórmula: Ng =0,2* Nep + 0,5* Nef + 0,15* Npl + 0,15* Npg Ng = 0.5 Nef + 0.35 Nep + 0.15 Npg Ng :nota evaluación global Nef : nota examen final Nep : nota examen parcial Npl : nota de pràctiques de laboratori Npg : nota de projecte de programació 5