40
Introducción a la Programación Tema 1: Conceptos básicos de programación Instituto de Educación Superior Pedagógico Público “Gamaniel Blanco Murillo” CARRERA PROFESIONAL: COMPUTACIÓN E INFORMÁTICA V SEMESTRE -2014 Profesor Lic. Héctor López Sánchez

Fundamentos de Programación

Embed Size (px)

DESCRIPTION

Base teórica de lenguaje de programación I

Citation preview

Introduccin a la ProgramacinTema 1: Conceptos bsicos de programacinInstituto de Educacin Superior Pedaggico Pblico Gamaniel Blanco MurilloCARRERA PROFESIONAL: COMPUTACIN E INFORMTICAV SEMESTRE -2014ProfesorLic. Hctor Lpez SnchezTema 1Introduccin:El HardwareLenguajes y ProgramasIngeniera delSoftwareDescripcin delenguajes de programacinIntroduccin a la ProgramacinLenguaje de Programacin V01.1Qu es la InformticaInformtica (Del fr. informatique). 1. f. Conjunto de conocimientos cientficos y tcnicas que hacen posible el tratamiento automtico de la informacin por medio de ordenadores. (Extrado del Diccionario de la RAE, 2001)Un poco de historia...baco 2000 a.c.El sumador de Pascal mediados s. XVIILa calculadora de G.W. von Leibniz finales s. XVIILa mquina de diferencias de Babbage s. XIXConcepto de programa externo1945: Comienzo de la era de la InformticaModelo J. von Neumann: estructura de la computadora tal y como la conocemos hoy; concepto de programa internoCoincide con el desarrollo de la electrnica

Tema 1Introduccin:El HardwareLenguajes y ProgramasIngeniera delSoftwareDescripcin delenguajes de programacinIntroduccin a la ProgramacinLenguaje de Programacin V1.2Qu es la Informtica

Ms sobre la Historia de la Informtica en el MIGShttp://www.fdi.ucm.es/migsTema 1Introduccin:El HardwareLenguajes y ProgramasIngeniera delSoftwareDescripcin delenguajes de programacinIntroduccin a la ProgramacinLenguaje de Programacin V1.3Computadora electrnica 1. f. Mquina electrnica digital, dotada de una memoria de gran capacidad y de mtodos de tratamiento de la informacin, capaz de resolver problemas matemticos y lgicos mediante la utilizacin automtica de programas informticos.

(Extrado del Diccionario de la RAE, 2001)

Fundamentos de computadores Introduccin a la programacin

Qu es una computadoraHardware (Voz ingl.).1. m. Inform. Conjunto de los componentes que integran la parte material de una computadora.Software (Voz ingl.).1. m. Conjunto de programas, instrucciones y reglas informticas para ejecutar ciertas tareas en una computadora.Tema 1Introduccin:El HardwareLenguajes y ProgramasIngeniera delSoftwareDescripcin delenguajes de programacinIntroduccin a la ProgramacinLenguaje de Programacin V1.4Un poco de hardwareMemoriaDispositivo de salidaDispositivos de entradaMemoria secundariaRatnTecladoUnidad Centralde Procesamiento

Carcasa (tipo torre)Unidadde disquetesUnidadde CD-ROMMemoria principaly Unidad de Disco Duro(ambos dentro)MonitorTema 1Introduccin:El HardwareLenguajes y ProgramasIngeniera delSoftwareDescripcin delenguajes de programacinIntroduccin a la ProgramacinLenguaje de Programacin V1.5Un poco de hardware: el Modelo Von NeumannUnidad de ControlUnidad Aritmtico-LgicaUnidad Central de Procesamiento (CPU)Unidad de MemoriaIdeas importantes:Un programa es una cadena secuencial de instruccionesLas instrucciones ordenan al ordenador realizar una operacin sobre unos datosLas instrucciones se ejecutan una tras otra, aunque puede haber bifurcaciones condicionales (usar un dato para decidir entre dos instrucciones diferentes por donde continuar)El computador procesa tanto instrucciones como sus datosLas instrucciones y los datos se almacenan juntos en memoriaTema 1Introduccin:El HardwareLenguajes y ProgramasIngeniera delSoftwareDescripcin delenguajes de programacinIntroduccin a la ProgramacinLenguaje de Programacin V1.8Un poco de hardware: la Unidad de Control (UC)Obtiene y almacena los datos en la UM, obtiene e identifica las instrucciones del programa de la UM y manda ejecutar las operaciones a la UAL

