Вы находитесь на странице: 1из 20

Universidad Nacional del Litoral Facultad de IngenierÌa y Ciencias HÌdricas Departamento de Inform·tica

y Ciencias HÌdricas Departamento de Inform ·tica FUNDAMENTOS DE PROGRAMACI”N Asignatura correspondiente al

FUNDAMENTOS DE PROGRAMACI”N

Asignatura correspondiente al plan de estudios de la carrera de IngenierÌa Inform·tica

UNIDAD 2 ALGORITMOS COMPUTACIONALES

Ing. Horacio Loyarte Æ 2008

Unidad 2

2

Unidad 2 2 UNIDAD 2 Algoritmos computacionales Resumen de Conceptos Introducci Ûn Los problemas y algoritmos

UNIDAD 2

Algoritmos computacionales

Resumen de Conceptos

IntroducciÛn

Los problemas y algoritmos desarrollados en la unidad anterior, reflejan situaciones de la vida diaria. En la mayorÌa de los casos fueron planteados para que los resuelva o ejecute una persona. Pero el objetivo es desarrollar algoritmos que pueden ser interpretados por una computadora. Para ello es necesario utilizar un lenguaje que interprete una computadora y que permita una descripciÛn precisa de cada una de las acciones a emplear en la soluciÛn del problema.

Esta unidad propone describir la formalizaciÛn necesaria para el desarrollo de Algoritmos Computacionales empleando un pseudolenguaje similar a los empleados en la confecciÛn de programas De aquÌ en m·s, cuando se mencione al ejecutante de un algoritmo, se estar· haciendo referencia a una computadora.

En el ejemplo que se propone a continuaciÛn se desarrolla un algoritmo completo de acuerdo a la formalizaciÛn que se propone.

Ejemplo Problema: plantear un algoritmo computacional que calcule la hipotenusa de un tri·ngulo rect·ngulo. Se conoce como informaciÛn de entrada las longitudes de los catetos.

An·lisis del Problema:

Datos: Longitudes de los catetos. Resultado a informar:Hipotenusa. Relaciones entre datos y resultados: Teorema de Pit·goras.

Algoritmo:

Proceso Hipotenusa Leer A,B; H RC(A2+B2); Escribir 'Hipotenusa =',H; FinProceso

DescripciÛn de los elementos presentes en el ejemplo

En el ejemplo A, B y H constituyen identificadores de variables; 2 e 'Hipotenusa' son constantes; Leer, Escribir y son las acciones primitivas de la lectura, escritura y asignaciÛn respectivamente; RC(A 2 + B 2) es una expresiÛn numÈrica y RC ( ) es la funciÛn cuadrada. En esta unidad se desarrollar·n todos estos elementos que conforman un lenguaje algorÌtmico formal que llamado pseudocÛdigo.

IngenierÌa Inform·tica ñ Fundamentos de ProgramaciÛn 2008

Unidad 2

3

Unidad 2 3 La forma general de un algoritmo escrito en pseudoc Ûdigo es la siguiente:

La forma general de un algoritmo escrito en pseudocÛdigo es la siguiente:

PROCESO nombre del proceso acciÛn 1; acciÛn 2;

.

.

.

FINPROCESO

Elementos de un algoritmo computacional

Constante

Se define constante, como el valor que no puede alterarse en el transcurso de un algoritmo.

Ejemplos de constantes:

123 'LÛpez'

Falso

3.1459

Esta informaciÛn se expresa mediante un valor intrÌnseco y ˙nico que no puede alterarse. Se utilizar·n con frecuencia estos datos para asignarlos a variables o construir expresiones.

Variable

Una variable es una posiciÛn de memoria capaz de almacenar un ˙nico valor por vez. A medida que se ejecuten las acciones que describe el algoritmo esa variable podr· representar a nuevos valores. En un algoritmo una variable se referencia a travÈs de nombres o identificadores. En el ejemplo inicial del c·clculo de la hipotenusa:

Proceso Hipotenusa Leer A,B; H RC(A2+B2); Escribir 'Hipotenusa =',H; FinProceso

se observa que 2 e ëHipotenusa=í constituyen constantes. A, B H son variables.

Nombres o identificadores

Para proponer el nombre o identificador de alg˙n elemento del algoritmo -como las variables- el diseÒador tiene amplia libertad y solo debe respetar tres reglas simples:

1) Utilizar sÛlo letras y/o dÌgitos, comenzando siempre con una letra.

2) No utilizar palabras claves para acciones primitivas que emplea el

pseudocÛdigo: LEER, ESCRIBIR, MIENTRAS,

las funciones internas: RC, SEN, TRUNC, LN, etc., o las palabras que corresponden a las constantes lÛgicas VERDAD y FALSO

HACER, SEGUN, etc., o para

IngenierÌa Inform·tica ñ Fundamentos de ProgramaciÛn 2008

Unidad 2

4

3) No hacer distinciÛn entre may˙sculas y min˙sculas. Esto implica que VENTA, venta y Venta, constituyen en el algoritmo el mismo nombre.

Esta sintaxis y sus restricciones no representan inconvenientes para proponer nombres de cualquier elemento del algoritmo: variables, algoritmos, procedimientos, funciones, archivos; pues se dispone de un sinn˙mero de combinaciones diferentes de letras y dÌgitos. procedimientos, funciones, archivos; pues se dispone de un sinn ˙mero de combinaciones diferentes de letras y

Ejemplos de identificadores: ˙mero de combinaciones diferentes de letras y d Ìgitos. venta x12 resultado SUMA2 M3M Se mencion

venta

x12

resultado

SUMA2

M3M

Se mencionÛ que el diseÒador del algoritmo tiene total libertad para proponer nombres a sus elementos, aunque como consejo, es conveniente proponer identificadores que tengan alguna relaciÛn con lo que el elemento representa. En nuestro ejemplo inicial del c·lculo de la hipotenusa de un tri·ngulo rect·ngulo, se podrÌa haber empleado los nombres de variables CATETO1, CATETO2, HIPOT, en lugar A, B, H.

ExpresiÛn

