ENGINYERIA INDUSTRIAL FONAMENTS D’INFORMÀTICA Guia de l’assignatura ENGINYERIA INDUSTRIAL 25004 Fonaments d’informàtica. 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 Troncal Coordinador: Fatos Xhafa (fatos@lsi.upc.es) 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 a les proves d’accés a la universitat. Camps professionals Relació amb altres assignatures En aquesta assignatura es presenten mètodes bàsics de disseny d’algoritmes i fonaments de la programació necessaris per a moltes d’altres assignatures del Pla d’Estudis, com ara: Automàtica i control, Càlcul d’estructures: mètode dels elements finits, Projecte final de carrera, Sistemes elèctrics y electrònics, Sistemes de navegació y Tecnologia aerospacial. Objectius generals L’objectiu d’aquesta assignatura és presentar una introducció al disseny d’algoritmes i a la programació. En la part teòrica de l’assignatura s’introdueix un llenguatge algorísmic a través del qual es tracta de desenvolupar la capacitat d’entendre i construir algorismes. Aquest llenguatge algorísmic s’utilitza també per 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 busca, 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. ENGINYERIA INDUSTRIAL 25004 Fonaments d’informàtica. Guia de l’assignatura Aprovada en C.A.A de data 8/06/05 Modificada en CAA de data 27/06/08 2 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 Temari Mòdul 1. Conceptes bàsics Tema 1. Introducció (1 hora) Tema 2. Tipus de dades bàsics, variables, constants y 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 crida (8 hores) Tema 2. Seqüències: cerca 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 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 obtenir, manipular i presentar l'usuari la dita 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 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 sol nombre a seqüències d'instruccions. Es defineix el concepte de paràmetre i la seva tipologia, i ENGINYERIA INDUSTRIAL 25004 Fonaments d’informàtica. Guia de l’assignatura Aprovada en C.A.A de data 8/06/05 Modificada en CAA de data 27/06/08 3 s'expliquen els mecanismes de crida 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: cerca i recorregut. Finalment s'introdueix la tècnica de disseny i descomposició de programes coneguda com a disseny descendent i s'il·lustra la seva utilització amb abundants exemples d'algorismes i programes en el llenguatge de programació C. Mòdul 3 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 unidimensionals (i.e., 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 sols 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 comptes 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 a 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 a les classes de teoria. Pràctiques, laboratoris Les classes de pràctiques, que es realitzaran al 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 què hi haurà informació sobre la representació en el llenguatge C dels conceptes a estudiar, exemples de programes C que utilitzin els dits conceptes i exercicis per realitzar durant la sessió de pràctiques. S'utilitzarà el compilador de C/C++ de distribució gratuïta Dev C++. ENGINYERIA INDUSTRIAL 25004 Fonaments d’informàtica. Guia de l’assignatura Aprovada en C.A.A de data 8/06/05 Modificada en CAA de data 27/06/08 4 Organització en mòduls i temps de dedicació de l’estudiant Mòdul Mòdul 1: Conceptes bàsics Mòdul 2: Abstracció de procediments Mòdul 3: Abstracció de dades Total Hores Temps de Classe 12 hores 24 hores 24 hores 60 hores Temps d’estudi 12 hores 24 hores 24 hores 60 hores Temps total 24 hores 48 hores 48 hores 120 hores 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 al mòdul següent utilitzen accions i funcions. La definició d'accions i funcions, i la seva utilització correcta (crida) 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 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 ha de 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 més dificultat. El concepte d'estructura és senzill, però la seva novetat pot requerir una mica més d'estudi. La més 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 al camp de la programació. La seva comprensió pot requerir un estudi detingut per part de l'alumne. Materials Bibliografia bàsica B.W. Kernighan y D.M. Ritchie, El lenguaje de programación C, Pearson Educación (1991). A. Prieto, A. Lloris y J.C. Torres, Introducción a la informática, McGraw Hill (1997). M.A. Peña y J.M. Cela, Introducción a la programación en C, Edicions UPC (2000). J. Vancells y E. López, Programació: Introducció a l'algorísmica, Eumo Editorial (1992). ENGINYERIA INDUSTRIAL 25004 Fonaments d’informàtica. Guia de l’assignatura Aprovada en C.A.A de data 8/06/05 Modificada en CAA de data 27/06/08 5 Bibliografia complementària H. Abelson, G.J. Sussman y J. Sussman, Structure and interpretation of computer programs (2nd edition), MIT Press (1996). J.L. Balcazar, Programación metódica, McGraw Hill (1993). J. Castro, F. Cucker, X. Messeguer, A. Rubio, L. Solano y B. Valles, Curso de programación, McGraw Hill (1993). X. Franch, J. Marco, X. Molinero, J. Petit y F. Xhafa, Informática básica, Edicions UPC (2001). M. Gatius, Complementos de informática. Recopilación de problemas, Unicopi (2001). A. Sierra y M. Alfonseca, Programación en C/C++, Anaya Multimedia (2002). B. Stroustrup, El lenguaje de programación C++ (tercera edición), Addison Wesley (1998). 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: ENGINYERIA INDUSTRIAL 25004 Fonaments d’informàtica. Guia de l’assignatura Aprovada en C.A.A de data 8/06/05 Modificada en CAA de data 27/06/08 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ó 6