Registro de Instruccin (RI)DecodificadorUCSecuenciadorContador de Programa (CP)Operacin Direcciones de 3 operandosTema 1Introduccin:El HardwareLenguajes y ProgramasIngeniera delSoftwareDescripcin delenguajes de programacinIntroduccin a la ProgramacinLenguaje de Programacin VEjecucin de una instruccinLos pasos del ciclo de instruccin segn Von NeumannLEER INSTRUCCINDECODIFICARINSTRUCCINCAPTURARDATOSREALIZAROPERACINALMACENARRESULTADOSCALCULARINSTRUCCINSIGUIENTEEl CP indica la direccin de la celda donde est la instruccin que se debe copiar al RIEl operando del RI (que puede ser un dato o la direccin de la celda de un dato) se copia en el BRT(Esto se repite para todos los operandos de entrada)La direccin de celda de la siguiente instruccin se copia al CPEl resultado del Acumulador se copia en la direccin de la celda del resultado, generalmente indicada en el ltimo operando de la instruccin(Esto se repite para todos los resultados)Tema 1Introduccin:El HardwareLenguajes y ProgramasIngeniera delSoftwareDescripcin delenguajes de programacinIntroduccin a la ProgramacinLenguaje de Programacin V

Ejecucin de una instruccin (cont.)Operacin: SUMA-CELDAS Operando 1: X Operando 2: Y Operando 3: Z

SUMA-CELDAS suma el dato de la primera direccin al de la segunda y lo guarda en la terceraExplicacin enPIZARRA1.N1.6Un poco de hardware: la Unidad de Memoria (UM)Almacena las instrucciones y los datos del programasEl almacn est formado por celdasIdentificadas unvocamente por su direccinSiempre contienen informacinSe puede leer o escribir informacin en ellasSelector...

UMRegistro de Direccin (RD)CeldasRegistro de Intercambiode Datos (RID)Tema 1Introduccin:El HardwareLenguajes y ProgramasIngeniera delSoftwareDescripcin delenguajes de programacinIntroduccin a la ProgramacinLenguaje de Programacin V1.12a = (b + c)/(d + e)Pasossumar b y c, y guardar el resultado en una direccin de memoria temporal Xsumar d y e, y guardar el resultado en una direccin de memoria temporal Ydividir el contenido de X por el de Y y guardar el resultado en la direccin de memoria de aEjemplo de cdigo mquinacodigoOp direccOp1 direccOp2 direccRes

0000 00001000 00001100 000011100000 00011000 00011100 000111100101 00011110 00001110 00000100

Cdigo de la divisinDirecc. Temporal XDirecc. Temporal YCdigo de la sumaLenguaje mquinaxyTema 1Introduccin:El HardwareLenguajes y ProgramasIngeniera delSoftwareDescripcin delenguajes de programacinIntroduccin a la ProgramacinLenguaje de Programacin V1.13Lenguaje mquina (cont.)InconvenientesGrandes posibilidades de errorPortabilidad: mquina-dependienteNo se puede llevar el programa a otra mquina porque, entre otras cosas, el repertorio de instrucciones es distintoTediosoNula capacidad de abstraccinEs muy complicado formular una solucin a problemas del mundo real con ese lenguaje tan especfico

Tema 1Introduccin:El HardwareLenguajes y ProgramasIngeniera delSoftwareDescripcin delenguajes de programacinIntroduccin a la ProgramacinLenguaje de Programacin V1.14Lenguaje ensambladorLenguaje simblico con una mnima capacidad de abstraccinNombres nemotcnicos para los cdigos de operacinNombres simblicos para las direcciones de memoria

Ejemplo de instruccin de cdigo ensamblador

codigoSimbOp direccSimbOp1, direccSimbOp2, direccSimbRes

Cdigos simblicos de las operacionesSUM = La suma DIV = La divisin

a = (b + c)/(d + e)

