Publicado el 24 de Junio del 2018
862 visualizaciones desde el 24 de Junio del 2018
446,9 KB
65 paginas
Creado hace 9a (14/09/2015)
Lenguaje De Dise˜no
Int. a la Programaci´on - Int. a la Computaci´on
Fundamentos de la Inform´atica
T.U.M - T.U.G.- Prof. Tec. Electr.- T.U.E - T.U.T - T.U.R - T.U.W
Ing. Electr´onica
Universidad Nacional de San Luis
Departamento de Inform´atica
´Area de Servicios
A˜no 2015
´Indice general
1. LENGUAJE DE DISE ˜NO DE ALGORITMOS
1.1. INTRODUCCI ´ON . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.2. FACILIDADES PROVISTAS POR UN LENGUAJE DE DISE ˜NO . . . . . . . .
1.3. FORMALIZACI ´ON DE ALGORITMOS . . . . . . . . . . . . . . . . . . . . . . . .
1.3.1. Formalizaci´on del Ambiente de un Problema . . . . . . . . . . . . . . . . . .
1.3.2. Prueba de Algoritmos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.3.3. Precisiones acerca de los Objetos . . . . . . . . . . . . . . . . . . . . . . . . .
1.4. EXPRESIONES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.4.1. Expresiones Aritm´eticas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.4.2. Expresi´on Relacional . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.4.3. Expresiones L´ogicas
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.4.4. Asignaci´on Caracter
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.5. ACCIONES PRIMITIVAS DE ENTRADA - SALIDA DE DATOS . . . . . . . .
1.5.1. Entrada de Datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.5.2. Salida de Datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.6. ESTRUCTURAS DE CONTROL . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Introducci´on . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.6.1.
1.6.2. La Estructura de Control Secuencial
. . . . . . . . . . . . . . . . . . . . . .
1.6.3. La Estructura de Control Condicional . . . . . . . . . . . . . . . . . . . . . .
1.6.4. Estructura de Control de Repetici´on . . . . . . . . . . . . . . . . . . . . . .
2. ESTRUCTURACI ´ON DE DATOS
2.1. INTRODUCCI ´ON . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.2. ARREGLO LINEAL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.2.1. Operaciones con arreglos: Asignaci´on y recuperaci´on de valores . . . . . . . . .
3. SUBALGORITMOS
3.1. INTRODUCCI ´ON . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.2. DEFINICI ´ON DE SUBALGORITMOS . . . . . . . . . . . . . . . . . . . . . . . . . .
INVOCACI ´ON Y RETORNO DE SUBALGORITMOS . . . . . . . . . . . . . . . . .
3.3.
3.4. Ejemplo completo de Subalgoritmos con arreglos como par´ametros
. . . . . . . .
2
2
2
3
3
6
7
8
9
14
17
18
18
18
19
20
20
21
21
28
32
32
32
38
42
42
43
44
60
1
Cap´ıtulo 1
LENGUAJE DE DISE ˜NO DE ALGORITMOS
1.1.
INTRODUCCI ´ON
Un programa es un modelo de resoluci´on de un problema escrito en un lenguaje de programaci´on.
De la definici´on anterior se desprende que escribir un programa implica:
1. Obtener una soluci´on de un problema.
2. Expresar esta soluci´on en un lenguaje de programaci´on.
En general se puede decir que existe una distancia o diferencia entre lo que se podr´ıa denominar
el lenguaje del problema y el lenguaje de programaci´on, en el sentido que el primero resulta
menos r´ıgido y con m´as posibilidades de expresi´on que el segundo.
El objetivo fundamental de un lenguaje de dise˜no es ser comprensible para las personas que van
a interpretar los algoritmos escritos en ´el, mientras que el fin ´ultimo de un lenguaje de programaci´on
es ser comprensible por la computadora que va a ejecutar el programa.
La finalidad de un lenguaje de dise˜no es brindar una herramienta que sirva de apoyo para el desa-
rrollo de algoritmos. La idea es no sumar, a la complejidad del problema, las limitaciones impuestas
por una notaci´on estricta. Adem´as, en muchas aplicaciones, es importante conseguir un algoritmo
independiente del lenguaje de programaci´on o lenguaje de implementaci´on.
En general, cada programador, de acuerdo con su experiencia y habilidad, encontrar´a m´as expresiva
una notaci´on u otra. Imponer una notaci´on espec´ıfica, si bien, en parte implica contradecir los objetivos
iniciales que justificaron el uso de los lenguajes de dise˜no, con la finalidad de comunicarnos, durante
lo que resta del desarrollo del curso, necesitamos establecer algunas pautas para el lenguaje de dise˜no
de algoritmos que usaremos.
1.2. FACILIDADES PROVISTAS POR UN LENGUAJE DE DISE ˜NO
Los objetivos b´asicos de un lenguaje de dise˜no son:
1. Servir de apoyo durante el proceso de resoluci´on de un problema.
2
Fund. de la Inf.-Int. a la Comp.-Int. a la Prog.(Ing. Electr., TUW, TUR, TUM, TUE, TUG, Prof. Tec. Electr.,TUT)
2. Servir como etapa previa al proceso de codificaci´on. La tarea de traducci´on del lenguaje de
dise˜no a cualquier lenguaje de programaci´on no deber´ıa ser muy complicada.
3. En los proyectos de desarrollo de software, en los que intervienen varias personas, el lenguaje de
dise˜no deber´ıa permitir que cada una de ellas pueda tener una visi´on global del trabajo de los
dem´as, dif´ıcil de conseguir analizando directamente los programas del resto del grupo.
4. Como los lenguajes de programaci´on proveen diferentes conjuntos de primitivas y la traducci´on
al lenguaje de programaci´on es posterior al dise˜no, podemos elegir el lenguaje de programaci´on
apropiado seg´un el conjunto de primitivas requerido.
Nuestra intenci´on ser´a, entonces, proponer un lenguaje de dise˜no de algoritmos que sirva de
apoyo para la resoluci´on de problemas y pueda ser traducido, en forma sistem´atica, a un programa.
1.3. FORMALIZACI ´ON DE ALGORITMOS
Previo a la definici´on de nuestro lenguaje de dise˜no, necesitaremos precisar algunos conceptos. De
ahora en adelante, el (procesador), como lo hemos definido en nuestro contexto, es equivalente a una
computadora. La construcci´on del algoritmo es la etapa m´as dificultosa y, en ´este y los pr´oximos
cap´ıtulos, daremos las herramientas b´asicas necesarias.
Las computadoras, como ya fue indicado, no pueden ejecutar directamente los algoritmos en forma
literal como los venimos tratando. Es necesario codificarlos en un lenguaje de programaci´on. En la ma-
yor de los casos, la codificaci´on no presenta grandes dificultades ya que, los lenguajes de programaci´on
tienden, cada vez m´as, a la formalizaci´on que se propone, cambiando esencialmente su sintaxis.
1.3.1. Formalizaci´on del Ambiente de un Problema
Lo primero a considerar en el proceso de resoluci´on de problemas es la formalizaci´on de su ambiente.
Vamos a definir un conjunto de reglas que nos permitir´an describir, con precisi´on y sin ambig¨uedad,
los objetos del universo de un problema .
Una caracter´ıstica que diferencia entre s´ı a los objetos, es que cada uno tiene un nombre que lo
identifica un´ıvocamente, o sea, si queremos citar diferentes objetos, damos una lista de sus nombres o
identificadores.
Adem´as, cada objeto tiene un uso espec´ıfico que no se puede intercambiar. En el ejemplo de la
calculadora, dado anteriormente, las teclas <dig> y <C>, tienen usos completamente diferentes; sin
embargo las teclas <1>, <2>,...., <0> si bien su uso es diferente (no es lo mismo oprimir la tecla
<1> que la tecla <2>), tienen una utilidad similar (sirven para oprimir d´ıgitos).
Podemos decir que cada objeto tiene un tipo particular que indica caracter´ısticas comunes a todos
los estados posibles del objeto.
Los objetos m´as simples con los cuales nosotros trabajaremos durante el curso
son los objetos num´ericos: enteros y reales; los l´ogicos y los caracteres.
Otra caracter´ıstica importante de los objetos es su valor .
´Area de Servicios - FCFMyN - UNSL
2015
P´ag. - 3
Fund. de la Inf.-Int. a la Comp.-Int. a la Prog.(Ing. Electr., TUW, TUR, TUM, TUE, TUG, Prof. Tec. Electr.,TUT)
En cada instante, todo objeto del ambiente tiene un valor, para algunos objetos, este valor puede
cambiar luego de la ejecuci´on de una acci´on.
Continuando con el ejemplo de la calculadora, en la versi´on 1 del algoritmo, en la acci´on “oprimir
n´umero”, el objeto “n´umero” toma el valor 124 la primera vez que la acci´on es ejecutada, el valor 59
la segunda vez y, la ´ultima vez, el valor 3. Tambi´en existen objetos cuyos valores nunca cambian, por
ejemplo, “oprimir <9>” el objeto 9 nunca cambia su valor.
Para resumir, podemos imaginarnos a los objetos de un ambiente como celdas rotuladas (por el nom-
bre), donde adem´as las celdas tienen un tama˜no determinado (seg´un el tipo) y contienen una infor-
maci´on (un valor posible del conjunto de valores de un tipo dado)
128
a
NUMERO LETRA
Veamos un ejemplo para mostrar las caracter´ısticas o atributos de los objetos del ambiente de un
problema.
Enunciado: Se tiene un objeto de nombre NUMERO, de tipo num´erico, tal que su valor puede ser un
n´umero entero positivo. Se quiere encontrar un algoritmo que determine el producto de los n primeros
n´umeros enteros positivos (es decir, el factorial de n = n!).
Las acciones primitivas que puede ejecutar el procesador son:
1. Dar un valor a un objeto.
2. Calcular la suma de dos n´umeros.
3. Calcular el producto de dos n´umeros.
El procesador adem´as interpreta la condici´on: “un n´umero es menor o igual que otro” y un esquema
repetitivo condicionado del tipo MIENTRAS <condici´on> HACER <acciones primitivas>
FINMIENTRAS la cual significa que el procesador ejecutar´a las acciones primitivas siempre que la
condici´on se cumpla.
Una vez planteado el problema y conociendo las acciones primitivas que puede reconocer el procesador
deberemos describir el ambiente sobre el cual trabajar´a.
El ambiente consiste del objeto ya descripto NUMERO. El valor inicial de este objeto ha sido
determinado (en alg´un momento) y va a servir para la realizaci´on del c´alculo (establece hasta que
n´umero deber´e realizar los productos):
Si el valor inicial es 4, se calcular´a: 1 x 2 x 3 x 4 = 24 =
Comentarios de: Lenguaje de Diseño - Introducción a la programación - Introducción a la computación - Fundamentos de la informática (0)
No hay comentarios