Documente Academic
Documente Profesional
Documente Cultură
Vicerrectorado de Investigacin
ALGORITMOS Y ESTRUCTURA
DE DATOS I
TINS
Lima - Per
1
ALGORITMO Y ESTRUCTURA DE DATOS I
2
ALGORITMO Y ESTRUCTURA DE DATOS I
3
ALGORITMO Y ESTRUCTURA DE DATOS I
4
ALGORITMO Y ESTRUCTURA DE DATOS I
PRESENTACIN
5
ALGORITMO Y ESTRUCTURA DE DATOS I
Vicerrectorado de Investigacin
6
ALGORITMO Y ESTRUCTURA DE DATOS I
NDICE
7
ALGORITMO Y ESTRUCTURA DE DATOS I
CAPTULO V: RECURSIVIDAD
5.1 RECURSIVIDAD............................................................................... 103
5.2 CARACTERSTICAS........................................................................ 103
5.3 VENTAJAS Y DESVENTAJAS ....................................................... 104
5.4 PELIGROS EN LA RECURSIVIDAD.............................................. 104
5.5 TIPOS DE ALGORITMOS RECURSIVOS...................................... 105
5.6 VERIFICACIN DE FUNCIONES RECURSIVAS ........................ 107
5.7 LA PILA DE RECURSIN ............................................................... 108
5.8 LLAMADA A UNA FUNCIN RECURSIVA ................................ 108
5.9 PARTE PRCTICA........................................................................... 109
PROBLEMAS PROPUESTOS .......................................................... 109
LABORATORIO N 5........................................................................ 110
8
ALGORITMO Y ESTRUCTURA DE DATOS I
DISTRIBUCIN TEMTICA
Clase
TEMA SEMANA
N
1 Conceptos Fundamentales 1
2 Tipo de datos 2
4 Estructuras de control 4
9 Revisin Nivelacin 9
10 EXAMEN PARCIAL 10
11 Subprogramacin 11
13 Recursividad 13
14 Datos Estructurados 14
9
ALGORITMO Y ESTRUCTURA DE DATOS I
Clase
TEMA SEMANA
N
16 Registros 16
17 Cadena de caracteres 17
18 ndices 18
19 Nivelacin Recuperacin 19
20 EXAMEN FINAL 20
21 EXAMEN SUSTITUTORIO 21
10
ALGORITMO Y ESTRUCTURA DE DATOS I
a) CONCEPTOS DE ALGORITMO
Un algoritmo es un conjunto finito de instrucciones o
pasos con una secuencia lgica que sirven para ejecutar
una tarea o resolver un problema.
De un modo ms formal, un algoritmo es una secuencia
lgica finita de operaciones realizables, no ambiguas,
cuya ejecucin da una solucin de un problema en un
tiempo finito.
- COMPONENTES DE UN ALGORITMO
Entrada : Datos del problema a resolver.
Salida : El resultado de la resolucin.
Procesos : Paso a seguir en la resolucin.
- CARACTERSTICAS DE UN ALGORITMO
EJEMPLO N 1
Un cliente efecta un pedido a una compaa, La compaa
verifica en su banco de datos la ficha del cliente, si el cliente
es solvente entonces la compaa acepta el pedido; en caso
11
ALGORITMO Y ESTRUCTURA DE DATOS I
CONCEPTO DE PROGRAMA
EJEMPLO N 2
b) CONCEPTO DE SOFTWARE
Es la parte lgica de la computacin.
Conjunto de programas que sirven para representar un
segmento de la realidad y resolver un problema. Como
por ejemplo: el Office, un sistema operativo, C++,
Pascal, Java, etc.
c) LENGUAJES DE PROGRAMACIN
Son aquellos lenguajes que se utilizan para realizar
algoritmos interpretables por la computadora.
Caractersticas imprescindibles Estructura de Control.
Programacin Modular
(funciones).
12
ALGORITMO Y ESTRUCTURA DE DATOS I
Lenguaje mquina.
Lenguaje de bajo nivel (ensamblador).
Lenguajes de alto nivel: C, C++, Visual Basic, Java,
Pascal, Prolog.
13
ALGORITMO Y ESTRUCTURA DE DATOS I
EJEMPLO N 3
Imprimir la hipotenusa, teniendo los lados de un triangulo
rectngulo.
14
ALGORITMO Y ESTRUCTURA DE DATOS I
EJEMPLO N 4
Determine a los nmeros menores que 90 y mltiplos de 9, as
como su sumatoria.
Definicindel
Definicin del Especificacione Especificacione
problema
Problem a s de entrada s de salida
15
ALGORITMO Y ESTRUCTURA DE DATOS I
Documentacin interna:
Comentarios: lneas informativas incluidas en el cdigo.
Documentacin externa:
Manuales, estructura y especificaciones del programa, historia de
las modificaciones, etc.
16
ALGORITMO Y ESTRUCTURA DE DATOS I
Lenguaje natural.
Organigramas.
Diagramas Nassi Shneiderman (N - S).
Pseudocdigo.
Otros
LENGUAJE NATURAL:
Es un lenguaje utilizado para describir los pasos de cmo
realizamos algo, de una forma sencilla.
EJEMPLO N 5
El algoritmo para encontrar las races de una ecuacin de
segundo grado podra describirse as:
ORGANIGRAMAS:
Los organigramas o diagramas de flujo permiten describir los
algoritmos de forma grafica.
17
ALGORITMO Y ESTRUCTURA DE DATOS I
18
ALGORITMO Y ESTRUCTURA DE DATOS I
Read x
Entrada y salida de
Read x
Datos
Write x
Se escribe en lneas
separadas
Secuencia de
Calcular x = y+3
sentencias
Calcular z = 2*x
IF condicin entonces
Accin 1
Seleccin ELSE
Accin 2
DO WHILE
Accin 1
Repeticin
Fin End
19
ALGORITMO Y ESTRUCTURA DE DATOS I
Compilador Montador
(Compiler) (Linker)
DATOS VS INFORMACIN
DATOS VS INFORMACIN
- Medidas objetivas de atributos - Resultado de haber organizado
de entidades. o analizado los datos de alguna
- Cifras/hechos crudos (en manera lgica.
bruto) sin interpretar o analizar. - Reduce la incertidumbre.
- No son estmulos de accin. - Impulsa a la accin.
20
ALGORITMO Y ESTRUCTURA DE DATOS I
EJEMPLO N 6
DATOS
P R O C E SA M IE N T O
35.000 So les DE DATOS
1250 unidades
Jos Perez Lim a
83.000 D lares. IN F O R M A C I N
3800 unidades
.......
C lie nte : Jos Perez
Sucursal: Lim a
C o m pras de l m es:
1250 unidades=35.000
So les. ......
- CLASIFICACIN
REAL
NUMERICO ENTERO
CHARACTER
ESTANDAR
LOGICO (BOOLEAN)
DATOS SIMPLES
DEFINIDOS X ENUMERATIVO
EL PROGRAMADOR
SUBRANGO
TIPO
DE ARRAYS
DATO ESTATICOS REGISTRO
ARCHIVO (FICHERO)
CONJUNTO)
DATOS
ESTRUCTURADOS CADENA (STRING)
LISTA (PILA/COLA)
DINAMICOS LISTA ENLAZADA
ARBOL
GRAFO
21
ALGORITMO Y ESTRUCTURA DE DATOS I
DATOS ALFANUMRICOS
Longitud
Representacin Tipo Rango
de byte
Char 1 -128 a 127
Carcter Unsigned 1
char
Int 2 -32768 a 32767
Short int 2 -32768 a 32767
Unsigned int 2 0 a 65535
Enteros
Long 4 -2147483648 a
Unsigned 4 2147483647
long 0 a 4294967295
Float 4 3.4E38
Reales Double 8 1.7E308
Long double 10 3.4E-4932 a 1.1E+4932
22
ALGORITMO Y ESTRUCTURA DE DATOS I
DATOS DE DATOS DE
SALIDA ENTRADA
ALGORITMO
ALGORITMOS
+
ESTRUCTURA DE DATOS
=
PROGRAMA
NIKLAUS WIRTH
- CONSTANTES
Constantes: Valores que durante la ejecucin de un programa
no cambian su valor.
Ejemplo: pi = 3.1416
- VARIABLES
Definicin 1: Valores que cambiarn durante la ejecucin del
programa.
23
ALGORITMO Y ESTRUCTURA DE DATOS I
* POR SU USO
DE TRABAJO
Variables que recibe el resultado de una operacin
matemtica completa y que se usan normalmente dentro
de un programa.
Ejemplo: Suma a + b /c
CONTADORES
Se utilizan para llevar el control del nmero de ocasiones
en que se realiza una operacin o se cumple una
condicin. Con los incrementos generalmente de uno en
uno.
IDENTIFICADORES
Para poder reconocer una variable o una constante en la memoria
de la computadora, es necesario darle un nombre con el cual
24
ALGORITMO Y ESTRUCTURA DE DATOS I
Ejemplo:
rea pi * radio ^ 2
Los identificadores son: el radio, el rea y la constante es pi.
EXPRESIONES
Se definen como una combinacin de constantes, variables,
smbolos de operacin, parntesis, y nombres de funciones
especiales.
o Aritmticas
o Lgicas
o Carcter
25
ALGORITMO Y ESTRUCTURA DE DATOS I
Reglas de prioridad
Operadores de relacin
Operador Significado
< Menor
> Mayor
= Igual
<= Menor o igual
>= Mayor o igual
<>,!= Distinto
Operadores lgicos
Ejemplo:
Not 4 > 5 produce un error ya que el operador no se aplica a 4
Not (4 > 5) produce un valor verdadero.
Ejemplo:
P and Q.
P or Q.
26
ALGORITMO Y ESTRUCTURA DE DATOS I
FUNCIONES
Las funciones pueden tener cualquier nmero de variables, incluso
cero. Para evaluar una funcin sin variables se debe escribir un par
de parntesis despus de su nombre (por ejemplo fun()). Las
funciones sin variables pueden servir como algoritmos de clculo
que devuelven un valor real.
FUNCIONES MATEMTICAS
Funcin Descripcin
Abs(x) Absoluto
Arctan(x) Tangente inversa
Cos(x) Coseno
Exp(x) Exponencial
Ln(x) Log neperiano
Log10(x) Log decimal
Round(x) Redondeo
Sin(x) Seno
Sqr(x) Cuadrado
Sqrt(x) Raz cuadrada
Trunc(x) Truncamiento
PROBLEMAS PROPUESTOS
27
ALGORITMO Y ESTRUCTURA DE DATOS I
28
ALGORITMO Y ESTRUCTURA DE DATOS I
29
ALGORITMO Y ESTRUCTURA DE DATOS I
30
ALGORITMO Y ESTRUCTURA DE DATOS I
LABORATORIO N 1
PASOS A SEGUIR:
Paso 1: Ingresar a inicio programas Turbo C++ 4.5. o en otro
compilador de C que le indique el docente
31
ALGORITMO Y ESTRUCTURA DE DATOS I
32
ALGORITMO Y ESTRUCTURA DE DATOS I
#include <iostream.h>
#include <conio.h>
Int main( )
{
float base, altura, area, permetro;
33
ALGORITMO Y ESTRUCTURA DE DATOS I
34
ALGORITMO Y ESTRUCTURA DE DATOS I
35
ALGORITMO Y ESTRUCTURA DE DATOS I
36
ALGORITMO Y ESTRUCTURA DE DATOS I
CONCEPTO DE PROGRAMA
Es un conjunto de instrucciones, ordenes dadas a la mquina que
producirn la ejecucin de una determinada tarea, en esencia es un
medio para seguir un fin.
DESARROLLO DE UN PROGRAMA
1. Definicin y Anlisis del problema
2. Diseo de algoritmos:
z Diagrama de flujo.
z Diagrama de N-S.
z Pseudocdigo.
z Otros
37
ALGORITMO Y ESTRUCTURA DE DATOS I
TIPOS DE INSTRUCCIN
1. Instrucciones de inicio / fin
2. Instrucciones de asignacin
3. Instrucciones de lectura
4. Instrucciones de escritura
5. Instrucciones de bifurcacin
6. Fin
- Instrucciones de asignacin
A 80 la variable A toma el valor de 80
Cul ser el valor que tomara la variable C tras la ejecucin de las
siguientes instrucciones?
38
ALGORITMO Y ESTRUCTURA DE DATOS I
A 12 A contiene 12
BA B contiene 12
CB C contiene 12
Antes de la ejecucin de las tres instrucciones A, B, C son
indeterminados.
Esta instruccin
a) Read numero, horas, tasa lee datos de
un
nmero12325 horas32 tasa1200 dispositivos
de entrada
b) Read A, B, C
A 100 B 200 C300
- A100
- B200
- C300 Esta instruccin
se escribe en
Write A, B, C un
dispositivo
de salida
39
ALGORITMO Y ESTRUCTURA DE DATOS I
40
ALGORITMO Y ESTRUCTURA DE DATOS I
EJEMPLO N 7
Ejemplo:
/* El primer programa en C */
#include <stdio.h>
int main( void )
{ printf(Bienvenido a C!" );
return 0; /* indica que el programa termin con xito */
}
EJEMPLO N 8
/* Programa de suma */
#include <stdio.h>
int main() /* la funcin main inicia la ejecucin del programa */
{
int entero1; /* primer nmero introducido por el usuario */
int entero2; /* segundo nmero introducido por el usuario */
41
ALGORITMO Y ESTRUCTURA DE DATOS I
io s t r e a m .h F lu jo d e e n t r a d a /s a lid a
lim its .h L im it e s e n te r o s d e f in id o s e im p la n t a d o s
m a t h .h F u n c io n e s m a te m tic a s
s t d io .h E n t r a d a /S a lid a
s t d lib .h F u n c io n e s d e u tile r a
- BUCLES Suma
2
Es un segmento de un Suma + N
algoritmo o programa, cuyas
instrucciones se repiten un Escribir suma 3
nmero determinado de veces
mientras se cumple una
determinada condicin (existe o es verdadera la condicin)
42
ALGORITMO Y ESTRUCTURA DE DATOS I
o Decisin
o Cuerpo de bucle
o Salida de bucle.
TIPOS BUCLES
in ic io IN IC IO
B u c le A
B u c le B
B u c le C
F IN
fin
Bucles Cruzados
inicio
fin
43
ALGORITMO Y ESTRUCTURA DE DATOS I
Algoritmo
Cabecera del programa
Seccin de declaracin
Seccin de acciones
CONTADORES
44
ALGORITMO Y ESTRUCTURA DE DATOS I
Representacin de contadores:
Son variables que se utilizan para contar.
Normalmente su valor se incrementa o decrementa en 1.
Ejemplos:
contador contador + 1
ndice ndice 1
EJEMPLO N 9
BEGIN
eCon0
END DO
END
ACUMULADORES
Ejemplos:
total total + valor
45
ALGORITMO Y ESTRUCTURA DE DATOS I
Representacin:
EJEMPLO N10:
BEGIN
eCon0,eAcu0
DO WHILE eCon<=10
READ eNume
eAcueAcu+eNume
eConeCon+1
ENDDO
WRITE eAcum
END
46
ALGORITMO Y ESTRUCTURA DE DATOS I
PROBLEMAS PROPUESTOS
47
ALGORITMO Y ESTRUCTURA DE DATOS I
12. Leer una serie de nmeros distintos de cero (el ltimo nmero de la
serie es -99) y obtener el nmero mayor. Como resultado se debe
48
ALGORITMO Y ESTRUCTURA DE DATOS I
LABORATORIO N 2
ESTRUCTURA DE UN PROGRAMA:
49
ALGORITMO Y ESTRUCTURA DE DATOS I
#include <nombre_archivo_cabecera>
Ejemplo:
// Importamos la cabeceras de los mdulos que necesitamos
#include <iostream.h> // entrada / salida define las variables cin
y cout (consola)
#include <string> // de la biblioteca estndar (STL)
int main ()
{
declaracin de variables y constantes
cuerpo del programa
}
50
ALGORITMO Y ESTRUCTURA DE DATOS I
51
ALGORITMO Y ESTRUCTURA DE DATOS I
VARIABLES
Es un espacio en la memoria de la computadora que permite
almacenar temporalmente un dato durante la ejecucin de un
proceso, su contenido puede cambiar durante la ejecucin del
programa.
1. Un nombre.
2. Un tipo de dato asociado.
3. Un valor inicial.
4. Una direccin de memoria.
CONSTANTES
Una constante es un dato numrico o alfanumrico que no cambia
durante la ejecucin del programa.
52
ALGORITMO Y ESTRUCTURA DE DATOS I
LOS COMENTARIOS
Con fines de documentacin se pueden aadir comentarios a un
programa. Los comentarios no generan cdigo mquina sino que
son ignorados por el compilador.
Ejemplo:
53
ALGORITMO Y ESTRUCTURA DE DATOS I
#include <iostream.h>
Donde:
54
ALGORITMO Y ESTRUCTURA DE DATOS I
Salida de constantes:
Cout << constantes;
Salida de variables:
Cout << variable;
Notas:
La salida de cout se puede concatenar para hacer la salida de
distintas variables o cadenas en una sola sentencia.
En una sentencia se puede enviar secuencias de escape con
la finalidad de mover el cursor al principio de la siguiente lnea,
hacer sonar a alarma del sistema, etc.
55
ALGORITMO Y ESTRUCTURA DE DATOS I
SECUENCIA DE ESCAPE
Las secuencias de escape proporcionan un determinado
significado al enviar ciertos caracteres especiales a la pantalla, a un
archivo de disco o a la impresora. Todas las secuencias de escape
comienzan con la barra invertida \.
Secuencia de
Descripcin
escape
\n Nueva lnea. Coloca el cursor al principio de la
segunda lnea.
\r Retorno de carro. Coloca el cursor al principio de
la lnea actual.
\t Tabulador horizontal. Mueve el cursor al siguiente
tabulador.
\a Alerta. Hace sonar la campana del sistema.
\` Imprime una comilla simple (`).
\ Imprime una comilla doble ().
\\ Imprime una barra invertida (\)
56
ALGORITMO Y ESTRUCTURA DE DATOS I
Notas:
La entrada con cin se puede concatenar para poder hacer la
entrada de distintas variables o cadenas en una sola
sentencia.
Cin desprecia los caracteres blancos (espacios, tabuladores y
saltos de lnea) al realizar la entrada desde el teclado. Esto
significa que no se puede leer con cin cadenas que contengan
espacios en blanco pues cin nicamente leer la parte de la
cadena hasta el primer blanco. Si se desea leer cadenas que
contengan espacios en blanco use la funcin gets.
Gets (cad);
La funcin gets lee una cadena de caracteres ingresada desde el
teclado, incluyendo espacios en blanco, y lo almacena en la
variable de cadena cad. Para usar la funcin gets debe incluirse el
archivo de cabecera stdio.h.
57
ALGORITMO Y ESTRUCTURA DE DATOS I
operador Accin
++ Suma 1 a su operando
-- Resta 1 a su operando
58
ALGORITMO Y ESTRUCTURA DE DATOS I
DEFINICIN
La programacin estructurada es una forma de programar de
forma clara, para ello utiliza nicamente tres estructuras:
secuencial, selectiva simple e iterativa; siendo innecesario y
no permitindose el uso de la instruccin o instrucciones de
transferencia incondicional (GOTO).
DESVENTAJAS DE LA PROGRAMACIN
ESTRUCTURADA
- Es relativamente difcil de aprender ya que es para
expertos.
59
ALGORITMO Y ESTRUCTURA DE DATOS I
3.2.1 SECUENCIAL
La estructura secuencial se refiere a la ejecucin de una
secuencia de instrucciones en el orden en que aparecen, de
forma que cada instruccin se ejecuta exactamente una vez.
EJEMPLO N 11
BEGIN
REAL base, altura, rea, permetro
READ base, altura
rea base*altura
permetro 2*(base+altura)
WRITE rea, permetro
END
Esta secuencia de instrucciones permuta los valores de x e y, con
ayuda de una variable auxiliar, intermedia.
1 Guardamos una copia del valor de x en auxiliar.
2 Guardamos el valor de y en x, se pierde el valor anterior de x
pero no importa porque tenemos una copia en auxiliar.
3 Guardamos en y el valor de auxiliar, que es el valor inicial de x.
ESTRUCTURA SELECTIVA
Las estructuras de seleccin son estructuras de control utilizadas
para la toma de decisiones dentro de un programa. A estas
estructuras se les conoce tambin como estructuras selectivas o
estructuras de decisin.
60
ALGORITMO Y ESTRUCTURA DE DATOS I
ESTRUCTURA
SELECTIVA SIMPLE
ESTRUCTURA ESTRUCTURA
DE SELECTIVA DOBLE
SELECCION
ESTRUCTURA
SELECTIVA MULTIPLE
DIAGRAMA DE FLUJO:
condicin
falsa
verdadera
accion S1
61
ALGORITMO Y ESTRUCTURA DE DATOS I
SINTAXIS:
SINTAXIS EN ESPAOL SINTAXIS EN INGLES
SI <condicin> IF <condicin>
FIN _ SI ENDIF
EJEMPLO N 12:
PSEUDOCDIGO:
Construya un algoritmo en pseudocdigo tal que, dado los
valores enteros P y Q, que deben leerse del teclado,
determine si los mismos satisfacen la siguiente expresin:
ALGORITMO Problema
VARIABLES
p, q SON ENTEROS
BEGIN
WRITE p
WRITE q
IF p^3 + q^4 -2*p^2<680
WRITE Los Valores de p y q son:
WRITE p=, p, q=, q
END_SI
END
62
ALGORITMO Y ESTRUCTURA DE DATOS I
EN C++:
Segn una calificacin imprimir si es aprobada
#include <stdio.h>
#include <conio.h>
int main ()
{
float Cal;
clrscr();
printf ("Introduzca la calificacin: ");
scanf ("%f", &Cal);
if ( Cal >= 11 )
printf("Aprob.");
return 0;
}
DIAGRAMA DE FLUJO
si no
Condicin?
63
ALGORITMO Y ESTRUCTURA DE DATOS I
SINTAXIS:
PSEUDOCODIGO EN PSEUDOCODIGO EN
ESPAOL INGLES
SI <condicion> IF <condicin>
<accion S11> <accin S11>
<accion S12> <accin S12>
<accion S2n> <accin S2n>
SI_NO ELSE
<accin 21> <accin 21>
<accin 22> <accin 22>
<accin S1n> <accin S1n>
FIN_SI ENDIF
EJEMPLO N 13
La siguiente estructura de seleccin doble determina si una
persona es mayor o menor de edad:
IF edad >= 18
estado "Mayor de edad
ELSE
estado "Menor de edad
ENDIF
WRITE estado
EN C++:
Imprimir si un nmero es par o impar
#include <stdio.h>
#include <conio.h>
int main()
64
ALGORITMO Y ESTRUCTURA DE DATOS I
{
int num;
clrscr();
printf("Introducir un nmero:\n");
scanf("%d",&num);
if ( num % 2 == 0 )
printf("%d es par.",num);
else
printf("%d es impar.",num);
return 0;
}
EJEMPLO N 14
Este algoritmo lee tres nmeros A, B, C, imprimiendo el valor
del ms grande. Se supone que los tres valores son
diferentes.
Read (A, B, C) // Entrada de valores
then if A > C
else if B > C
Exit // Termino
65
ALGORITMO Y ESTRUCTURA DE DATOS I
EJEMPLO N 15
#include<iostream.h>
int main ( )
{
char codigo;
cout << "Introduzca un cdigo especificado: ";
cin >> codigo;
if (codigo == 'S' )
cout << "El componente tiene calificacin de exploracin
espacial . ";
else if (codigo == M)
cout << "El componente tiene calificacin de militar. ";
else if (codigo == C)
cout << "El componente tiene calificacin de comercial. ";
else if (codigo == 'J' )
cout << "El componente tiene calificacin de juguete. ";
else
cout << "Se insert un cdigo invalido. ";
cout << endl;
getch();
return 0;
}
66
ALGORITMO Y ESTRUCTURA DE DATOS I
1 n
Condicin
2 3
4
La sintaxis es la siguiente:
Segn sea (selector) hacer
caso1, caso2, ..: sentencia 1
.... : .....
caso1n, caso2n, ..: sentencia n
sino
sentencia opcional
fin_segn
SINTAXIS:
PSEUDOCDIGO EN PSEUDOCDIGO EN
ESPAOL INGLES
En caso que E sea CASE EXPRESION OF
c1: accin S1 [c1]: accin S1
c2: accin S2 [c2]: accin S2
cn: accin Sn> [cn]: accin Sn>
de otra forma: otherwise
accin Sx accin Sx
fin_caso ENDCASE
67
ALGORITMO Y ESTRUCTURA DE DATOS I
EJEMPLO N 16
EN C++:
Imprimir a que da de la semana corresponde un nmero.
#include <stdio.h>
#include <conio.h>
int main()
{
int Dia;
clrscr();
printf("Escriba el nmero de da: \n");
scanf("%d",&Dia);
switch(Dia)
{
case 1: printf("El %d corresponde a Lunes.",Dia);
break;
case 2: printf("El %d corresponde a Martes.",Dia);
break;
case 3: printf("El %d corresponde a
Mircoles.",Dia);break;
case 4: printf("El %d corresponde a Jueves.",Dia);
break;
case 5: printf("El %d corresponde a Viernes.",Dia);
break;
case 6: printf("El %d corresponde a Sbado.",Dia);
break;
case 7: printf("El %d corresponde a
Domingo",Dia);break;
default: printf ("El %d da no existe en la
semana.",Dia);
getch();
}
return 0;
}
68
ALGORITMO Y ESTRUCTURA DE DATOS I
INTRODUCCIN
Son aquellas que permiten ejecutar una accin un nmero
determinado de veces, es decir, repetir esa accin una o ms veces
consecutivamente.
69
ALGORITMO Y ESTRUCTURA DE DATOS I
SINTAXIS:
PSEUDOCDIGO PSEUDOCDIGO
EN ESPAOL EN INGLES
Repetir Repeat
<acciones> <acciones>
...
<acciones n> <acciones n>
Hasta <condicion> Until <condicion>
DIAGRAMA DE FLUJO
CARACTERSTICAS
70
ALGORITMO Y ESTRUCTURA DE DATOS I
ERRORES COMUNES
9 Realizar ciclos infinitos.
9 Como se evitan? Modificando dentro del cuerpo la
variables que lo controlan.
9 Pensar que puede no ejecutarse ninguna vez.
9 Todas las operaciones durante la primera ejecucin del
cuerpo son vlidas.
9 La primera ejecucin del cuerpo modifica las variables
de la condicin.
EJEMPLO N 17
Desarrollar el algoritmo necesario para calcular el factorial de un
numero N que responda a la formula
N! = N (N1) * (N2), 3*2*1
ALGORITMO FACTORIAL
VAR
entero i, n
real factorial
BEGIN
WRITE N
factorial 1
i 1
REPEAT
factorial factorial * i
i i+1
UNTIL in 1
WRITE factorial
END
71
ALGORITMO Y ESTRUCTURA DE DATOS I
SINTAXIS
<Accin> <Accin>
ENDDO FIN HACER
DIAGRAMA DE FLUJO
72
ALGORITMO Y ESTRUCTURA DE DATOS I
EJEMPLO N 18
Desarrollar el algoritmo necesario para calcular el factorial de un
numero N que responda a la formula
ALGORITMO FACTORIAL
VAR
Entero I, N
real factorial
BEGIN
READ factorial
factorial 1
I1
DO WHILE I< = N
factorial factorial * 1
II+1
ENDDO
WRITE factorial
END
EN C++
EJEMPLO N 19
// Algoritmo que calcula el factorial de un numero.
#include "conio.h"
#include <stdio.h>
#include <dos.h>
int main()
{
int i, total,contador;
contador=1;
total = 1;
clrscr();
printf ("Factorial numero\n\n Dame el numero para el
factorial: ");
scanf ("%d",&i);
73
ALGORITMO Y ESTRUCTURA DE DATOS I
while (contador<=i)
{
total = total * contador;
contador++;
}
printf("El factorial de %d es: %d",i,total);
getch();
return 0;
}
PROBLEMAS PROPUESTOS
74
ALGORITMO Y ESTRUCTURA DE DATOS I
75
ALGORITMO Y ESTRUCTURA DE DATOS I
76
ALGORITMO Y ESTRUCTURA DE DATOS I
26. Escribir un programa que lea un valor entero que ser la base para
un sistema numrico (binario, octal o decimal), despus que lea un
entero positivo en esa base y que imprima su valor en base 10. Se
debe validar que el nmero pertenezca a esa base. La base ser
menor que o igual a 10. El programa podra tener la siguiente
salida:
Entrada Salida
Base Nmero
============== =========
10 1234 1234
8 77 63
2 1111 15
Ao inters Suma
-----+-----------+---------
1 4375.00 39375.00
2 4921.88 44296.88
3 5537.11 49833.98
4 6229.25 56063.23
5 7007.90 63071.14
77
ALGORITMO Y ESTRUCTURA DE DATOS I
6 7883.89 70955.03
7 8869.38 79824.41
8 9978.05 89802.45
9 11225.31 101027.76
10 12628.47 113656.23
LABORATORIO N 3
Pseudocdigo:
BEGIN
DO
Ingresar el dato nmero
WHILE numero <= 0
WRITE el nmero validado
END
Cdigo:
#include<iostream.h>
#include<conio.h>
int main ()
{
float numero;
clrscr ();
cout << "VALIDACIN DE LA ENTRADA DE UN NUMERO
POSITIVO" << endl;
do
{
cout<< "Ingrese el numero positivo:";
cin>>numero;
}while(numero <= 0 );
78
ALGORITMO Y ESTRUCTURA DE DATOS I
Cdigo:
# include<iostream.h>
# include<conio.h>
int main ()
{
int N, numero, cont = 0, suma = 0;
clrscr ();
cout << SUMA DE NMEROS ENTEROS << endl;
cout << Cuntos nmeros desea sumar? ;
cin >> N;
do
{
cout << Ingrese nmero << cont << : ;
cin >> numero;
suma += numero;
cont++;
}
while ( cont < N ) ;
#include "iostream.h"
#include "conio.h"
int main()
{
//Declaramos dos variables tipo enteras y una de tipo float
79
ALGORITMO Y ESTRUCTURA DE DATOS I
// Ingreso de datos
//Salida de datos
cout << "El area es :" <<area<<endl;
cout << "El perimetro es :" << perimetro<<endl;
getch();
return 0;
}
PROGRAM EJER02;
VAR num:INTEGER;
BEGIN
ClrScr;
REPEAT
WRITELN ('Introduzca un nmero: ');
READLN (num);
UNTIL num > 100;
END
#include <iostream.h>
#include <conio.h>
80
ALGORITMO Y ESTRUCTURA DE DATOS I
int main()
{
int numero=0;
do
{
numero= numero+1;
cout << \t <<numero<<endl;
} while (numero <10);
cout <<"\n\t Fin de programa ";
getch() ;
return(numero) ;
}
81
ALGORITMO Y ESTRUCTURA DE DATOS I
82
ALGORITMO Y ESTRUCTURA DE DATOS I
Programa
83
ALGORITMO Y ESTRUCTURA DE DATOS I
VENTAJAS
Facilita el diseo descendente.
Disminuye la complejidad del algoritmo.
Disminuye el tamao total del programa.
Divisin de la programacin entre un equipo de
programadores - reduccin del tiempo de desarrollo.
Facilidad en la depuracin : Comprobacin individual de los
mdulos
Programas ms fciles de modificar.
Estructuracin en libreras especficas (biblioteca de
mdulos).
EJEMPLO N 20
Se desea disear un algoritmo que realice las siguientes tareas:
Impresin.
Lectura de datos.
Ejecutar clculos.
Imprimir lneas detalladas de informacin.
Imprimir totales.
84
ALGORITMO Y ESTRUCTURA DE DATOS I
CONST
<declaracin de constantes>
VAR
<declaracin de variables>
BEGIN
...
< acciones>
END_PROCEDIMIENTO
85
ALGORITMO Y ESTRUCTURA DE DATOS I
EJEMPLO N 21
FUNCIONES
o Una funcin toma uno o ms valores, denominados
argumentos o parmetros formales y devuelve un resultado.
DECLARACIN DE LA FUNCIONES
<tipo de dato> funcin <nombre de la funcin>
(<parmetros formales>)
CONST
<declaracin de constantes>
VAR
<declaracin de variables>
BEGIN
...
devolver <resultado>
END
86
ALGORITMO Y ESTRUCTURA DE DATOS I
EJEMPLO N 22
Funcin Factorial (n: entero): entero
var i, factorial:entero
BEGIN
IF (n<=1) ENTONCES
factorial 1
ELSE
factorial 1
FOR i1 TO n DO
factorial factorial *1
ENDIF
END
EJEMPLO N 23
- Variables Locales:
Una variable local es una variable que esta declarada
dentro de un subprograma y se dice que es local al
subprograma.
Una variable local solo est disponible durante el
funcionamiento del subprograma, al terminar su funcin
el subprograma y regresar al programa llamador, se
pierde el valor que se encontraba guardado en la
variable local.
87
ALGORITMO Y ESTRUCTURA DE DATOS I
EJEMPLO N 23
- Variables Globales:
Las variables declaradas en el programa principal se
denominan variables globales.
Las variables globales se pueden utilizar en todo el
programa principal y en todos los subprogramas, donde
se haga referencia al identificador de esta variable.
EJEMPLO N 24
Algoritmo global var x entero
BEGIN
x 0
cambiar
write (x)
END
88
ALGORITMO Y ESTRUCTURA DE DATOS I
Mdulo cambiar
BEGIN
x1
END
La variable x esta definida como global, por lo tanto la salida
ser 1.
PASO DE PARMETROS
o Existen diferentes mtodos para la transmisin o el
paso de parmetros o subprogramas.
o Es preciso conocer el mtodo adoptado por cada
lenguaje, un mismo programa puede producir
diferentes resultados bajo diferentes sistemas de paso
de parmetros.
o Los parmetros pueden ser clasificados como:
89
ALGORITMO Y ESTRUCTURA DE DATOS I
EJEMPLO N 25
90
ALGORITMO Y ESTRUCTURA DE DATOS I
EJEMPLO N 26
A 5
B 7
Llamar_a PROC1 ( A, 18, B
3 ** 33 + 4)
5 18 25
EJEMPLO N 27
ALGORITMO PARMETRO valor var x: entero
BEGIN
x0
CAMBIAR (x)
WRITE (x)
END
Mdulo cambiar (y: entero)
BEGIN
y1
END
SALIDA 0
91
ALGORITMO Y ESTRUCTURA DE DATOS I
EJEMPLO N 28
ALGORITMO PARMETRO
var x: entero
BEGIN
x 0
CAMBIAR (x)
WRITE (x)
END
Mdulo cambiar (var y: entero)
BEGIN
y 1
END
SALIDA: x 1
92
ALGORITMO Y ESTRUCTURA DE DATOS I
4) POR RESULTADO
Nos interesa el valor del parmetro real solamente a la
salida o fin de la ejecucin del subprograma en que
aparece.
Esto significa que al hacer la llamada no se copia el valor
del parmetro real en el parmetro formal asociado, sin
embargo a la salida se copia el valor del parmetro
formal en la direccin del parmetro real asociado,
significa por tanto, que el parmetro real tiene que tener
asociada una expresin que tiene que ser una variable
(no puede ser una constante).
EJEMPLO N 29
Algoritmo que contiene y utiliza unas funciones (seno y coseno) a
las que les podemos pasar el ngulo en grados.
Algoritmo Sen_Cos_En_Grados
VAR real: g
BEGIN
WRITE(Deme angulo en grados)
READ(g)
WRITE(seno(g))
WRITE(coseno(g))
END
real funcion coseno (E real : g)
BEGIN
RETURN(cos(g * 2 * 3.141592/360))
END_FUNCION
real funcion seno (E real g)
BEGIN
RETURN( sen(g * 2 * 3.141592/360))
END_FUNCION
93
ALGORITMO Y ESTRUCTURA DE DATOS I
EJEMPLO N 30
Disear un programa que permita calcular el valor absoluto de un
nmero:
// Propsito: Funciones
#include <iostream.h>
#include <conio.h>
#include <math.h>
int main()
{
int numero;
cout << "\nIngrese un numero : "; cin >> numero;
cout << "\nValor absoluto del numero es : " << abs(numero);
getch();
return 0;
}
PROBLEMAS PROPUESTOS
94
ALGORITMO Y ESTRUCTURA DE DATOS I
Use: A = [p(p-a)(p-b)(p-c)]
Donde p representa el semipermetro del tringulo que se calcula
con la frmula: p = (a+b+c)/2.
LABORATORIO N 4
95
ALGORITMO Y ESTRUCTURA DE DATOS I
Solucin:
#include <iostream.h>
#include <conio.h>
96
ALGORITMO Y ESTRUCTURA DE DATOS I
Solucin:
#include <iostream.h>
#include <conio.h>
// Funcin principal
int main ( )
{
int A, B, C;
clrscr ( );
cout << Determinacin del menor de tres nmeros <<
end1;
cout << Ingrese tres nmeros enteros .: ;
cin >> A >> B >> C;
cout << El menor de los tres nmeros es .: << mnimo (A,
B, C);
getch ( );
}
/ Definicin de la funcin mnimo
int mnimo (int a, int b, int c)
{
// Observe que la variable menor es una variable local y ser
// Destruida al salir de la funcin (luego del retorno).
Int menor = a;
If (b < menor)
Menor = b;
If (c < menor)
Menor = c;
Return menor;
}
97
ALGORITMO Y ESTRUCTURA DE DATOS I
// Funcin principal
int main ( )
{
int m, n;
clrscr ( );
for (int i = 0; i < 3; i ++)
{
cout << Ingrese dos nmeros enteros : ;
cin >> m >> n;
{
int r = 0; // Asumimos que a no es mltiplo de b
if (a / b = = 0) // Pero si a es mltiplo de b
r = 1;
return r; // Retornamos el indicador
}
98
ALGORITMO Y ESTRUCTURA DE DATOS I
Solucin:
#include <iostream.h>
#include <conio.h>
// Prototipo de la funcin coutxy
void coutxy (int x, int y, char texto [ ] ) ;
// Funcin principal
int main ( )
{
clrscr ( ) ;
coutxy (8, 2, Esto comienza en la coordenada (8, 2)) ;
coutxy (5, 5, Esto comienza en la coordenada (5, 5));
coutxy (1, 8, Esto comienza en la coordenada (1, 8));
coutxy (26, 25, Pulse una tecla para terminar);
getch ( );
}
99
ALGORITMO Y ESTRUCTURA DE DATOS I
Solucin:
#include <stdio.h>
#include <string.h>
#include <iostream.h>
#include <conio.h>
clrscr ( );
cout <<Ingrese una cadena:;
gets (cadena);
strlwr (cadena);
cout << \nNmero de repeticiones de las vocales << endl;
for (int i = 0; i < 5; i ++)
cout << vocal [i] << : << cuentach (cadena, vocal [i]) <<
veces <<endl;
getch ( );
}
{
int cont = 0, len = strlen (cad);
for (int i = 0 ; i < len; i++)
if (cad [i] == ch)
cont ++;
return cont;
}
100
ALGORITMO Y ESTRUCTURA DE DATOS I
Solucin:
#include <stdlib.h>
#include <iostream.h>
#include <conio.h>
// Prototipo de funcin
void mirandom (int& num, int min, int max);
// Funcin principal
int main ( )
{
int numero;
clrscr ( );
101
ALGORITMO Y ESTRUCTURA DE DATOS I
102
ALGORITMO Y ESTRUCTURA DE DATOS I
CAPTULO V: RECURSIVIDAD
5.1 RECURSIVIDAD
- Un algoritmo se dice que es recursivo cuando contiene en su
definicin una o ms llamadas a si mismo.
- Todo algoritmo recursivo tendr al menos una instruccin
alternativa.
- La recursividad o recursin es una herramienta muy til en la
resolucin de problemas, ya que permite resolver problema
complicados partindolos en problemas ms sencillos.
EJEMPLO N 31
Funcin factorial
5.2 CARACTERSTICAS
o Un algoritmo recursivo consta de una parte recursiva, otra
iterativa o no recursiva y una condicin de terminacin.
o La parte recursiva y la condicin de terminacin siempre
existen.
103
ALGORITMO Y ESTRUCTURA DE DATOS I
o EL PASO BASE:
Esta es la clave para terminar la recursin, es cuando deja de
hacer llamadas a la funcin recursiva y hace evaluaciones
devolviendo los resultados. Adems se debe asegurar de que
es posible entrar a este paso.
o EL PASO RECURSIVO:
Es la parte de la definicin que hace llamadas a esa misma
funcin y que es la causante de las inserciones en la pila,
almacenando en cada una de las llamadas, informacin del
programa, del estado de sus variables locales y globales.
104
ALGORITMO Y ESTRUCTURA DE DATOS I
-Final
-Lineal - Lineal
REC. INDIRECTA
EJEMPLO N 32
Resto (n,m: N) dev r: N
IF n < m entonces
rn
ELSE
r Resto (n m, m)
ENDIF
105
ALGORITMO Y ESTRUCTURA DE DATOS I
EJEMPLO N 33
Fib(n: N) dev f: N
IF n <= 1 entonces
fn
ELSE
f Fib(n 1) + Fib(n 2)
ENDIF
EJEMPLO N 34
Ack(n,m: N) dev ack: N
IF n = 0 entonces
ack m + 1
ELSE
IF m 0 entonces
ack Ack(n 1, 1)
ELSE
ack Ack(n 1, Ack(n, m 1))
ENDIF
ENDIF
106
ALGORITMO Y ESTRUCTURA DE DATOS I
EJEMPLO N 35
Funciones Par/Impar
- Impar (n: Nat) dev: p:bool
IF n=0
p cierto
ELSE
IF n1
p falso
ELSE
p impar(n-1)
ENDIF
ENDIF
107
ALGORITMO Y ESTRUCTURA DE DATOS I
108
ALGORITMO Y ESTRUCTURA DE DATOS I
PROBLEMAS PROPUESTOS
109
ALGORITMO Y ESTRUCTURA DE DATOS I
LABORATORIO N 5
int main()
{
int i; /* contador */
/* repite 11 veces; durante cada iteracin, calcula el factorial( i ) y
despliega el resultado */
return 0;
110
ALGORITMO Y ESTRUCTURA DE DATOS I
SERIE DE FIBONACCI
#include <stdio.h>
long fibonacci( long n ); /* prototipo de la funcin */
int main()
{
long resultado; /* valor fibonacci */
long numero; /* numero a introducir por el usuario */
/* despliega el resultado */
printf( "Fibonacci( %ld ) = %ld\n", numero, resultado );
return 0;
}
if ( n == 0 || n == 1 ) {
return n;
}
else { /* paso recursivo */
return fibonacci( n - 1 ) + fibonacci( n - 2 );
}
}
111
ALGORITMO Y ESTRUCTURA DE DATOS I
112
ALGORITMO Y ESTRUCTURA DE DATOS I
CONCEPTO
Estructura de datos es una forma de organizar un conjunto de datos
elementales (un dato elemental es la mnima informacin que se
tiene en el sistema) con el objetivo de facilitar la manipulacin de
estos datos como un todo o individualmente.
6.1 TIPOS
Los tipos de datos estructurados ms comunes son: vectores y
matrices (array), registros, cadenas de caracteres (string).
ARRAY (ARREGLO)
Es una estructura de datos en la cual se almacena una coleccin de
datos del mismo tipo a este se le llama tipo base del arreglo,
mientras que los datos individuales se llaman elementos del
arreglo.
113
ALGORITMO Y ESTRUCTURA DE DATOS I
La declaracin:
int Array[10];
- Los elementos individuales del array se comienza a numerar a
partir del elemento 0, as, Array[0] individualiza al primer
elemento y Array[9] al ltimo.
In d ic e E le m e n to
1 ed ad [0 ]
2 ed ad [1 ]
3 ed ad [2 ]
4 ed ad [3 ]
. ed ad [4 ]
.
.
.
. .
.
.
ed ad [4 7 ]
47
ed ad [4 8 ]
48
ed ad [4 9 ]
49
114
ALGORITMO Y ESTRUCTURA DE DATOS I
EJEMPLO N 36
Hacer un programa que registre 20 nmeros en un arreglo
unidimensional y muestre posteriormente los elementos que
contienen los nmeros mltiplos de 5 e imprima los elementos en
forma inversa al ingreso de los datos.
#include <iostream.h>
#include <conio.h>
115
ALGORITMO Y ESTRUCTURA DE DATOS I
int main()
{
int a[20];
int x = 0;
// ADICIONO VALORES
while (x < 20)
{
cout <<"Ingreso vector ["<< x+1 << "]: ";
cin >> a[x];
x = x + 1;
}
x = 1;
// MUESTRO ELEMENTOS
while (x < 20){
if (a[x]%5 ==0)
cout << "\n" << a[x];
x = x + 1;
}
cout << "\n";
getch();
}
EJEMPLO N37
Ingrese 10 notas en un arreglo de enteros y luego mustrelo en pantalla
#include<iostream.h>
#include<conio.h>
int main()
{
const int MAX=10; int notas[MAX];
for (int i=0;i<MAX; i++)
{
cout<<"Ingrese nota : ";
cin>>notas[i]; }
cout<<"\nFin de datos ";
cout<<"\n\n Notas ingresadas";
for(int j=0;j<MAX; j++)
{
cout<<"\nNota [" << j + 1 << "] ";
cout<<notas[j];
}
getch ();
}
116
ALGORITMO Y ESTRUCTURA DE DATOS I
Formato:
EJEMPLO N 38
Disear un programa que permita ingresar valores en una matriz de 3 x 4
(lectura por columna)
#include<iostream.h>
#include<iomanip.h>
#include<conio.h>
int main()
{
int num[4][3];
for (int a=0; a<4; a++){
for (int b=0; b<3; b++){
cout << "Nmero [" << b+1 << "], [" << a+1 << "] : "; cin >>
num[a][b];
}
117
ALGORITMO Y ESTRUCTURA DE DATOS I
}
cout << "\n\n";
ARREGLO MULTIDIMENSIONAL
Formato:
1. identificador = array [ndice1] of array [ndice 2]..
of array [ndice n] of tipo de elemento
EJEMPLO N 39
#include <stdio.h>
int arreglo1[ 2 ][ 3 ] = { { 1, 2, 3 }, { 4, 5, 6 } };
int arreglo2[ 2 ][ 3 ] = { 1, 2, 3, 4, 5 };
int arreglo3[ 2 ][ 3 ] = { { 1, 2 }, { 4 } };
118
ALGORITMO Y ESTRUCTURA DE DATOS I
imprimeArreglo( arreglo3 );
119
ALGORITMO Y ESTRUCTURA DE DATOS I
indicebuscado =-1
PARA i=0 MIENTRAS i < N CON INCREMENTO 1
SI elemento buscado es igual arreg[1] ENTONCES
indicebuscado = i;
salir del bucle
FIN_SI
FIN_PARA
ORDENAMIENTO UNIDIMENSIONAL
Existen diversas formas de ordenar un arreglo. En el curso se ver uno de
los ms simples y populares: Ordenamiento Burbuja o Bubble Sort.
EJEMPLO N 40
PARA i=0
MIENTRAS i<N-1
INCREMENTO 1
PARA j=0 MIENTRAS j<N-1 INCREMENTO 1
SI arreg[j] es mayor que arreg[j+1]
ENTONCES intercambiar arreg[j] con arreg[j+1]
FIN_SI
FIN_PARA
FIN_PARA
EJEMPLO N 41
Supngase que desean ordenar las siguientes claves del arreglo A,
transportando en cada pasada el menor elemento hacia la parte izquierda
del arreglo. A: 15, 67, 08, 16, 44, 27, 12, 35
120
ALGORITMO Y ESTRUCTURA DE DATOS I
PRIMERA PASADA
3era. Pasada: 08 12 15 16 67 27 35 44
4ta. Pasada: 08 12 15 16 27 67 35 44
5ta. Pasada: 08 12 15 16 27 35 67 44
6ta. Pasada: 08 12 15 16 27 35 44 67
7ma. Pasada: 08 12 15 16 27 35 44 67
void Intercambio_Directo(int n)
{ int i,j,aux;
i=0;
j= n-1;
for(;j>0;j--)
for(i=0;i<j;i++) //recorre el arreglo de 0 a n-1
{
if (arr[i]>arr[i+1]) /*si el elemento actual es mayor que el
elemento siguiente */
{
aux=arr[i]; //intercambio de elementos
arr[i]=arr[i+1];
arr[i+1]=aux;
}
}
}
121
ALGORITMO Y ESTRUCTURA DE DATOS I
6.4 REGISTROS
6.4.1 CONCEPTO
Un registro es una coleccin de campos lgicamente
relacionados, que pueden ser tratados como una unidad por
algn programa.
ARCHIVOS (FICHEROS)
Un archivo o fichero es un conjunto de datos estructurados
en una coleccin de entidades elementales o bsicas
denominadas registros o artculos, que son de igual tipo y
constan a su vez de diferentes entidades de nivel ms bajo
denominadas campos, los cuales estn organizados para un
propsito especifico.
122
ALGORITMO Y ESTRUCTURA DE DATOS I
Ejemplo
// tipo enumerado
enum Meses {
enero, febrero, marzo, abril, mayo, junio, Julio,
agosto, septiembre, octubre, noviembre, diciembre
};
// tipo registro
struct Fecha {
int dia;
Meses mes;
int anno;
};
// variables
Fecha f_nac ;
Fecha f_ant;
123
ALGORITMO Y ESTRUCTURA DE DATOS I
EJEMPLO N 42
struct Registro
{
float unElemento;
int unArreglo[10];
};
void fn()
{
struct Registro arrReg[20];
arrReg[10].unElemento=10.0;
arrReg[10].unArreglo[5]=5;
struct Registro
{
int primerElem;
float segundoElem;
};
void fn()
{
struct Registro simple = {1, 2.0};
struct Registro array[2] = { {1, 2.0}, /* array[0] */
{2,4.4}}; /* array[1] */
}
124
ALGORITMO Y ESTRUCTURA DE DATOS I
EJEMPLO N 43
En el ejemplo la estructura es Registro y el objeto es reg.
struct Registro
{
int primerElem;
float segundoElem;
}
void fn()
{
struct Registo reg;
reg.primerElem=0; /* se refiere al miembro entero */
reg.segundoElem=1.0; /* se refiere al miembro real */
}
125
ALGORITMO Y ESTRUCTURA DE DATOS I
Donde:
20 = Longitud mxima
17 = Longitud actual
Asignacin
Si la variable NOMBRE ha sido declarada como carcter
var NOMBRE : carcter
La instruccin de asignacin debe contener en el lado derecho de la
asignacin una constante tipo carcter (una cadena) o bien otra
variable tipo carcter. As:
NOMBRE: Juan Gonzlez
Significa que la variable NOMBRE toma por valor la cadena Juan
Gonzlez
Entrada/Salida
La entrada/salida desde una computadora se puede realizar en
modo carcter, para ello se asignar una cadena de caracteres a
una variable tipo cadena. Ejemplo:
var A,B,C,D: carcter
Las instrucciones:
READ A,B
WRITE C,D
126
ALGORITMO Y ESTRUCTURA DE DATOS I
EJEMPLO N 44
#include <stdio.h>
#include <conio.h>
#include <string.h>
void main()
//definicin de variables
char cadena[100];
int cont,contp=1;
for(cont=0;cont<=(strlen(cadena)-1);cont++)
{ //recorre la cadena
if(cadena[cont]==' ') //busca espacios
contp++; //incrementa el conteo de
palabras
}
printf("palabras: %d",contp);//salida en pantalla del resultado
getch();
}
127
ALGORITMO Y ESTRUCTURA DE DATOS I
EJEMPLO N 45
Programa que cambia todas las minsculas por maysculas
#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <ctype.h>
int main()
{
char cadena[100];
int lon,car,cont;
clrscr();
printf("Cadena: ");
gets(cadena); //obtenemos cadena
lon=strlen(cadena); //obtenemos longitud
for(cont=0;cont<=lon-1;cont++)
{
car=cadena[cont]; //obtenemos el carcter en la posicin cont
if((car>=65)&&(car<=90))
{ //entonces es mayscula
cadena[cont]=tolower(cadena[cont]); //convertimos a
minsculas
}
}
128
ALGORITMO Y ESTRUCTURA DE DATOS I
EJEMPLO N 46
Programa que lee una cadena y la copia en otra de manera
invertida
#include <stdio.h>
#include <conio.h>
#include <string.h>
int main()
{
char cadena1[100],cadena2[100];
int longitud,cont,cont2=0;
clrscr();
for(cont=longitud-1;cont>=0;cont--)
{ //recorre toda la cadena
cadena2[cont2]=cadena1[cont];
cont2++;
}
PROBLEMAS PROPUESTOS:
129
ALGORITMO Y ESTRUCTURA DE DATOS I
LABORATORIO N 6
Solucin:
#include <conio.h>
#include <iostream.h>
int main ( )
{
// Declaracin de constantes y variables
const int N = 20; // Nmero de personas
int a [N]; // Arreglo de N nmeros enteros
int suma; // Suma de los elementos del arreglo
int menor; // Menor valor de arreglo
int indice; // ndice del menor valor dentro del arreglo
int i; // Variable para los blucles for
130
ALGORITMO Y ESTRUCTURA DE DATOS I
// Ingreso de datos
// En simultneo ingresamos un elemento y lo vamos sumando
clrscr ( );
cout << INGRESO DE DATOS << end1;
suma = 0;
for (i = 0; i < N; i++)
{
cout << Ingrese elemento << i << :;
cin >> a [i];
suma += a [i];
}
// Hablamos el menor valor y su ndice dentro del arreglo
menor = a [0];
for (i = 1; i < N; i++)
{
if (a [i] < menor)
{
menor = a [i];
indice = i;
}
}
// Salida de resultados
cout << \nSuma...: << suma;
cout << \nNmero menor: << menor;
cout << \nndice del nmero menor: << indice;
getch ( );
}
131
ALGORITMO Y ESTRUCTURA DE DATOS I
int main ( )
{
// Declaracin de constantes y variables
const int N = 20; // Nmero de elementos de los arreglos
int a [N], b [N], c [N]; // Los tres arreglos de N enteros
int i; // Variable para los bucles for
// Ingreso de datos
// A la vez que ingresamos vamos sumando
clrscr ( );
cout << Ingreso de datos << end1;
for (i = 0; i < N; i++)
{
cout << a [ << i << ] = ;
cin >> a [i];
cout << b [" << i << "] = ;
cin >> b [i];
c [i] = a [i] + b [i];
}
// Salida de resultados
cout << \nSalida de resultados\n;
cout << setw (4) << a << setw (4) << b << setw (4) << c <<
\n\n;
Solucin:
#include <conio.h>
#include <iostream.h>
#include <iomanip.h>
132
ALGORITMO Y ESTRUCTURA DE DATOS I
void main ( )
{
// Declaracin de variables y constantes
const int MAX = 50; // Mximo numero de empleados
float suma; // Suma de los sueldos de los N empleados
float promedio; // Sueldo promedio
float sueldo [MAX]; // Arreglo de MAX sueldos (N debe ser menor o
igual a MAX)
int N; // Nmero de empleados
int i; // Variable para los bucles for
133
ALGORITMO Y ESTRUCTURA DE DATOS I
// Salida de resultado
cout << \n Sueldo Promedio: << setprecision (2) <<
promedio;
cout << \n \n Lista de sueldos inferiores al sueldo promedio
\n ;
for (i=0; i<N; i++)
{
if (sueldo [i] < promedio )
cout << sueldo [i] << endl;
}
getch();
}
Solucin:
#include <iomanip.h>
#include < iostream.h>
#include < conio.h>
int main ()
{
const int TAM=4; // numero de filas y o de columnas (son
iguales)
int f, c; // fila y columna
int a [TAM] [TAM]; // para la matriz
int sumat, sumad; // suma total y suma de la diagonal
134
ALGORITMO Y ESTRUCTURA DE DATOS I
sumat = sumad = 0 ;
for ( f=0; f<TAM; f++) {
for ( c=0; c<TAM; c++) {
sumat + = a[f] [c];
if ( f == c) // Si es un elemento de la
diagonal
sumad + = a[f] [c];
}
}
4 7 1 3 5
2 0 6 9 7
3 1 2 6 4
Y lo imprima como:
4 2 3
7 0 1
1 6 2
3 9 6
5 7 4
Solucin:
#include <iomanip.h>
#include < iostream.h>
#include < conio.h>
135
ALGORITMO Y ESTRUCTURA DE DATOS I
int main ()
{
int A [3] [5], f, c;
Solucin:
#include <stdio.h>
#include <conio.h>
#include <string.h>
136
ALGORITMO Y ESTRUCTURA DE DATOS I
int main()
{
char cadena1[100],cadena2[100];
int cont;
clrscr();
printf("Cadena 1: ");gets(cadena1);
printf("Cadena 2: ");gets(cadena2);
for(cont=0;cont<=strlen(cadena1);cont++)
{ //recorremos
cadena 1
if(cadena1[cont]!=cadena2[cont])
//comparamos
printf("Desiguales"); //desiguales en caso de ke no
sean iguales
break; //cortamos si no son
iguales
else
if(cont==strlen(cadena2))
//seguimos
comparando
printf("Iguales");
}
getch();
}
137
ALGORITMO Y ESTRUCTURA DE DATOS I
138
ALGORITMO Y ESTRUCTURA DE DATOS I
BIBLIOGRAFA
BSICA:
COMPLEMENTARIA:
139