SUM B, C, XSUM D, E, YDIV X, Y, A

Tema 1Introduccin:El HardwareLenguajes y ProgramasIngeniera delSoftwareDescripcin delenguajes de programacinIntroduccin a la ProgramacinLenguaje de Programacin VCuestionesCmo entiende la mquina el lenguaje ensamblador?Si las direcciones de memoria son simblicas en qu direcciones de memoria se colocan los datos?

Programa ensambladorTraduccin a cdigo binario de cdigos simblicos de operacinTraduccin de las direcciones simblicas a direcciones reales de memoriaInconveniente: sigue siendo dependiente de la mquina

1.15Lenguaje ensamblador (cont.)Cdigo fuente(lenguaje ensamblador)Programa ensambladorCdigo objeto(lenguaje mquina)Tema 1Introduccin:El HardwareLenguajes y ProgramasIngeniera delSoftwareDescripcin delenguajes de programacinIntroduccin a la ProgramacinLenguaje de Programacin V1.16Lenguajes de alto nivelLenguaje que permite representar el mecanismo de resolucin de los problemas usando instrucciones independientemente de la computadoraCercana conceptual al programadorPascal, C, Java, etc. son lenguajes de alto nivelCapacidad de abstraccinAbstraccin procedimental (poder representar operaciones ms complejas como calcular las races de un polinomio)Abstraccin de datos (poder representar informacin ms compleja como el estado de una cuenta bancaria)

Cmo conseguir que la computadora entienda los programas escritos en lenguajes de alto nivel?IntrpreteAnaliza el programa fuente y lo ejecuta directamente en la mquinaCompiladorAnaliza el programa fuente y lo traduce a lenguaje mquinaEj. Turbo Pascal es un compilador de PascalTema 1Introduccin:El HardwareLenguajes y ProgramasIngeniera delSoftwareDescripcin delenguajes de programacinIntroduccin a la ProgramacinLenguaje de Programacin V1.17El sistema operativoPrograma bsico encargado de manejar el hardware y facilitar el trabajo a los dems programas (aplicaciones) proporcionndoles un conjunto de servicios genricosAsignacin de tiempos de CPUControl y asignacin racional de los recursos de la computadoraEjecucin de programasControlar la E/S (ej., almacenar/recuperar en/de memoria permanente)Control de errores y proteccin (ej., monitorizar la ejecucin de un programa)Interfaz con el usuario...

Sin sistema operativo todo sera mucho ms complicado!Tema 1Introduccin:El HardwareLenguajes y ProgramasIngeniera delSoftwareDescripcin delenguajes de programacinIntroduccin a la ProgramacinLenguaje de Programacin V1.18El sistema operativo (cont.)Quin ejecuta el sistema operativo?Las computadoras suelen estar preparadas para, al arrancar, ejecutar un pequeo programa que, a su vez, se encarga de ejecutar el sistema operativoEn el caso de los PCs normales, se almacena en memoria un programa denominado BIOS (Basic Input/Output System), capaz de localizar en memoria secundaria el programa cargador del sistema operativo

Tema 1Introduccin:El HardwareLenguajes y ProgramasIngeniera delSoftwareDescripcin delenguajes de programacinIntroduccin a la ProgramacinLenguaje de Programacin V1.19Aplicaciones de propsito especficoProgramas que permite en uso de la computadora para la realizacin de trabajos especficos y que se implantan sobre el sistema operativoProcesadores de textoHojas de clculoSistemas de gestin de bases de datosHerramientas de diseo e ingenieraJuegos...

Tema 1Introduccin:El HardwareLenguajes y ProgramasIngeniera delSoftwareDescripcin delenguajes de programacinIntroduccin a la ProgramacinLenguaje de Programacin V1.20La programacin: resolucin de problemasUn programa es una secuencia de instrucciones con un propsito concreto que un ordenador puede interpretar y ejecutarProgramar es resolver problemasConjunto de actividades implicadas en la descripcin, el desarrollo y la implementacin eficaz de soluciones algortmicas a problemas bien especificados

Algoritmo 1. m. Conjunto ordenado y finito de operaciones que permite hallar la solucin de un problema.(Extrado del Diccionario de la RAE, 22 edicin)