Se define como expresiÛn a un conjunto de operandos ligados por operadores cuya evaluaciÛn arroja un resultado. En el ejemplo incial RC(A 2 + B 2) es una expresiÛn numÈrica (relaciÛn de Pit·goras) que permite calcular el valor de la hipotenusa.

Ejemplos de expresiones:

2+a-x*5

45

A < B

TRUNC(R) + 1

Tipos de InformaciÛn

Se puede clasificar la informaciÛn que puede manejar una computadora a travÈs de un algoritmo en los tipos siguientes:

tipo NUMERICO

tipo CARACTER

tipo LOGICO

Esta clasificaciÛn nos define los tipos primitivos de la informaciÛn. Se estudiar· a cada uno de ellos y su modo de empleo.

Tipo NumÈrico

Constantes NumÈricas Los valores o constantes de tipo numÈrico se decimal y pueden estar precedidos por los signos '+ o '-' . La ausencia de signo implica un n˙mero positivo. Se pueden subdividir en reales y enteros, o admitir clasificaciones m·s detalladas, de acuerdo al lenguaje de programaciÛn empleado. Para la formalizaciÛn propuesta mediante el empleo de un pseudocÛdigo universal, no se har·n distinciones de esta clase y simplemente se hablar· de tipo numÈrico.

IngenierÌa Inform·tica ñ Fundamentos de ProgramaciÛn 2008

Unidad 2

5

Un detalle importante: los n˙meros reales deben separar su parte entera de la fracciÛn decimal con un punto en lugar de la coma. Se reserva la coma como separador. No se utilizar· ning˙n sÌmbolo para separaciÛn de miles.

Ejemplos de constantes numÈricas:

14

-12500

+1.9452

-567.91

1.3E+2

-0.94E-3

En los 2 ˙ltimos ejemplos se indican constantes numÈricas con notaciÛn cient Ìfica. Donde la cifra a la ˙ltimos ejemplos se indican constantes numÈricas con notaciÛn
ejemplos se indican constantes numÈricas con notaciÛn cient Ìfica. Donde la cifra a la derecha de cientÌfica. Donde la cifra a la derecha de la E indica el exponente de la potencia de base 10. Es decir: 1.3 E+2 = 1.3*10 2 = 130

Variables NumÈricas Una posiciÛn de memoria, que contenga cualquier valor de tipo numÈrico se denomina Variable NumÈrica. Las variables se identifican en un algoritmo a travÈs de nombres o identificadores.

Expresiones NumÈricas Las expresiones numÈricas se plantean en general con constantes numÈricas, variables numÈricas y funciones; y los operadores algebraicos como nexo:

Operadores algebraicos

+ : suma

- : resta

* : multiplicaciÛn

/ : divisiÛn

: potenciaciÛn

Es de mencionar que ciertos lenguajes de programaciÛn no disponen de todos los operadores antes descritos, asÌ como es posible hallar otros operadores algebraicos adicionales a los presentados. La jerarquÌa de estos operadores es idÈntica a la planteada por el ·lgebra de n˙meros y sÛlo puede ser alterada a travÈs de la intercalaciÛn de niveles de parÈntesis.

Ejemplos de expresiones numÈricas

2+a*102-800/C

1-(2*TOT-30 )(1+P) AREA*(Y+1.34 /(X2-T ))

ObsÈrvese que el operador de radicaciÛn no existe; pero esto no es un problema porque esta operaciÛn puede plantearse f·cilmente a travÈs de la potenciaciÛn de exponente fraccionario:

n m
n
m

a a

m

n

De todas maneras es com˙n hallar en casi todos los lenguajes de programaciÛn una funciÛn que realiza el c·lculo de la raÌz cuadrada. En pseudocÛdigo se utiliza para el ejemplo inicial y se llama RC( ). Adem·s se asume que el ejecutante del algoritmo, conoce y puede resolver ciertas funciones numÈricas. A estas funciones se las llama funciones predefinidas y tienen la propiedad de devolver un valor o resultado, al ser aplicadas sobre un argumento que se indica entre parÈntesis.

IngenierÌa Inform·tica ñ Fundamentos de ProgramaciÛn 2008

Unidad 2

6

Funciones Predefinidas Algunas de las funciones predefinidas que incluye el pseudoc Ûdigo:
Funciones Predefinidas Algunas de las funciones predefinidas que incluye el pseudoc Ûdigo:

Funciones Predefinidas Algunas de las funciones predefinidas que incluye el pseudocÛdigo:

