Publicado el 20 de Junio del 2019
2.886 visualizaciones desde el 20 de Junio del 2019
3,2 MB
30 paginas
Creado hace 7a (29/08/2016)
Fundamentos de programación
1
Grado en Ingeniería Informática
Grado en Ingeniería del Software
Grado en Ingeniería de Computadores
Material de la Prof.ª Mercedes Gómez Albarrán
Facultad de Informática
Versión revisada y ampliada del material del Prof. Luis Hernández Yáñez
Universidad Complutense
Informática, computadora, y programación
¿Qué es la Informática?
¿Qué es una computadora?
Hardware vs. software
¿En qué consiste la programación de computadoras?
Fundamentos de programación: Computadoras y programación
Página 1
El hombre y sus primeros intentos de
procesar la información
Ábaco – 2.000 a.c.
El sumador de Pascal – mediados s.XVII
La calculadora de G.W. von Leibniz – finales s.XVII
La máquina de diferencias de Babbage – s.XIX
El concepto de programa externo
Lady Ada Lovelace es
considerada la primera
programadora
La Pascalina
(Wikipedia)
Fundamentos de programación: Computadoras y programación
Página 2
Comienza la era de la Informática
1945
El modelo de J. von Neumann: estructura de la computadora
El concepto de programa interno
Dispositivos de E/S
C.P.U. (Procesador)
ALU
Unidad Aritmético-Lógica
Unidad de Control
Memoria
Fundamentos de programación: Computadoras y programación
Página 3
Algunos hitos en la vida de la Informática
¿Cuándo se crean los primeros lenguajes de programación? ¿cuáles
fueron? ¿Es C++ mayor de edad? ¿Quién es más joven: C++ o Java?
¿Cuál puede considerarse el primer virus informático?
¿Quién surge primero: MS-DOS, Windows, UNIX, Linux, Android?
¿Cuándo se crea la WWW?
¿Qué soportes externos conoces: disquete, CD, DVD? ¿Alguno nació
antes que tú?
¿Quién es Alan Turing?
Fundamentos de programación: Computadoras y programación
Página 4
Las computadoras están por todas partes
¡Con múltiples formas distintas de un PC!
Fundamentos de programación: Computadoras y programación
Página 5
¿Qué entiende la computadora?
Computadora: Máquina electrónica digital, dotada de ...
La computadora manipula información digital: esquema binario
¿Por qué no se usa una representación analógica de la información?
¿A qué nos conduce la solución adoptada para evitar el problema
tecnológico?
Fundamentos de programación: Computadoras y programación
Página 6
Lenguaje máquina
a = (b + d)/(c + e)
Pasos
sumar c y e, y guardar el resultado en una dirección de memoria
temporal X
sumar b y d, y guardar el resultado en una dirección de memoria
temporal Y
dividir el contenido de Y por el de X y guardar en la dirección de a
Ejemplo de código máquina
codigoOp direccOp1 direccOp2 direccRes
0000 00001000 00001100 00001110
0000 00011000 00011100 00011110
0101 00011110 00001110 00000100
Fundamentos de programación: Computadoras y programación
Código de la división
Código de la suma
Direcc. Temporal X
Direcc. Temporal Y
Página 7
Lenguaje máquina
Lenguaje de programación de bajo nivel
Nulo nivel de abstracción: los códigos contienen los ceros y unos
que gobiernan directamente los circuitos de la CPU
Totalmente dependiente de la máquina
Cada familia de procesadores usa sus propios códigos,
distintos de los de otras familias
Programación: muy tediosa
Grandes posibilidades de error
Fundamentos de programación: Computadoras y programación
Página 8
(lenguaje ensamblador)
Programa ensamblador
Lenguaje ensamblador
Lenguaje simbólico con una mínima capacidad de abstracción
Nemotécnicos para los códigos que representan
instrucciones
Nombres simbólicos para las direcciones de memoria
a = (b + d)/(c + e)
ADD C, E, X
ADD B, D, Y
DIV Y, X, A
Mayor legibilidad
¿Cómo entiende la máquina este código?
Dependiente de la máquina
Fundamentos de programación: Computadoras y programación
Código fuente
Código objeto
(lenguaje máquina)
Página 9
Lenguajes de programación de alto nivel
Lenguaje que permite expresar el mecanismo de resolución de
problemas usando instrucciones independientemente de la
computadora
Más cercanos a los lenguajes natural y matemático
a = (b + d)/(c + e);
Capacidad de abstracción
Abstracción procedimental
Abstracción de datos
Mayor legibilidad, mayor facilidad de codificación
¿Cómo conseguir que la computadora “entienda” los programas
escritos en lenguajes de alto nivel?
Compiladores e intérpretes
Fundamentos de programación: Computadoras y programación
Página 10
Lenguajes de programación de alto nivel
COBOL
1959
FORTRAN
1954
ALGOL
1958
Lisp
1958
PL/I
CPL
1964
1963
1964
1964
BASIC
Simula
Prolog
1970
C 1971
1970
Pascal
Modula
1975
Smalltalk
1971
Scheme
1975
Logo
1968
C++
1983
Java
1995
2000
C#
Python
1991
Ada
1979
Eiffel
1986
Haskell
1987
Ruby
1993
Fuente: http://www.levenez.com/lang/
Fundamentos de programación: Computadoras y programación
Página 11
Programas y más programas
El sistema operativo
Programas de aplicación
Fundamentos de programación: Computadoras y programación
Página 12
La programación: resolución de problemas
PROGRAMAR ES RESOLVER PROBLEMAS
—Actividades implicadas en la descripción, el desarrollo y la
implementación de soluciones algorítmicas eficaces y eficientes
a problemas bien especificados
—Estado inicial - Entrada del problema - Precondiciones
Datos iniciales y relaciones entre ellos
—Estado final - Salida del problema - Postcondiciones
Datos finales y relaciones entre ellos
—Algoritmo: sistemática que transforma la entrada en la salida
PROGRAMAR NO ES CONOCER LA SINTAXIS DE MUCHOS
LENGUAJES DE PROGRAMACIÓN
—Los lenguajes de programación son un medio para expresar
algoritmos
—Programa: algoritmo expresado en un cierto lenguaje de
programación
Fundamentos de programación: Computadoras y programación
Página 13
Estado
inicial
Algoritmo
Estado
final
La programación: resolución de problemas
El primer problema del montón de 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 es la entrada?
¿Cuál es la salida?
¿Cuál es el algoritmo?
¿Qué lenguaje utilizamos para describir las respuestas a todo lo
anterior?
Fundamentos de programación: Computadoras y programación
Página 14
La programación: resolución de problemas
El segundo problema del montón de fichas
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 es la entrada?
¿Cuál es la salida?
¿Cuál es el algoritmo?
¿Qué lenguaje utilizamos para describir las respuestas a todo lo
anterior?
Fundamentos de programación: Computadoras y programación
Página 15
La programación: resolución de problemas
El tercer problema del montón de 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 es la entrada?
¿Cuál es la salida?
¿Cuál es el algoritmo?
¿Qué lenguaje utilizamos para describir las respuestas a todo lo
anterior?
Fundamentos de programación: Computadoras y programación
Página 16
La programación: resolución de problemas
El cuarto problema del montón de fichas
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 es la entrada?
¿Cuál es la salida?
¿Cuál es el algoritmo?
¿Qué lenguaje utilizamos para describir las respuestas a todo lo
anterior?
Fundamentos de programación: Computadoras y programación
Página 17
La programación: resolución de problemas
El quinto problema del montón de fichas
¡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?
¿Cuál es la entrada?
¿Cuál es la salida?
¿Cuál es el algoritmo?
¿Qué lenguaje utilizamos para describir las respuestas a todo lo
anterior?
Fundamentos de programación: Computadoras y programación
Página 18
La ingeniería del software
El modelo de desarrollo “en cascada”
¿Qué?
Planificación
Análisis
Diseño
Recursos necesarios, presupuesto, plan, …
¿Cómo?
Fundamentos de programación: Computadoras y programación
Página 19
Implementación
Prueba y depuración
Mantenimiento
Aplicación
Aplicación
validada
Aplicación
modificada
La ingeniería del software
Casa
Quiero 3 habitaciones,
2 baños, garaje, ...
Planos, diseño circuito
eléctrico y de agua, ...
Análisis
Diseño
Software
¿Qué tiene que hacer
exactamente el software?
¿Cómo vamos a
organizar el software?
¿Qué hará cada parte?
Se construye la casa.
Implementación
Se construye el software.
Se comprueba la solidez de la
estructura, el funcionamiento de
las instalaciones, el acabado, ...
Prueba
Algunas reformas: se cierra
la terraza, se instala aire
acondicionado, ...
Mantenimiento
Ponemos a prueba nuestro
software, incluso en
situaciones límite.
Pequeñas modificaciones o
correcciones, actualizaciones,
etc...
Fundamentos de programación: Computadoras y programación
Página 20
Los aspectos de los lenguajes de programación
Los lenguajes de programación pueden describirse:
A nivel sintáctico
—Descripción de cómo se pueden
Comentarios de: Fundamentos de programación (0)
No hay comentarios