Un algoritmo es, por tanto, una sistemtica que transforma un estado inicial en un estado finalLa entrada del programa: PrecondicionesDescripcin del estado inicial (datos y situacin de partida)La salida del programa: PostcondicionesDescripcin del estado final (datos y situacin deseada al acabar)Tema 1Introduccin:El HardwareLenguajes y ProgramasIngeniera delSoftwareDescripcin delenguajes de programacinIntroduccin a la ProgramacinLenguaje de Programacin V1.21La programacin: resolucin de problemas (cont.)Utilizamos los lenguajes de programacin para expresar los algoritmos de forma que el ordenador los entiendaDe igual forma, que utilizamos la lengua castellana para expresar nuestras ideas a otras personasRecuerda: Programar BIEN no es slo conocer la sintaxis de uno o varios lenguajes de programacin

Tema 1Introduccin:El HardwareLenguajes y ProgramasIngeniera delSoftwareDescripcin delenguajes de programacinIntroduccin a la ProgramacinLenguaje de Programacin V1.22El problema del montn de fichasSupongamos que tenemos un montn de fichas, cada una de las cuales tiene escrito el nombre de una persona junto con otros datos personales (fecha de nacimiento, direccin, nmero de telfono). Las fichas estn ordenadas alfabticamente por el nombre.Creamos una nueva ficha y deseamos incorporarla al montn existente.Cmo dividimos el montn original en dos montones, tales que todas las fichas del primer montn precedan a la nueva en la ordenacin y todas las del segundo no le precedan, pudiendo estar alguno de los montones finales vaco?

Cules son las precondiciones?Cules son las postcondiciones?Qu algoritmos se te ocurren?Qu lenguaje utilizamos para describir todo lo anterior?

La programacin: resolucin de problemas (cont.)Explicacin enPIZARRATema 1Introduccin:El HardwareLenguajes y ProgramasIngeniera delSoftwareDescripcin delenguajes de programacinIntroduccin a la ProgramacinLenguaje de Programacin V1.23AnlisisDiseoImplementacinPruebasMantenimientoEl Ciclo de Vida del SoftwareTodas las tareas a realizar desde que se concibe un programa hasta que se deja de utilizar (no slo hasta que se codifica ni hasta que se instala)Existen distintos modelos del ciclo de vida software, aunque nosotros estudiaremos el ms simple: Modelo en Cascada

Tema 1Introduccin:El HardwareLenguajes y ProgramasIngeniera delSoftwareDescripcin delenguajes de programacinIntroduccin a la ProgramacinLenguaje de Programacin VAnlisisDiseoImplementacinPruebasMantenimientoQuiero 3 habitaciones, 2 baos, garaje...Planos, diseo circuito elctrico y de agua...Se construye la casaSe comprueba la solidez de la estructura, el funcionamiento de las instalaciones, el acabado...Algunas reparaciones, se cierra la terraza, se instala aire acondicionado...CasaQu tiene que hacer exactamente nuestro programa?Cmo vamos a organizar el programa? Qu partes tendr y cmo funcionar?Se construye el softwarePonemos a prueba nuestro programa, incluso en situaciones lmitePequeas modificaciones o correcciones (parches), actualizaciones, etc...SoftwareQu significa todo esto?1.N1.25Fases en el desarrollo de una aplicacin (cont.)AnlisisActividad en la que se analizan y clarifican los diferentes aspectos del problema que debe ser resuelto por la aplicacin, con el fin de establecer claramente qu debe ser construidoEl resultado es, normalmente, un documento de requisitos software que especifica claramente las funcionalidades de la aplicacinFuncionalidad = lo que tiene que hacerse (sin saber todava cmo)Tema 1Introduccin:El HardwareLenguajes y ProgramasIngeniera delSoftwareDescripcin delenguajes de programacinIntroduccin a la ProgramacinLenguaje de Programacin V1.26Fases en el desarrollo de una aplicacin (cont.)Diseo Actividad en la que se decide la organizacin y la estructura de una aplicacin que satisfaga los diferentes requisitos establecidos en la fase de anlisisEl resultado es uno (o varios) documentos de diseo que especifican claramente cmo construir la aplicacinMientras que el anlisis se ocupa de qu hay que hacer, el diseo se ocupa de cmo hacerloHay varias tcnicas de diseo, nosotros estudiaremos una de las ms bsicas: el diseo funcional