de las funciones predefinidas que incluye el pseudoc Ûdigo: RC( ) : ABS( ) : LN(
de las funciones predefinidas que incluye el pseudoc Ûdigo: RC( ) : ABS( ) : LN(
de las funciones predefinidas que incluye el pseudoc Ûdigo: RC( ) : ABS( ) : LN(
de las funciones predefinidas que incluye el pseudoc Ûdigo: RC( ) : ABS( ) : LN(
de las funciones predefinidas que incluye el pseudoc Ûdigo: RC( ) : ABS( ) : LN(
de las funciones predefinidas que incluye el pseudoc Ûdigo: RC( ) : ABS( ) : LN(
de las funciones predefinidas que incluye el pseudoc Ûdigo: RC( ) : ABS( ) : LN(
de las funciones predefinidas que incluye el pseudoc Ûdigo: RC( ) : ABS( ) : LN(

RC( ) :

ABS( ) :

LN( ) :

EXP( ) :

SEN( ) :

COS( ) :

ATAN( ) :

TRUNC( ) :

REDON( ) :

RaÌz cuadrada Valor absoluto Logaritmo natural FunciÛn exponencial Seno de un ·ngulo en radianes Coseno de un ·ngulo en radianes Arco Tangente del argumento Parte entera del argumento Entero mas cercano

en radianes Coseno de un ·ngulo en radianes Arco Tangente del argumento Parte entera del argumento
en radianes Coseno de un ·ngulo en radianes Arco Tangente del argumento Parte entera del argumento
en radianes Coseno de un ·ngulo en radianes Arco Tangente del argumento Parte entera del argumento
en radianes Coseno de un ·ngulo en radianes Arco Tangente del argumento Parte entera del argumento
en radianes Coseno de un ·ngulo en radianes Arco Tangente del argumento Parte entera del argumento
en radianes Coseno de un ·ngulo en radianes Arco Tangente del argumento Parte entera del argumento
en radianes Coseno de un ·ngulo en radianes Arco Tangente del argumento Parte entera del argumento

Con estos nuevos elementos, se puede ampliar el uso de expresiones numÈricas.

Ejemplos de expresiones numÈricas

TRUNC(2/3)-ABS(X)-2*(X-1)

SEN(X)+1-TAN(C/2)

(-b+RC(b*b-4*a*c))/(2*a)

Nota: Los lenguajes de programaciÛn suelen disponer de un n˙mero mucho mayor de funciones predefinidas.

Tipo Caracter

Constantes Tipo Caracter Se incluyen aquÌ a todos los caracteres y sÌmbolos del cÛdigo ASCII (CÛdigo Standard Americano para Intercambio de InformaciÛn), los cuales pueden obtenerse de las teclas o combinaciones de teclas de su computadora, es decir, las letras del alfabeto en min˙sculas y las letras may˙sculas, los signos de puntuaciÛn, los operadores aritmÈticos, parÈntesis, el espacio en blanco, caracteres especiales, etc. TambiÈn se incluyen dentro de este tipo a las cadenas de caracteres, como los apellidos, nombres, direcciones y tambiÈn cadenas de caracteres numÈricos:

Ejemplos de constantes tipo car·cter

'Luis RodrÌguez'

'Z'

'Resultado='

'25 de Mayo'

'3124'

'123/890-12'

Importante: En este tipo de informaciÛn: el conjunto de caracteres ASCII, es un conjunto ordenado, y por tanto existe una relaciÛn de precedencia u orden entre sus elementos. Cada elemento del conjunto tiene un n˙mero de orden en lo que se conoce como tabla o cÛdigo ASCII, y ese n˙mero es el que determina la relaciÛn de orden:

El cÛdigo ASCII se ha convertido en un standard mundial que permite compatibilizar la informaciÛn que manejan las computadoras.

La siguiente tabla muestra algunos de los caracteres del cÛdigo ASCII y su correspondiente n˙mero de orden. En total son 255 caracteres.

IngenierÌa Inform·tica ñ Fundamentos de ProgramaciÛn 2008

Unidad 2

7

32

'

'

48 '0'

64 '@'

80 'P'

96 '`'

112

'p'

33

'!'

49 '1'

65 'A'

81 'Q'

97 'a'

113

'q'

34

'"'

50 '2'

66 'B'

82 'R'

98 'b'

114

'r'

35

'#'

51 '3'

67 'C'

83 'S'

99 'c'

115

's'

36

'$'

52 '4'

68 'D'

84 'T'

100 'd'

116

't'

 

'%'

53 '5'

69 'E'

85 'U'

101 'e'

117

'u'

38

'&'

54 '6'

70 'F'

86 'V'

102 'f'

118

'v'

39

'''

55 '7'

71 'G'

87 'W'

103 'g'

119

'w'

 

'('

56 '8'

72 'H'

88 'X'

104 'h'

120

'x'

41

')'

57 '9'

73 'I'

89 'Y'

105 'i'

121

'y'

42

'*'

58 ':'

74 'J'

90 'Z'

106 'j'

122

'z'

43

'+'

59 ';'

75 'K'

91 '['

107 'k'

123

'{'

44

','

60 '<'

76 'L'

92 '\'

108 'l'

124

'|'

45

'-'

61 '='

77 'M'

93 ']'

109 'm'

125

'}'

46

'.'

62 '>'

78 'N'

94 '^'

110 'n'

126

'~'

47

'/'

63 '?'

79 'O'

95 '_'

111 'o'

127

'•

'

37'_' 111 'o' 127 '• ' 40 Si se tiene en cuenta la relaci Ûn de

40111 'o' 127 '• ' 37 Si se tiene en cuenta la relaci Ûn de orden

Si se tiene en cuenta la relaciÛn de orden dada por el cÛdigo ASCII se puede afirmar que son verdaderas las expresiones siguientes:

La letra 'a' es mayor que la letra 'B'. (ëaí tienen n˙mero de orden 97 que es mayor al 66 de la ëBí)

El caracter '5' es menor que la letra 'A'. (el car·cter ë5í tiene cÛdigo 53 y el de la letra ëAí es 65)

La cadena de caracteres 'Mario' es menor que ëRobertoí. (se encuentra antes alfabÈticamente)

Se observa que a las constantes tipo caracter o las cadenas de caracteres se indican entre apÛstrofos o simples comillas. Esto es para evitar confundir estos datos con identificadores de otros elementos del algoritmo. Por ejemplo, 'A' es un dato tipo caracter y A un identificador de un elemento del algoritmo.

Variables Tipo Caracter Una posiciÛn de memoria, que contenga cualquier dato de tipo caracter o cadena de caracteres se denomina Variable Tipo Caracter.

Expresiones Tipo Caracter En el pseudolenguaje que se emplear· en esta primer parte de Fundamentos de ProgramaciÛn no se utilizar·n operadores ni funciones para el manejo de caracteres y cadenas de caracteres. Por lo que las expresiones de este tipo quedan reducidas a simples constantes o variables.

Tipo LÛgico

Constantes de Tipo LÛgico Dentro de este tipo se incluye a solo dos constantes o valores posibles:

VERDADERO y FALSO. Esto implica tener en cuenta una nueva limitaciÛn al proponer identificadores: no pueden utilizarse los nombres VERDADERO y FALSO para evitar ambig¸edades.

IngenierÌa Inform·tica ñ Fundamentos de ProgramaciÛn 2008

Unidad 2

8

Variables LÛgicas Una posiciÛn de memoria, que contenga cualquier dato de tipo lÛgico es una Variable LÛgica.

Expresiones LÛgicas AquÌ cobran mucha importancia una serie de operadores que nos permiten plantear expresiones de tipo lÛgico. Las expresiones mas simples son las operadores que nos permiten plantear expresiones de tipo l relacionales que utilizan los operadores relacionales matem relacionales que utilizan los operadores relacionales matem·ticos para comparar operandos de igual tipo. Las expresiones mas simples son las relacionales que utilizan los operadores relacionales matem ·ticos para comparar

Operadores relacionales

Operador

Significado

---------------

------------------

>

<

=

<=

>=

<>

Mayor que

Menor que

Igual que Menor o igual que Mayor o igual que Distinto que

Igual que Menor o igual que Mayor o igual que Distinto que
Igual que Menor o igual que Mayor o igual que Distinto que
Igual que Menor o igual que Mayor o igual que Distinto que

Ejemplos de expresiones lÛgicas relacionales

23<45

A+2>=100

'a'<>LETRA

'ANA'<'LUIS'

(2+B) >=Trunc(2+B)

7>'M'

Las expresiones lÛgicas simples mostradas en el ejemplo se conocen como

expresiones del mismo tipo.

valida, pues compara a una expresiÛn numÈrica con un caracter.

relacionales, pues permiten comparar o relacionar a 2 operandos

Justamente, la ultima expresiÛn del ejemplo anterior no es

La algorÌtmica computacional, permite tambiÈn formar expresiones lÛgicas mas complejas a travÈs de los conectores que emplea la lÛgica proposicional:

Operadores lÛgicos

Operador

Significado

---------------

------------------

DisyunciÛn

ConjunciÛn

~

NegaciÛn

Se observa entonces el valor de verdad de las expresiones lÛgicas propuestas en el ejemplo siguiente:

Ejemplo:

ExpresiÛn LÛgica --------------------------------------

Resultado

-------------------------

(7<10)('a'<'c')

VERDADERO

('A'<'a')(12>19)

VERDADERO

IngenierÌa Inform·tica ñ Fundamentos de ProgramaciÛn 2008

Unidad 2

9

( 37<18 )

FALSO

( SEN(x)<=1 )

VERDADERO

('MARIA'<'MARTA')

VERDADERO

('MARIA'<'MARTA')  (1>2) FALSO

('MARIA'<'MARTA')(1>2)

FALSO

VERDADERO ('MARIA'<'MARTA') VERDADERO ('MARIA'<'MARTA')  (1>2) FALSO

Acciones AlgorÌtmicas

Primitivas

En el lenguaje algorÌtmico (pseudocÛdigo), las primitivas se identifican con palabras claves o reservadas. Se han empleado en el ejemplo inicial las primitivas: LEER, ESCRIBIR y (asignar). La ejecuciÛn de las acciones primitivas de un algoritmo suele ser diferente seg˙n el caso, lo cual lleva a plantear la siguiente clasificaciÛn:

Primitivas de Estructura Secuencial

Primitivas de Control

Primitivas de Estructura Condicional

Primitivas de Estructura Repetitiva

En la prÛxima unidad se desarrollar·n las estructuras algorÌtmicas de control que implican el uso de primitivas de estructura condicional y de estructura repetitiva. Se plantea a continuaciÛn, algunas acciones de estructura secuencial.

Acciones Primitivas de Estructura Secuencial AsignaciÛn

Esta acciÛn, permite a un identificador de variable, representar o memorizar cierto valor. Para describirla se utilizar· la notaciÛn siguiente:

V E;

Donde V es el nombre de la variable ( o simplemente la variable ) a la cual el ejecutante debe asignar el valor de la expresiÛn E. El sÌmbolo ' ' puede leerse toma el valor. Los tipos de V y E deben ser coincidentes, en caso contrario ser· causa de error. Seg˙n el tipo de V y E una asignaciÛn puede ser:

AsignaciÛn numÈrica.

AsignaciÛn tipo caracter.

AsignaciÛn lÛgica.

Si V es una variable numÈrica y E cualquier expresiÛn de tipo numÈrica la asignaciÛn es numÈrica.

IngenierÌa Inform·tica ñ Fundamentos de ProgramaciÛn 2008

Unidad 2

10

 

Ejemplos de Asignaciones NumÈricas

A 43;

( A toma el valor 43 )

X A;

( X toma el valor contenido en A )

NUM  3*X/A+2; ( NUM toma el valor del resultado de hacer 3*X/A+2 )

NUM 3*X/A+2; ( NUM toma el valor del resultado de hacer 3*X/A+2 )

Importante: N Ûtese que para poder realizar una asignaci Ûn aritmÈtica se debe evaluar primero

Importante: NÛtese que para poder realizar una asignaciÛn aritmÈtica se debe evaluar primero la expresiÛn de la derecha, por lo tanto es perfectamente v·lida la acciÛn: NN+1; que puede leerse: tomar el valor actual de N, sumarle 1, y asignar ese resultado a la variable N. Por ejemplo, si antes de la acciÛn, N contenÌa el valor 8, luego de dicha acciÛn contendr· 9. ObsÈrvese que esta acciÛn algorÌtmica no tiene nada que ver con los conceptos asimilados en matem·ticas, donde N=N+1 es una expresiÛn incompatible.

Del mismo modo se definen las asignaciones tipo caracter y tipo lÛgica.

Ejemplos de Asignaciones tipo caracter

LETRA 'A';

X3 A;

NOMBRE 'Jorge';

( LETRA toma el valor 'A' )

( X toma el valor contenido en A )

( NOMBRE toma el valor de 'Jorge' )

Ejemplos de Asignaciones LÛgicas

M FALSO;

CIERTO 34 <= 78 ; //CIERTO toma el valor VERDADERO

G (A<2)(C=10);

//M toma el valor FALSO

//G toma el valor lÛgico

// resultante de la expresiÛn (A<2) (C=10) )

Entrada

Todo algoritmo tiene por objetivo principal producir resultados, pudiendo o no incorporar informaciÛn del medio externo (datos), al ambiente o sistema que observa. Esta incorporaciÛn de valores desde el exterior, nos lleva a definir una acciÛn algorÌtmica primitiva de Lectura o Entrada. Se usar· para ello la palabra clave LEER que permitir· al ejecutante identificar esta acciÛn, seguida de la variable o lista de variables, que representan en el algoritmo la los valores que deben ser ingresados.

Ejemplos de entrada de datos

LEER Dat; LEER Nombre, Apellido, DNI;

IngenierÌa Inform·tica ñ Fundamentos de ProgramaciÛn 2008

Unidad 2

11

Esta acciÛn tiene el mismo efecto que una asignaciÛn, solo que esta ˙ltima utiliza valores del ambiente del algoritmo; en cambio la lectura asigna valores desde el exterior. TambiÈn esta acciÛn contribuye a hacer a los algoritmos de uso general, pues permite incorporar informaciÛn nueva para producir nuevos resultados. Sin esta acciÛn, la ejecuciÛn de un algoritmo producir· siempre la misma respuesta. Las acciones de lectura y asignaciÛn permiten definir variables en un algoritmo. de un algoritmo producir · siempre la misma respuesta. Las acciones de lectura y asignaciÛn permiten

SalidaasignaciÛn permiten definir variables en un algoritmo. La acci Ûn primitiva que permite a un algoritmo

La acciÛn primitiva que permite a un algoritmo comunicar resultados o salida de informaciÛn al medio exterior, se representar· con la palabra clave ESCRIBIR; y

a

continuaciÛn una variable, una constante, una lista de variables y/o constantes

o

expresiones.

Ejemplos

ESCRIBIR Dat, Nombre; ESCRIBIR 23; ESCRIBIR 'Dato=',X; ESCRIBIR 'Resultado=',3*X+(X-1)/2;

Se destacan algunas diferencias entre las acciones de lectura y escritura. La lectura se realiza solamente a travÈs de variables; y por lo tanto, si se lee una variable que ya fue definida en el algoritmo, implicara un acceso destructivo; esto es, la variable perder· su valor para tomar el del nuevo dato que se ingresa. En cambio, si se escriben resultados a travÈs de variables el ejecutante realizara un acceso no destructivo a dichas variables, pues solo necesita conocer su contenido, para ejecutar la escritura. AquÌ las variables conservan sus valores despuÈs de la acciÛn. En el ejemplo inicial para calcular la hipotenusa la expresiÛn utilizada era:

H RC(A2+B2); en ese caso se accede a los valores A y B en forma no

destructiva (se usan sus valores para el c·lculo sin modificarlos). Las acciones de lectura y escritura son conocidas como acciones de entrada/salida o abreviadamente E/S.

RepresentaciÛn Gr·fica de Algoritmos Computacionales

Las acciones descritas antes corresponden a un lenguaje algorÌtmico denominado pseudocÛdigo. El pseudocÛdigo es una de las formas que se puede emplear para representar algoritmos. Adem·s, se diseÒar·n algoritmos en forma gr·fica a travÈs de los llamados diagramas de flujo.

En un diagrama de flujo, las estructuras de las primitivas del pseudocÛdigo se representan con una forma geomÈtrica identificatoria o bloque. Estos bloques se unen con flechas que nos indican la secuencia u orden en que deben ejecutarse las instrucciones, es decir el flujo o recorrido que ha de seguirse en el diagrama.

Por ejemplo, para las acciones de lectura y escritura se emplear· un paralelogramo con una pequeÒa flecha que apunta hacia adentro o hacia afuera

IngenierÌa Inform·tica ñ Fundamentos de ProgramaciÛn 2008

Unidad 2

12

del bloque, respectivamente. Para la acciÛn de asignaciÛn, se utilizar· un rect·ngulo.

Una de las ventajas del empleo de diagramas de flujo, es la visualizaciÛn plana de las acciones que forman el algoritmo, permitiendo seguir f·cilmente su lÛgica. Estas ventajas se apreciaran mas adelante, cuando se describan primitivas de estructura condicional y repetitiva. de flujo, es la visualizaci Ûn plana de las acciones que forman el algoritmo, permitiendo seguir

Se observan ahora, algunas de las formas geomÈtricas que identifican acciones en un diagrama de flujo. En las prahora, algunas de las formas geom Ètricas que identifican Ûximas unidades se incorporar ·n nuevas acciones Ûximas unidades se incorporar·n nuevas acciones con su simbologÌa correspondiente:

·n nuevas acciones con su simbolog Ìa correspondiente: Inicio o fin de proceso Escritura o salida

Inicio o fin de proceso

Escritura o salida de informaciÛn V F
Escritura o salida de informaciÛn
V
F

Estructura condicional Si-entonces

de informaciÛn V F Estructura condicional Si-entonces Asignaci Ûn Lectura o entrada de datos Conectores Ejemplo

AsignaciÛn

V F Estructura condicional Si-entonces Asignaci Ûn Lectura o entrada de datos Conectores Ejemplo Problema :
V F Estructura condicional Si-entonces Asignaci Ûn Lectura o entrada de datos Conectores Ejemplo Problema :

Lectura o entrada de datos

Conectores
Conectores

Ejemplo

Problema: Intercambiar los valores de 2 variables numÈricas que se leen como datos.

Algoritmo ( en pseudocÛdigo )

Proceso Intercambio Leer A,B; AUX A;

A B;

B AUX;

Escribir A,B;

FinProceso

Algoritmo ( diagrama de flujo )

IngenierÌa Inform·tica ñ Fundamentos de ProgramaciÛn 2008

Unidad 2

13

Unidad 2 13 Proceso Intercambio A , B AUX <- A A <- B B <-
Proceso Intercambio A , B AUX <- A A <- B B <- AUX A
Proceso Intercambio
A
, B
AUX <- A
A
<- B
B <- AUX
A
, B
Fin Proceso

Prueba de escritorio o seguimiento de algoritmos

En las etapas de resoluciÛn de problemas se propuso la etapa de prueba luego de escribir la codificaciÛn (algoritmo). Probar un algoritmo es ejecutar cada una de las acciones incluidas en Èl; pero cÛmo efectuar una prueba en un algoritmo escrito en pseudocÛdigo o mediante un diagrama de flujo ?. La prueba de escritorio o seguimiento de un algoritmo puede efectuarse de la siguiente manera:

a) Proponga un conjunto de datos. Estos datos deben coincidir en cantidad y tipo con las variables que aparecen en las acciones de lectura.

b) Construya una tabla y coloque --encabezando cada columna de la tabla-- cada una de las variables que aparezcan en el algoritmo.

c) Escriba SALIDA en el encabezado de la ultima columna de la tabla. AquÌ se anotar·n los resultados que produzca el algoritmo como consecuencia de la acciÛn de Escribir .

d) Comience a ejecutar las acciones del algoritmo. Cuando encuentre una asignaciÛn de una variable coloque el valor o dato a asignar en la columna correspondiente a esa variable.

e) Si lee una variable, tome el dato de prueba propuesto para esa variable y colÛquelo en la columna de esa variable.

f) Si vuelve a asignar o a leer una variable ya creada, contin˙e anotando en la columna correspondiente.

g) Al terminar de ejecutar las acciones, los resultados o salida del algoritmo deben aparecer en la columna de SALIDA.

Ejemplo El siguiente algoritmo calcula el promedio de 3 n˙meros utilizando una sola variable para leer los datos de entrada.

Proceso Promediar

1 Sum 0;

2 Leer X;

3 Sum Sum+X;

IngenierÌa Inform·tica ñ Fundamentos de ProgramaciÛn 2008

Unidad 2

14

4 Leer X;

4 Leer X;

5 Sum Sum+X;

6 Leer X;

7 Sum Sum+X;

8 Prom Sum/3;

9 Escribir ëPromedio=í,Prom; FinProceso

 
Se realizar · la prueba o seguimiento para los datos 15, 40 y 35 .

Se realizar· la prueba o seguimiento para los datos 15, 40 y 35.

 

Cada acciÛn del algoritmo se halla numerada para poder seguir en detalle la modificaciÛn de cada

 

variable. Cada fila de la tabla se corresponde con una acciÛn algorÌtmica. La tabla con las variables serÌa la indicada a la derecha

 

Sum

x

Prom

Salida

 

1

0

     

2

 

15

   

3

15

     

4

 

40

   

5

55

     
 

6

 

35

   

7

90

     

8

   

30

 

9

     

Promedio= 30

ObsÈrvese en la fila 1, se ha asignado 0 a la variable sum. En la fila 2 la acciÛn es Leer X y como el primer dato propuesto para la prueba es 15, se coloca 15 en la columna de la x. En el paso 3 se debe sumar sum+x, para lo cual se observa en la tabla que el valor actual de sum es cero y el de x es 15 con lo cual la operaciÛn arroja 15; luego, se asigna ese resultado a sum. Es decir que en el paso 3 la variable sum cambiÛ tomando un nuevo valor (15) y perdiendo el anterior(0). AsÌ sucesivamente hasta llegar a la acciÛn de salida en el paso 9, donde se refleja el resultado de dicha acciÛn en la ˙ltima columna de la derecha de la tabla.

DocumentaciÛn

La documentaciÛn de programas es fundamental para diseÒadores y usuarios. En pseudocÛdigo solo se documentar·n los algoritmos internamente, esto es, se efectuar·n comentarios de ciertas acciones o grupos de acciones para permitir al diseÒador o al equipo de diseÒo releer el algoritmo con facilidad. Esto evita a veces, tener que recordar por quÈ se definiÛ tal variable, o por quÈ se utilizÛ tal expresiÛn, etc.

Para documentar internamente un algoritmo en pseudocÛdigo se emplear· la doble barra ( // ) y a continuaciÛn el texto o la frase explicativa. Al ejecutar el algoritmo, este texto a la derecha de la // debe ser ignorado pues no constituye una acciÛn algorÌtmica. ObsÈrvese el ejemplo:

IngenierÌa Inform·tica ñ Fundamentos de ProgramaciÛn 2008

Unidad 2

15

Ejemplo:

Calcular el ·rea del trapecio de la figura conociendo como datos la base menor b, el ·ngulo y la altura h.

h 
h
b
b

Algoritmo Proceso Trapecio Leer b, alfa, h; Algoritmo //si x es la diferencia entre // la base mayor y b x  2*(h/TAN(alfa)); //si x es la diferencia entre // la base mayor y b Algoritmo Proceso Trapecio Leer b, alfa, h; x  2*(h/TAN(alfa)); Bmayor  b+x; // c·lculo del x 2*(h/TAN(alfa)); Bmayor b+x; // c·lculo del ·rea del trapecio AreaT (Bmayor+b)*h/2; Escribir `Area trapecio=`, AreaT; FinProceso

Utilice comentarios con frecuencia, le evitar· pÈrdidas de tiempo a la hora de recordar pasos, o depurar algoritmos.

SÌntesis

1. Para plantear algoritmos computacionales y dar soluciÛn a problemas diversos se requiere de un lenguaje algorÌtmico formal. Se emplear· un pseudolenguaje de estructura y sintaxis similar al de los lenguajes de programaciÛn de computadoras: pseudocÛdigo.

2. Esa formalizaciÛn es necesaria para utilizar -m·s tarde- lenguajes de programaciÛn y construir programas que una computadora pueda interpretar.

3. Para codificar un algoritmo computacional empleando pseudocÛdigo se debe comenzar con la palabra Proceso <Nombre>. A continuaciÛn se plantean las acciones que conforman el algoritmo y se finaliza con la palabra FinProceso.

4. Los elementos del pseudocÛdigo presentes en un algoritmo son las constantes, variables, identificadores, expresiones y primitivas del lenguaje.

5. Las variables son lugares de memoria que permiten almacenar informaciÛn. Se las suele identificar con nombres (identificadores). Una de las formas de colocar un dato en una variable es a travÈs de la asignaciÛn. Otra forma es con la acciÛn de lectura. Por ejemplo:

X<-4.5; Leer z;

6. La informaciÛn que maneja un algoritmo puede ser de naturaleza diferente, por ello se definen 3 tipos de datos: numÈrico, caracter y lÛgico. Para cada tipo se plantean operaciones diferentes y no se pueden mezclar en

IngenierÌa Inform·tica ñ Fundamentos de ProgramaciÛn 2008

Unidad 2

16

una misma expresiÛn datos de distinto tipo.

7. Dentro del tipo numÈrico se pueden emplear los operadores algebraicos de la matem·tica b·sica y se dispone de una serie de funciones predefinidas similares a las que Ud. puede hallar en una calculadora cientÌfica: SEN, COS, TRUNC, LN, etc.

8. Las expresiones permiten combinar variables, constantes y operadores para realizar c · lculos y
8. Las expresiones permiten combinar variables, constantes y operadores para realizar c · lculos y

8. Las expresiones permiten combinar variables, constantes y operadores para realizar c·lculos y comparaciones necesarios para resolver diversos casos.

variables, constantes y operadores para realizar c · lculos y comparaciones necesarios para resolver diversos casos.

9. El tipo lÛgico tiene 2 constantes: VERDADERO y FALSO. En una expresiÛn lÛgica se pueden usar operadores relacionales y operadores lÛgicos.

10. El tipo caracter se basa en el conjunto de caracteres del cÛdigo ASCII. Cada caracter tiene un n˙mero de orden y gracias a ese orden es posible establecer relaciones de orden: menor que, igual que, mayor que.

11. Las acciones primitivas son Ûrdenes perfectamente definidas y preestablecidas para que el ejecutante (la computadora) las interprete y las lleve a cabo.

12. Las acciones primitivas de estructura secuencial, se denominan asÌ porque se ejecutan una tras otra secuencialmente. Son ellas: la lectura o ingreso de datos, la asignaciÛn, la escritura o salida de informaciÛn.

13. Estas acciones se identifican unÌvocamente a travÈs de palabras claves. Estas palabras son reservadas y no pueden emplearse como identificadores de otros elementos del algoritmo.

14. Los algoritmos computacionales tambiÈn pueden representarse gr·ficamente a travÈs de diagramas de flujo. En estos diagramas los bloques o formas gr·ficas representan acciones. El diseÒo en 2 dimensiones permite seguir con m·s claridad la lÛgica propuesta.

15. Es posible probar algoritmos mediante un seguimiento del mismo. Esto es, proponer una lista de datos que coincida con la cantidad y tipo de variables a leer. Luego ejecute cada acciÛn y anote en una tabla de variables como estas se van modificando. Cada acciÛn de escribir con el estado actual de las variables me permite determinar la salida del algoritmo.

16. La documentaciÛn interna de algoritmos puede hacerse en pseudocÛdigo a travÈs de la doble barra (//). Utilice estos comentarios para describir la lÛgica aplicada a ciertas acciones, o para recordar por quÈ efectuÛ cierto c·lculo, etc. Estos comentarios son ˙tiles a la hora depurar (corregir) el cÛdigo o interpretar la lÛgica del algoritmo m·s ·gilmente.

Por ˙ltimo: Los conceptos tratados hasta aquÌ, contribuyen a formalizar la metodologÌa del diseÒo de algoritmos computacionales a travÈs de ciertas reglas formales, eliminando acciones ambiguas o carentes de precisiÛn. Esto no quiere decir, que planteado un problema, el algoritmo que lo resuelva responda a una metodologÌa ˙nica. Al contrario, el diseÒo de los algoritmos requiere una gran

IngenierÌa Inform·tica ñ Fundamentos de ProgramaciÛn 2008

Unidad 2

17

dosis de creatividad, y es com˙n hallar varios caminos para la obtenciÛn de un resultado. Solo se trata de establecer pautas claras y precisas para que el ejecutante (luego, la computadora) las interprete y pueda procesar la secuencia de acciones que conforman un algoritmo computacional.

Actividades
Actividades

Actividades

Ejercicios

Ejercicio 2.1. Los siguientes ejemplos son casos de identificadores no v·lidos. Indique la causa.

(total)

3resultado

2X4

SUMA-2

M3/M

Ejercicio 2.2 Proponga 5 ejemplos de constantes numÈricas.

Ejercicio 2.3 Dadas las siguientes constantes, si est·n escritas correctamente seÒale el tipo; en caso contrario, indique el error:

a)

TGB4

b) 'silla'

c) '41$/'

d)

VERDADERO

e) 98,765,43

f) 85/4

g)

'------------' h) 7.2E+3

i) 345.2

Ejercicio 2.4 Proponga 3 ejemplos de expresiones numÈricas.

Ejercicio 2.5 Investigue los posibles valores de verdad (tablas de verdad) para cada uno de los operadores lÛgicos.

Ejercicio 2.6 Proponga 3 ejemplos de expresiones lÛgicas usando operadores relacionales y operadores lÛgicos.

Ejercicio 2.7 Dadas las siguientes expresiones, si est·n planteadas en forma incorrecta

seÒale la causa, en caso contrario seÒale el tipo y el resultado de cada una:

a)

3

+

4

3

-

9

*

3

b) 145 < '789'

c)

'FICH' < 79

 

d) TRUNC(x) <= REDOND(x)

e)

V (54>97)

f) ('a'<'c') V (35>98)

Ejercicio 2.8 Proponga 2 ejemplos de asignaciones para cada uno de los tipos de datos estudiados.

IngenierÌa Inform·tica ñ Fundamentos de ProgramaciÛn 2008

Unidad 2

18

Ejercicio 2.9 Observe las proposiciones siguientes. Describa quÈ representa para Ud. cada una de ellas, de acuerdo a la formalizaciÛn algorÌtmica que conoce:

a) CALC = 189

c) CALC

b) 'DATO' =

X

AB12  AB12 + 1 AB12 + 1

e)

154

d) ABC 980<'980'

f)

T 'X' = T

Ejercicio 2.10 Dado el siguiente algoritmo: a) realice un seguimiento con los valores de prueba 73 y Dado el siguiente algoritmo: a) realice un seguimiento con los valores de prueba 73 y 105; b) proponga un enunciado para un problema que tenga al algoritmo por soluciÛn; c) intente hacer un seguimiento con los datos 290 y 'Luis LÛpez' y exprese su conclusiÛn.

Proceso Ejercicio210 Leer A, B; Escribir 'Valores Iniciales:', A, B;

Aux

A;

A

B;

B

Aux;

Escribir "Valores Actuales:', A,B;

FinProceso

Ejercicio 2.11 En un algoritmo se deben ingresar los datos para calcular el ·rea de un cÌrculo y el ·rea de un rect·ngulo. Proponga la acciÛn de entrada correspondiente.

Ejercicio 2.12 En el mismo algoritmo del ejercicio anterior se desea mostrar los resultados del problema: ·rea del cÌrculo y ·rea del rect·ngulo. Proponga la acciÛn de salida, indicando con mensajes alusivos cual es el resultado que se muestra.

Ejercicio 2.13

Resuelva los ejercicios siguientes en base a las etapas de resoluciÛn de problemas que Ud. conoce. Exprese los algoritmos empleando pseudocÛdigo y diagramas de flujo.

a) Calcule las raÌces o soluciones de una ecuaciÛn cuadr·tica del tipo ax 2 + bx +

c=0, conociendo como datos los coeficientes a, b y c. Suponer que los datos

corresponden a ecuaciones de raÌces reales.

b) Un usuario desea conocer cu·nto debe pagar por el consumo de energÌa

elÈctrica realizado en el ˙ltimo perÌodo. Se conocen el costo del KW sin impuestos, la lectura actual del medidor y la lectura del perÌodo anterior. Adem·s

en concepto de impuestos los usuarios abonan un 22% sobre el total correspondiente al consumo.

h 
h
b
b

c) Un canal tiene secciÛn trapezoidal

como indica la figura.

datos la base b, el nivel h y el ·ngulo de inclinaciÛn de las paredes (alfa). Si la velocidad media de la corriente es

Se conocen como

IngenierÌa Inform·tica ñ Fundamentos de ProgramaciÛn 2008

Unidad 2

19

conocida y tiene un valor v, determine e informe el caudal medio Q que pasa por dicho canal. (Nota: Q medio se calcula con el producto entre la velocidad media y el ·rea de la secciÛn).

e) Obtener la liquidaciÛn del sueldo de un empleado en base al detalle indicado m·s abajo. La empresa empleadora, bonifica sobre el sueldo b·sico (SB) la antig¸edad del empleado con un 1.2% por aÒo. Adem·s paga el presentismo ·sico (SB) la antig ¸ edad del empleado con un 1.2% por a con una monto con una monto fijo (MP). Entre los descuentos, se deben contabilizar: el aporte jubilatorio (AJ) que representa un 11% del sueldo bempleado con un 1.2% por a Òo. Adem·s paga el presentismo · sico; aporte a obra ·sico; aporte a obra social (OS) con un 3% del b·sico y el aporte gremial (AG) con un 1% del b·sico. El empleador paga adem·s $ 30.00 por esposa y $ 40.00 por cada hijo. Son datos del problema: nombre y apellido del empleado, DNI, sueldo b·sico, antig¸edad en aÒos, estado civil ( 1 si es casado, 0 si es soltero ), n˙mero de hijos, presentismo ( 1 si corresponde cobrar, 0 si no cobra ). Obtenga una salida como la siguiente:

Empleado:

Haberes

DNI:

B·sico:

Antig¸edad:

Presentismo:

Salario Familiar:

Descuentos Aporte Jubilatorio:

Obra Social:

Aporte Gremial:

LÌquido a Cobrar:

:

Cuestionario

2.1

SeÒale la diferencia entre un identificador y una variable.

2.2.

Una constante es una expresiÛn ? Y una variable?

2.3

En una misma expresiÛn lÛgica ø pueden aparecer variables y constantes

de tipo caracter y de tipo lÛgico ?. Explique.

2.4 øEs posible comparar dos expresiones de diferente tipo en una expresiÛn

lÛgica relacional?

2.5 Es posible plantear un algoritmo sin la acciÛn de lectura ? Explique.

2.6 ø Puede plantearse un algoritmo sin la acciÛn de escritura ? Explique.

2.7 En una proposiciÛn de asignaciÛn, quÈ variables intervinientes deben estar

previamente definidas?

IngenierÌa Inform·tica ñ Fundamentos de ProgramaciÛn 2008

Unidad 2

20

Unidad 2 20 2.8 2.9 ? øEs posible leer una var iable que fue definida en

2.8

2.9

?

øEs posible leer una variable que fue definida en un paso anterior ?

øSe puede proponer como salida una variable que no ha sido definida antes

2.10 øCu·les acciones algorÌtmicas permitendefinir (crear) una variable dentro de un algoritmo ?

Recordatorio

Fundamentos de ProgramaciÛn RÈgimen de evaluaciÛn y promociÛn 2008

Evaluaciones parciales Se efectuar·n 2 evaluaciones parciales de car·cter individual. Para el c·lculo del promedio entre ambas calificaciones, la del 2do parcial se computa doble. Solo se recupera el 2do Parcial y la nota del recuperatorio sustituye la nota inicial.

PromociÛn

Promover·n directamente la asignatura sin examen final, aquellos alumnos que obtengan simult·neamente:

a. CalificaciÛn de 80% o m·s de promedio entre las 2 evaluaciones parciales

(computando doble el 2do parcial)

b. 75% de asistencia a las clases teÛricas y pr·cticas.

Se admite la recuperaciÛn del 2do parcial para promover la materia.

Regularidad

Los alumnos que no promuevan directamente la asignatura pero cumplan con las dos condiciones siguientes, ser·n considerados alumnos regulares:

a. Promedio de 50% entre los 2 parciales (la nota del 2do parcial vale doble).

b. 75% de asistencia a las clases teÛricas y pr·cticas.

Alumnos Libres Ser·n considerados libres quienes no cumplan con las condiciones de regularidad.

Los alumnos libres rendir·n el mismo examen final que los alumnos regulares, m·s ejercicios y/o preguntas adicionales.

IngenierÌa Inform·tica ñ Fundamentos de ProgramaciÛn 2008