Tema 1.
Problemas, algoritmos y
programas
Introducción a la Informática y la Programación (IIP)
Curso 2023/24
Grupos I, J
Departamento de Sistemas Informáticos y Computación
Índice
1. Problemas, algoritmos y programas
2. Programas y la actividad de la Programación
3. Lenguajes de programación
4. Compilación de los programas
IIP. ETSINF. UPV - 2023/24 2
1. Problemas, algoritmos y programas
• Un ordenador es un mecanismo digital de propósito general, que se
convierte en un mecanismo para un uso específico cuando procesa un
algoritmo o programa determinado.
• El algoritmo o secuencia de instrucciones especifica las acciones que ha de
ejecutar y en qué orden para completar una tarea determinada.
IIP. ETSINF. UPV - 2023/24 3
1. Problemas, algoritmos y programas
Algoritmo
o
programa
Información de entrada Información de salida
Datos Ordenador Resultados
IIP. ETSINF. UPV - 2023/24 4
1. Problemas, algoritmos y programas
• El concepto de algoritmo es matemático (funciones recursivas,
máquinas de Turing, ...), no es exclusivo del ámbito de la
programación.
• Problemas algorítmicos o computacionales: aquellos que se
pueden resolver de forma “mecánica” o “automática”, es
decir, aplicando unas reglas conocidas y preestablecidas,
como por ejemplo los relacionados con el cálculo numérico, el
tratamiento de palabras o la representación gráfica.
IIP. ETSINF. UPV - 2023/24 5
1. Problemas, algoritmos y programas
• Ejemplos concretos de problemas algorítmicos:
– Determinar el producto de dos números a y b.
– Determinar la raíz cuadrada positiva del número 2.
– Determinar la raíz cuadrada positiva de un número n cualquiera.
– Determinar si el número n, entero mayor que 1, es primo.
– Dada una lista de palabras, determinar las palabras repetidas.
– Determinar si una palabra es de la lengua castellana.
– Separar una palabra en sus sílabas.
– Ordenar y listar alfabéticamente todas las palabras del castellano.
– Dibujar en pantalla un círculo de radio r.
IIP. ETSINF. UPV - 2023/24 6
1. Problemas, algoritmos y programas
• Los problemas han de definirse de forma general y precisa, evitando
ambigüedades.
Por ejemplo, el enunciado “Determinar la raíz cuadrada positiva de un
número n” no es bastante preciso, hay que especificar sobre qué números
se trabaja:
“Determinar la raíz cuadrada de un número n entero no negativo,
cualquiera”.
• Definido un problema P general con precisión, un algoritmo A que
resuelve P es un conjunto de reglas (o instrucciones) que definen cómo
llevar a cabo la resolución de P de forma exacta y efectiva en un tiempo
finito.
IIP. ETSINF. UPV - 2023/24 7
1. Problemas, algoritmos y programas
• Ejemplo . Dado un entero n > 1, ¿es un número primo?
Algoritmo 1. Considerar todos los números comprendidos entre 2 y n (excluido):
Para cada número en esta sucesión comprobar si divide a n.
Si algún número divide a n, entonces n no es primo, en caso contrario es primo.
Algoritmo 2. Seguir los pasos siguientes en orden ascendente:
Paso 1. Sea x un entero igual a 2.
Paso 2. Si x = n parar: n es primo.
Paso 3. Comprobar si x divide a n, entonces parar: n no es primo.
Paso 4. Incrementar x en 1, volver al Paso 2.
• La descripción o nivel de detalle de la solución de un problema en términos
algorítmicos dependen de qué o quién ha de procesarlo.
IIP. ETSINF. UPV - 2023/24 8
2. Programas y la actividad de la Programación
• Un procesador es cualquier entidad capaz de interpretar y ejecutar un
cierto repertorio de instrucciones.
• Un programa es uno o más algoritmos escritos con una notación precisa
para que puedan ser ejecutados por el procesador de un ordenador.
• Un lenguaje de programación es una notación, conjunto de reglas y
definiciones que determinen tanto lo que se puede escribir en un programa
(y el procesador puede interpretar) como el resultado de la ejecución de
este programa por el procesador.
• La Programación es la disciplina relacionada con la resolución de
problemas por ordenador.
IIP. ETSINF. UPV - 2023/24 9
2. Programas y la actividad de la Programación
• La tarea de la Programación en aplicaciones reales de una cierta
envergadura es bastante compleja.
• Según la complejidad del problema a resolver se distingue entre:
– Programación a escala reducida: número reducido de líneas de
programa, intervención de una sola persona. Por ejemplo, un
programa para ordenar listas.
– Programación a gran escala: número elevado de líneas de programa,
equipo de programadores. Por ejemplo, el desarrollo de un sistema
operativo.
IIP. ETSINF. UPV - 2023/24 10
3. Lenguajes de programación
• Los orígenes de los lenguajes de programación se encuentran en las
máquinas de cálculo, máquinas para resolver problemas específicos.
• Ejemplos:
– Máquina sumadora de Pascal, alrededor de 1640.
– Máquina de Leibniz, alrededor de 1670 (sumas, restas, productos,
divisiones, raíces cuadradas).
– Máquina diferencial de Babbage, alrededor de 1820, tabulación de
polinomios.
– Máquina analítica de Babbage, diseño alrededor de 1840, máquina
programable que se debería usar con un lenguaje de programación
precursor de los lenguajes modernos.
IIP. ETSINF. UPV - 2023/24 11
3. Lenguajes de programación
• En el siglo XX se obtuvieron los primeros ordenadores o máquinas de propósito
general. Los avances de las Matemáticas y de la tecnología en el siglo XX culminan
en la máquina von Neumann, arquitectura desarrollada en los 40, y usada en los
ordenadores electrónicos de la época.
Dispositivo
de entrada
PROGRAMA Unidad de Control
DATOS DEL
PROGRAMA Dispositivo
de salida
ALU Memoria
externa
Memoria
principal CPU
12
IIP. ETSINF. UPV - 2023/24
3. Lenguajes de programación
• A nivel máquina, un programa y los datos, se codifican como números en binario:
lenguaje máquina.
• Ejemplo: Código, en una cierta máquina, del producto de unos valores cargados en
memoria.
Código de Posición de memoria
la operación sobre la que trabaja
10111100 00100100 cargar en la ALU el valor que está en 24h
10111111 00110011 multiplicar por el valor que está en 33h
11001110 00111100 almacenar el resultado en 3Ch
10111100 00100100
10111111 00110011
11001110 00111100 Unidad de Control Los datos del programa
... pueden tomar un valor
24h 10011...
inicial, se puede consultar,
y se pueden modificar o
33h 11010...
variar (variables).
3Ch ALU
Memoria principal CPU
IIP. ETSINF. UPV - 2023/24 13
3. Lenguajes de programación
• Es evidente que los programas escritos en lenguaje máquina resultan
ilegibles.
• Los lenguajes ensambladores usan mnemónicos e identificadores para
instrucciones y datos.
Load 24, 10111100 00100100 cargar el valor en 24h
Multiply 33, 10111111 00110011 multiplicar por el valor valor en 33h
Store 3C, 11001110 00111100 almacenar en 3Ch
• Los dos son lenguajes tan próximos a la máquina que se conocen como
lenguajes de bajo nivel.
• Sería deseable poder expresarlo con una notación del siguiente estilo:
c <-- a*b
En donde a, b, c serían nombres para los datos a multiplicar y el resultado
respectivamente.
IIP. ETSINF. UPV - 2023/24 14
3. Lenguajes de programación
• Frente a los lenguajes de bajo nivel se tienen los lenguajes de alto nivel que:
– Disponen de operadores y estructuras más próximas a las humanas, lo que
permite al programador dar órdenes de forma más sencilla al computador.
– Son más seguros que el código máquina y ayudan a no cometer errores
evidentes.
– El código es transportable (independiente de la máquina).
– El código es más legible.
• Los lenguajes de alto nivel que contienen una instrucción como la del
ejemplo anterior:
c <-- a*b
se denominan imperativos, aunque existen otros modelos como los lógicos y
funcionales (LTPP).
IIP. ETSINF. UPV - 2023/24 15
4. Compilación de los programas
• Los programas desarrollados en un lenguaje de alto nivel, se escriben
en un fichero de texto que se denomina fichero fuente.
• Para poderlo ejecutar, hay que traducirlo a las instrucciones que es
capaz de entender el sistema en el que se trabaja.
• En la compilación se traducen (compilan) por medio de un programa
(compilador) todas las instrucciones del fichero fuente a instrucciones
en lenguaje máquina, (o en un lenguaje muy cercano a lenguaje
máquina).
• El código obtenido se cargará en memoria para su ejecución.
• Lo habitual es manejar un entorno de programación, que incluye un
editor de texto para escribir el fuente, un compilador y otras
herramientas.
IIP. ETSINF. UPV - 2023/24 16
4. Compilación de los programas
Algoritmo
1.- Edición
Fichero fuente
2.- Compilación
Fichero máquina
3.- Ejecución
Resultados
IIP. ETSINF. UPV - 2023/24 17