Tema 1Introduccin:El HardwareLenguajes y ProgramasIngeniera delSoftwareDescripcin delenguajes de programacinIntroduccin a la ProgramacinLenguaje de Programacin V1.27Fases en el desarrollo de una aplicacin (cont.)Implementacin Actividad en la que se construye (codifica) la aplicacin utilizando un lenguaje de programacin concreto, y siguiendo, las directrices marcadas por los documentos de diseoSi las actividades anteriores han sido realizadas correctamente, la fase de implementacin debera ser bastante trivialLa implementacin se encarga de concretar el diseo teniendo en cuenta un lenguaje y herramienta de desarrollo concretaTema 1Introduccin:El HardwareLenguajes y ProgramasIngeniera delSoftwareDescripcin delenguajes de programacinIntroduccin a la ProgramacinLenguaje de Programacin V1.28Fases en el desarrollo de una aplicacin (cont.)Pruebas Actividad en la que se asegura que la aplicacin construida satisface los requisitos del usuarioSe debe invertir mucho tiempo en hacer pruebas (mucho ms que en su implementacin!)Dos pasos diferenciadosVerificacin: Se ajusta la aplicacin construida a los requisitos establecidos?Validacin: Resuelve la aplicacin el problema que realmente tena el usuario?

Tema 1Introduccin:El HardwareLenguajes y ProgramasIngeniera delSoftwareDescripcin delenguajes de programacinIntroduccin a la ProgramacinLenguaje de Programacin V1.29Fases en el desarrollo de una aplicacin (cont.)Mantenimiento Actividad en la que la aplicacin se modifica para satisfacer cambios o ampliaciones en los requisitos del usuario, corregir errores, etc.Es la actividad ms costosa en el desarrollo de software!(Tened en cuenta que hay programas que estn muchos aos en funcionamiento y lo usan miles de personas)Estos costes pueden aliviarse si se hacen bien todo lo anterior

*Otras actividades Confeccin de los manuales de usuarioPlanificacin y control del proyectoGestin de versiones...

Tema 1Introduccin:El HardwareLenguajes y ProgramasIngeniera delSoftwareDescripcin delenguajes de programacinIntroduccin a la ProgramacinLenguaje de Programacin V1.30Fases en el desarrollo de una aplicacin (cont.)Este Modelo en Cascada, tan lineal, no suele aplicarse tal cual en la vida realConviene hacer pruebas desde las primeras fases de desarrollo, por ejemplo para detectar y corregir errores prematuros, etc.Los programas suelen construirse en varias iteraciones (sacando primero una versin bsica, luego otra con ms funcionalidad aadida, etc.)Cada iteracin es un ciclo completo (anlisis, diseo, pruebas, etc.), siendo el diseo ms importante en las primeras y la implementacin ms importante en las ltimasTema 1Introduccin:El HardwareLenguajes y ProgramasIngeniera delSoftwareDescripcin delenguajes de programacinIntroduccin a la ProgramacinLenguaje de Programacin V1.31Lenguajes de programacinUn lenguaje de programacin puede describirse a tres niveles distintos:Nivel sintcticoDescripcin de la forma (= sintaxis) de las instruccionesSuelen utilizarse lenguajes artificiales con mucho formalismo (= rigor matemtico y lgico)Nivel semnticoDescripcin del significado (= semntica) de las instruccionesPuede utilizarse lenguaje natural (espaol, ingls, etc.) o intentar expresarse de manera ms formal Nivel pragmticoDescripcin de cmo se utilizan las instruccionesSuelen utilizarse tutoriales y ejemplos de programas

Tema 1Introduccin:El HardwareLenguajes y ProgramasIngeniera delSoftwareDescripcin delenguajes de programacinIntroduccin a la ProgramacinLenguaje de Programacin V1.32Sintaxis de los lenguajes de programacinConjunto de reglas que especifican y permiten verificar la correccin formal de las sentencias de un lenguaje

