COMPUTACION2009
Clase 2
04/21/23Computación - Fac. Ingeniería
- UNMDP 2
Temas de la clase 2
El paradigma de la programación estructurada Resolución de un problema usando
un programa Pascal Datos string, enumerados y
subrango Expresiones
04/21/23Computación - Fac. Ingeniería
- UNMDP 3
Programación estructurada
La programación estructurada es un paradigma de programación (cuerpo teórico que sustenta un estilo de programación) donde se enfatiza el orden y agrupamiento de operaciones a realizar.
Sus componentes son:
Estructuras básicas de control
Recursos abstractos
Razonamiento top-down
04/21/23Computación - Fac. Ingeniería
- UNMDP 4
Estructuras básicas de control
Secuencia: conjunto ordenado de instrucciones
Decisión
Repetición
04/21/23Computación - Fac. Ingeniería
- UNMDP 5
Recursos abstractos
Consisten en concebir una acción compleja, no en términos de instrucciones de computadora, sino en términos de entidades naturales al mismo problema deducidas en una forma adecuada.
04/21/23Computación - Fac. Ingeniería
- UNMDP 6
Razonamiento top-down (deducción de arriba hacia abajo
Consisten en concebir una acción compleja, no en términos de instrucciones de computadora, sino en términos de entidades naturales al mismo problema deducidas en una forma adecuada.
El razonamiento top-down acompaña a los recursos abstractos usados
04/21/23Computación - Fac. Ingeniería
- UNMDP 7
Recurso abstracto vs. razonamiento top-down
Problema (enunciado Problema (enunciado general)general)
1er paso de su solución1er paso de su solución
2do paso de su solución2do paso de su solución
Solución finalSolución final
Problema (acción no primitiva)Problema (acción no primitiva)
1er división en acciones no 1er división en acciones no primitivasprimitivas
2da división en acciones no 2da división en acciones no primitivas y primitivasprimitivas y primitivas
3er división en acciones primitivas 3er división en acciones primitivas (algoritmo)(algoritmo)
04/21/23Computación - Fac. Ingeniería
- UNMDP 8
Ejemplo
Calcular el seno usando un polinomio de Taylor
Acciones primitivas del procesador: ingresar datos, escribir datos, sumar, restar, multiplicar y dividir
!7!5!3)()(
753
7
xxxxxpxseno
ALGORITMO SENO1
• 1. Leer x
• 2. Calcular p7(x)
• 3. Escribir el resultado
Acción no primitiva
ALGORITMO SENO2
1. Leer x
2.1 Calcular los términos de la serie
2.2 Sumar algebraicamente los términos de la serie
3. Escribir el resultado
Acciones no primitivas derivadas
ALGORITMO SENO3
1. Leer x
2.1.1 a x3/3!
2.1.2 bx5/5!
2.1.3 c x7/7!
2.2 sen x - a + b-c
3 Escribir sen
Acciones no primitivas derivadas
ALGORITMO SENO4
1. Leer x
2.1.1.1 pot1 x*x*x
2.1.1.2 fact1 3*2
2.1.1.3 a pot1/fact1
2.1.2.1 pot2 x*x*pot1
2.1.2.2 fact2 5*4*fact1
2.1.2.3 bpot2/fact2
2.1.3.1 pot3 x*x*pot2
2.1.3.2 fact3 7*6*fact2
2.1.3.3 cpot3/fact3
2.2 sen x - a + b-c
3 Escribir sen
Las acciones encontradas son primitivas.
Puede facilmente llevarse a un programa Pascal
ALGORITMO SENO4
1. Leer x
2.1.1.1 pot1 x*x*x
2.1.1.2 fact1 3*2
2.1.1.3 a pot1/fact1
2.1.2.1 pot2 x*x*pot1
2.1.2.2 fact2 5*4*fact1
2.1.2.3 bpot2/fact2
2.1.3.1 pot3 x*x*pot2
2.1.3.2 fact3 7*6*fact2
2.1.3.3 cpot3/fact3
2.2 sen x - a + b-c
3 Escribir sen
Las acciones encontradas son primitivas.
Puede facilmente llevarse a un programa Pascal
04/21/23Computación - Fac. Ingeniería
- UNMDP 13
Cómo resolver un problema con un sistema informático? (I)
DEFINICION del problema (enunciado con especificaciones)
ANALISIS Y DISEÑO de un método estructurado de solución: ALGORITMO
CODIFICACION del algoritmo en un lenguaje de programación de alto nivel (como resultado se obtiene el PROGRAMA FUENTE). Ejemplo.pas
04/21/23Computación - Fac. Ingeniería
- UNMDP 14
Cómo resolver un problema con un sistema informático? (II)
COMPILACION del programa fuente (como resultado se obtiene PROGRAMA OBJETO).
EJECUCION a partir del programa objeto linkeditado se obtiene un archivo ejecutable (Ejemplo.exe). Ejecución + datos se obtienen los resultados.
04/21/23Computación - Fac. Ingeniería
- UNMDP 15
Cómo resolver un problema con un sistema informático? (III)
DEPURACION Eliminación y corrección de errores (debugger)
DOCUMENTACION Interna: comentarios en el programa fuente.
Externa: diagramas con el analisis de diseño, manuales, etc.
04/21/23Computación - Fac. Ingeniería
- UNMDP 16
Edición del programa fuente
Almacenamiento de la edición
Compilación del programa fuente. Se encontrarán errores SINTÁCTICOS.
Ejecución del programa. Se encontrarán errores SEMÁNTICOS
Visualización de los resultados
Depuración y modificación.
Ciclo de desarrollo de un PROGRAMA PASCAL
04/21/23Computación - Fac. Ingeniería
- UNMDP 17
ERRORES en ProgramaciónERRORES en Programación
Los errores sintácticos son los que se cometen cuando no se siguen exactamente las reglas de escritura de un lenguaje de programación.
(SINTAXIS: define como se combinan los símbolos, constantes, identificadores y palabras reservadas)
Los errores semánticos son los que se cometen cuando los resultados obtenidos no son los esperados como solución al problema planteado.
04/21/23Computación - Fac. Ingeniería
- UNMDP 18
PROGRAM Identificador(USES Identificador)
LABEL Declaración de etiquetas
CONST Definición de constantes
TYPE Declaración de tipos
VAR Declaración de variables
PROCEDURE Declaración de procedimientos
FUNCTION Declaración de funcionesBEGIN Sentencias ejecutablesEND.
Vamos a Vamos a estudiar la estudiar la sección de sección de declaración declaración de tipos de de tipos de datosdatos
04/21/23Computación - Fac. Ingeniería
- UNMDP 19
Para que PASCAL incorpore un nuevo tipo de datos le debemos dar un nombrenombre en una declaración de tipo.
La declaración del nuevo tipo debe hacerse en la sección TYPE.
Notar que esta declaración es distintadistinta a la declaración de variables.
Una vez que se declaró el nuevo tipo de dato, se deben declarar las variablesvariables que pertenezcan a esos tipos en la sección VAR
Uso de la sección TYPE: d de la sección TYPE: datos atos creados por el programadorcreados por el programador
04/21/23Computación - Fac. Ingeniería
- UNMDP 20
Tipo de dato creado por el programador: cadena o string
El tipo string string (palabra reservada) está formado por toda secuencia finita de caracteres (hasta 255) encerrada entre apóstrofos
Estas secuencias de caracteres se llaman cadenas (o string) constantes.
Ejemplos de constantes string:
‘Hoy es miercoles 18 de marzo del 2009’
‘KAWASAKI’
04/21/23Computación - Fac. Ingeniería
- UNMDP 21
Type Identificador de tipo = string[n];
{n indica la cantidad de caracteres de la cadena }
Declaración del tDeclaración del tipo cadena o ipo cadena o stringstring: sintaxis: sintaxis
04/21/23Computación - Fac. Ingeniería
- UNMDP 22
Program ejemplo1_string; TYPE
Marca_motos=string[10];{Hasta 10 caracteres}Facultades=string[25];{Hasta 25 caracteres}VARMi_moto:Marca_motos;Fac:Facultades;
BEGIN Mi_moto:= ‘SUSUKI’; Readln(Fac);END.
TTipo cadena o stringipo cadena o string: : ejemplo1ejemplo1 Declaración del tipo de
datos en TYPE
Declaración de variables usando el tipo declarado en TYPE
04/21/23Computación - Fac. Ingeniería
- UNMDP 23
Program ejemplo1_string; TYPE Nombre=string[25]; VAR apellido:Nombre; Linea:string;BEGIN apellido:= ‘Garcia Martinez’; Linea:=‘Este es un ejemplo de string. Puede contener hasta 255 caracteres’;END.
Observación: El tipo string (sin corchetes) indica una cadena de hasta 255 caracteres. Y Pascal lo tiene predefinido
TTipo cadena o stringipo cadena o string: : ejemplo2ejemplo2
04/21/23Computación - Fac. Ingeniería
- UNMDP 24
El tipo enumerado define un conjunto de valores definidos y ordenados por el programador(i.e. definidos por enumeraciónenumeración). Estos valores serán tomados por las variables de ese tipo
Datos enumerados
Sintaxis:
type Identificador de tipo=(const1,const2, ......,constn);
04/21/23Computación - Fac. Ingeniería
- UNMDP 25
Program ejemplo_enumerado;TYPE dias_semana=(lunes,martes,miercoles,jueves, viernes,sabado,domingo); facultades=(ingenieria,exactas,arquitectura, economicas);VAR dias:dias_semana; fac1,fac2:facultades;BEGIN fac1:=ingenieria; dias:=lunes;END.
Datos enumerados: ejemplo
La variable La variable dias solo solo puede tomar como valor puede tomar como valor lunes,martes,miercoles,jueves,viernes,sabado, domingo
04/21/23Computación - Fac. Ingeniería
- UNMDP 26
Datos Datos enumeradosenumerados: : observaciónobservación
Los identificadores de los valores no deben repetirse. El siguiente ejemplo es ilegal:
Typedias_semana=(lunes,martes,miercoles,jueves, viernes,sabado,domingo);
fin_semana=(sabado,domingo);
sabado, domingo son valores ambigüos.
04/21/23Computación - Fac. Ingeniería
- UNMDP 27
TYPE dias_semana=(lunes,martes,miercoles,jueves,viernes,sabado, domingo);facultades=(ingenieria,exactas, arquitectura, economicas);
VARsem1:dias_semana;f1,f2: facultades;Altura:real;
BEGINsem1:=ingenieria;{error, tipo mezclado}f2:=jueves; {error, tipo mezclado}Altura:=martes; {error, tipo mezclado}READLN(sem1); {error,No se puede leer}
Ejemplo Ejemplo del uso incorrecto de tiposdel uso incorrecto de tipos::
OBSERVACION: los datos de tipo
enumerado no pueden ser leidos
o escritos.
OBSERVACION: los datos de tipo
enumerado no pueden ser leidos
o escritos.
04/21/23Computación - Fac. Ingeniería
- UNMDP 28
Datos subrango
El tipo de dato SUBRANGO es un subconjunto de un tipo asociado (que comprenden a los tipos agrupados como escalares: INTEGER, Enumerado, CHAR)
Un tipo de dato puede definirse como un subintervalo de algún otro tipo escalar previamente definido, al que se llama su tipo escalar asociado.
04/21/23Computación - Fac. Ingeniería
- UNMDP 29
Datos Datos subrango
La definición de un tipo por subrango indica simplemente el valor menor y mayor en el subrango, teniendo en cuenta que la cota inferior no puede ser mayor que la cota superior.
No se permiten subrangos del tipo real.
04/21/23Computación - Fac. Ingeniería
- UNMDP 30
Datos subrango
Sintaxis:
TYPE Identificador de tipo=constante1..constante2;
Semánticamente, un tipo por subrango es una sustitución apropiada del tipo escalar asociado en todas las definiciones.
Estas constantes deben ser distintas y del mismo tipo
04/21/23Computación - Fac. Ingeniería
- UNMDP 31
TYPEMotos=(HONDA, SUSUKI, KAWASAKI, HARLEY_DAVIDSON);Motos_japonesas=HONDA..KAWASAKI;
dias_semana=(lunes,martes,miercoles,jueves,viernes, sabado, domingo);Dias_laborables=lunes..viernes; {subrango de dias_semana}
Siglo_XX=1901..2000;{subrango de integer}Minusculas='a'..'z'; {subrango de char}
VARD1,D2,D3:Dias_laborables;letra:Minusculas;
Ejemplo
04/21/23Computación - Fac. Ingeniería
- UNMDP 32
Datos escalares u ordinalesDatos escalares u ordinales
No es un tipo de dato.
Se clasifican como datos escalares a aquellos tipos de datos cuyos valores posee un orden determinado (predefinidos o definidos por el programador)
1. Todos los enteros2. Tipo char3. Tipo boolean4. Tipo enumerado5. Tipo subrango (de un tipo escalar 1, 2, o 4)
04/21/23Computación - Fac. Ingeniería
- UNMDP 33
Extendiendo el poder de constantes y variables: EXPRESIONES
La combinación de valores constantes y variables unidos mediante operadores generan expresiones
Amplían la manipulación de datos por parte del programador
La característica fundamental de una expresión es la obtención de un valor luego de su cálculo.
Formato de las expresiones
operando operador operando
Expresión binaria
Expresión unaria
operador operandoEjemplo: - A
Ejemplo: A + B
TIPOS DE EXPRESIONES
ARITMETICAS
RELACIONALES
LOGICAS
CARACTER
Recordar su uso en la asignación(para variable y expresión numérica):
A:=34.6*5/(D+25);
04/21/23Computación - Fac. Ingeniería
- UNMDP 36
Operandos de expresiones aritméticas
* multiplica div divide y trunca {solo para enteros} mod a mod b=a-[(a div b)*b] {solo para
enteros} + suma - resta / division (ambos operandos pueden ser
enteros, pero el resultado es siempre real)
04/21/23Computación - Fac. Ingeniería
- UNMDP 37
Ejemplos de expresiones aritméticasEjemplos de expresiones aritméticas
7 div 2
12/6.2
(7 div 2)+(12/6.2)
(7 div 2)+(12/6.2) - A*2.1
beta * alfa / 16.87654
El resultado de todas las
expresiones es un único
valor.
04/21/23Computación - Fac. Ingeniería
- UNMDP 38
Expresiones relacionales
Las expresiones relacionales se usan para comparar expresiones, obteniéndose como resultado un valor booleano (true o false).
Los operadores relacionales sirven para comparar dos valores por mayor, menor, igual , mayor o igual, menor o igual, o distinto.
Operadores relacionalesOperadores relacionales
= igual <> distinto > mayor < menor <= menor o igual >= mayor o igual
4.5>22.3 resultará siempre false2.2=2.2 resultará siempre trueA<=2.3 el resultado depende del valor de A(w+7.8)=(a/b-9) el resultado depende de los valores de w,a y b.
04/21/23Computación - Fac. Ingeniería
- UNMDP 40
Expresiones lógicas
Las expresiones relacionales (con resultados booleanos, i.e., true o false) pueden combinarse mediante los operadores lógicos and(conjunción), or (disyunción) y not(negación).
Esta combinación origina las expresiones lógicas (o expresiones booleanas).
04/21/23Computación - Fac. Ingeniería
- UNMDP 41
Expresiones lógicas
Estas expresiones amplían las posibilidades para modelar predicados (o condiciones).
Estos predicados serán evaluados para fijar el control de flujo de ejecución del programa.
La importancia de las expresiones lógicas se verá con las sentencias ejecutables IF, WHILE y REPEAT.
04/21/23Computación - Fac. Ingeniería
- UNMDP 42
Para evaluar las expresiones lógicas se usan las tablas de verdad. Si p y q son operandos lógicos (= expresiones relacionales) tenemos las siguientes tablas de verdad:
p q p and q p or q not ptrue true true true falsetrue false false true false false true false true truefalse false false false true
Expresiones lógicas: tablas de verdad
04/21/23Computación - Fac. Ingeniería
- UNMDP 43
VARa,b,z1,z2,z3,z4,sigue:boolean;Altura,peso,zz,c:real;
{Ejemplos de expresiones logicas en asignaciones}sigue:=true;Z2:=a or b;Z3:=(peso>2) and Z2;Z1:=not sigue;Z4:=(Altura>=2)or((peso+2=c)and(zz/(5*c)>0));
Observación : Una constante y una variable se consideran expresiones (las mas elementales)
Observación : Una constante y una variable se consideran expresiones (las mas elementales)
Expresiones lógicas: ejemplos
04/21/23Computación - Fac. Ingeniería
- UNMDP 44
Cuando armamos expresiones debemos tener en cuenta las siguientes reglas de precedencia a fin de colocar correctamente los paréntesis:
Operador Prioridad Not 1 (la mas alta, se evalúa primero)*,/,div,mod,and 2+,-,or 3<,<=,=,<>,>=,< 4 (la mas baja, se evalúa al final)
Expresiones lógicas: reglas de precedencia
04/21/23Computación - Fac. Ingeniería
- UNMDP 45
Operador Prioridad Not 1 (la mas alta, se evalúa primero)*,/,div,mod,and 2+,-,or 3<,<=,=,<>,>=,< 4 (la mas baja, se evalúa al final)
Expresiones lógicas: reglas de precedencia
(Altura>=2) or peso+2=c and not(zz/5*c >0)Se evalúa primero. No hay error porque el operando es una expresión relacional
Cuando se evalúa and. Su operando derecho es correcto, pero el izquierdo es un valor real ( c ) tendremos error!
04/21/23Computación - Fac. Ingeniería
- UNMDP 46
Expresiones caracter o cadenas
El operador usado es "+" y sirve para concatenar (unir) caracteres y/o cadenas de caracteres.Ejemplo:
'o'+'s'+'o' quedará 'oso'
'oso'+' '+'blanco' quedará 'oso blanco'
Top Related