UANE
CM218
Ing. Daniel De Santiago
Temario
● Conceptos básicos de programación
● Estructura de un programa
● Elementos básicos de un lenguaje
● Estructura de control
● Clases instanciables
Introducción
● Todos los días se tienen diferentes situaciones que
uno debe de resolver.
– Como trasladarse a la escuela
– Como realizar una exposicion
– Como solucionar un problema matematico
– Analizar cuanto pagar por cierto producto y/o servicio
● Para resolver estas interrogantes necesariamente se
tiene que seguir algun proceso, ya sea formal o
intuitivamente
Definicion de Problema
● El diccionario de la Real Academia Española lo
define como:
– “Conjunto de hechos o circunstancias que dificultan la
consecucion de algun fin”
– “Planteamiento de una situacion cuya respuesta
desconocida debe obtenerse a travez de metodos
cientificos”
– “Una necesidad inicial, que tiene un objetivo o
solucion a alcanzar mediante una serie de operaciones,
actividades o metodos bien definidos”
Problemas Informaticos
● Cuando hablamos de Problemas Informaticos es
necesario aplicar procesos de razonamiento, para
de esta forma asegurar que la solucion obtenida
sea la mejor.
● Cuando se tiene un Problema Informatico se debe
determinar cual es la Salida que se espera obtener
con respecto a los Datos de Entrada
Problemas Informaticos
● Las computadoras tiene como objetivos la
Resolucion de problemas por medio de
programas, por lo que podemos definir que estos
se construyen a travez de un metodo para la
solucion de problemas.
● Debe de quedar muy claro que no todos los
problemas se pueden solucionar utilizando la
computadora
Problemas Informaticos
● Ejemplo:
– Buscar la ruta mas rapida para llegar a un lugar
desconocido
– La computadora hace los calculos pertinentes y da una
solucion
– El Usuario decidira como transportarse al lugar
● Carro
● Bicicleta
● Camion
● Caminando
Problemas Informaticos
● Las computadoras basan sus analisis en busquedas
repetitivas que siempre permanecen en funcion a
los datos
● La inteligencia humana es creativa (heuristica) y
puede encontrar intuitivamente nuevas
apreciaciones mas alla de los datos presentados
Problemas Informaticos
● Los programas creados para la resolucion de
problemas tienen un numero definido de
alternativas de solucion
● El programador, a partir de la situacion inicial
debe tener una idea sobre la solucion que se espera
obtener para resolver determinado problema, y
sobre el proceso que debera plantearse para
solucionarlo
Hombre vs Maquina
● Para resolver un problema ya sea de la vida diaria
o computacional se deben seguir una serie de
pasos con el fin de llegar a un objetivo
● A esta serie de pasos se le llama Algoritmo el cual
se define como:
– Un conjunto finito de instrucciones o pasos que sirven
para ejecutar una tarea o resolver un problema
● El termino Algoritmo proviene del nombre del
matematico arabe ALKHOREZMI
Nota Interesante
● MUHAMMAD IBN MUSA ABU DJAFAR AL
KHOREZMI
– Matematico arabe que incorporo el concepto de cero
creado por la matematica hindu y se propuso realizar
los analisis matematicos de la manera mas simplificada
posible. De una palabra (aljabr) de su obra El libro de
Igualar y restaurar proviene la palabra “algebra” y de
su nombre (AlKhorezmi) se origino el termino de
“algoritmo”
Definicion de Algoritmo
● Las caracteristicas fundamentales que debe
cumplir todo algoritmo:
– Debe ser Preciso, e indicar el orden de realizacion de
cada paso
– Debe ser Definido. Si se sigue un algoritmo dos veces,
se debe obtener el mismo resultado cada vez.
– Debe ser Finito. Si se sigue un algoritmo, se debe
terminar en algún momento ; o sea debe tener un
número finito de pasos.
Definicion de Algoritmo
● La estructura de un algoritmo debe describir tres
partes:
– Entrada
– Proceso
– Salida
● Diseñar un algoritmo para cambiar una llanta a un
coche:
Definicion de Algoritmo
● Inicio
● Traer gato
● Levantar el coche con el gato
● Aflojar tornillos de las llantas
● Sacar los tornillos de las llantas
● Quitar la llanta
● Poner la llanta de repuesto
● Poner los tornillos
● Apretar los tornillos
● Bajar el gato
● Fin
Algoritmos Cotidianos
● Son aquéllos que nos ayudan a resolver problemas
diarios, y que los hacemos casi sin darnos cuenta
de que estamos siguiendo una metodología para
resolverlos
● Algunos ejemplos son:
– Un cliente ejecuta un pedido a una fábrica. La fábrica
examina en su banco de datos la ficha del cliente, si el
cliente es solvente entonces la empresa acepta el
pedido, en caso contrario rechazar el pedido.
Algoritmos Cotidianos
● Pasos del algoritmo:
Inicio
– Leer el pedido
– Examinar ficha del cliente
– Si el cliente es solvente aceptar pedido, en caso
contrario rechazar pedido
Fin
Algoritmos Cotidianos
● Determinar el mayor de tres números enteros
● Pasos del algoritmo:
Inicio
– Comparar el primero y el segundo entero, deduciendo
cuál es el mayor
– Comparar el mayor anterior con el tercero y deducir
cuál es el mayor. Este será el resultado
Fin
Algoritmos Cotidianos
● Los pasos anteriores se pueden descomponer en
otros pasos más simples en los que se denomina
Refinamiento del Algoritmo
Algoritmos Cotidianos
1. Obtener el primer número (entrada), denominado NUM1
2. Obtener el segundo número (entrada), denominado NUM2
3. Compara NUM1 con NUM2 y seleccionar el mayor ; si los
dos enteros son iguales, seleccionar NUM1. Llamar a este
número MAYOR
4. Obtener el tercer número (entrada), y se denomina NUM3
5. Compara MAYOR con NUM3 y seleccionar el mayor ; si los
dos enteros son iguales, seleccionar el MAYOR. Denominar a
este número MAYOR
6. Presentar el valor MAYOR (salida)
7. Fin
Definicion de Lenguajes
Algoritmicos
● Los algoritmos pueden describirse utilizando
diversos lenguajes. Cada uno de estos lenguajes
permiten describir los pasos con mayor o menor
detalle.
● La clasificación de los lenguajes para algoritmos
puede enunciarse de la siguiente manera :
– Lenguaje Natural
– Lenguaje de Diagrama de Flujo
– Lenguaje Natural de Programación
– Lenguaje de Programación de Algoritmos
Definiciones
● Lenguaje Natural
– Es aquél que describe en español, para nuestro caso,
los pasos a seguir utilizando un vocabulario cotidiano.
Se le conoce como lenguaje jerga cuando se utilizan
términos especializados de una determinada
ciencia,profesión o grupo.
● Lenguaje de Diagrama de Flujo
– Es aquél que se vale de diversos símbolos para
representar las ideas o acciones a desarrollar. Es útil
para organizar las acciones o pasos de un algoritmo
pero requiere de etapas posteriores para implementarse
en un sistema de cómputo.
Definiciones
● Lenguaje Natural de Programación
– Son aquéllos que están orientados a la solución de
problemas que se definen de una manera precisa.
Generalmente son aplicados para la elaboración de
fórmulas o métodos científicos. El lenguaje natural
tiene las siguientes características:
● Evita la ambigüedad (algo confuso que se puede interpretar
de varias maneras)
● Son precisos y bien definidos
● Utilizan términos familiares al sentido común
● Elimina instrucciones innecesarias
Definiciones
● Lenguaje de Programación de Algoritmos
– Es aquél que se utiliza para introducir en la
computadora un algoritmo específico. Se les conoce
también como Lenguaje de Programación
Lenguajes de Programacion
● El Lenguaje de Programación es un conjunto de
palabras, símbolos y reglas sintácticas mediante
los cuales puede indicarse a la computadora los
pasos a seguir para resolver un problema.
● Los lenguajes de programación pueden clasificarse
por diversos criterios, siendo el más común su
nivel de semejanza con el lenguaje natural, y su
capacidad de manejo de niveles internos de la
máquina.
Lenguajes de Programacion
● Los principales tipos de lenguajes utilizados son
tres:
– Lenguaje Máquina.
– Lenguaje de bajo Nivel (ensamblador).
– Lenguajes de Alto Nivel.
Lenguajes de Programacion
● Lenguaje Máquina
– Son aquéllos que están escritos en lenguajes
directamente inteligibles por la máquina
(computadora), ya que sus instrucciones son cadenas
binarias (cadenas o series de caracteres de dígitos 0 y
1) que especifican una operación y las posiciones
(dirección) de memoria implicadas en la operación se
denominan instrucciones de máquina o código
máquina. El código máquina es el conocido código
binario.
Base 10 Base 2
Para convertir datos a cadenas de números, las 0 0
computadoras usan el sistema de números 1 1
binarios.
2 10
Los humanos usamos el sistema de números
decimales. (“deci” significa “diez”) 3 11
El sistema de números binarios funciona de la 4 100
misma manera que el sistema decimal, pero tiene 5 101
solo dos posibles símbolos (0 y 1) en lugar de
diez ( 0, 1, 2, 3, 4, 5, 6, 7, 8 y 9). 6 110
En numeros binarios el decimal 8 se representa 7 111
como 1000, esto es 2^3 =8, los terminos 2^2, 2^1 8 1000
y 2^0 no se contabilizan porque el bit es 0, esto es
su valor falso es y no se toman en cuenta. 9 1001
10 1010
1 1 1 1 1 1 1 1
1 0 0 1 0 0 1 1
1 0 0 1 0 0 1 0
1 0 1 1 0 0 1 0
Lenguajes de Programacion
● Ventajas del Lenguaje Máquina
– Posibilidad de cargar (transferir un programa a la
memoria) sin necesidad de traducción posterior, lo que
supone una velocidad de ejecución superior a cualquier
otro lenguaje de programación
● Desventajas del Lenguaje Máquina
– Dificultad y lentitud en la codificación
– Poca fiabilidad
– Gran dificultad para verificar y poner a punto los
programas
– Los programas solo son ejecutables en el mismo
procesador (CPU)
Lenguajes de Programacion
● Lenguajes de Bajo Nivel
– Son más fáciles de utilizar que los lenguajes máquina,
pero al igual que ellos, dependen de la máquina en
particular
– El lenguaje de bajo nivel por excelencia es el
ensamblador
– Las instrucciones en lenguaje ensamblador son
instrucciones conocidas como nemotécnicos
– Ejemplos:
● ADD, SUB, DIV
● ADD M, N, P > 0110 1001 1010 1011
Lenguajes de Programacion
● Ventajas del lenguaje ensamblador frente al
lenguaje máquina
– Mayor facilidad de codificación y, en general, su
velocidad de cálculo
● Desventajas del lenguaje ensamblador
– Dependencia total de la máquina lo que impide la
transportabilidad de los programas (El lenguaje
ensamblador de la PC es distinto del lenguaje
ensamblador del la Apple)
Lenguajes de Programacion
– La formación de los programadores es más compleja
que la correspondiente a los programadores de alto
nivel,ya que exige no solo las técnicas de
programación, sino también el conocimiento del
interior de la máquina
– Los lenguajes ensamblador tienen sus aplicaciones
muy reducidas, se centran básicamente en aplicaciones
de tiempo real, control de procesos y de dispositivos
electrónicos
Definicion de Problema
● El diccionario de la Real Academia Española lo
define como:
– “Conjunto de hechos o circunstancias que dificultan la
consecucion de algun fin”
– “Planteamiento de una situacion cuya respuesta
desconocida debe obtenerse a travez de metodos
cientificos”
– “Una necesidad inicial, que tiene un objetivo o
solucion a alcanzar mediante una serie de operaciones,
actividades o metodos bien definidos”
Metodologia de Solucion de
Problemas
● Metodo: “El conjunto de operaciones ordenadas
con que se pretende obtener un resultado”
● Metodologia: es la ciencia que aplica este metodo
– Metodologia de la Investigacion
– Metodologia de enseñanzaaprendizaje
– Metodologia para resolver calculos matematicos
– Etc, etc, etc
● En este caso hablaremos especificamente de la
solucion de problemas que podemos resolver
mediante el uso de la computadora
Resolucion de Problemas
● La resolucion de Problemas consta de 5 etapas:
– Identificacion del Problema
● Mas Importante
● Fundamental el analisis de la Informacion Inicial
● Definir los Datos de Salida
– Planteamiento de Alternativas de Solucion
● La solucion puede tener varias vias de soluciones
– Eleccion de una Alternativa
● Elejir la Alternativa mas adecuada tomando en cuenta las
caracteristicas del Problema y la Solucion
Resolucion de Problemas
– Desarrollo de la Solucion
● Se aplican las operaciones necesarias para solucionar el
problema
● Las operaciones deben llegar a la solucion por el camino
mas corto
– Evaluacion de la Solucion
● Control de Calidad. Comprobar que el resultado sea el
correcto
Resolucion de Problemas
● Ejercicio1: Encontrar entre 5 numeros cual
numero es mayor y calcular el promedio de los 5
numeros
● Identificacion del Problema: De los 5 numeros
cual numero es el mayor y calcular el promedio
– Entrada de Informacion
● 5 numeros enteros positivos cualesquiera
– Salida de Informacion
● Numero Mayor
● Promedio
Resolucion de Problemas
● Alternativas de Solucion:
– Alternativa 1
● Comparar el primer numeros a los otro 4 para ver si es el
mayor, en caso de serlo mostrar este numero
● En caso de no serlo compara el segundo numero a los otros 3
para ver si es el mayor, en caso de serlo mostrar este numero
● Asi sucesivamente hasta llegar al ultimo numero
– Alternativa 2
● Ordernar la lista de numeros de menor al mayor, y escojer el
ultimo numero de la lista. Mostrar el ultimo numero
Resolucion de Problemas
– Alternativa 3
● Escojer el primero y segundo numeros, comparar cual es el
mayor y escojerlo
● Compararlo con el tercer numero, escojer el mayor
● Compararlo con el cuarto numero, escojer el mayor
● Compararlo con el quinto numero, escojer el mayor
● Eleccion de una Alternativa
– Se escogio la Alternativa 3 por ser la mas completa,
sencilla o mejor segun las necesidades
Resolucion de Problemas
● Desarrollo de la Solucion: Se describen los pasos a
seguir (Algoritmo)
1.Inicio
2.Obtener la lista de 5 numeros
3.Comparar el Primer Numero con el Segundo y escojer
cual es el Mayor
4.Comparar el Numero Mayor obtenido en paso 3 y
compararlo con el Tercer Numero y escoger cual es el
Mayor
5.Comparar el Numero Mayor obtenido en paso 4 y
compararlo con el Cuarto Numero y escoger cual es el
Mayor
Resolucion de Problemas
6.Comparar el Numero Mayor obtenido en paso 5 y
compararlo con el Quinto Numero y escoger cual es el
Mayor
7.Mostrar el Numero Mayor
8.Sumar todos los numeros y dividirlos por 5 para
obtener el Promedio
9.Mostrar el Promedio
10.Fin
Resolucion de Problemas
● Ejercicio2:
– Si 2 refrescos cuestan $19.50, cuantos podemos
comprar con $78.00?
– Usar las 5 etapas de resolucion de problemas y crear el
programa en Pascal para calcular el resultado
Estructura de los Algoritmos
● Las estructuras basicas de los algoritmos son:
– Secuencial
– Alternativa
– Repetitiva
–
● Secuencial
– Sigue la secuencia del orden de las instrucciones
planteadas en el algoritmo por lo que existe un solo
camino para obtener el resultado
Estructura de los Algoritmos
● Ejemplo: Calcular el importe de un determinado
numero de articulos del mismo precio
1. Inicio
2. Leer cantidad de articulos (CA)
3. Leer precio (P)
4. Importe = CA * P
5. Mostrar Importe
6. Fin
Estructura de los Algoritmos
● Alternativa
– El algoritmo cuenta con 2 alternativas de las cuales se
selecciona una dependiendo del resultado que se
obtenga
● Ejemplo: Calcular el importe de un determinado
numero de articulos. Si el importe es mayor de
$60.00USD aplicar un descuento de 5%
Estructura de los Algoritmos
1. Inicio
2. Leer cantidad de articulos (CA)
3. Leer precio (P)
4. Importe = CA * P
5. Si Importe > 60.00 entonces
i. Descuento = Importe * 0.05
ii.Total = Importe – Descuento
iii.Mostrar Total
iv.Contrario
a)Mostrar Importe
v.Fin de SI
6. Fin
Estructura de los Algoritmos
● Repetitiva:
– Cuando el algoritmo requiere que un conjunto de
instrucciones se realice un numero finito de veces,
siempre y cuando la condicion sea verdadera
● Ejemplo: Calcular el importe de un determinado
numero de articulos de diferente precios que se
encuentran en oferta donde el cliente podra
comprar un maximo de 5 articulos de oferta
Estructura de los Algoritmos
1.Inicio
2.Importe = 0; CA = 0
3.Leer precio (P)
4.Leer cantidad (CA)
5.Mientras CA <= 5
i. Importe = Importe + Precio
ii.CA = CA + 1
iii.Leer P
iv.Fin Mientras
6.Mostrar Importe
7.Fin
Diagramas
● Diagramas
– Representacion grafica de una sucesion de hechos u
operaciones en un sistema
● Los Algoritmos se pueden representar utilizando
diagramas y se utilizan simbolos que representan
determinada operacion
Diagramas EntradaProceso
Salidad (EPS)
Simbologia Significado
Entrada/Salida.
Datos de
Entrada y
Resultado
Proceso.
Operaciones para
obtener el resultado
Lineas de Flujo.
Indica la
secuencia de flujo
de operaciones
del diagrama
Diagramas EntradaProceso
Salidad (EPS)
2 = $19.50
$78.00
PR = 78/19.50
RT = PR * 2
RT = 8
Diagramas de Flujos
Simbolo Significado
Inicio/Fin
Entrada de Teclado.
Representa el ingreso de los
datos al programa
Proceso. Representa las
operaciones que se efectuan
para obtener resultado
Diagramas de Flujos
Simbolo Significado
Decision. Representa las
operaciones tipo logico
Salida de Impresora. Se utiliza
para obtener el resultado
Salida por Pantalla. Se utiliza solo
para mostrar resultado
Diagramas de Flujos
Simbolo Significado
Conector. Se utliza para conectar
bloques del diagrama cuando el
diagrama es grande y necesario
divirlo
Lineas de Flujo. Indica la
secuencia del flujo
Diagramas de Flujos
● Reglas para el Diseño de Diagramas de Flujos
– Deben diseñarse de arriba hacia abajo o de izquierda a
derecha
– Los simbolos se unen con lineas de flujo. Las flechas
determinan el flujo que seguira el programa
– Las lineas de flujo solo deberan ser horizontales o
verticales, nunca en diagonal
– No deben de quedar lineas de flujo sin conectar con
algun simbolo
– El texto incluido en los simbolos debera de ser
concreto, preciso, y de facil leer
Diagramas de Flujos
– El simbolo de decision es el unico que tiene mas de
una linea de flujo de salida
– Todos los simbolos, a exepcion del FIN, pueden tener
mas de una linea de entrada
Ejemplo: Estructura Secuencial
Inicio
Calcular el importe de un
determinado numero de
articulos del mismo
precio CA, P
CA = Cantidad de
Articulos
P = Precio Unitario
Importe = CA * P
Importe
Fin
Ejemplo: Estructura Alternativa
Calcular el importe de un
determinado numero de
articulos.
Si el importe es mayor de
$60.00USD aplicar un
descuento
de 5%
Ejemplo: Estructura Repetitiva
Calcular el importe de un
determinado
numero de articulos de diferente
precios que se encuentran en
oferta
donde el cliente podra comprar un
maximo de 5 articulos de oferta
Pseudocodigo
● El Pseudocodigo es un lenguaje de
especificaciones de algoritmos que utiliza palabras
reservadas y exije la indentacion, o sea sangria en
el margen izquierdo de algunas lineas.
● Ventajas sobre los Diagramas de Flujo:
– Rapido de crear y modificar
– Herramienta muy buena para el seguimiento de la
logica de un algoritmo
– Facilidad de transformar los algoritmos a programas
Pseudocodigo
● La estructura basica de un algoritmo escrito en
pseudocodigo es:
algoritmo <identificador_algoritmo>
// declaracion, setencias no ejecutables
Inicio
// acciones, sentencias ejecutables tanto simples como
estructuradas
Fin
Pseudocodigo
● Para introducir un valor o serie de valores desde el
dispositivo estandar y almacenarlos en una o
varias variables utilizaremos
leer (<lista_de_variables>)
● Para imprimir en el dispositivo estandar de salida
una o varias expresiones emplearemos
escribir (<lista_de_expresiones>)
● Los elementos lexicos de nuestro pseudocodigo
son: Comentarios, Palabras reservadas,
Identificadores, Operadores y signos de
puntuacion y Literales
Pseudocodigo
● Comentarios. Los comentarios sirven para
documentar el algoritmo y en ellos escriben
anotaciones generalmente sobre su funcionamiento
// Comentario de una sola linea
{ Comentario que ocupa mas
de una linea }
Pseudocodigo
● Palabras Reservadas. son palabras que tienen un
significado especial, como Inicio y Fin, que
marcan el principio y fin del algoritmo. No
deberan utilizarse otras palabras similares aun
cuando se distinguen entre mayusculas y
minusculas.
Pseudocodigo
Decision Simple:
si <condicion> entonces
<acciones1>
fin_si
Decision doble:
si <condicion> entonces
<acciones1>
si_no
<acciones2>
fin_si
Pseudocodigo
Decision multiples:
segun_sea <expresion_ordinal> hacer
<lista_de_valores_ordinales> : <acciones1>
...........
[si_no //El corchete indica opcionalidad
<accionesN>]
fin_segun
Repetitivas:
mientras <condicion> hacer
<acciones>
fin_mientras
repetir
<acciones>
hasta_que <condicion>
desde <variable> ← <v_inicial> hasta <v_final>
[incremento | decremento <incremento>] hacer
<acciones>
fin_desde
Pseudocodigo
● Identificadores. son los nombres que dan a las
constantes simbolicas, variables, funciones,
procedimientos, u otros objetos que manipulan el
algoritmo. Las reglas para construir un
identificador establece que:
– Debe resultar significativo, sugiriendo lo que
representa
– No podra coincidir con palabras reservadas, propias del
lenguaje algoritmicos.
– Comenzara con un caracter alfabetico y los siguientes
podran ser letras, digitos o simbolo de subrayado
Pseudocodigo
● Operadores y signos de puntuacion
– Los operadores se utilizan en las expresiones e indican
las operaciones a efectuar con los operandos, mientras
que los signos de puntuacion se emplean con el
objetivo de agrupar o separar, por ejemplo . ; o [ ]
● Literales
– Los literales son los valores que aparecen directamente
escritos en el programa y pueden ser literales: logicos,
enteros, reales, de tipo caracter, de tipo cadena y el
literal nulo
Ejercicios
Escribir un algoritmo que lea un valor entero, lo doble, se multiplica por 25
y visualice el resultado
Analisis de Problema
DATOS DE SALIDA: Resultado (es el resultado de realizar las operaciones
DATOS DE ENTRADA: Numero (el numero que leemos por teclado
Diseño del Algoritmo
algoritmo ejercicio_3
var
numero, resultado : entero;
inicio
leer (numero);
numero ← numero * 2;
resultado ← numero * 25;
escribir (resultado);
fin.
Ejercicios
Diseñar un algoritmo que lea cuatro variables y calcule e imprima su producto, su suma y
su media aritmetica
Analisis del Problema
DATOS DE SALIDA: producto, suma y media
DATOS DE ENTRADA: a, b, c, d
Diseño del Algoritmo
algoritmo ejercicio_4
var
a,b,c,d,producto, suma : entero;
media : real;
inicio
leer (a,b,c,d);
producto := a * b * c * d;
suma := a + b + c + d;
media := suma / 4
escribir (producto,suma,media);
fin.
Tipos de Datos ENTEROS
Tipos de Datos REAL
Tipos de Datos
● Tipo carácter (Char).
– El tipo Char depende del código de caracteres
empleado por la máquina. El más utilizado es el código
ASCII. Una variable o constante tipo Char puede
contener un solo carácter especificado entre apóstrofes.
Ejem. 'a' 'M'
● Tipo Lógico (Boolean).
– Pueden tomar dos valores True (verdadero) False
(falso). El identificador estándar boolean define una
variable de este tipo
Tipos de Datos
● Tipo Cadena (String).
– Una cadena (string) es una secuencia de caracteres que
tiene una longitud máxima de 255 caracteres. Los
caracteres que componen la cadena se delimitan con
apóstrofes. Ejem.
● 'abcd' longitud de la cadena 4
● '' cadena vacía o nula
Tipos de Datos
– Una variable de cadena se define utilizando la palabra
reservada String y el tamaño fisico máximo que pueda
alcanzar durante la ejecución del programa. Ver el
siguiente ejemplo:
Tipos de Datos
Const
Lonmax 80;
Type
Cadena = String[Lonmax];
Var
Varcad: Cadena; {*almacena hasta 80 caracteres*}
Nombre: String; {*almacena hasta 255 caracteres*}
Tipos de Datos
● Existen dos diferentes tipos de datos simples
definidos por el usuario: enumerados y subrago
● Tipos enumerados: Los tipos enumerados se
componen de una lista de identificadores
encerrados entre paréntesis y separados por comas
– Ejemplo:
Type
Estaciones = (primavera, verano, otoño, invierno);
Colores (rojo, amarillo, verde, azul, violeta);
Tipos de Datos
– Los tipos enumerados son ordinales ya que llevan
asociado cada uno un número entero, empezando por el
primero, al que se le asigna el 0, al segundo un 1, y así
sucesivamente, por lo que no es independiente el orden
de declaración. Un valor de tipo enumerado no puede
pertenecer a dos declaraciones de tipo distintas y no
pueden leerse desde teclado, ni escribirse en pantalla
Tipos de Datos
● Tipos subrango: Es un subconjunto de un tipo
ordinal (enteros, boolean, carácter y enumerado)
que se especifica indicando el primero y el último
elemento del conjunto
– Ejem. 1
Type
Identificador=primerelemento..ultimoelemento;
Tipos de Datos
– Ejem. 2
Type
Fecha= 1..31;
Var
Dia: Fecha;
– Los tipos enteros, carácter, booleanos, enumerados y
subrango se denominan tipos ordinales. Un tipo ordinal
representa una secuencia ordenada de valores
individuales, a los que se puede aplicar los conceptos
de predecesor y sucesor. En cada tipo de datos
ordinales hay un primer valor y un último valor
Tipos de Datos
● Constantes: Son datos cuyo valor no cambia
durante todo el desarrollo del algoritmo
– Numericas enteras
– Numericas reales
– Logicas
– Caracter
– Cadena
● Variable: Una variable es un objeto cuyo valor
puede cambiar durante el desarrollo del algoritmo.
Se identifica por su nombre y por su tipo
Operadores Aritmeticos
Operador Función
+ operador binario suma.
operador binario resta.
* operador binario producto.
/ operador binario división real.
div operador binario división entera.
mod operador binario resto entero.
Funciones Predefinidas
Instrucción Función
Abs(x) Proporciona el valor absoluto de una variable numerica x.
ArcTan(x) El arco cuya tangente es x.
Chr(x) Devuelve el carácter ASCII de un entero entre O y 255.
Cos(x) Proporciona el valor del coseno de x.
Exp(x) La exponencial de x(eX).
Frac(x) Parte decimal de x.
Int(x) Parte entera de x.
Ln(x) Logaritmo neperiano de x.
Odd(x) True si x es impar, y false si es par.
Ord(x) Ordinal de una variable tipo ordinal x.
Pred(x) Ordinal anterior a la variable ordinal x.
Round(x) Entero más próximo al valor x.
Succ(x) Ordinal siguiente a la variable ordinal x.
Sin(x) Seno de x.
Sqr(x) Cuadrado de x.
Sqrt(x) Raiz cuadrada de x, para x>=O.
Trunc(x) Parte entera de x.
Expresiones
● Una expresion es una combinacion de operadores
y operandos. Los operandos podran ser constantes,
variables u otras expresiones y los operadores de
cadena, aritmeticos, relacionales o logicos. Las
expresiones se clasifican, segun el resultado que se
producen, en:
– Numericas
– Alfanumericas
– Booleanas
Expresiones
● El orden de prioridad es el siguiente:
– Parentesis
– Exponenciacion
– Operadores unarios
– Multiplicacion y Division
– Suma y Resta
– Operadores de relacion (=, <, >, <=, >=, <>)
● La evaluacion de operadores con la misma
prioridad se realizara siempre de izquierda a
derecha.
Ejercicios
● Escribir un programa que calcule la longitud y el
área de una circunferencia. El radio de la
circunferencia es igual a 4cm.
● Escribir un programa en Pascal que calcule la
velocidad de un proyectil que recorre 2 Km en 5
minutos. Expresar el resultado en metros/segundo.
Ejercicios
● Escribir un programa en Pascal que evalúe la
siguiente expresión:
● a7c
b2−a2b
● a = 3,b = 6,c = 4
● Escribir un programa en Pascal que evalúe la
siguiente expresión:
●
x53
●
2y−y
● x = 3,y = 6
●
Tecnicas de Diseño
● Existen tres tecnicas en el diseño de programacion
estructurada:
– Top down
– Bottom Up
– WARNIER ORR
Tecnicas de Diseño
● Top Down
– Técnica para diseñar que consiste en tomar el problema
en forma inicial como una cuestión global y
descomponerlo sucesivamente en problemas más
pequeños y por lo tanto, de solución más sencilla. La
descomposición del problema original (y de las etapas
subsecuentes), puede detenerse cuando los problemas
resultantes alcanzan un nivel de detalle que el
programador o analista pueden implementar
fácilmente.
Tecnicas de Diseño
● Objetivos básicos del Top−Down
– Simplificación del problema y de los subprogramas de
cada descomposición
– Las diferentes partes del problema pueden ser
programadas de modo independiente e incluso por
diferentes personas.
– El programa final queda estructurado en forma de
bloque o módulos lo que hace mas sencilla su lectura y
mantenimiento
Tecnicas de Diseño
● Bottom Up
– Es conocida también como ascendente, la diferencia
entre el bottom up y el top down es que los módulos
son enumerados de forma diferente. En el bottom up se
enumeran primero los módulos inferiores hasta llegar
al modulo superior
Tecnicas de Diseño
● Warnier Orr
– Es una técnica que utiliza una representación semejante
a la de cuadros sinópticos para mostrar el
funcionamiento y organización de los elementos que
conforman el algoritmo. Los diagramas Warnier Orr
son útiles porque son compatibles con las técnicas de
programación estructurada ; y además, son fáciles de
desarrollar. Los diagramas Warnier Orr son fáciles de
leer y modificar y no tienen que completarse antes de
ser útiles. Se van desarrollando hacia otras salidas del
sistema
Datos Estructurados
● Una estructura de datos es una coleccion de datos
que se caracterizan por su organizacion y las
operaciones que se defina en ella.
● Las estructuras se clasifican de acuerdo a varios
criterios:
– Respecto al número de componentes, las estructuras
se clasifican en estáticas (el número de componentes es
fijo) y dinámicas (el número de componentes varía
durante la ejecución del programa ya que se pueden
crear y destruir las variables durante el desarrollo del
mismo
Datos Estructurados
– Respecto al tipo de componentes las estructuras suelen
formarse o bien por combinación de datos de distinto
tipo (registros) o bien por la repetición de datos del
mismo tipo (arrays,conjuntos archivos, listas, árboles,
etc.). Dentro de éstas el acceso puede hacerse por
posicion, ya sea de forma secuencial o bien directa, o
bien por contenido o clave
Datos Estructurados
● Estructura de datos estaticas
– Arrays
– Registros
– Cadenas
– Conjuntos
– Archivos
● Estructura de datos dinamicas (no soportada en
todo los lenguajes)
– Listas
– Arboles
– Grafos
Arrays
● Un Array es una estructura homogénea de datos de
tamaño constante accediendo a cada uno de sus
elementos mediante un identificador comun y uno
o varios índices
● Las caracteristicas de un array son:
– Todos los elementos del array son del mismo tipo
– El número de ellos no varía durante la ejecución del
programa
Arrays
– Accedemos a un elemento de la estructura mediante un
identificador común, el nombre del array, y con el
valor que toman uno o varios indices. Al número de
indices necesarios para designar un elemento del array
se le denomina dimensión del array
– El número máximo de valores posibles que puede
tomar cada indice se denomina rango de esa dimensión
o indice. Los valores han de ser consecutivos, por lo
que el indice ha de ser de un tipo ordinal
Arrays
● Los Arrays podran ser:
– Unidimensionales (una dimension), tambien llamados
vectores
– Bidimensionales (dos dimensiones), denominados
tablas o matrices
– Multidimensionales, con tres o mas dimensiones
Declaracion de Tipo y Variables
Array
● Al ser un tipo estructurado, la declaracion se hara
en funcion de otro tipo estandar o previamente
definido, al que se denominara tipo base, por se
todos los elementos constituyentes de la estructura
del mismo tipo
● La declaracion mas general de un array es la
siguiente:
Declaracion de Tipo y Variables
Array
Type
Rango1 = tipo_ordinal1;
Rango2 = tipo_ordinal2;
...
rangoN = tipo_ordinalN;
tipobase = (*cualquier predefinido o definido por el usuario*)
tipoarray = array [rango1,rango2,...,rangoN] of tipobase,
Ejemplo de Array Unidimensional
program Arrays; //almacenar informacion dentro del array “a”
var
a: array[1..5] of Integer;
begin
a[1] := 12;
a[2] := 23;
a[3] := 34;
a[4] := 45;
a[5] := 56;
end.
Ejemplo de Array Unidimensional
program Arrays; //ejemplo de leer 5 numeros
var
a: array[1..5] of Integer;
i: Integer;
begin
for i := 1 to 5 do
Readln(a[i]);
end.
Ejemplo de Array Bidimensional
program Arrays_Bidimensional;
var
a: array [1..3,1..3] of Integer;
begin
end.
Ejemplo de Array Bidimensional
program Arrays_Bidimensional;
var
r, c: Integer;
a: array [1..3,1..3] of Integer;
begin
for r := 1 to 3 do
for c := 1 to 3 do
Readln(a[r,c]);
end.
Recorrido de todos los elementos
del Array
● El recorrido de todos los elementos de un array se
realizara utilizando estructuras repetitivas, con las que se
manejan los subindices del array.
● Si se trata de un array unidimensional, bastara con una
estructura repetitiva
● Para un array bidimensional se necesitaran 2 estructuras
repetitivas anidadas, una que controle la filas y otra las
columnas
● Para recorrer los elementos de una matriz de n
dimensiones, utilizaremos n estructuras reprtitivas
anidadas
Ejemplos
● Teniendo la siguiente declaracion del array
Const
F = <valor1>;
C = <valor2>;
Type
Matriz = array[1..F, 1..C] of real;
Var
m:matriz
Ejemplo: Por Fila
● Recorrido por Fila
Desde I ← 1 hasta F hacer
desde j ← 1 hasta C hacer
escribir (m[i,j]);
fin_desde
fin_desde
Ejemplo: Por Columna
● Recorrido por Columna
●
desde j ← hasta C hacer
desde I ← hasta F hacer
escribir (m[i,j]);
fin_desde
fin_desde
Ejercicios
● Determinar los valores de los vectores N y M
despues de la ejecucion de las instrucciones
siguientes:
Var
M, N : array[1..3] of integer;
Inicio
M[1] ← 1
M[2] ← 2
Ejercicios
M[3] ← 3;
N[1] ← M[1] + M[2];
N[2] ← M[1] – M[3];
N[3] ← M[2] + M[3];
N[1] ← M[3] – M[1];
M[2] ← 2 * N[1] + N[2];
M[1] ← N[2] + M[1];
End
Ejercicios
● Las dos operaciones basicas son comparación y
concatenación.
● Operador de concatenación (+)
– Se utiliza para reunir varias cadenas en una sola
– Ejemplo
● Cad1:='esto es un ejemplo';
● Cad2:='de concatenacion de cadenas';
● Cadr:=cad1+cad2;
● Write (cadr);
– Se visualizaría esto es un ejemplo de concatenacion
de cadenas
Operaciones con Cadenas
● La funcion concat realiza la misma funcion que el
operador de concatenacion. La sintáxis es:
– Function concat (cad1,cad2,...:string): string;
● La cadena vacia o nula se representa con dos
caracteres apóstrofes seguidos ' '. El acceso a los
elementos de una cadena individualmente se hace
como si fuera un array
Operaciones con Cadenas
● Ejemplo.
– Cad1:='ejemplo';
– Para referirnos al primer elemento pondriamos cad1[1]
que seria la letra e
● La funcion Length proporciona la longitud logica
de una cadena de caracteres.
– Ejemplo.
– Longitud:=length(cad1);
– La variable longitud tomaria el valor 7
Operaciones con Cadenas
● Funciones para Cadenas
– COPY
– POS
– DELETE
– INSERT
– UPCASE
– STR
– VAL
Ejercicios
● Escribir un programa en Pascal que calcule el área
de un rectángulo:
– lado1 = 3 lado2 = 4
– área del rectángulo=lado1 * lado2
● Escribir un programa en Pascal que calcule el
volumen de una esfera:
– radio = 3 volumen de la esfera = 4/3 * PI * radio 3
Ejercicios
● Escribir un programa en Pascal que calcule la
hipotenusa de un triángulo rectángulo
– cateto 1 = 5
– cateto 2 = 5
●
● Escribir un programa en Pascal que calcula el
equivalente en grados Fahrenheit o Celsius de las
siguientes temperaturas.
– Temperatura 1 = 32o Fahrenheit
– Temperatura 2 = 10 o Celsius
– {Regla de 3: Celsius / 5 = (Fahrenheit – 32) 9}
Ejercicios
● Escribir un programa en Pascal que calcule el
capital producido por un deposito de 1,000,000 de
pesos, al cabo de un año depositado a un interés
del 2%
● Escribir un programa en Pascal que calcula la
siguiente expresión trigonométrica para un valor
angular de 90°
– (sen x * cos x)/(tan x)
Modulos/Rutinas/Subprogramas
● Cuando se presenta la necesidad de ejecutar un mismo
grupo de sentencias en distintos lugares del programa,
conviene disponer de algún recurso para no tener que
escribirlas repetidamente, lo cual resulta tedioso y
presenta otros inconvenientes.
● La solución que se suele ofrecer consiste en agrupar cada
uno de esos conjuntos de sentencias destacándolos y
asignándoles un nombre, constituyendo así las llamadas
RUTINAS o subprogramas. Luego, basta con invocar su
nombre en cualquier sentencia para conseguir que se
ejecute todo el conjunto.
Modulos/Rutinas/Subprogramas
● Con ese enfoque, el programa queda organizado
en módulos que se expresan en forma de rutinas.
Una recomendación muy extendida propone que la
escritura de cada subprograma no sobrepase el
tamaño de un folio para facilitar su lectura y
comprensión
Modulos/Rutinas/Subprogramas
● El diseño modular va dirigido a conseguir
programas fiables y legibles:
– El esfuerzo de la programación se concentra finalmente
en subproblemas pequeños y sencillos
– Es fácil escribir módulos pequeños libres de error y
verificarlos independientemente con datos simulados
– Los listados pequeños son más legibles
– Resulta natural la adaptación al trabajo en equipo. Las
tareas de desarrollar los módulos se pueden repartir
entre varias personas
Modulos/Rutinas/Subprogramas
● El interés de utilizar subprogramas también se
justifica por la construcción de bibliotecas de
rutinas de utilidad general que puedan ser
invocadas desde los programas que escribe el
usuario para resolver casos particulares
Modulos/Rutinas/Subprogramas
● En PASCAL, se pueden manejar dos tipos de
rutinas: los PROCEDIMIENTOS y las
FUNCIONES
●
● Los Procedimientos y Funciones se deben de
declarar afuera del programa principal, deben de
identificarse con nombres unicos y tiene sus
propios begin y end.
Modulos/Rutinas/Subprogramas
● La diferencia más importante entre un
procedimiento y una función es el hecho de que
una función es una expresión y como a tal se
puede emplear dentro de otras expresiones. Un
procedimiento, en cambio, representa una
instrucción y no puede ser empleada dentro de un
contexto de expresión.
● Las funciones devuelven siempre un valor de un
tipo determinado
Funciones (Function)
● La declaración de una función sigue el modelo
siguiente :
function NombreFuncion ( listaParametros ) : tipoRetorno;
– NombreFuncion es el identificador de la función y es el
nombre que emplearemos para llamarla.
– ListaParametros representa el conjunto de parámetros que
se pueden pasar a la función. Para declarar más de un
parámetro los tenemos que separar entre puntos y comas y
teniendo en cuenta de que el último parámetro no lleva
nunca punto y coma
– tipoRetorno representa el tipo de datos que devuelve la
función.
Funciones (Function) Ejemplos
Function Mayor(a,b,c:Integer):Integer;
{Funcion nombrada Mayor para calcular cual
numero es mayor}
begin
if a >= b then
if a > c then
Mayor := a
else
Mayor := c
else
if b >= c then
Mayor := b
else
Mayor := c;
end; {Fin de la funcion Mayor}
Funciones (Function) Ejemplos
VAR r, radio, circulo, esfera : REAL;
FUNCTION Potencia ( base:REAL, exponente:INTEGER):REAL;
VAR i : INTEGER;
BEGIN
Potencia := 1;
FOR i:=1 TO exponente DO Potencia:=Potencia*base
END;
...
circulo := 3.1416 * Potencia (radio, 2);
esfera := 4/3 * 3.1416 * Potencia (r, 3);
Procedimientos (Procedure)
Los procedimientos se declaran de forma parecida a las
funciones pero sin especificar el tipo de salida ya que no
tienen. Por ejemplo el procedimiento Creditos escribiría
unos créditos en la pantalla :
procedure Creditos;
begin
Writeln('Fundamento de Programacion'
Writeln('Prof. Daniel De Santiago');
end;
Procedimientos (Procedure)
● La declaración de un procedimiento sigue el
modelo siguiente :
procedure identificador (lista de parámetros formales);
Sección de las declaraciones;
begin
Sección ejecutable
end;
Procedimientos (Procedure)
– Identificador: da nombre a la rutina y se utiliza para
invocarla al solicitar su ejecución. Se construye siguiendo
las mismas reglas que rigen para las constantes y las
variables.
– Lista de parámetros formales : especificación de los
identificadores que se utilizan para comunicar valores con
otros módulos del programa. Se indican sus tipos y los
mecanismos para la transferencia.
Procedimientos (Procedure)
– Sección de las declaraciones : contiene las declaraciones de
todas las entidades definidas por el usuario que se utilizan
dentro de la rutina: etiquetas, constantes, tipos,variables,
procedimientos, funciones. Son identificadores locales. No
se admite la inicializacion de variables. No se puede volver
a declarar los nombres de los parámetros formales.
– Sección ejecutable : contiene las sentencias con las que se
realizan las acciones que constituyen el subprograma.
Termina con el delimitador END seguido de punto y coma.
Procedimientos (Procedure)
● Hasta ahora hemos visto que una función puede
devolver un valor y que por tanto la podemos
incluir dentro de una expresión. Muchas veces nos
puede interesar especificar parámetros que
implique en un cambio en estos parámetros y esto
no es posible de implementar en una simple
función.
Procedimientos (Procedure)
● Supongamos un procedimientos en el cual pasando
dos parámetros de tipo entero queremos que se
intercambien los valores. Una forma de hacerlo es
mediante sumas y restas. Nosotros
implementaremos un caso más general mediante el
uso de una tercera variable temporal.
Procedimientos (Procedure)
procedure Intercambiar(var a : integer; var b : integer);
{ Podíamos haber escrito como parámetros (var a, b :
integer); }
var
temporal : integer;
begin
temporal := b;
b := a;
a := temporal;
end;
Parametros
● Los parámetros son canales de comunicación para
pasar datos ente programas y subprogramas en
ambos sentidos
● Los parámetros van asociados a variables,
constantes, expresiones, etc., y por tanto, se
indican mediante los correspondientes
identificadores o expresiones
Parametros
● Existen 2 tipos de Parametros:
– Parametros por Valor
– Parametros por Referencia
● Los Parametros por Valor no son nada más que
una copia de los parámetros originales que se
crean sólo para la función o procedimiento. Una
vez termina esta copia desaparece, por lo que toda
modificación que hagamos dentro de la función o
procedimiento se perderá.
Parametros
● Los Parametros por Referencia la función o
procedimiento conoce exactamente la posición de
memoria del parámetro por lo que las
modificaciones que hagamos dentro de la función
o procedimiento permanecerán después de la
llamada. Para indicar que un parámetro es por
referencia incluiremos la palabra reservada Var
delante del parámetro
Estructura de Pascal
● Ver la figura siguiente de como seria la estructura
de Pascal
Ejercicios
● Escribe un programa que calcule las raices de una
ecuacion de 2do grado (usar la formula general)
● Escribir un programa que determine si un numero
leido desde el teclado es par o impar
● Escribir un programa en Pascal que dado un
número del 1 a 7 escriba el correspondiente
nombre del día de la semana.
Ejercicios
● Escribir un programa en Pascal que calcule el
factorial de un número
● A partir de las cadenas de caracteres 70809207 y
Q, construir y visualizar en la pantalla la cadena
70809207Q
● Escribir un programa en Pascal que rellene un
array con diez números enteros consecutivos y
haga una copia de ese array en otro
Ejercicios
● Escribir un programa en Pascal que calcule el
salario neto semanal de un trabajador en función
del número de horas trabajadas y la tasa de
impuestos de acuerdo a las siguientes hipótesis.
– Las primeras 35 horas se pagan a tarifa normal
– Las horas que pasen de 35 se pagan 1.5 veces la tarifa
normal
– Las tasas de impuestos son:
● a: Los primeros 50 dólares son libres de impuestos
● b: Los siguientes 40 dólares tienen un 25% de impuestos
● c: Los restantes de 45% de impuestos
Ejercicios
● Escribir un programa en Pascal que sume los elementos de
cada una de las filas y de las columnas de la siguiente
matriz; el resultado de cada suma se almacenará en la
última posición de la fila o columna correspondiente.
Además la suma total de todos los elementos de la matriz
se almacenará en el elemento de la esquina inferior
derecha de la matriz:
1 7 0
5 6 0
6 4 0
7 3 0
0 0 0