Title | Tema 1 Fundamentos de la programación |
---|---|
Author | Carlos Gonzalez |
Course | Fundamentos de Programación |
Institution | Universidad Complutense de Madrid |
Pages | 8 |
File Size | 585.2 KB |
File Type | |
Total Downloads | 51 |
Total Views | 146 |
Download Tema 1 Fundamentos de la programación PDF
Informática, computadora, y programación
Fundamentos de programación
¿Qué es la Informática?
¿Qué es una computadora?
Grado Grado en en Ingeniería Ingeniería Informática Informática Grado Grado en en Ingeniería Ingeniería del del Software Software Grado Gradoen enIngeniería Ingenieríade deComputadores Computadores
Hardware vs. software
Material Materialde dela laProf.ª Prof.ªMercedes MercedesGómez Gómez Albarrán Albarrán
¿En qué consiste la programación de computadoras?
Versión revisada y ampliada del material del Prof. Luis Hernández Yáñez
Facultad Facultad de de Informática Informática Universidad Complutense Fundamentos Fundamentos dede programación: programación: Computadoras Computadoras y programación y programación
El hombre y sus primeros intentos de procesar la información
Página 1
Comienza la era de la Informática
Ábaco – 2.000 a.c.
1945
El Elsumador sumadorde dePascal Pascal– mediados s.XVII
La Pascalina (Wikipedia)
La Lacalculadora calculadorade deG.W. G.W.von vonLeibniz Leibniz– finales s.XVII
ElElmodelo modelode deJ.J.von vonNeumann: Neumann:estructura estructurade delalacomputadora computadora El Elconcepto conceptode deprograma programainterno interno Dispositivos de E/S
La Lamáquina máquinade dediferencias diferenciasde deBabbage Babbage– s.XIX El Elconcepto conceptode deprograma programaexterno externo
C.P.U. (Procesador) ALU Unidad AritméticoAritmético-Lógica
Lady Lady Ada Ada Lovelace Lovelace es es considerada la primera programadora
Memoria
Unidad de Control Fundamentos Fundamentos dede programación: programación: Computadoras Computadoras y programación y programación
Página 2
Fundamentos Fundamentos dede programación: programación: Computadoras Computadoras y programación y programación
Página 3
Las computadoras están por todas partes
Algunos hitos en la vida de la Informática ¿Cuándo ¿Cuándosesecrean creanlos losprimeros primeroslenguajes lenguajesdedeprogramación? programación?¿cuáles ¿cuáles fueron? fueron?¿Es ¿EsC++ C++mayor mayordedeedad? edad?¿Quién ¿Quiénesesmás másjoven: joven:C++ C++ooJava? Java?
¡Con ¡Con múltiples múltiples formas formas distintas distintas de de un un PC! PC!
¿Cuál ¿Cuálpuede puedeconsiderarse considerarseelelprimer primervirus virusinformático? informático? ¿Quién ¿Quiénsurge surgeprimero: primero:MS MS -DOS, Windows, UNIX, Linux, Android ? ¿Cuándo ¿Cuándose secrea creala laWWW? WWW? ¿Qué ¿Quésoportes soportesexternos externosconoces: conoces:disquete, disquete,CD, CD,DVD? DVD?¿Alguno ¿Algunonació nació antes antes que que tú? tú? ¿Quién ¿Quién es es Alan Alan Turing Turing?? Fundamentos Fundamentos dede programación: programación: Computadoras Computadoras y programación y programación
Fundamentos Fundamentos dede programación: programación: Computadoras Computadoras y programación y programación
Página 4
¿Qué entiende la computadora?
Página 5
Lenguaje máquina a = (b + d)/(c + e)
Computadora:: Máquina Máquina electrónica electrónica digital digital,, dotada dotada de de ... ... Pasos
sumar c y e , ,yyguardar guardarelelresultado resultadoen enuna unadirección direcciónde dememoria memoria temporal X sumar b y d, ,yyguardar guardarelelresultado resultadoen enuna unadirección direcciónde dememoria memoria temporal Y dividir el el contenido contenido de deY guardar en en la la dirección dirección de dea Y por el de X yy guardar a dividir
La Lacomputadora computadoramanipula manipulainformación informacióndigital: digital:esquema esquemabinario binario ¿Por ¿Porqué quéno noseseusa usauna unarepresentación representaciónanalógica analógicade delalainformación? información?
Ejemplo de código máquina ¿A ¿Aqué quénos nosconduce conducelalasolución soluciónadoptada adoptadapara paraevitar evitarelelproblema problema tecnológico?
codigoOp direccOp1 direccOp2 direccRes 0000 00001000 00001100 00001110 0000 00011000 00011100 00011110 0101 00011110 00001110 00000100 Código de la división
Fundamentos Fundamentos dede programación: programación: Computadoras Computadoras y programación y programación
Página 6
Fundamentos Fundamentos dede programación: programación: Computadoras Computadoras y programación y programación
Código de la suma
Direcc. Temporal X
Direcc. Temporal Y Página 7
Lenguaje máquina
Lenguaje ensamblador
Lenguaje Lenguajede deprogramación programaciónde debajo bajonivel nivel Nulo Nulonivel nivelde deabstracción: abstracción:los loscódigos códigoscontienen contienenlos losceros cerosyyunos unos que quegobiernan gobiernandirectamente directamentelos loscircuitos circuitosde delalaCPU CPU
Lenguaje Lenguajesimbólico simbólicocon conuna unamínima mínimacapacidad capacidadde deabstracción abstracción Nemotécnicos Nemotécnicospara paralos loscódigos códigosque querepresentan representan
instrucciones Nombres Nombressimbólicos simbólicospara paralas lasdirecciones direccionesde dememoria memoria
Totalmente Totalmentedependiente dependientede delalamáquina máquina Cada Cadafamilia familiade deprocesadores procesadoresusa usasus suspropios propioscódigos, códigos, distintos distintosde delos losde deotras otrasfamilias familias
a = (b + d)/(c + e) Código fuente (lenguaje (lenguaje ensamblador) ensamblador
ADD C, E, X ADD B, D, Y DIV Y, X, A
Programación: Programación: muy muytediosa
Programa Programa ensamblador ensamblador
Grandes Grandesposibilidades posibilidadesde deerror error Mayor Mayor legibilidad legibilidad ¿Cómo ¿Cómoentiende entiendelalamáquina máquinaeste estecódigo? código?
Código objeto (lenguaje máquina)
Dependiente Dependientede delalamáquina máquina
Fundamentos Fundamentos dede programación: programación: Computadoras Computadoras y programación y programación
Página 8
Lenguajes de programación de alto nivel
Fundamentos Fundamentos dede programación: programación: Computadoras Computadoras y programación y programación
Página 9
Lenguajes de programación de alto nivel
Lenguaje Lenguajeque quepermite permiteexpresar expresarelelmecanismo mecanismodederesolución resolucióndede
Prolog
problemas problemasusando usandoinstrucciones instruccionesindependientemente independientementededelala computadora computadora
Más Máscercanos cercanosaalos loslenguajes lenguajesnatural naturalyymatemático matemático
COBOL 1959
1970
Java
PL/I
C++
1964
1983
FORTRAN 1954
C#
C
CPL
2000
1971
1963
a = (b + d)/(c + e);
1995
Python Python
Capacidad Capacidadde deabstracción abstracción
ALGOL
Pascal
Modula
1958
1970
1975
Abstracciónprocedimental procedimental Abstracción
1991
BASIC 1964
Abstracción Abstracción de de datos datos
Ada
Eiffel Eiffel
1979
1986
Simula 1964
Mayor Mayorlegibilidad, legibilidad,mayor mayorfacilidad facilidadde decodificación codificación
Smalltalk Smalltalk
Ruby
1971
1993
¿Cómo ¿Cómoconseguir conseguirque quelalacomputadora computadora“entienda” “entienda”los losprogramas programas
escritos escritosen enlenguajes lenguajesde dealto altonivel? nivel?
Haskell Scheme
Lisp
1987
1975
1958
Compiladores Compiladoreseeintérpretes intérpretes
Logo 1968
Fuente: http://www.levenez.com/lang/ http://www.levenez.com/lang/ Fundamentos Fundamentos dede programación: programación: Computadoras Computadoras y programación y programación
Página 10
Fundamentos Fundamentos dede programación: programación: Computadoras Computadoras y programación y programación
Página 11
Programas y más programas
La programación: resolución de problemas PROGRAMAR ES RESOLVER RESOLVER PROBLEMAS PROBLEMAS
El sistema operativo
—
Actividades Actividadesimplicadas implicadasen enlaladescripción, descripción,eleldesarrollo desarrolloyylala implementación implementación de de soluciones solucionesalgorítmicas algorítmicaseficaces eficacesyyeficientes eficientes a problemas problemasbien bien especificados especificados —
—
Programas de aplicación
—
PROGRAMAR NO ES CONOCER CONOCER LA LA SINTAXIS SINTAXIS DE DE MUCHOS MUCHOS
LENGUAJES LENGUAJES DE DE PROGRAMACIÓN PROGRAMACIÓN — —
Fundamentos Fundamentos dede programación: programación: Computadoras Computadoras y programación y programación
Página 12
Los Loslenguajes lenguajesde deprogramación programaciónson sonun unmedio mediopara paraexpresar expresar algoritmos Programa: Programa:algoritmo algoritmoexpresado expresadoen enun uncierto ciertolenguaje lenguajede de programación
Fundamentos Fundamentos dede programación: programación: Computadoras Computadoras y programación y programación
La programación: resolución de problemas
La programación: resolución de problemas
El Elprimer primerproblema problemadel delmontón montónde defichas fichas
El Elsegundo segundoproblema problemadel delmontón montónde defichas fichas
Supongamos que tenemos una secuencia de fichas, cada una de las cuales tiene escrito el nombre de una persona junto con otros datos personales (fecha de nacimiento, dirección, número de teléfono). Las fichas están ordenadas alfabéticamente por el nombre. Queremos felicitar por teléfono a los que cumplen años hoy. ¿Cómo detectamos a los cumpleañeros?
¿Cuál ¿Cuál es es la la entrada? entrada?
Página 13
Supongamos que volvemos a tener la misma secuencia de fichas. Nos pasan el nombre de una persona a la que hay que felicitar por teléfono. ¿Cómo lo hacemos?
¿Cuál ¿Cuál es es la la entrada? entrada?
¿Cuál ¿Cuál es es la la salida? salida?
¿Cuál ¿Cuál es es la la salida? salida?
¿Cuál ¿Cuál es es el el algoritmo? algoritmo?
¿Cuál ¿Cuál es es el el algoritmo? algoritmo?
¿Qué ¿Quélenguaje lenguajeutilizamos utilizamospara paradescribir describirlas lasrespuestas respuestasaatodo todololo
¿Qué ¿Quélenguaje lenguajeutilizamos utilizamospara paradescribir describirlas lasrespuestas respuestasaatodo todololo
anterior?
Fundamentos Fundamentos dede programación: programación: Computadoras Computadoras y programación y programación
anterior? Página 14
Estado inicial
Estado inicial - Entrada Entrada del del problema problema - Precondiciones Datos Datosiniciales iniciales yy relaciones relacionesentre entre ellos ellos Algoritmo Estado final - Salida Salida del del problema problema - Postcondiciones Postcondiciones Datos Datosfinales finalesyy relaciones relacionesentre entre ellos ello Algoritmo: Algoritmo:sistemática sistemáticaque quetransforma transformalalaentrada entradaen enlalasalida salida Estado
Fundamentos Fundamentos dede programación: programación: Computadoras Computadoras y programación y programación
Página 15
final
La programación: resolución de problemas
La programación: resolución de problemas
El Eltercer tercerproblema problemadel delmontón montónde defichas fichas
El Elcuarto cuartoproblema problemadel delmontón montónde defichas fichas
Supongamos que volvemos a tener la misma secuencia de fichas. Nos pasan el nombre de una persona y su nuevo número de teléfono. ¿Cómo hacemos el cambio? ¿Y si la persona no está?
¿Cuál ¿Cuál es es la la entrada? entrada?
De nuevo tenemos la misma secuencia de fichas. Nos dan una nueva ficha y hay que incorporarla al montón existente sin romper el orden. ¿Cómo averiguamos dónde incorporarla?
¿Cuál ¿Cuál es es la la entrada? entrada?
¿Cuál ¿Cuál es es la la salida? salida?
¿Cuál ¿Cuál es es la la salida? salida?
¿Cuál ¿Cuál es es el el algoritmo? algoritmo?
¿Cuál ¿Cuál es es el el algoritmo? algoritmo?
¿Qué ¿Quélenguaje lenguajeutilizamos utilizamospara paradescribir describirlas lasrespuestas respuestasaatodo todololo
¿Qué ¿Quélenguaje lenguajeutilizamos utilizamospara paradescribir describirlas lasrespuestas respuestasaatodo todololo
anterior? Fundamentos Fundamentos dede programación: programación: Computadoras Computadoras y programación y programación
Página 16
anterior? Fundamentos Fundamentos dede programación: programación: Computadoras Computadoras y programación y programación
La programación: resolución de problemas
La ingeniería del software
El Elquinto quintoproblema problemadel delmontón montónde defichas fichas
El Elmodelo modelode dedesarrollo desarrollo“en “encascada” cascada”
¡Nos han desordenado la secuencia de fichas! De nuevo nos pasan el nombre de una persona a la que hay que felicitar. ¿Cómo lo hacemos ahora?
Página 17
Recursos necesarios, presupuesto, plan, …
Planificación
¿Qué?
Análisis
¿Cómo?
Diseño Implementación Implementación
¿Cuál ¿Cuál es es la la entrada? entrada? ¿Cuál ¿Cuál es es la la salida? salida?
Aplicación Aplicación validada
Prueba y depuración
¿Cuál ¿Cuál es es el el algoritmo? algoritmo? ¿Qué ¿Quélenguaje lenguajeutilizamos utilizamospara paradescribir describirlas lasrespuestas respuestasaatodo todololo
anterior? Fundamentos Fundamentos dede programación: programación: Computadoras Computadoras y programación y programación
Página 18
Aplicación modificada
Mantenimiento Mantenimiento
Fundamentos Fundamentos dede programación: programación: Computadoras Computadoras y programación y programación
Página 19
La ingeniería del software
Los aspectos de los lenguajes de programación Los Los lenguajes lenguajes de de programación programación pueden pueden describirse: describirse:
Casa
Software
Quiero Quiero 33 habitaciones, habitaciones, 22 baños, baños, garaje, garaje, ... ...
Análisis
¿Qué ¿Qué tiene que hacer exactamente exactamente el el software? software?
Planos, Planos, diseño diseño circuito circuito eléctrico eléctrico yy de de agua, agua, ... ...
Diseño
¿Cómo vamos a organizar organizar el software? software? ¿Qué hará cada parte?
Se Se construye construye la la casa. casa.
Implementación Implementación
Se Se construye construye el el software. software.
Se Se comprueba comprueba la la solidez solidez de de la la estructura, estructura, el el funcionamiento funcionamientode de las las instalaciones, instalaciones,el el acabado, acabado,... ...
Prueba
Ponemos Ponemos aa prueba prueba nuestro nuestro software, software,incluso inclusoen en situaciones situaciones límite. límite.
Algunas Algunas reformas: reformas: se se cierra cierra la la terraza, terraza, se se instala instala aire aire acondicionado, acondicionado, ... ...
Mantenimiento
Pequeñas Pequeñas modificaciones modificaciones oo correcciones, correcciones, actualizaciones, actualizaciones, etc...
Fundamentos Fundamentos dede programación: programación: Computadoras Computadoras y programación y programación
Página 20
Sintaxis de los lenguajes de programación
—
—
Descripción Descripciónde decómo cómosesepueden puedenconstruir construiryysecuenciar secuenciarlos los elementos elementos del del lenguaje lenguaje Es Esuna unadescripción descripciónhecha hechausando usandoalgún algúnformalismo formalismoartificial artificial
A A nivel nivel semántico semántico —
Descripción Descripcióndel delsignificado significadode decada cadaelemento elementodel dellenguaje lenguaje
—
Puede Puedeusarse usarselenguaje lenguajenatural naturalooexpresarse expresarsede demanera maneraformal formal
A A nivel nivel pragmático pragmático —
Descripción Descripciónde decómo cómose seutiliza utilizaelellenguaje lenguajede deforma formapráctica práctica
—
Lo Lotípico: típico:usar usartutoriales tutorialesyyejemplos ejemplosde deprogramas programas
Fundamentos Fundamentos dede programación: programación: Computadoras Computadoras y programación y programación
Página 21
Sintaxis de los lenguajes de programación: BNF
Sintaxis Sintaxis==reglas reglasque queespecifican especificanyypermiten permitenverificar verificarlalacorrección correcciónde delas las sentencias sentencias de de un un lenguaje lenguaje Formalismos: BNF ((Backus Backus--Naur Form Form)) EBNF ((Extended Extended Backus Backus--Naur Form Form)) Diagramas Diagramas sintácticos
Fundamentos Fundamentos dede programación: programación: Computadoras Computadoras y programación y programación
A A nivel nivel sintáctico sintáctico
Página 22
TERMINAL
Símbolo del lenguaje que se está definiendo Símbolo que se define en términos de otros (terminales y no terminales) Regla de producción Descripción de símbolos no terminales. Parte izquierda: símbolo no terminal Parte derecha: combinación de terminales y no terminales; vacío Metasímbolos Símbolos del formalismo ::= Equivalencia | Alternativa
Fundamentos Fundamentos dede programación: programación: Computadoras Computadoras y programación y programación
Página 23
Sintaxis de los lenguajes de programación: BNF
Sintaxis de los lenguajes de programación: EBNF
Reglas BNF para expresar la sintaxis de un número entero positivo
en un cierto lenguaje de programación
+23
::= ::= + | ::= | ::= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 ::=
1374 1+34 3.4
BNF TERMINAL Metasímbolos ::= Equivalencia | Alternativa
EBNF “terminal” No-terminal Metasímbolos ::= Equivalencia | Alternativa { } {...} Aparición ó 0, 1, 2,... veces [...] Opcionalidad (...) Agrupaciones
Recursividad
Recursividad no permitida
002
Reglas BNF para expresar la sintaxis de un número entero
Coincidencia de metasímbolo con
símbolo del lenguaje: el metasímbolo entre comillas simples
Fundamentos Fundamentos dede programación: programación: Computadoras Computadoras y programación y programación
Página 24
Fundamentos Fundamentos dede programación: programación: Computadoras Computadoras y ...