Documentos de Académico
Documentos de Profesional
Documentos de Cultura
GUIA
UNIDAD CURRICULAR
ALGORITMOS Y PROGRAMACIÓN
Parte II
CONTENIDO
17
Universidad Bolivariana de Venezuela
Programa de Formación de Grado en Informática para la Gestión Social
Capítulo 6
18
Universidad Bolivariana de Venezuela
Programa de Formación de Grado en Informática para la Gestión Social
Tipo Coordenada=entero;
Var x,y: Coordenada;
z: entero;
19
Universidad Bolivariana de Venezuela
Programa de Formación de Grado en Informática para la Gestión Social
Si los tipos son compatibles (entre argumento y parámetro por ejemplo), se acepta
el argumento y se continúa la operación. Si son distintos y según el lenguaje
puede suceder:
- Error fatal: Inconsistencia de tipos.
- Conversión de tipos (por ejemplo en C, en la asignación entero = real, el real
es convertido a entero automáticamente).
20
Universidad Bolivariana de Venezuela
Programa de Formación de Grado en Informática para la Gestión Social
21
Universidad Bolivariana de Venezuela
Programa de Formación de Grado en Informática para la Gestión Social
1 n-1 bits
E Magnitud
Signo
Tipo de dato = Entero
2) Tipo real:
a) Conjunto de valores: El tipo real tiene asociado un subconjunto de los reales.
b) Conjunto de operaciones: Las operaciones más comunes sobre reales son la
adición, resta, multiplicación y división. La especificación de estas operaciones es
trivial por lo que no entraremos en detalles. Las operaciones sobre reales permiten
manipular un gran rango de números; sin embargo, por errores de truncamiento y
redondeo se tiene un error asociado a las operaciones y a la representación
numérica.
c) Implementacióin de la representación: Se representan en el computador como
un par de enteros, generalmente de rangos distintos, de la forma:
22
Universidad Bolivariana de Venezuela
Programa de Formación de Grado en Informática para la Gestión Social
3) Tipo caracter:
a) Conjunto de valores: Corresponde a un conjunto de caracteres y operaciones
sobre ellos. Depende del sistema de codificación. Ejemplo: Tabla ASCII tiene 128
caracteres, y la ASCII extendida 256 caracteres.
b) Conjunto de operaciones: Como veremos posteriormente, el conjunto de
caracteres es un conjunto ordenado, por lo que las operaciones más comunes
entre ellos son: operaciones relacionales (>, <, >=, <=, <>, =), Primero, Ultimo,
Sucesor, Predecesor, Ordinal y Caract.
23
Universidad Bolivariana de Venezuela
Programa de Formación de Grado en Informática para la Gestión Social
Tipo de dato=Caracter
24
Universidad Bolivariana de Venezuela
Programa de Formación de Grado en Informática para la Gestión Social
4) Tipo lógico:
a) Conjunto de valores: Se asocia con el conjunto de valores lógicos verdadero y
falso.
b) Conjunto de operaciones: Las más comunes entre valores lógicos son: O (Or),
Y (And) y No (Not). En muchos lenguajes se provee otras operaciones que se
pueden obtener como composición de las anteriores; por ejemplo, Ó (Xor). La
especificación de estas operaciones es trivial por lo que no se entrará en detalles.
Los operadores relacionales pueden aplicarse entre los lógicos, ya que en la
representación se le asigna un valor entero a verdadero, y otro valor a falso.
c) Implementación de la representación: Computacionalmente estos dos valores
se representan en general como 1 y 0 respectivamente. Para almacenar estos
valores bastaría con la unidad mínima de información en un computador: el bit; sin
embargo, la unidad mínima de direccionamiento en la mayoría de los
computadores es el byte, por lo que el tipo lógico puede representarse como un
byte (o incluso una palabra) cuyos valores posibles son 1 y 0. Si este es el caso,
existe un orden en este conjunto: falso < verdadero.
Tipo de dato=Lógico
5) Tipo subrango:
a) Conjunto de valores: Con frecuencia sucede que una variable caracter o entera
toma valores sólo dentro de un intervalo. En estos casos, se puede definir un tipo
de dato, cuyo conjunto de valores asociado es dicho subintervalo (tipo subrango).
Este tipo de dato es definido por el usuario, pero también es no estructurado,
porque los valores válidos que puede tomar una variable de este tipo, es un
subconjunto de los enteros o caracteres, según el caso. A continuación veremos
unos ejemplos de la definición de subrangos.
Tipo año = [1900 .. 2000]
Tipo letra = ['A' .. 'Z']
25
Universidad Bolivariana de Venezuela
Programa de Formación de Grado en Informática para la Gestión Social
Tipo subrango
De enteros o caracteres
S E/C Li Ls Valor
6) Tipo Enumerado:
Es usado para definir un conjunto de constantes.
a) Conjunto de valores: A cada constante del conjunto se le asocia con un valor
entero, comenzando por defecto desde el cero, y sucesivamente en incrementos
de una unidad.
b) Conjunto de operaciones: Como entre estos elementos existe un orden (según
el orden de la declaración), y como se oculta la representación, las operaciones
aritméticas no pueden operar directamente sobre éstos, por lo que tenemos
Sucesor, Predecesor, Ordinal, etc.
c) Implementación de la representación: A cada constante del enumerado se le
asigna un valor entero comenzando desde el cero, y de manera consecutiva. De
aquí que el descriptor de variables enumerado debe tener, el tipo de variable
(enumerado), y el valor de la última constante del enumerado. Si el valor de la
26
Universidad Bolivariana de Venezuela
Programa de Formación de Grado en Informática para la Gestión Social
Tipo subrango
valor tope que puede tomar
En Ls Valor
Caso 2: Lenguaje C.
typedef enum {<Id1> [=<Valor1>], ..., <Idn> [=<Valorn>]} <Nombre-Tipo>
<Id1> = un identificador
<Valori> = Un valor por defecto (caracter o entero)
Al valor Idi se le asocia el sucesor de Idi-1, a menos que se le asigne
directamente un valor por defecto.
Ejemplo:
typedef enum
{Lunes,Martes,Miércoles,Jueves=15,Viernes,Sábado,Domingo} Dia;
27
Universidad Bolivariana de Venezuela
Programa de Formación de Grado en Informática para la Gestión Social
1) Arreglos Unidimensionales
Un arreglo unidimensional es una estructura da datos homogénea, porque está
formada por elementos del mismo tipo (tipo base), sobre los cuales existe una
correspondencia uno a uno con algún subconjunto finito de los enteros (tipo
índice). De esta forma, un arreglo unidimensional puede definirse como una
aplicación entre un tipo índice y un tipo base, cuyos elementos pueden ser no
estructurados o registros. El acceso de los elementos del arreglo unidimensional
es al azar, de tal forma que cualquier elemento puede seleccionarse y accederse
cuando se desee.
Elementos que intervienen en la definición: El tipo base, el tipo índice, y el arreglo
como tal.
El índice puede ser una constante, variable o expresión. En cualquier caso, este
se evalúa y se accede el elemento que este indique.
Operación constructora: Consiste en asociar un valor estructurado a un arreglo,
que se corresponda con sus características (#elementos y tipo de elementos).
Cardinalidad: La cardinalidad de un arreglo es:
28
Universidad Bolivariana de Venezuela
Programa de Formación de Grado en Informática para la Gestión Social
2) Arreglos Multidimensionales
a) Arreglos bidimensionales
Elementos que intervienen en la definición: El tipo base, los tipos índice, y el
arreglo bidimensional como tal.
(<Ls1>-<Li1>+1)*(<Ls2>-<Li2>+1).
Operación constructora:
<Nombre-Arreglo> = ((e11,e12,...,e1m), ..., (en1, en2, ..., enm))
29
Universidad Bolivariana de Venezuela
Programa de Formación de Grado en Informática para la Gestión Social
...
Tipo <Indn> = [<Lin> .. <Lsn>]
Tipo <N-ndim> = Arreglo [<Ind1>, <Ind2>, ..., <Indn>] de <Tbase>
tipo_de_dato[] nombre_del_arreglo;
30
Universidad Bolivariana de Venezuela
Programa de Formación de Grado en Informática para la Gestión Social
Los arreglos se pueden declarar, crear e inicializar en una misma línea, del
siguiente modo
int[] numeros={2, -4, 15, -25};
String[] nombres={"Juan", "José", "Miguel", "Antonio"};
31
Universidad Bolivariana de Venezuela
Programa de Formación de Grado en Informática para la Gestión Social
Java verifica que el índice no sea mayor o igual que la dimensión del arreglo, lo
que facilita mucho el trabajo al programador.
Para crear un arreglo de tres objetos de la clase Rectangulo se escribe
Declarar
Rectangulo[] rectangulos;
Crear el arreglo
rectangulos=new Rectangulo[3];
Inicializar los elementos del arreglo
rectangulos[0]=new Rectangulo(10, 20, 30, 40);
rectangulos[1]=new Rectangulo(30, 40);
rectangulos[2]=new Rectangulo(50, 80);
O bien, en una sola línea
Rectangulo[] rectangulos={new Rectangulo(10, 20, 30, 40),
new Rectangulo(30, 40), new Rectangulo(50, 80)};
Usar el arreglo
Para calcular y mostrar el área de los rectángulos escribimos
for(int i=0; i<rectangulos.length; i++){
System.out.println(rectangulos[i].calcularArea());
}
32
Universidad Bolivariana de Venezuela
Programa de Formación de Grado en Informática para la Gestión Social
33
Universidad Bolivariana de Venezuela
Programa de Formación de Grado en Informática para la Gestión Social
if (i == j) {
mUnidad[i][j]=1.0;
}else {
mUnidad[i][j] = 0.0;
}
}
}
buscado:
for(i=0; i<matriz.length; i++){
for(j=0; j<matriz[i].length; j++){
34
Universidad Bolivariana de Venezuela
Programa de Formación de Grado en Informática para la Gestión Social
if(matriz[i][j]==numero){
break buscado;
}
}
}
System.out.println("buscado: matriz("+ i+", "+j+")="+matriz[i][j]);
2) Registros
a) Registros fijos
donde <Ci> es el nombre del campo i-ésimo del registro, y <Ti> su tipo asociado.
a) Conjunto de valores: Valores estructurados (e1, ... , en) en donde ei es de tipo
<Ti>.
c) Operación selectora:
Sintaxis: <N-reg>.<Ci> ---> Tbase
Semántica: <N-reg>.<Ci> retorna el valor del campo i-ésimo del registro
35
Universidad Bolivariana de Venezuela
Programa de Formación de Grado en Informática para la Gestión Social
b) Registros Variantes
En general un registro se define como sigue:
donde <Ci> es el nombre del campo i-ésimo del registro, y <Ti> su tipo asociado.
Partes de un registro variante:
1) Parte fija: Corresponde al conjunto de atributos minimal o comunes que tendrá
el registro variante. En la sisntaxis dada, está conformada por los <Ci>.
2) Discriminante: Permite especificar con que conjunto de datos se está trabajando
en un momento determinado.
3) Parte variable: Corresponde a un conjunto de atributos que puede variar según
el valor del discriminante.
36
Universidad Bolivariana de Venezuela
Programa de Formación de Grado en Informática para la Gestión Social
Capítulo 7
7.1.- Variables
Una variable tiene un nombre, un tipo de dato y un valor. Antes de poder utilizar
una variable es necesario declararla especificando su nombre y su tipo de dato.
Una variable puede visualizarse como un casillero en la memoria principal que
almacena un valor que puede cambiar en el transcurso de la ejecución del
programa. Cuando un programa necesita almacenar un dato, necesita una
variable.
37
Universidad Bolivariana de Venezuela
Programa de Formación de Grado en Informática para la Gestión Social
Esto crea los casilleros de memoria edad y descuento. Luego de la creación, las
variables están indefinidas.
edad ?
descuento ?
La siguiente instrucción declara las variables nota1, nota2 y nota3, todas de tipo
ENTERO.
Esto crea los casilleros de memoria nota1, nota2 y nota3. Luego de la creación,
las variables están indefinidas ( ? ).
nota1 ?
nota2
?
38
Universidad Bolivariana de Venezuela
Programa de Formación de Grado en Informática para la Gestión Social
nota3 ?
Literales
Se denominan literales a todos aquellos valores que figuran en el pseudocódigo y
pueden ser:
- Literales enteros. Ejemplo: 12, 20300, 15, etc.
- Literales reales. Ejemplo: 3.1416, 2345.456, etc.
- Literales de carácter. Ejemplo. 'a', 'B', ';', '<', '+', etc.
- Literales de cadena: Ejemplo: "Hola", "Algoritmos Computacionales", etc.
- Literales lógicos: Ejemplo: verdadero, falso
a) Entrada
Consiste en obtener un dato de un dispositivo de entrada, como el teclado, y
almacenarlo en una variable. En general, la acción de ingresar un dato a una
variable se expresa en el pseudocódigo mediante la palabra LEER, de la
siguiente forma:
LEER variable
Por ejemplo, la instrucción:
LEER estatura
Solicita el ingreso de un valor, desde algún dispositivo de entrada (como el
teclado), para la variable estatura.
b) Salida
Consiste en mostrar el valor de una variable en un dispositivo de salida, como la
pantalla. En general, la acción de mostrar el valor de una variable se expresa en el
pseudocódigo mediante la palabra IMPRIMIR de la siguiente forma:
IMPRIMIR variable
39
Universidad Bolivariana de Venezuela
Programa de Formación de Grado en Informática para la Gestión Social
IMPRIMIR importeCompra
c) Asignación
Consiste en asignar a una variable el valor de una expresión. La expresión puede
ser una simple variable, un simple literal o una combinación de variables, literales
y operadores. La asignación se expresa en el pseudocódigo de la siguiente forma:
variable = expresión
INICIO
// Declara las variables M, C y P
REAL M, C, P
// Solicita el ingreso de la cantidad en metros
LEER M
// Calcula la cantidad en centímetros y lo asigna a la variable C
C = M*100
// Calcula la cantidad en pulgadas y lo asigna a la variable P
P = C/2.54
// Muestra los valores de las variables C y P
IMPRIMIR C, P
FIN
40
Universidad Bolivariana de Venezuela
Programa de Formación de Grado en Informática para la Gestión Social
+ Suma a+b
- Resta a-b
* Multiplicación a*b
/ División a/b
% Residuo a%b
Los operadores aritméticos pueden utilizarse con tipos enteros y reales. Si en una
operación con dos operandos, ambos operandos son enteros, el resultado es un
entero; si alguno de ellos es real, el resultado es real. Así, 15/4 es 3 y no 3.75; en
cambio, 15.0/4 es 3.75.
41
Universidad Bolivariana de Venezuela
Programa de Formación de Grado en Informática para la Gestión Social
Solución:
e = a/b/c
1) se dividirá a entre b.
2) el resultado ya obtenido de a/b se dividirá entre c.
Note que el orden de ejecución esta de acuerdo con la expresión algebraica, por lo
que no se requiere ninguna pareja de paréntesis.
Solución:
e = a*b*c/d/e
42
Universidad Bolivariana de Venezuela
Programa de Formación de Grado en Informática para la Gestión Social
Note que el orden de ejecución esta de acuerdo con la expresión algebraica, por lo
que no se requiere ninguna pareja de paréntesis.
Solución:
e = 4/((a+b)/(c/d)) + v/w/p + 5*m*n*q
Aplicando las reglas de jerarquía de los operadores aritméticos:
1) se sumará a más b.
2) se dividirá c entre d.
3) el resultado obtenido de a+b se dividirá entre el resultado ya obtenido de c/d.
4) se dividirá 4 entre el resultado ya obtenido de ((a+b)/(c/d))
5) se dividirá v entre w.
6) se dividirá el resultado ya obtenido de v/w entre p.
7) se multiplicará 5 por m.
8) se multiplicará el resultado ya obtenido de 5*m por n.
9) se multiplicará el resultado ya obtenido de 5*m*n por q.
10) se sumará el resultado obtenido de 4/((a+b)/(c/d)) y el resultado obtenido de
v/w/p.
11) se sumará el resultado obtenido de 4/((a+b)/(c/d)) + v/w/p y el resultado
obtenido de 5*m*n*q.
Se ha utilizado la mínima cantidad posible de paréntesis. Pueden usarse
paréntesis adicionales, lo que no es un error. Por ejemplo, otra solución posible
que arroja el mismo resultado final es:
e = (4/((a+b)/(c/d))) + ((v/w)/p) + (5*m*n*q)
Note que usando correctamente las reglas de jerarquía, es posible usar menos
parejas de paréntesis.
43
Universidad Bolivariana de Venezuela
Programa de Formación de Grado en Informática para la Gestión Social
= igual a a=b
≠ diferente de a≠b
not no not a
and y a and b
or ó a or b
Capítulo 8
Estructuras de Control
En pseudocódigo:
44
Universidad Bolivariana de Venezuela
Programa de Formación de Grado en Informática para la Gestión Social
si c1 entonces
e1
En Java:
if (c1)
e1;
8.2.- Condiciones
- De igualdad
- Relacionales
- Lógicos
Los operadores aritméticos son evaluados antes que los operadores de igualdad y
los relacionales. Recuerde que los parentésis son utilizados para alterar su
precedencia.
Operadores relacionales y lógicos en Java
Operador Significado
== Igual a
!= Distinto a
< Menor que
<= Menor o igual que
> Mayor que
>= Mayor o igual que
Operadores lógicos:
Operador Significado
! No
&& AND
|| OR
45
Universidad Bolivariana de Venezuela
Programa de Formación de Grado en Informática para la Gestión Social
Ejemplo 5:
/**
* Determina la edad mental de una persona
*/
class Niño
{
public static void main (String [] a)
{
System.out.print ("Dame tu edad ");
int edad = Teclado.readInt ();
if (edad <= 18)
System.out.println ("Eres un niño");
System.out.println ("La edad es un estado mental");
}
}
Ejemplo de ejecución
8.3.- Bifurcación
En pseudocódigo
si c1 entonces
e1
otro
e2
En Java:
if ( c1 )
e1;
else
e2;
Ejemplo 6:
class Par
{
public static void main (String [] a)
{
46
Universidad Bolivariana de Venezuela
Programa de Formación de Grado en Informática para la Gestión Social
/**
** Determina la mejor calificación entre 2 dadas
**/
class MejorCali
{
public static void main (String [] a)
{
System.out.println ("Escribe la calificación de un compañero: ");
int tuCali = Teclado.readInt ();
System.out.println ("Escribe tu calificación: ");
int miCali = Teclado.readInt ();
int mejorCalif ....
8.4.- Iteración
Iteración fija:
Repite una instrucción un número especificado de veces hasta que una condición
se cumple.
En pseudocódigo:
En Java:
47
Universidad Bolivariana de Venezuela
Programa de Formación de Grado en Informática para la Gestión Social
Note que la inicialización sólo se realiza una vez, pero el incremento se realiza
después de cada iteración del ciclo.
Ejemplo 7:
int i;
for (i = 0; i < 10; i++)
System.out.println (i);
class EjemPara
{
public static void main (String [] a)
{
for (int i = 0; i < 10; i++)
System.out.println (i + " ");
}
Modifique la clase anterior para que imprima los números pares entre 0 y 35.
Iteración “mientras”
Se usa para repetir una instrucción durante todo el tiempo en queuna condición
particular sea verdadera.
48
Universidad Bolivariana de Venezuela
Programa de Formación de Grado en Informática para la Gestión Social
En pseudocódigo:
mientras c1
e1
En Java:
while ( c1)
e1;
Ejemplo 8:
int i = 0;
while (i < 10)
i = i + 1;
Bloque de instrucciones
Ejemplo 9:
class EjemMientras
{
public static void main (String [] args)
{
int i = 0;
while (i < 10)
{
System.out.print(i + " ");
i++;
}
}
}
Ejercicio: Modificar la clase anterior para que imprima los pares entre 0 y 10
inclusive.
49
Universidad Bolivariana de Venezuela
Programa de Formación de Grado en Informática para la Gestión Social
clase DeterminaPrimo
{
principal
comienza
escribe "Dame un entero"
lee num
int i <-- 2
mientras num mod i != 0
i++
escribe "El número " + num
si i = num
escribe "es un primo"
otro
escribe "no es un primo"
termina
}
Iteración “ Repite”
En pseudocódigo:
repite
e1
mientras c1
En Java:
do
{
enunciados
} while (c1 );
Ejemplo 9:
class ejemRepite
{
public static void main (String [] a)
{
final int LIMITE = 7; //constante entera
50
Universidad Bolivariana de Venezuela
Programa de Formación de Grado en Informática para la Gestión Social
int cuenta = 0;
do
{
cuenta++;
System.out.println ("Cuenta: " + cuenta);
}
while (cuenta < LIMITE);
}
}
class repite
{
public static void main (String [] a)
{
int z = 0, x = 1;
do
{
z = z +x;
x++;
System.out.println ( x = " + x+ ” z = " + z);
}
while ( x < 6 );
}
}
Escriba otra equivalente que utilice for y otra que utilice un while y que produzca
el mismo resultado
51