Tutorial
Tutorial
i i i l t di l
CONTENIDOS INTRODUCCIÓN
1. La computadora como herramienta para resolver problemas.
Vamos a definir qué es una computadora, su organización física: CPU, memoria Las computadoras electrónicas modernas son uno de los productos más importantes
principal, dispositivos de entrada/salida, etc… del siglo XX.
2 Entidades
2. E tid d primitivas
i iti para ell d
desarrollo
ll dde algoritmos.
l it Son una herramienta esencial en muchas áreas: industria, ciencia, educación, etc
Constantes, variables, tipos de datos y expresiones. El papel que juegan los lenguajes de programación y los programas es esencial; sin
una lista de instrucciones a seguir, las computadoras son inútiles.
3. Metodología a seguir para la resolución de problemas con computadoras
Los lenguajes de programación nos permiten escribir esos programas y por
Describir el concepto de algoritmo, diseño de algoritmos como paso previo a la
consiguiente comunicarnos con las computadoras.
creación de un programa y representación de algoritmos: diagramas de flujo.
Las computadoras son una herramienta para resolver problemas. La resolución de un
4. Codificación de algoritmos
problema exige al menos los siguientes pasos:
Tipos de lenguajes, paradigmas de programación, estilos de programación.
1. Definición o análisis del problema
5. Compiladores (compilador de C++)
2. Diseño del algoritmo
Descripción, para qué se usan, fases de la compilación, etc …
3. Transformación del algoritmo en un programa: codificación
4. Ejecución y validación del programa
0 ‘a’
memoria
En la dirección de memoria 2,
Dirección de la celda
Memoria central de una se encuentra almacenado el
Contenido de la celda
computadora carácter ‘b’
• Una constante es un dato cuyo valor no cambia durante la ejecución del • Los identificadores representan los datos de un programa.
programa.
• Es una secuencia de caracteres que sirve para identificar una posición en
Ejemplo: pi = 3,1416 la memoria de la computadora, y nos permite acceder al contenido de
• Las variables son palabras que manipulan datos, en forma técnica son dicha posición.
porciones de memoria que almacenan un valor. Dicho valor puede ser
• Reglas para formar un identificador:
modificado en cualquier momento durante la ejecución del programa.
- Debe comenzar con una letra.
• Por lo tanto una variable esta constituida por un nombre y un valor.
- Después de la primera letra pueden aparecer otras letras, dígitos y caracteres.
• El nombre de la variable o constante lo llamaremos identificador.
- No debe contener espacios en blanco.
• El valor de la variable puede ser simple o compuesto. Dependiendo del
Ejemplos:
valor
l dde lla variable,
i bl decimos
d i que dicha
di h variable
i bl es de
d un tipo de dato.
Por ejemplo, si el valor de la variable es un entero, decimos que la SUMA n_primo
variable es de tipo entero. NUMERO1 num_horas
• Todos los datos tienen un tipo asociado con ellos. Un dato puede ser un • Son un conjunto finito de valores
simple carácter, tal como ‘b’, un valor entero tal como 35. El tipo de dato • Un Array es una estructura de datos que almacena bajo el mismo nombre
determina la naturaleza del valor que puede tomar una variable.
variable
(variable) a una colección de datos del mismo tipo. Los arrays se
Datos Numéricos: son los números enteros y los reales. Este tipo de datos caracterizan por:
permiten realizar operaciones aritméticas comunes.
− Almacenan los elementos en posiciones contiguas de memoria.
memoria
Datos Lógicos: Son aquellos que sólo pueden tener dos valores (cierto o
− Tienen un mismo nombre de variable que representa a todos los
falso). Son el resultado de una comparación entre otros datos (numéricos elementos.
o alfanuméricos).
Datos Alfanuméricos: Es una secuencia de caracteres, por ejemplo, − Para hacer referencia a esos elementos es necesario utilizar un índice
que especifica el lugar que ocupa cada elemento dentro del array.
nombres de personas, direcciones, etc. Este tipo de datos se representan
encerrados entre comillas. Ejemplos: ”Hola amigos” ó “1997” • Tipo de Arrays : Vectores y Matrices.
VECTORES MATRICES
• Es un array de "N" elementos donde "N" recibe el nombre de longitud o • Es un array de M * N elementos organizados en dos dimensiones donde
tamaño del vector. "M" es el numero de filas y "N" el numero de columnas.
• Para hacer referencia a un elemento del vector se usa el nombre del • Para hacer referencia a un elemento de la matriz, se usa el nombre
mismo, seguido del índice (entre corchetes), el cual indica una posición seguido de dos índices (entre corchetes), que indican la fila y la columna
en particular del vector. donde se encuentra almacenado el dato.
Esto es un vector de 4 elementos Esto es una matriz 3 * 3 elementos
Indices del vector 3 columnas
1 2 3 4 1 2 3
alumnos “ana” “luis” “pepe” “lucia” 1 O X
Juego = 2 X O O El dato almacenado en la fila 3 y
El nombre del vector El contenido de la posición 3 es “pepe” 3 X columna 1 es X
es una variable 3 filas juego[3,1] = X
alumnos[3] = “pepe”
PRINCIPALES DEFINICIONES
EXPRESIONES
Concepto de ALGORITMO Para llegar a ser un programador eficaz se necesita aprender a resolver
problemas de un modo riguroso y sistemático. Esto significa que sólo se
El objetivo fundamental de éste curso es enseñar a resolver problemas puede llegar a realizar un buen programa con el diseño previo de un
algoritmo.
mediante una computadora. Para ello necesitamos estudiar una
metodología
t d l í que nos ayudará
d á en didicha
h tarea.
t
Resolución de un problema
ALGORITMOS ALGORITMO
Los algoritmos son independientes tanto del lenguaje de programación en Las características fundamentales son:
que se expresan como de la computadora donde se ejecutan.
Ejemplo:
Las fases de resolución de un problema:
Realizar la suma de todos los números pares entre 2 y 100. 11. Definición o análisis del problema
Consiste en entender el problema que se quiere resolver.
El problema consiste en sumar 2+4+6+ …+ 98+100. En ésta fase se determina QUÉ debe hacer el algoritmo.
Utilizamos
ili las
l palabras
l b SUMA y NUMERO para representar las
l sumas
2. Diseño del algoritmo
sucesivas (2+4), (2+4+6), etc.
Pensar e idear un plan para resolver el problema. En ésta fase de
El algoritmo es el siguiente: determina CÓMO se hace la tarea solicitada
solicitada.
SUMA Y NUMERO
1. Inicialmente SUMA vale 0 son variables 3. Transformación del algoritmo en un programa: codificación
2. Inicialmente el valor de NUMERO es 2 Llevar a cabo el plan, es decir, representar el algoritmo en forma de
3. Sumar NUMERO a SUMA programa.
4. Aumentar el valor de NUMERO en dos unidades
4. Ejecución y validación del programa. Corrección.
5.
5 Si ell valor
l ded NUMERO ≤100 entonces ir al paso 3
Evaluar el programa en cuanto a capacidad para resolver el problema
6. En caso contrario, finalizar el proceso.
planteado. Juegos de pruebas.
Para poder definir correctamente un problema, es conveniente responder a Para diseñar un algoritmo, es decir, para especificar el CÓMO se hace una
las siguientes preguntas: determinada tarea, se dispone de dos herramientas:
i¿Qué entradas se requieren? z Diagramas de flujo
i¿Cuál es la salida deseada? z Pseudocódigo
i¿Qué métodod produce
d lla salida
lid ddeseada?
d
Diagramas de flujo
Ejemplo:
Se desea obtener el coste final de un automóvil sabiendo que el importe inicial ⇒ Es la representación gráfica de un algoritmo.
es de 12.000 € y los descuentos a aplicar son del 10% si la venta se produce ⇒ Permite representar la secuencia de operaciones que se deben realizar para
antes de Junio de 2004 y del 20% si se produce con posterioridad. la resolución de un problema, es decir, permite representar el flujo de
información desde su entrada hasta su salida.
⇒ Dispone de un conjunto de símbolos gráficos con significado referente al
Entradas: Coste original y los descuentos según el mes.
tipo de instrucción que se va a realizar.
Salidas: Coste del automóvil hasta Junio, coste del automóvil a partir de Junio.
Proceso: Cálculo del descuento aplicado hasta Junio y a partir de Junio. ⇒ Dichos símbolos van unidos con flechas que indican el orden de secuencia
a seguir.
Para diseñar un algoritmo, es decir, para especificar el CÓMO se hace una Los símbolos gráficos utilizados han sido normalizados por el instituto
determinada tarea, se dispone de varias herramientas: norteamericano de normalización (ANSI).
z Diagramas de flujo Los más frecuentemente utilizados son:
z Pseudocódigo
Indica el inicio y final del diagrama de flujo
Pseudocódigo
Indica la entrada y salida de datos
⇒ Es
E un llenguaje
j utilizado
ili d para ddefinir
fi i algoritmos
l i con una sintaxis
i i
muy parecida a la de un lenguaje de programación. Símbolo de proceso.
⇒ Las instrucciones se escriben en palabras similares al inglés o al Indica la realización de una operación.
español, facilitando así la comprensión el algoritmo. si no Símbolo de decisión.
? Indica operaciones de comparación entre datos.
⇒ La ventaja es que es muy fácil pasar de pseudocódigo a un En función del resultado se sigue por distintos caminos.
lenguaje de programación.
Llamada a otro proceso complejo. Llamada a subrutina.
Diseño del algoritmo: Diagramas de flujo Diseño del algoritmo: Diagramas de flujo
Ejemplo: Inicio
Otros símbolos:
Realizar la suma de todos los números
pares entre
t 2 y 100
100. SUMA ← 0
Indica la salida de información por impresora. NUMERO ← 2
Ejercicio 2:
Pseudocódigo SUMA ← SUMA+ NUMERO
Realizar la MEDIA aritmética de una serie de números positivos, suponiendo que los
1. SUMA = 0 datos se leen desde un dispositivo de entrada. Si el número leído es un cero,
2. NUMERO = 2. NUMERO ← NUMERO ++ 22
NUMERO
indicará que se ha alcanzado el final de la serie de números.
3. mientras NUMERO ≤ 100 Ejercicio 3:
si ?
SUMA = SUMA + NUMERO Escribir
E ibi un algoritmo
l i que calcule
l l ell áárea de
d un triángulo
iá l en función
f ió de d la
l base
b y lla
NUMERO≤100
altura.
NUMERO = NUMERO + 2
no
fin mientras
fin_mientras
Visualizar SUMA
4. visualizar SUMA y finalizar el proceso.
Fin
EJERCICIOS EJERCICIOS
Ejercicio 4: Ejercicio 7:
Dados 3 números, determinar si la suma de cualquiera de ellos es igual al tercer Diseñar un algoritmo que lea un número positivo y escriba por pantalla todos los
número. Si se cumple esta condición, escribir “IGUALES” y, en caso contrario, números positivos menores que él en orden descendente.
escribir “DISTINTAS”. (Si se lee el número 6, entonces se escribe 5 4 3 2 1)
Ejercicio 5: Ejercicio 8:
Escribir un algoritmo que lea 3 números y a continuación escriba el mayor de los 3. Escribir un algoritmo que visualice una tabla de ceros de tamaño M*N, donde M y N
son datos leídos por pantalla.
Ejercicio 6:
Por ejemplo si M = 3 y N=4, se visualiza la siguiente tabla:
Diseñar un algoritmo que le un número positivo y escriba por pantalla la palabra
“Hola” las veces que indique dicho número. 0 0 0 0
0 0 0 0
0 0 0 0
Ejercicio 10:
Ejercicio 9:
Dada una matriz de enteros de tamaño 5 × 5 , diseñar un algoritmo que calcule la
Diseñar un algoritmo para visualizar el siguiente dibujo: suma de todas las componentes.
componentes
Por ejemplo, si la matriz es:
*
*** 1 2 3 2 1
***** 1 1 1 1 1
******* 2 2 2 2 2
********* 0 0 1 0 1
******* 2 1 3 1 2
***** el algoritmo debe devolver el valor 35.
***
*
CLASIFICACIÓN
4 Entrada
Secuenciales Salida
E t t
Estructuras algorítmicas
l ít i Asignación
Estructuras Condicionales
Simples
Múltiples
Algorítmicas
Hacer para
Cíclicas Hacer mientras
Repetir hasta
Inicio
Acción 1 Lectura o Entrada Simples Contador Acumulador De trabajo
Acción 2
Consiste en recibir desde un dispositivo de entrada, un valor.
..
.. a = 15 a=a+1 suma = suma + 4 a = c +b / 4
DATO
leer DATO
Acción n DATO es la variable que
Fin recibe el valor
Consiste en pasar un valor Consiste en usarla como un
Escritura constante a una variable sumador en un proceso
Consiste en mandar por un dispositivo de salida un resultado o mensaje.
Consiste en usarla como un
escribir “La suma de los números es: “ SUMA verificador del numero de veces que Puede recibir el resultado
se realiza un proceso de una operación matemática que
involucre muchas variables
SUMA es la variable que
En la pantalla aparece el texto: La suma de los números es: contiene un valor
Simples si ? no
condición
di ió
Diagrama de flujo
Dobles Múltiples
Acciones a realizar si se cumple la condición Son tomas de decisión que permiten comparar una variable con distintos
Si <condición> ento nces valores posibles, ejecutando para cada caso una serie de instrucciones
Acción 1
específicas.
Acción 2
..
..
si ? no DATO es la variable
Caso DATO
Acción n condición que se compara
Si <condición> entonces op1:
Si no Acción(es)
Acción 1’ Acción 1 Acción 1’ Acción(es)
op2:
Acción 2’ Acción 2 Acción 2’ Si no
Si <condición> entonces Acción(es)
.. … …
… … Acción(es)
.. ...
Si no
Acción n’ Acción n Acción n’ opN:
Acción(es)
Fin_Si Acción(es)
Fin_Si
Fin_Si Fin_caso S i DATO es igual a op1,
es ejecutan las acciones
Acciones a realizar en el caso de que correspondientes
NO se cumpla la condición Diagrama de flujo
Múltiples Múltiples
Su representación en diagrama de flujo se puede hacer de varias formas: Diagrama de flujo para la representación de CASOS:
Hacer mientras
Ciclos con un número
Repetir hasta INDETERMINADO de iteraciones
Hacer Para i = inf hasta i = sup inf y sup representan el límite Hacer Para i = inf hasta i = sup
Acción 1 iinferior
f i y ell lílímite
it superior
i Acción 1 si ? no
Acción 2 del bucle. Acción 2 i ≤ sup
... ...
Acción N Acción N Acción(es)
A ió (e )
Fin_Para Fin_Para
i←i+1
La variable i es la variable de control del ciclo. El ciclo se repite
desde el límite inferior, hasta que la variable de control llegue la límite superior
Ciclos con un Numero Indeterminado de Iteraciones. Repite un proceso una cantidad de veces, pero a diferencia de la anterior, lo
Son aquellos en que el numero de iteraciones no se conoce con exactitud, hace hasta que la condición se cumple y no mientras, como en el Hacer-
ya que está dado en función de un dato dentro del programa Mientras.
Por otra parte, esta estructura permite realizar el proceso al menos una
Hacer vez, ya que la condición se evalúa al final del proceso, mientras que en el
Mientras <condición> Hacer-Mientras puede ser que nunca llegue a entrar si la condición no se
Acción 1
si ? no cumple desde un principio.
Acción 2 condición
... Repetir Acción(es)
Acción N Acción(es) Acción 1
Acción 2
Fin Mientras
Fin_Mientras si ?
...
Acción N
condición no
El grupo de acciones se ejecutan
Hasta <condición>
mientras se cumpla la condición
Estructuras condicionales
Ejemplo 1:
La calificación final de un alumno en la asignatura de cálculo se obtiene como media
aritmética de 7 notas. Calcular dicha calificación suponiendo que las 7 notas se leen
desde un dispositivo de entrada.
Ejemplo 2: 5
Encontrar el mayor valor de un conjunto de números leídos desde un dispositivo de
entrada.
entrada
C difi ió de
Codificación d algoritmos
l it
Instrucciones a la computadora
Un lenguaje de programación es un medio para expresar un algoritmo y una
computadora es un procesador para ejecutarlo. Los diferentes pasos de un algoritmo, se expresan mediante instrucciones,
por tanto, un programa no es más que una secuencia de instrucciones, cada
Una vez que tenemos diseñado un algoritmo, el procesador debe ser capaz
una de las cuales especifica ciertas operaciones que tiene que realizar la
de entender su significado, es decir, comprender las instrucciones de
computadora.
cada paso y realizar las operaciones correspondientes.
Las instrucciones básicas y comunes a casi todos los programas las podemos
Por tanto, el algoritmo debe expresarse en un formato denominado
agrupar en 4:
PROGRAMA y éstos é programas se escriben
ib mediante
di LENGUAJES
DE PROGRAMACIÓN. Instrucciones de Entrada/Salida Instrucciones Selectivas
Transferencia de datos entre los Permiten la selección de tareas alternativas
Lenguaje máquina dispositivos y la memoria central en función del resultado de expresiones
Los principales tipos de condicionales
lenguajes son 3: Lenguaje de bajo nivel Instrucciones aritmético-lógicas
Instrucciones que ejecutan operaciones Instrucciones repetitivas
Lenguajes de alto nivel aritméticas ( suma, resta, … ) Permiten que unas tareas se repitan un
y lógicas (or, and, …) número de veces
Los lenguajes máquina son aquellos que son directamente Son un poco más fiables de utilizar que los lenguajes máquina pero
inteligibles por la computadora ya que las instrucciones se expresan con también dependen de la CPU donde se ejecutan.
cadenas binarias (0´s y 1’s). El más importante es el ENSAMBLADOR.
Estas instrucciones se llaman CÓDIGO MÁQUINA o CÓDIGO Un programa escrito en lenguaje Ensamblador no puede ser ejecutado
BINARIO.
directamente por la máquina sino que requiere una fase de traducción a
INCONVENIENTES lenguaje máquina.
VENTAJA Programa fuente Programa objeto
Son difíciles y lentos de codificar
La velocidad de ejecución Programa escrito Programa traducido a
de los programas es Difíciles de mantener y comprender en Ensamblador código máquina
superior a cualquier otro Dependen de la CPU donde se ejecutan
lenguaje. INCONVENIENTES
VENTAJA
Son poco fiables
Más fáciles de codificar que el Dependen de la CPU donde se ejecutan
lenguaje máquina Son difíciles y lentos de codificar
Son los mas utilizados por los programadores Instrucción típica de suma de dos números:
Están diseñados para que el escribir y entender los programas sea más fácil
que codificar en ensamblador o en código máquina.
Es importante tener claro las características o estilos de programación para 3. Programación orientada al evento
lograr determinar cual es la herramienta o lenguaje ideal según las Esta programación es el resultado de la programación orientada al objeto. En este
características del sistema a implementar. tipo de programación permite trabajar con objetos y clases standard previamente
Existen 5 estilos de programación fuertemente conocidos definidas por la aplicación.
Ejemplo: Visual Basic, Delphi y Power Builder
4. Programación Funcional Sirven para escribir programas que permitan la comunicación entre el
El Programa es una Función (o un grupo de funciones). Una Función puede usuario y la computadora.
llamar a otra Función, o el resultado de una Función puede ser usado como el Un intérprete toma el programa fuente, lo traduce y ejecuta línea a
argumento de otra Función. línea. Un ejemplo de lenguaje interpretado es Java.
Ejemplo: F
Función
ió ffactorial
t i l en ML Un compilador
il d es un programa que se encargan de convertir las
fun Factorial loop(n,f)= if n>0 then factorial loop(n-1,f*n) else f instrucciones escritas en un lenguaje de programación en instrucciones
Ejemplos: Haskel, CAML. escritas en lenguaje máquina (0´s y 1´s) que la computadora pueda
entender. Ejemplos de lenguajes compilados son Pascal, C, C++.
5. Programación lógica
Fases de la compilación
La programación Lógica está basada en la noción de relación, debido a que en la
relación es un concepto más general de una aplicación. Los lenguajes de
Programación Lógica se utilizan en el campo de la Inteligencia Artificial. Programa Programa Programa
Ejemplo: PROLOG fuente Compilador objeto Montador ejecutable
(traductor) (Linker)
Compilación de programas
si
3. Verificar y corregir los errores de compilación.
¿Existen
errores de
compilación? 4. Obtención del programa objeto.
no
5. Obtener el programa ejecutable mediante el
Programa objeto montador.
Introducción a la Programación 67