Professional Documents
Culture Documents
CONTENIDOS
1. La computadora
2. Entidades primitivas para el desarrollo de algoritmos.
3. Metodologa a seguir para la resolucin de problemas con computadoras
Describir el concepto de algoritmo, diseo de algoritmos como paso previo a la
creacin de un programa y representacin de algoritmos: diagramas de flujo.
4. Estructuras algortmicas
Estructuras secuenciales, condicionales y cclicas.
5. Codificacin de algoritmos. Compiladores
Tipos de lenguajes, paradigmas de programacin, estilos de programacin.
2004/2005
1
La computadora
2003/2004
2004/2005
LA COMPUTADORA
Una computadora es un dispositivo electrnico utilizado para procesar
informacin y obtener unos resultados.
Computadora
Los datos se pueden
introducir en la
computadora por la
entrada y a continuacin
se procesan para producir
una salida
Programa
Datos de
entrada
Datos de
salida
4
LA COMPUTADORA
Los datos de entrada y los datos de salida pueden ser cualquier cosa:
texto
sonido
dibujos
HARDWARE
Es la parte fsica de la
computadora.
Los componentes fsicos que
constituyen la computadora son
por ejemplo:
ratn, monitor, teclado, ...
Procesador
Unidad
Aritmtico
lgica
Memoria
Principal
Unidad de
control
Programas
Datos de
entrada
Dispositivos
Dispositivos
deENTRADA
ENTRADA
de
Datos de
salida
Dispositivos
Dispositivos
deSALIDA
SALIDA
de
2003/2004
Datos
con los que operan las
instrucciones
encendido o apagado,
abierto o cerrado,
Contenido
10111010
00101110
10001010
01001010
10111100
10111010
...
00111111
...
...
10111010
00101110
10001010
10111100
Direcciones
01001010
...
Contenido
10111010
...
00111111
...
10
Tabla ASCII
Smbolo
0
1
2
3
4
5
6
7
8
9
Cdigo
ASCII
0110000
0110001
0110010
0110011
.
0110111
0111000
0111001
48
49
50
51
52
53
54
55
56
57
Smbolo
A
B
C
D
E
Cdigo
ASCII
1000001
1000010
1000011
1000100
1000101
65
66
67
68
69
X
Y
Z
1011000
1011001
1011010
88
89
90
Smbolo
a
b
c
d
Cdigo
ASCII
1100001
1100010
1100011
1100100
97
98
99
100
w
x
y
z
1110111
1111000
1111001
1111010
119
120
121
122
0 < 1 < 2 . < 9 < A < B < < Z < a < b < < z
12
Nmero
0
1
2
3
4
11111111
255
En un byte podemos
almacenar cualquier entero entre
0 y 255
14
Unidad Aritmtico-lgica
Dispositivo fsico capaz de
realizar operaciones aritmticas
y lgicas
(suma, resta, multiplicacin, )
15
2
Entidades primitivas para el
desarrollo de algoritmos
16
PRINCIPALES DEFINICIONES
CONSTANTES Y VARIABLES
Son porciones de memoria que almacenan un valor.
Una constante es un dato cuyo valor no cambia durante la ejecucin del
programa.
Ejemplo:
pi = 3,1416
Las variables son palabras que manipulan datos. Dicho valor puede ser
modificado en cualquier momento durante la ejecucin del programa.
Tanto las variables como las constantes estn constituidas por un
nombre y un valor. El nombre lo llamaremos identificador.
El valor de la variable puede ser simple o compuesto. Dependiendo del
valor de la variable, decimos que dicha variable es de un tipo de dato.
Por ejemplo, si el valor de la variable es un entero, decimos que la
variable es de tipo entero.
Metodologa y Tcnicas de Programacin I 2004/2005
17
PRINCIPALES DEFINICIONES
IDENTIFICADORES
Los identificadores representan los datos de un programa.
Es una secuencia de caracteres que sirve para identificar una posicin en
la memoria de la computadora, y nos permite acceder al contenido de
dicha posicin.
Reglas para formar un identificador:
- Debe comenzar con una letra.
- Despus de la primera letra pueden aparecer otras letras, dgitos y caracteres.
- No debe contener espacios en blanco.
Ejemplos:
SUMA
n_primo
NUMERO1
num_horas
18
PRINCIPALES DEFINICIONES
TIPOS DE DATOS SIMPLES
Todos los datos tienen un tipo asociado con ellos. Un dato puede ser un
simple carcter, tal como b, un valor entero tal como 35. El tipo de dato
determina la naturaleza del valor que puede tomar una variable.
Datos Numricos: son los nmeros enteros y los reales. Este tipo de datos
permiten realizar operaciones aritmticas comunes.
Datos Lgicos: Son aquellos que slo pueden tener dos valores (cierto o
falso). Son el resultado de una comparacin entre otros datos (numricos
o alfanumricos).
Datos Alfanumricos: Es una secuencia de caracteres, por ejemplo,
nombres de personas, direcciones, etc. Este tipo de datos se representan
encerrados entre comillas. Ejemplos: Hola amigos 1997
19
PRINCIPALES DEFINICIONES
TIPOS DE DATOS ESTRUCTURADOS: ARRAYS
Son un conjunto finito de valores
Un Array es una estructura de datos que almacena bajo el mismo nombre
(variable) a una coleccin de datos del mismo tipo. Los arrays se
caracterizan por:
Almacenan los elementos en posiciones contiguas de memoria.
Tienen un mismo nombre de variable que representa a todos los
elementos.
Para hacer referencia a esos elementos es necesario utilizar un ndice
que especifica el lugar que ocupa cada elemento dentro del array.
Tipo de Arrays : Vectores y Matrices.
20
PRINCIPALES DEFINICIONES
VECTORES
Es un array de "N" elementos donde "N" recibe el nombre de longitud o
tamao del vector.
Para hacer referencia a un elemento del vector se usa el nombre del
mismo, seguido del ndice (entre corchetes), el cual indica una posicin
en particular del vector.
Esto es un vector de 4 elementos
1
alumnos
PRINCIPALES DEFINICIONES
MATRICES
Es un array de M * N elementos organizados en dos dimensiones donde
"M" es el numero de filas y "N" el numero de columnas.
Para hacer referencia a un elemento de la matriz, se usa el nombre
seguido de dos ndices (entre corchetes), que indican la fila y la columna
donde se encuentra almacenado el dato.
Esto es una matriz 3 * 3 elementos
Juego =
3
O
3 filas
Metodologa y Tcnicas de Programacin I 2004/2005
3 columnas
PRINCIPALES DEFINICIONES
EXPRESIONES
Las expresiones son combinaciones de constantes, variables, smbolos de
operacin, parntesis y nombres de funciones especiales.
Ejemplos:
a+(b+3)/c
SUMA > 100
Cada expresin toma un valor que se determina tomando los valores de
las variables y constantes implicadas y la ejecucin de las operaciones
indicadas.
Una expresin consta de operadores y operandos.
+, /, >
a, b, 3, c, SUMA, 100
23
3
Metodologa a seguir para la
resolucin de problemas con
computadoras
2003/2004
24
RESOLUCIN DE PROBLEMAS
Concepto de ALGORITMO
El objetivo fundamental de ste curso es ensear a resolver problemas
mediante una computadora. Para ello necesitamos estudiar una
metodologa que nos ayudar en dicha tarea.
El eje central de dicha metodologa es el concepto de algoritmo.
Un algoritmo es una serie de pasos ordenados que describen el proceso
que se debe seguir para dar solucin a un problema especfico.
Un algoritmo es un conjunto finito de instrucciones que especifican la
secuencia de operaciones a realizar en orden para resolver un problema.
25
ALGORITMOS
Para llegar a ser un programador eficaz se necesita aprender a resolver
problemas de un modo riguroso y sistemtico. Esto significa que slo se
puede llegar a realizar un buen programa con el diseo previo de un
algoritmo.
Resolucin de un problema
Problema
Diseo del
Algoritmo
Programa de
computadora
26
ALGORITMOS
Sin algoritmo no puede existir programa.
Los algoritmos son independientes tanto del lenguaje de programacin en
que se expresan como de la computadora donde se ejecutan.
Un lenguaje de programacin es un medio para expresar un algoritmo y
una computadora es un procesador para ejecutarlo.
La definicin de un algoritmo debe describir tres partes:
1. Entrada: El algoritmo tiene 0 ms entradas. Son datos que se entregan al
algoritmo antes de su ejecucin.
27
ALGORITMO
Caractersticas de los algoritmos.
Las caractersticas fundamentales son:
28
ALGORITMO
Ejemplo:
Realizar la suma de todos los nmeros pares entre 2 y 100.
El problema consiste en sumar 2+4+6+ + 98+100.
Utilizamos las palabras SUMA y NUMERO para representar las sumas
sucesivas (2+4), (2+4+6), etc.
El algoritmo es el siguiente:
SUMA Y NUMERO
son variables
29
RESOLUCIN DE PROBLEMAS
Las fases de resolucin de un problema:
1. Definicin o anlisis del problema
Consiste en entender el problema que se quiere resolver.
En sta fase se determina QU debe hacer el algoritmo.
2. Diseo del algoritmo
Pensar e idear un plan para resolver el problema. En sta fase de
determina CMO se hace la tarea solicitada.
3. Transformacin del algoritmo en un programa: codificacin
Llevar a cabo el plan, es decir, representar el algoritmo en forma de
programa.
4. Ejecucin y validacin del programa
Evaluar el programa en cuanto a capacidad para resolver el problema
planteado.
Metodologa y Tcnicas de Programacin I 2004/2005
30
31
Diagramas de flujo
Es la representacin grfica de un algoritmo.
Permite representar la secuencia de operaciones que se deben realizar para
la resolucin de un problema, es decir, permite representar el flujo de
informacin desde su entrada hasta su salida.
Dispone de un conjunto de smbolos grficos con significado referente al
tipo de instruccin que se va a realizar.
Dichos smbolos van unidos con flechas que indican el orden de secuencia
a seguir.
Metodologa y Tcnicas de Programacin I
2004/2005
32
Pseudocdigo
Es un lenguaje utilizado para definir algoritmos con una sintaxis
muy parecida a la de un lenguaje de programacin.
Las instrucciones se escriben en palabras similares al ingls o al
espaol, facilitando as la comprensin el algoritmo.
La ventaja es que es muy fcil pasar de pseudocdigo a un
lenguaje de programacin.
33
no
Smbolo de decisin.
Indica operaciones de comparacin entre datos.
En funcin del resultado se sigue por distintos caminos.
Llamada a otro proceso complejo. Llamada a subrutina.
34
Inicio
SUMA k 0
NUMERO k 2
SUMA k SUMA+ NUMERO
NUMERO k NUMERO + 2
si
?
NUMERO100
no
Visualizar SUMA
Fin
36
Pseudocdigo
Inicio
SUMA k 0
NUMERO k 2
SUMA k SUMA+ NUMERO
1. SUMA = 0
NUMERO k NUMERO + 2
2. NUMERO = 2.
3. mientras NUMERO 100
SUMA = SUMA + NUMERO
NUMERO = NUMERO + 2
si
?
NUMERO100
no
fin_mientras
Visualizar SUMA
37
EJERCICIOS
Ejercicio 1:
Escribir un algoritmo que permita introducir nmeros por teclado hasta que la suma
de todos ellos sea mayor que 30.
Ejercicio 2:
Escribir un algoritmo que escriba en pantalla el nmero de elementos positivos,
negativos y ceros que contiene una tabla de 500 posiciones de contenido numrico.
Ejercicio 3:
Supongamos que se proporciona una secuencia de nmeros y se desea contar e
imprimir el nmero de ceros de la secuencia.
Ejercicio 4:
Escribir un algoritmo que calcule el rea de un tringulo en funcin de la base y la
altura.
Metodologa y Tcnicas de Programacin I
2003/2004
38
EJERCICIOS
Ejercicio 5:
Dados 3 nmeros, determinar si la suma de cualquiera de ellos es igual al tercer
nmero. Si se cumple esta condicin, escribir IGUALES y, en caso contrario,
escribir DISTINTAS.
Ejercicio 6:
Escribir un algoritmo que lea 3 nmeros y a continuacin escriba el mayor de los 3.
Ejercicio 7:
Disear un algoritmo que le un nmero positivo y escriba por pantalla la palabra
Hola las veces que indique dicho nmero.
Ejercicio 8:
Dada una palabra de 10 caracteres, averiguar si es palndroma.(Utilizar el tipo de
datos array).
39
EJERCICIOS
Ejercicio 9:
Disear un algoritmo que lea un nmero positivo y escriba por pantalla todos los
nmeros positivos menores que l en orden descendente.
(Si se lee el nmero 6, entonces se escribe 5 4 3 2 1)
Ejercicio 10:
Escribir un algoritmo que visualice una tabla de ceros de tamao M*N, donde M y N
son datos ledos por pantalla.
Por ejemplo si M = 3 y N=4, se visualiza la siguiente tabla:
0 0 0 0
0 0 0 0
0 0 0 0
Ejercicio 11:
Disear un algoritmo que lea un nmero positivo y averige si es primo.
Metodologa y Tcnicas de Programacin I 2004/2005
40
EJERCICIOS
Ejercicio 12:
Disear un algoritmo para visualizar el siguiente dibujo:
*
***
*****
*******
*********
*******
*****
***
*
41
EJERCICIOS
Ejercicio 13:
Dada una matriz de enteros de tamao 5 5 , disear un algoritmo que calcule la
suma de todas las componentes.
Por ejemplo, si la matriz es:
1
1
2
0
2
2
1
2
0
1
3
1
2
1
3
2
1
2
0
1
1
1
2
1
2
2003/2004
42
4
Estructuras algortmicas
43
CLASIFICACIN
Las estructuras de operacin de programas son un grupo de formas de
trabajo, que permiten realizar ciertos procesos especficos que nos lleven
a la solucin de problemas.
Estas estructuras se clasifican de acuerdo a su complejidad:
Secuenciales
Estructuras
Algortmicas
Condicionales
Cclicas
Entrada
Salida
Asignacin
Simples
Mltiples
Hacer para
Hacer mientras
Repetir hasta
44
Estructuras secuenciales
La estructura secuencial es aquella en la que una accin o instruccin
sigue a otra en un orden secuencial.
Representacin en pseudocdigo
Inicio
Accin 1
Accin 2
..
..
Accin n
Fin
Lectura o Entrada
Consiste en recibir desde un dispositivo de entrada, un valor.
leer DATO
Escritura
Estructuras secuenciales
Asignacin
Consiste en el paso de valores o resultados a una zona de memoria.
Simples
a = 15
Contador
a=a+1
Acumulador
De trabajo
suma = suma + 4
a = c +b / 4
46
Estructuras secuenciales
Ejemplo:
Se desea conocer el porcentaje de hombres y el porcentaje de mujeres que realizan
un Mster al finalizar su carrera universitaria. Se supone que los datos
N DE HOMBRES y N De MUJERES se leen desde un dispositivo de entrada.
47
Estructuras condicionales
Las estructuras condicionales comparan una variable con otro(s)
valor(es), para que en base al resultado de esta comparacin, se siga un
camino dentro del programa.
La comparacin se puede hacer contra otra variable o contra una
constante, segn se necesite.
Simples
si
no
condicin
Si <condicin> entonces
Accin 1
Accin 2
..
..
Accin n
Fin_Si
Accin 1
Accin 2
Accin n
Diagrama de flujo
Metodologa y Tcnicas de Programacin I 2004/2005
48
Estructuras condicionales
Dobles
Acciones a realizar si se cumple la condicin
Si <condicin> entonces
Accin 1
Accin 2
..
..
Accin n
Si no
Accin 1
Accin 2
..
..
Accin n
Fin_Si
si
no
condicin
Accin 1
Accin 2
Accin n
Accin 1
Accin 2
Accin n
Diagrama de flujo
49
Estructuras condicionales
Mltiples
Son tomas de decisin que permiten comparar una variable con distintos
valores posibles, ejecutando para cada caso una serie de instrucciones
especficas.
Si <condicin> entonces
Accin(es)
Si no
Si <condicin> entonces
Accin(es)
Si no
Accin(es)
Fin_Si
Fin_Si
Caso DATO
op1:
Accin(es)
op2:
Accin(es)
...
opN:
Accin(es)
Fin_caso
DATO es la variable
que se compara
50
Estructuras condicionales
Mltiples
Su representacin en diagrama de flujo se puede hacer de varias formas:
Si <condicin1> entonces
Accin(es)
Si no
Si <condicin2> entonces
Accin(es)
Si no
Accin(es)
Fin_Si
Fin_Si
si
no
condicin1
si
Accin (es)
no
condicin2
Accin (es)
Accin (es)
51
Estructuras condicionales
Mltiples
Diagrama de flujo para la representacin de CASOS:
Caso DATO
op1:
Accin(es)
op2:
Accin(es)
op1
?
DATO
Accin (es)
...
opN:
Accin(es)
Fin_caso
opN
Accin (es)
op2
Accin (es)
...
...
52
Estructuras condicionales
Ejemplo 1:
En un almacn se hace un 20% de descuento a los clientes cuya compra supere los
1000 . Cual ser el cantidad que pagar un cliente por su compra? Suponemos que
el importe de la compra es un dato que se lee desde un dispositivo de entrada.
Ejemplo 2:
Escribir un algoritmo que lea 3 nmeros y a continuacin escriba el mayor de los 3.
Ejemplo 3:
Escribir un algoritmo que lea un nmero comprendido entre el 1 y el 12, y que imprima
por pantalla el mes al que corresponde dicho nmero.
53
Estructuras cclicas
Se llaman problemas repetitivos o cclicos a aquellos en cuya solucin es
necesario utilizar un mismo conjunto de acciones que se puedan ejecutar
una cantidad especifica de veces.
Esta cantidad puede ser fija (previamente determinada por el programador)
o puede ser variable (estar en funcin de algn dato dentro del programa).
Los ciclos se clasifican en:
Hacer para
Hacer mientras
Repetir hasta
Metodologa y Tcnicas de Programacin I 2004/2005
Estructuras cclicas
Hacer para
Ciclos con un Numero Determinado de Iteraciones.
Son aquellos en que el numero de iteraciones se conoce antes de ejecutarse
el ciclo.
Hacer Para i = inf hasta i = sup
Accin 1
Accin 2
...
Accin N
Fin_Para
55
Estructuras cclicas
Hacer para
Son aquellos en que el numero de iteraciones se conoce antes de ejecutarse
el ciclo.
i k inf
Hacer Para i = inf hasta i = sup
Accin 1
Accin 2
...
Accin N
Fin_Para
si
no
i sup
Accin(es)
iki+1
56
Estructuras cclicas
Hacer Mientras
Ciclos con un Numero Indeterminado de Iteraciones.
Son aquellos en que el numero de iteraciones no se conoce con exactitud,
ya que est dado en funcin de un dato dentro del programa
Hacer
Mientras <condicin>
si
Accin 1
Accin 2
...
Accin N
no
condicin
Accin(es)
Fin_Mientras
Estructuras cclicas
Repetir Hasta
Accin(es)
si
condicin
no
58
Estructuras condicionales
Ejemplo 1:
La calificacin final de un alumno en la asignatura de clculo se obtiene como media
aritmtica de 7 notas. Calcular dicha calificacin suponiendo que las 7 notas se leen
desde un dispositivo de entrada.
Ejemplo 2:
Encontrar el mayor valor de un conjunto de nmeros ledos desde un dispositivo de
entrada.
59
5
Codificacin de algoritmos
2003/2004
60
Lenguaje mquina
Lenguaje de bajo nivel
Lenguajes de alto nivel
61
Instrucciones Selectivas
Instrucciones aritmtico-lgicas
Instrucciones que ejecutan operaciones
aritmticas ( suma, resta, )
y lgicas (or, and, )
Metodologa y Tcnicas de Programacin I 2004/2005
Instrucciones repetitivas
Permiten que unas tareas se repitan un
nmero de veces
62
LENGUAJE MQUINA
Los lenguajes mquina son aquellos que son directamente
inteligibles por la computadora ya que las instrucciones se expresan con
cadenas binarias (0s y 1s).
Estas instrucciones se llaman CDIGO MQUINA o CDIGO
BINARIO.
INCONVENIENTES
VENTAJA
La velocidad de ejecucin
de los programas es
superior a cualquier otro
lenguaje.
63
Programa objeto
Programa escrito
en Ensamblador
Programa traducido a
cdigo mquina
VENTAJA
Ms fciles de codificar que el
lenguaje mquina
Metodologa y Tcnicas de Programacin I 2004/2005
INCONVENIENTES
Dependen de la CPU donde se ejecutan
Son difciles y lentos de codificar
64
0110
1001
1010
1011
Lenguaje mquina
ADD M, N, P
Lenguaje Ensamblador
P = M + N ;
66
Programa objeto
Compilador
Programa
Programa traducido a
cdigo mquina
Estilos de programacin
Es importante tener claro las caractersticas o estilos de programacin para
lograr determinar cual es la herramienta o lenguaje ideal segn las
caractersticas del sistema a implementar.
Existen 5 estilos de programacin fuertemente conocidos
67
ESTILOS DE PROGRAMACIN
1. Programacin Imperativa / Secuencial / Estructurada
Se dispone de un conjunto de operaciones primitivas con una ejecucin
secuencial. Para programar es necesario disear una secuencia adecuada de
instrucciones.
Ejemplos: PASCAL, ADA y C
2003/2004
68
ESTILOS DE PROGRAMACIN
4. Programacin Funcional
El Programa es una Funcin (o un grupo de funciones). Una Funcin puede
llamar a otra Funcin, o el resultado de una Funcin puede ser usado como el
argumento de otra Funcin.
Ejemplo: Funcin factorial en ML
fun Factorial loop(n,f)= if n>0 then factorial loop(n-1,f*n) else f
Ejemplos: Haskel, CAML.
5. Programacin lgica
La programacin Lgica est basada en la nocin de relacin, debido a que en la
relacin es un concepto ms general de una aplicacin. Los lenguajes de
Programacin Lgica se utilizan en el campo de la Inteligencia Artificial.
Ejemplo: PROLOG
69
ESTILOS DE PROGRAMACIN
1
Metodologa
Metodologa yy tcnicas
tcnicas
de
de Programacin
Programacin II yy II
II
C++
PROLOG
Lgica
Lgica formal
formal
Ensamblador
Diseo
Diseo con
con
microprocesadores
microprocesadores
PROLOG
Fundamento
Fundamento de
de
Inteligencia
Inteligencia Artificial
Artificial
Tcnicas
JAVA
Tcnicas de
de
programacin
programacin avanzada
avanzada
Ensamblador
Arquitectura
Arquitectura de
de
ordenadores
ordenadores II yy II
II
Metodologa
Metodologa yy
tcnicas
tcnicas
de
de Programacin
Programacin III
III
C++
Estructuras
Estructuras de
de datos
datos yy
de
de la
la informacin
informacin II yy II
II
4 y 5
CAML ADA
Metodologa
Metodologa yy tcnicas
tcnicas
de
de Programacin
Programacin IV
IV
JAVA
Redes
Redes yy
comunicaciones
comunicaciones
de
de datos
datos
Sistemas
Sistemas Operativos
Operativos
Distribuidos
Distribuidos
Ensamblador
Robtica
Robtica
2003/2004
PROLOG
Inteligencia
Inteligencia Artificial
Artificial
70
Compilador
(traductor)
Programa
Programa
objeto
objeto
Montador
(Linker)
Programa
Programa
ejecutable
ejecutable
71
Compilacin de programas
Fases de ejecucin de un programa
Programa fuente
Compilador
Compilador
si
Existen
errores de
compilacin?
no
Programa objeto
Montador
Montador
Programa ejecutable
Metodologa y Tcnicas de Programacin I 2004/2005
72
Fases de la compilacin
Bibliotecas
Bibliotecas
deterceros
terceros
de
Programa(s)
Programa(s)
fuente
fuente
COMPILADOR
Bibliotecas
Bibliotecas
estndar
estndar
Opciones en C++
Programa
Programa
ejecutable
ejecutable
73