Formalismos utilizados:Notacin BNF (Backus-Naur Form)Notacin EBNF (Extended Backus-Naur Form)Diagramas sintcticosTodos ellos pueden expresar la forma de cualquier lenguaje de programacin, slo hay que elegir el que nos sea cmodoEstos formalismos se usan para escribir documentacin tcnica que leen quienes quieren conocer con exactitud un lenguaje

Tema 1Introduccin:El HardwareLenguajes y ProgramasIngeniera delSoftwareDescripcin delenguajes de programacinIntroduccin a la ProgramacinLenguaje de Programacin V1.33Notacin BNFTERMINALSmbolo (ej. una palabra) del lenguaje a definir(se escribe en letras maysculas)

Smbolo que se define en trminos de otros smbolos (tanto terminales como no terminales)(se escribe en letras minsculas y entre )

Regla de produccin Descripcin de un smbolo no terminal como equivalente a 1) una combinacin de terminales y no terminales, o 2) al vaco () (Un mismo no terminal puede tener varias reglas de produccin)

MetasmboloSmbolo propio de la notacin BNF, est reservado y no puede utilizarse en ningn otro smbolo ::= Equivalencia (lo de la izquierda equivale a lo de la derecha; es una regla de produccin) |Alternativa (lo de la izquierda o lo de la derecha)

Tema 1Introduccin:El HardwareLenguajes y ProgramasIngeniera delSoftwareDescripcin delenguajes de programacinIntroduccin a la ProgramacinLenguaje de Programacin V1.34Sintaxis de los nmeros enteros positivos en notacin BNF ::= ::= + | ::= | ::= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 ::=

Sintaxis de los nmeros reales en notacin BNF?Notacin BNF (cont.)Recursividad

Que un smbolo aparezca dentro de su propia definicinOJO! Pero evitando las definiciones circularesExplicacin enPIZARRATema 1Introduccin:El HardwareLenguajes y ProgramasIngeniera delSoftwareDescripcin delenguajes de programacinIntroduccin a la ProgramacinLenguaje de Programacin V1.35Notacin EBNFAade metasmbolos nuevos y cambia la forma de presentar las cosasBNFTERMINALMetasmbolo ::=Equivalencia |Alternativa

Recursividad permitidaEBNFterminalNo-terminalMetasmbolo::= Equivalencia|Alternativa(...)Agrupacin[...]Aparicin opcional{...}Aparicin 0, 1 o ms veces

Recursividad NO permitida (se suple con {})Si algn smbolo del lenguaje coincide con un metasmbolo, el smbolo del lenguaje se pone entre comillas simplesTema 1Introduccin:El HardwareLenguajes y ProgramasIngeniera delSoftwareDescripcin delenguajes de programacinIntroduccin a la ProgramacinLenguaje de Programacin VSintaxis de los nmeros enteros positivos en notacin EBNF

Numero-entero ::= [Signo] Secuencia-dgitosSigno ::= + Secuencia-dgitos ::= Dgito {Dgito}Dgito ::= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9

Sintaxis de los nmeros reales en notacin EBNF?1.36Notacin EBNF (cont.)Explicacin enPIZARRATema 1Introduccin:El HardwareLenguajes y ProgramasIngeniera delSoftwareDescripcin delenguajes de programacinIntroduccin a la ProgramacinLenguaje de Programacin V1.37Diagramas sintcticosTERMINALNo TerminalAlternativaAparicin 0, 1 o ms vecesAparicin opcional*En las reglas de produccin el no terminal de la izquierda se deja sin recuadroTema 1Introduccin:El HardwareLenguajes y ProgramasIngeniera delSoftwareDescripcin delenguajes de programacinIntroduccin a la ProgramacinLenguaje de Programacin V1.38Diagramas sintcticos (cont.)Sintaxis de los nmeros enteros positivos en notacin de diagramas sintcticos

Sintaxis de los nmeros reales en notacin de diagramas sintcticos?

+DgitoDgito1 0 9N entero positivoDgito Explicacin enPIZARRATema 1Introduccin:El HardwareLenguajes y ProgramasIngeniera delSoftwareDescripcin delenguajes de programacinIntroduccin a la ProgramacinLenguaje de Programacin VCrticas, dudas, sugerenciasFederico Peinadowww.federicopeinado.es

1.N39