Академический Документы
Профессиональный Документы
Культура Документы
ALGORITMOS Y PROGRAMACIÓN
Inga. Jenny M. Rodríguez V.
o deseo llenar dicho texto con demasiada teoría, mas bien con mucha
oráctica aunque incluyo bastantes explicaciones.
Con las bases de este libro, más adelante usted podrá profundizar en otros
enguajes.
Espero que usted, que está iniciando en esta rama del saber, aprenda desde
el principio que así como hay nom,as de calidad para producir calzado,
medicinas, y otros productos, también hay normas de calidad para producir
programas, y desde ya usted aprenda a elaborar programas con calidad, con
excelencia.
INDICE
1. DEFINICIONES GENERALES.....................................................................1
1.1. Las partes de un sistema de cómputo.............................................1
1.2. Algoritmo..........................................................................................2
1.3. Etapas en la solución de un problema............................................ .4
1.4. Características de un algoritmo ...................................................... .4
1.5. Programa.........................................................................................4
1.6. Lenguajes de programación............................................................ .4
1.7. Tipos de Instrucciones .....................................................................5
1.8. Datos, tipos de datos.......................................................................5
1.9. Memoria e identificadores ................................................................6
1.1O. La operación asignación................................................................8
1.11. Funciones internas.........................................................................8
1.12. Jerarquía de las operaciones matemáticas ...................................9
1.13. Expresiones aritméticas y algorítmicas........................................ 12
1.14. Expresiones lógicas..................................................................... 14
1.15. La operacón de declarar o definir ................................................17
1.16. Mas acerca de la operación asignación ....................................... 18
1.17. Ciclo de procesamiento de datos.................................................20
1.18. Ejemplos de algoritmos ................................................................21
1.19. Diagramas de flujo.......................................................................30
2. PROGRAMACION EN C++........................................................................35
2.1. Estructura general de un programa en c++...................................35
2.2. Estructura típica de un programa en c++.......................................35
2.3. Tipos de datos en c++....................................................................36
2.4. Declaración de variables ................................................................36
2.5. Declaración de constantes.............................................................37
2.6. Caracteres secuenciales (códigos) de escape ............................ 38
2.7. Entrada de datos ( cin).........•........................................................38
2.8. Operadores y expresiones .............................................................43
2.9. Librería conio.h..............................................................................45
2.1O. Funciones matemáticas...............................................................47
1. DEFINICIONES GENERALES
liARDWARE:
::O junto de componentes físicos de una computadora. Equipo físico.
=-.e-nplos: monitor, impresora, disco duro, etc.
SOFTWARE:
==-
:C. ·unto de programas que controlan el funcionamiento de una computadora.
po lógico.
=:-enplos: dos, Windows, Word, etc.
DATOS
-ecnos o piezas individuales de información que por si mismos no tienen mucho
·do. El trabajo principal de una computadora es el de procesar estas
3iel'
:.eq eñas piezas de datos de distintas maneras convirtiéndolas en información
USUARIO
=s la persona que opera la computadora. Ninguna computadora es
::::ompletamente autónoma. Las personas diseñan, construyen, programan y
:oaran todos los sistemas de cómputo.
1.2. ALGORITMO
Secuencia ordenada de pasos, sin ambigüedades, que conducen a la solución de
un problema dado.
TRADUCTORES DE LENGUAJE
So orogramas que traducen instrucciones de programas fuente de alto nivel a
e;,guaje máquina. Se dividen en Intérpretes y Compiladores.
we. carácter que forma un identificador debe ser una letra (a, b, e, ...
3. -
2. _::s ::a ..;s '.:2racieres pueden ser letras(a, b, ... ), o dígitos(1,2,... ) o guión
-':;-·
Memoria RAM
-:;nbre
Ejemplos:
• edad= 23 ó edad� 23 (si es numérica)
• nombre= 'Juan Pueblo' ó nombre� 'Juan pueblo' 'f-(si es
- /carácter)
• sueldo = 3824.56 ó sueldo� 3824.56
• bandera = falso ó bandera= 5 < 3 (si es lógica).
Memoria RAM
edad
[fü
nombre
IJ Iu la In I IP lu le lb 11 lo 1
sueldo
113824.56 I
Ejemplos:
• y= abs(-3); y vale 3, que es el valor absoluto de -3
• y= sqr(4); y vale 16, que es el cuadrado de 4
• x = sqrt{9); x vale 3, que es la raíz cuadrada de 9
• x = log(1 O); x vale 1, que es el logaritmo común de 1 O
• z = cos(0); z vale 1, que es el coseno de O
Ejercicios:
:.....ál es el valor de x:
. x = sin(0)
2_ x = sqrt(9) + sqr(9)
3. x = log(1) + ln(1)
t.. x = tan(0) + cos(0)
5. x =- abs(5) - exp(0)
• Signos de agrupación
• Exponentes y Radicales
• Multiplicación y División, Operadores div y mod
• Sumas y Restas
Ejemplo:
_1_ �parte entera del cociente ( div)
Al dividir 5 entre 3: 315
x = 5 div 3; x vale 1
x = 5 mod 3; x vale 2 (residuo).
x = 5/3; x vale 1.6667 ( incluye los decimales).
Otro ejemplo:
_3_ "?parte entera del cociente ( div)
Al dividir 7 entre 2: 217
Por lo tanto:
x = 7 div 2; x vale 3
y = 7 mod 2; y vale 1
z = 7/2; z vale 3.5 ( incluye los decimales).
• X 15 div 4
=
• X 20 mod 6
=
• X = 50/6
• x = 200érv 3
• X = 200 rnod 3
• a=5 b=4
¡=a ** 2+b*4-( a*b+b* a )+b* 3/ a
= 5** 2+4*4-( 5*4+4* 5 )+4*3/ 5
y=25 + 16 - ( 20 + 20 )+ 12/ 5
y = 25+ 1 6-40+ 24
.
y= 34.
=i�rcicios: Resuelva los siguientes incisos, cuánto vale x ?
• x = 16* 6-3 *2 Respuesta: x = 90
• x = ( 33+3*4 )/ 5 Respuesta: x = 9
• x = 2"2* 3 Respuesta: x=12
• x = -22 Respuesta: x = -4
• x = (-2)2 Respuesta: x= 4
a+º
c
• expresión aritmética: y __ algorítmica: y= ( a + b/ c )/ ( d - e/ f )
=
d-g
f
ª2 b + .!]
• -esl=·- :o-.sjca:
ex=_ X = O
Q - r --Js
q
• a= 5 ( z + w)
• d= m+n
p - q
• x=_m__+ p
n
• b= x + v
u+ .Y.
a
• x=m + _n_
p-q
2
• a = r ...J ( r2 + h )
\y Operadores relacionales:
Permiten comparar dos operandos. El resultado es verdadero o falso, estos
operadores son:
• Ejemplo: 5*3>10
15 >10
verdadero
• Ejemplo: 2*4<3+1
8 <4
'also
• Ejem:>lo: a = 5 b = 16
ta�2 >(b*2 )
5�2 >( 16*2)
25 >( 32 )
'a.so
· x=2 y=3
,e • 5 + y ... 3 / 4 ) < = ( x ... 3 div y ) respuesta: falso
Operadores lógicos:
:e- :e, formular condiciones complejas a partir de condiciones simples, y son:
• Signos de agrupación
• =xponentes y radicales
• • ultiplicación;división, div, mod
• =. <> , < ' > , <= ' >=
• o
• V
• o
- ::o; tinuación se presenta la tabla de verdad de los operadores lógicos:
p a -P -a PoQ p AQ
-e-rladero verdadero falso falso verdadero verdadero
,:'"':ladero falso falso verdadero verdadero falso
:also verdadero verdadero falso verdadero falso
:also falso verdadero verdadero falso falso
• (1<5)Y(5<10)
V Y V
verdadera
• número= 5
( número = 1 ) O ( 7 >= 4 )
( 5 = 1 ) O (7 >= 4 )
falsa O verdadera
verdadera
Respuesta: verdadero
..:
.lqxitmos y Programación 17
�ernplos:
• entero edad
• entero horas, nota
• -eal sueldo
• carácter letra
• lógico bandera
:::,o dijimos antes, para poner datos adentro de las variables se utiliza la
:ce.-ación asignación.
• a=5 b= 10
a= a+b
a= a/3*2 ** 3
� = aIb
• X = 100 y=2
x = xmody**4
¡=y**x
• -. =5 n = 15
,.,=m**2
= n*m+10 /5
• a= 6 b = 3
z =a**2 +·b * 3-( a*b +b *a)+b *2 /a
• ..\ =5 B=25 C = 1 O
X = A+B+C
X=A+B*C
X = A+B/C
X = A+ Bmod C
X = ( A+ B)mod e
datos
entrada salida
El usuario introduce datos por medio del teclado, estos datos son
almacenados en la mer.ioria ram en celdas a las que se les da un nombre y un
tipo.
El programa utiliza esos datos que el usuario ingresó, los procesa ( suma, resta,
compara, ordena, e�c.l oor medio del cpu de la computadora.
EJEMPLOS DE ALGORITMOS
tll.,..:J60 de un algoritmo que sólo tiene salida:
�·'Hola' (salida)
�o en pantalla:
:aco en pantalla:
Ejercicios:
Entrada significa que nuestro programa le pide un dato al usuario del programa,
el valor que el usuario teclee como respuesta, ese será el valor que nuestro
programa leerá y guardará en memoria.
inicio
entero: ed
escribir 'Ingrese su edad:'
leer ed (entrada)
escribir 'Usted tiene' , ed, ·�ños' -{salida)
fin
=----
:::r-�
os las 2 corridas y simulemos 3 mas en la siguiente tabla:
Mensaje en Respuesta Variable Mensaje en
=
Ingrese su edad: 20 20 Usted tiene 20
años
Ingrese su edad: 35 35 Usted tiene 35
,;,
años
Ingrese su edad: 18 18 Usted tiene 18
años
�. Ingrese su edad: 41 41 Usted tiene 41
-
aéios
Ingrese su edad: 57 57 Usted tiene 57
años
= �mos declarar una variable para cada dato que le pedimos al usuario.
Otro ejemplo:
inicio
real: temp
escribir 'Ingrese temperatura:
-,leer temp (entrada)
escribir 'La temperatura es ' , temp, ' grados' (salida)
fin
s
co mensaje pantalla resp. variab. mensaje en pantalla
usuario temo
1 Ingrese temperatura: 32.5 32.5 La temperatura es 32.5
qrados
2 Ingrese temoeratura: 35.1 35.1 La temperatura es 35.1
grados
3 Ingrese :em::>era:ura: 40 40 La temperatura es 40 grados
4 Ingrese :e�:,e:an. -a: 41.3 41.3 La temperatura es 41.3
qrados
5 Ingrese terr;>e.,-a� -a: 28.7 28.7 La temperatura es 28.7
grados
&,cuae :lSeUdocódigo que pida al usuario que ingrese dos datos: dia y mes y
es cespliegue. Ambos datos son enteros, no contienen decimales.
-..e.o: di,me
� 'Ingrese dia y mes: '
=- =-
eer-di, e
· 'el dia es', di,' el mes es', me
(entrada)
(salida)
Algoritmos y Programación 26
inicio
entero: ed, grad
escribir 'Ingrese su edad:
leer ed (entrada)
grad = ed + 6 (proceso)
escribir 'Se graduará a los', grad, 'años' < (salida)
fin
=.-:ero: ed
::S--roir 'Ingrese su edad:
:ae· ed (entrada)
::SerDir 'Se graduará a los : ed + 6, 'años' (proceso y salida)
Otro ejemplo: -.
El siguiente pseudocódigo pide al usuario kilos y los convierte a libras.
Declaramos una constante de conversión, este valor no cambiará en todo el
programa.
inicio
constante real conver = 2.2
real: kil
escribir 'Ingrese kilos:
leer kil (entrada)
escribir kil 'kilos equivale a ', kil * conver, 'libras' (proceso y salida)
fin
Notar que la constante conver siempre tiene el mismo valor en todas las corridas
y duran:e toéa la corrida del programa, no cambia, por eso se !lama constante.
� oa, al
�:::ia.al (entrada)
ba * al, 2 * ( ba + al ) ( proceso y salida)
1 1•-=::o.::s:
�-Rr:r;-.:- � :lSeudocódigo de un programa que:
salida a
pantalla
�
�
�
�
-l t
dire�ción
-- de flujo
inicio
declaración de
variables y constantes
l
/ enirada /
j proceso 1
(salida)
�
Inga. Jenny M. Rodríguez V.
31
�:dol
:::::-.s�nte real cambio=8.2
:Sa""bir 'Ingrese Dolares:'
ee.-dol
es.::roir 'Quetzales = ' , dol * cambio
real: dol
constante real cambio=8.2
/ dol /
< ¡
'Quetzales = ' , dol*cambio
_=>
onie�el usuario teclea 5:
Pseudocódigo:
iniqio
real: pul
constante real cambio=2.54
escribir 'Ingrese pulgadas: '
leer pul
escribir 'Centímetros= ' , pul*cambio
fin
Diagrama de Flujo:
( inicio )
¡
real: pul
constante real cambio=2.54
/ pul/
< l
'Centímetros= ' , pul • cambio
J
i
G;J
Ingrese pu,gadas: 1
Centímetros = 254
� ,n2
�:, - 'Ingrese dos números: '
es:!"�·, n2
� • 'La suma es: ', n1 + n2
�:,· 'La resta es: ' , n1 - n2
�:>"r 'La multiplicación es:', n1 * n2
real: n1, n2
/ n1, n2 /
¡
'La suma es: ' , n1 + n2
'La resta es: · , n1 - n2
'La multiplicación es: ', n1 * n2
ue el usuario teclea 1 1:
Ejercicios:
Elaborar el diagrama de flujo de un programa que:
2. PROGRAMACION EN C++
) // cabecera de la función
-'"=
J programa codificado en c++ que despliegue su nombre en una línea y
-e o de carnet en otra línea.
Ejemplos:
int valor;
int valor1, valor2;
int valor= 99;
int num_parte= 1141, num_items= 45;
char dato_car;
char letra='A';
bool bisiesto;
bool bisiesto=tr ue;
bool b2=false;
rt ...,eses = 12;
=-a: carácter = '$';
Ejemplo:
#include <iostream.h>
void main()
{
char primero, ultimo;
cout << "Introduzca su primera y ultima inicial: ";
cin >> primero >> ultimo;
cout <<"Hola,"<< primero <<"."<< ultimo <<".!\n";
}
Diagrama de Flujo:
(inicio)
-=--- cel
� ·r 'Ingrese grados Celsius: ' t
ee-cel real: cel
�.:>·r 'Fahrenheit= ', (9 / 5) * cel + 32 t
<
/ cel /
t
'Fahrenheit= ', ( 9 / 5 ) * cel + 32
·ca: cel;
::::i__� << ªIngrese grados Celsius: ";
-.- >> cel;
:::._: << "Fahrenheit: "« ( 9 / 5 ) * cel + 32;
ue el usuario teclea 1:
rama:
Mensa·e antalla
Fahrenheit: 33.8
Fahrenheit: 50
Fahrenheit: 68
Fahrenheit: 122
Fahrenheit: 212
1
Perímetro= 20
3 Ingrese lado: 7 Area= 49
i1 Perímetro = 28
A Ingrese lado: 12 Area= 144
1 Perímetro= 48
5 111 Ingrese lado: 23 Area= 259
Perímetro= 92
Inga. Jenny M. Rodríguez V.
41
Diagrama de Flujo:
fin
:::::rs: "-oat pi = 3.14159;
-ao;
:::J • << 'Ingrese radio: ";
::r- >>-ad;
:::i: << 'Diametro= • << pi*rad *rad << endl;
::::i..: << ·Area= " << pi* rad * rad << endl;
:o..:<< "Peri metro= • << 2 * pi*rad;
: ".!. 593
-------=- 5.283184
:ie s·mulación de 2 corridas:
pi Mensaje rad Mensaje pantalla
antalla
3.141593 · Ingrese radio: 1 Diámetro: 2
Area: 3.141593
Perímetro: 6.2831
3.141593 Ingrese radio: 5 Diámetro: 2
Area: 78.5398
Perímetro: 31.415
de Asignación abreviados:
asignación asignación
abreviada no abreviada
m +=n m=m+n
m-=n m=m-n
m*=n m=m*n
m/=n m=m/ n(cociente)
mo/o=n m=m % n(residuo)
*
()
Decrementación
-- n
n-=1
- =- - .. n=n-1
Operadores Relacionales:
Operadores Lógicos:
Y ( and ): &&
O (ar): 11
NEGACIÓN (not):
código: formato:
�:ic carácter
%d entero decimal
¾e real ( double o float ), notación científica
3/of-' \flotante
%i entero
o/os cadena de caracteres (string)
3/ox hexadecimal sin signo
Inga. Jenny M. Rodríguez V.
Algoritmos yProgramación 46
#include <iostream.h>
#include <conio.h>
main( )
{
cout << "probando libreria conio ..." << endl;
getch();
textbackground(1 ); clrscr( ); // color de fondo
cout << "probando textbackground ... " << endl;
getch( );
textcolor(2); cout << "probando textcolor ... no funciona con cout" << endl;
getch( );
cprintf("probando cprintf ...\n\r");
getch( );
float n1=3.141593;
int n2=10;
cprintf("123456789+123456789+123456789+123456789+123456789+\r\n");
cprintf("EI producto de %10.6f * %5i = %15.8F,n1 ,n2,n1*n2);
getch( );
char dia;
gotoxy( 20,20 ); cprintf("ingrese dia: ");
cscanf("%c:",&dia);
cprintf("\n\rEI dia ingresado es %c \n\r",dia);
cout << "Usted ingreso el día: " << dia << endl;
getch( );
getch( );
}
JONES MATEMÁTICAS
bcd.h, complex.h, float.h, math.h, stdlib.h
LIBRERÍA math.h
• · ones Matemáticas:
·ones Trigonométricas:
�- ( x) // seno de x (radianes)
c:lS( x) // coseno de x
-::n( x) // tangente de x
asín( x) // arco seno de x
acos( x) // arco coseno de x
.;:an( x) // arco tangente de x
S:Oh( x) // seno hiperbólico de x
cosh( x) // coseno hiperbólico de x
:anh( x) // tangente hiperbólica de x
• Otras:
Codificación en C++:
#include <iostream.h>
#include <conio.h>
void main()
{
int mat[ 2 ][ 3] , f ,c;
for( f = O; f < 2; f++ ) // ciclos para llenar matriz
far( c = O; c < 3; c++ )
mat[ f] [ c] = O;
far(f = O; f < 2; f++ ) // ciclos para imprimir matriz
{
far( c ,; O; c < 3; c++ )
cout << mat[ f] [ c] « ". "; imprime casilla y deja espacio
cout << endl; // salto de linea al terminar de desplegar las columnas
}
getch( );
}
Resultado en pantalla:
º º º
Io o o
· Tabla simulando la corrida del anterior programa, primer par de ciclos
llenando mat:
Corrida f c mat[ f ] [ e ] = O
1 o o mat[ O 1 [ O 1 = O
1 mat[ O ][ 1 ] = O
2 mat[ O ] [ 2 ] = O
1 o mat[ 1 ] [ O J = O
1 matf 1 l í 1 l = O
2 mat[ 1 ][ 2 1 = O
Otro ejemplo:
Veremos un programa que declara una matriz de 5 filas por 5 columnas, enteras,
se desea llenar dicha matriz con números aleatorios entre O y 49; para mayor
claridad del programa, se imprimirá en otro par de ciclos diferentes de los
utilizados para llenar la matriz.
Pseudocódigo:
inicio
entero: mat[ 5] [ 5], f , c
para f desde O hasta 4 paso 1 hacer
para c desde O hasta 4 paso 1 hacer
mat[ f][ e]= random( 50 )
fin_para
fin_para
para f desde O hasta 4 paso 1 hacer
para c desde O hasta 4 paso 1 hacer
escribir mat[ f) [c)
fin_para
fin_para
fin
inicio
Diagrama de Flujo:
entero: mat[ 5][ 5 ], f, c
f = O, 4, 1
c = O, 4, 1
mat[ f] [ e] = random( 50 )
f = O, 4, 1
e= O, 4, 1
mat[ f][ c]
fin
Inga. Jenny M. Rodríguez V.
Algoritmos y Programación 173
Codificación en C++:
#include <iostream.h>
#include <conio.h>
#include <stdlib.h>
void main()
{
int mat[ 5 ] [ 5], f, c;
randomize();
---
mat[ f] [e] = random( 50 ); // llenando matriz con números aleatorios
getch();
}
Resultado en pantalla:
43 9 23 12 24
17 24 23 22 2
7 30 20 25 36
37 36 6 5 26
28 33 12 35 5
Otro ejemplo:
Veremos un programa que declara una matriz de 2 filas por 3 columnas, enteras.
se desea llenar dicha matriz con datos ingresados por el usuario; para mayor
claridad del programa, se imprimirá en otro par de ciclos diferentes de los
utilizados para llenar la matriz.
Pseudocódigo:
inicio
entero: mat[ 2] [ 3 ], f, c
para f desde O hasta 1 paso 1 hacer
para e desde O hasta 2 paso 1 hacer
escribir "Ingrese valor·, f, • ,", c, ":"
leer mat[ f][ c ]
fin_para
fin_para
para f desde O hasta 1 paso 1 hacer
para e desde O hasta 2 paso 1 hacer
escribir mat[ f] [c ]
fin_para
fin_para
fin inicio
f = O, 1, 1
c = O, 2, 1
mat[ f][ c]
f = O, 1, 1
c = O, 2, 1
mat[ f][ c]
fin
Inga. Jenny M. Rodríguez V.
Algoritmos y Programación 176
Codificación en C ++:
#include <iostream.h>
#include <conio.h>
void main()
{
int mat[ 2J [ 31, f,e;
getch( );
}
Resultado en pantalla:
lnmese valor O O: 1 O
Ingrese valor O 1 : 20
Ingrese valor O 2: 30
Ingrese valor 1 O: 40
Ingrese valor 1 1: 50
Ingrese valor 1 2: 60
10 20 30
40 50 60
Corrida f e Usuario
1 o o 10
1 In 20
2 In 30
1 o In 40
1 In 50
2 In 60
El resultado en memoria
Ejercicios:
2. Declare una matriz entera de 1 O filas por 1 O columnas. Llenar la matriz con
las tablas de multiplicar. Imprimir matriz.
Ejemplo:
Ahora trabajaremos con 3 matrices de 4 filas por 4 columnas, mat1, mat2, mat3;
llenaremos las 2 primeras con números aleatorios y la tercera será la suma de las
dos primeras:
Pseudocódigo:
inicio
entero: mat1[ 4] [ 4 ], mat2[ 4] [ 4], mat3[ 4] [ 4], f, c
Diagrama de Flujo:
inicio
f= o, 3, 1
e= O, 3, 1
mat1 [ f] [ e] = random( 1O )
mat2[ f] [ e] = random( 1 O )
mat3[ f] [ e] = mat1 [ f] [e] + mat2[ f] [e]
f = O, 3, 1
e= O, 3, 1
mat1 [ f] [e]
e= O, 3, 1
mat2[ f] [e)
e= O, 3, 1
mat3[ f l[e]
salto de línea
fin
Codificación en C++:
#include <iostream.h>
#include <conio.h>
#include <stdlib.h>
void main( )
{
int mat1 [ 4 ] [ 4], mat2[ 4] [ 4], mat3[ 4] [ 4], f, c;
randomize( );
getch( );
}
Resultado en pantalla:
3 5 5 9 O 6 O 8 3 11 5 17
9 4 2 2 7 6 1 6 16 10 3 8
O 78 5 88 7 7 8 15 15 12
3 1 4 2 O 6 9 6 3 7 13 8
Otro ejemplo:
Aunque no es con matrices paralelas, elaboremos un programa que declare 2
matrices: mat de 2 filas por 3 columnas, y tra de 3 filas por 2 columnas, enteras,
pediremos al usuario los datos de mat y generaremos tra como la transpuesta de
mat (filas de mat pasan a columnas de tra; columnas de mat pasan a filas de tra).
Pseudocódigo:
inicio
entero: mat[ 2 ] [ 3], tra[ 3] [ 2 ], f, c
fin
Diagrama de Flujo:
f = O, 1, 1
e = O, 2, 1
mat [ f ][ e 1
tra[ e ] [ f J = mat[ f J [ e J
f = O, 1, 1
e= O, 2, 1
mat[ f}[ e J
f = O, 2, 1
c = 0,1,1
tra[ f He 1
Codificación en C++:
#include <iostream.h>
#include <conio.h>
void main()
{
int mat[ 2] [ 3 ], tra[ 3 J [ 2], f, e;
getch( );
}
Resultado en antalla:
Ingrese valor O O: 100
Ingrese valor O 1: 200
Ingrese valor O 2: 300
Ingrese valor 1 O: 400
Ingrese valor 1 1: 500
Ingrese valor 1 2: 600
Datos de Matriz:
100 200 300
400 500 600
Datos de Transpuesta:
100 400
200 500
300 600
Ejercicios:
Ejemplo:
para guardar las temperaturas de cada día en cada uno de los 23 departamentos
por 5 años. Este arreglo tendrá capacidad para 5 * 23 * 366 = 42,090 datos (
casillas ).
Otro ejemplo:
El arreglo libro nos permite almacenar todas las letras (80 caracteres, columnas ),
para cada línea ( 25 filas ), para cada una de las páginas de un libro de 250
páginas.Tiene capacidad para almacenar 250 * 25 * 80 = 500,000 datos(casillas).
Asignar valores:
Ejemplo:
ter:np [ 1 ] [ 2) [ 3 ]= 26.5; // temperatura el día 3 en departamento 2 del año 1
Ejemplo:
temperatura= temp [ 1] [ 1 ] [ 1 ]; // asignando el dato a otra variable
escribir temp [ 2 ] [ 2] [ 2 ]; // desplegando el dato
Ahora veremos un ejemplo parecido, pero utilizaremos una función para pedir los
datos e irlos guardando en el arreglo y otra función para desplegarlos; ambas
serán llamadas desde el programa principal.
En c++, cuando pasamos un arreglo entre los parámetros, siempre es pasado por
referencia ( aunque no pongamos el & ), ya que consumiría mucha memoria si el
compilador creara copias de arreglos para cada subprograma.
Veamos el programa:
Codificación en e++:
#include <iostream.h>
#include <conio.h>
const int LONG = 100;//maximo numero de casillas del arreglo, se puede cambiar
void imprimir( double a[ ], const int n, double& prom) // subprograma que lista
{
double suma=O;
far( int i = O; i < n; i++)
{
cout << ''\t" << i << " : " << a[ i ] << endl;
suma + = a[ i ];
}
cout << "La suma en procedimiento es: " << suma << endl;
prom=suma/n;
cout << "El promedio en procedimiento es: " << prom << endl;
}
void main()
{
double a[ LONG ], prom = O;
int n;
ingresar( a, n); // a=arreglo, n=numero de elementos ingresados p/usuario
cout << "\nEI arreglo tiene " << n << " elementos, que son:\n";
imprimir( a, n, prom);
cout << "El promedio en main es: " << prom << endl;
getch();
}
Inga. Jenny M. Rodríguez V.
Algoritmos v Programación 192
Codificación en c++:
#include <iostream.h>
#include <conio.h>
#include <stdlib.h>
const int FILAS = 5; 11 puede modificar este valor para mas o menos filas
const int COL = 5; !! puede modificar este valor para mas o menos columnas
void llenar( int mat[ FILAS ] [ COL]) // llenar matriz con aleatorios
{
randomize( );
far( int f = O; f < FILAS; f++)
for( int e = O; c < COL; c++)
mat[ f] [ e ] = random( 100 ); // aleatorios entre O y 99
}
void main()
{
int mat[ FILAS] [ COL J;
llenar( mat ); // llamando procedimiento que llena matriz
desplegar( mat); // llamando procedimiento que despliega matriz
getch();
}
Inga. Jenny M. Rodríguez V.
Algoritmos y Programación 194
72 16 75 43 68
5 69 44 55 4
26 75 80 93 78
21 49 48 99 69
94 58 31 21 94
color
o 1 2 3 4 5 6 7 8 9
color
1a Iz 1u 11
O 1 2 3 4 5 6 7 8 9
color
1a Iz
O 1 2 3 4 5 6 7 8 9
color
1a Iz 1u 11 1 \O
O 1 2 3 4 5 6 7 8 9
Inga. Jenny M. Rodríguez V.
Algoritmos y Programación 196
#include< iostream>
#include < conio>
void main()
{
char texto[ 80]; // declarando
char orden[ 40]; // declarando
char color[] = "azul"; // declarando e inicializando, al final asigna \O
cout<< "Tamano del arreglo: " << sizeof(num ) << endl; // despliega 4
cout<< "O: " << num[ O]<< endl; // despliega u
cout<< "1: " << num[ 1 ]<< endl; // despliega n
cout<< "2: " << num[ 2]« endl; // despliega o
cout<< "3: " << num[ 3]<< endl; // despliega vacio
getch{ );
Cuando le pedimos al usuario que ingrese los datos a guardar dentro de una
cadena, si utilizamos la instrucción cin >> para leer y guardar en la cadena,
perderemos los datos que estén después de un espacio ingresado por el usuario.
Por ejemplo: si le pedimos al usuario que ingrese un nombre y éste teclea Isaac
Newton, en la cadena sólo se guardará Isaac, se perderá lo que esté después de
un espacio.
o la función:
#include <iostream.h>
#include <conio.h>
#include <stdio.h> // contiene gets( )
void main()
{
char nombre[ 30 ];
getch( );
}
// en lugar de gets( nombrecadena ) se puede utilizar cin.getline
// cin.getline( nombrecadena, largocadena ) ;
#include <iostream.h>
#include <conio.h>
#include <string.h>
void main()
{
char cadena[100J="lsaac Newton"; // declarando e inicializando
cout << "cadena: " << cadena << endl; // despliega Isaac Newton
cout << "Comparando hola con HOLA: " << strcmp("hola�,"HOLA·) << endl;
//despliega 32, hola es mayor que HOLA
cout << "Comparando HOLA con HOLANDA: " « strcmp(ªHOLAª,"HOLANDN)
« endl; // despliega -79, HOLA es menor
getch( );
}
La función strtok
#include <iostream.h>
#include <conio.h>
#include <string.h>
void main(){
char cadena[]= "01/10/2008";
char *separador = " / , " ;
char *ptr = cadena ;
cout << "Cadena: " << cadena << endl;
while( ptrToken)
{
cout <<"token:"<< ptrToken << endl;
ptrToken = strtok( NULL, separador) ;
}
getch();
}
Inga. Jenny M. Rodríguez V.
Algoritmos y Programación 202
Pseudocódigo: En c++:
Y así creamos un tipo de dato llamado inventario que contiene los miembros o
campos arriba descritos; en memoria podría verse así:
Ejercicios:
• _Empleados
• Alumnos
• Clientes
Ejemplos:
inventario libro;
inventario libro, ítem;
entero cont;
entero cent, i;
Dentro del programa se maneja cada uno de estos miembros o campos utilizando
el nombre definido de la estructura, el operador punto y el nombre del miembro o
campo así:
libro.titulo
libro.num
nombredatoestructura.nombrecampo
.)
Algoritmos y Programación 205
Ejemplo:
libro.num = 25 // poner un 25 en el campo num de la estructura libro
Ejemplo:
escribir "Ingrese precio: "
leer libro.precio_venta // poner en campo el valor que el usuario ingrese
Ejemplo:
existencia = libro.num // pasar al campo existencia el valor que hay en
libro.num
--Ejemplo:
escribir "el precio es:", libro.precio_venta // desplegar el contenido del campo
Ejemplo:
En el siguiente programa, veremos el manejo de una estructura, que consiste en
definirla o crearla, declararla, asignarle datos y accesar a sus datos.
fin fin
..
Inga. Jenny M. Rodríguez V.
Algoritmos y Programación 207
Codificación en e++
struct inventario
{
char titulo[ 25 ] ;
char autor[ 30 ] ;
int num;
float precio_venta;
} libro = { "Programacion en C++", "Luis Jayanes", 50,250.75};
void main()
{
//inventario libro; // también se puede declarar dentro del programa
// pidiendo datos al usuario ( asignando valores) ...
cout « "\nTitulo del libro:";
· gets(libro.titulo);
cout << "\nAutor: ";
gets( libro.autor);
cout << "\nNumero: ";
cin >> libro.num;
cout << "\nPrecio de venta:";
cin >> libro.precio_venta;
//libro.precio_venta=300.75; // otra forma de asignar valor
getch{ );
}
Resultado en pantalla:
En memoria:
Ejercicio:
Elaborar un programa que defina una estructura que contenga los siguientes
mtembros: código (1 O caracteres), nombre(20 caracteres), unidades (entero),
costo (real). Dentro del programa, declare la estructura, pida datos al usuario y
seguidamente despliéguelos.
Ejemplo:
Se requiere registrar información de personas con los siguientes datos:
Código, nombre, altura, peso, fecha_nacimiento,
Pero la fecha de nacimiento a su vez consta de dia, mes, año por lo que se
define como una estructura y ésta quedará anidada dentro de la estructura
anterior.
.
p odriamos representar 1a as1:
códi¡:¡o nombre altura oeso fecha
1 dia I mes I anio 1
1 1 1 1
Se define primero la estructura más interna y después la externa.
estructura Fecha
inicio
entero día
entero mes
entero año
fin
estructura Persona
inicio
entero código
carácter nombre[ 20 ]
real altura
real peso
Fecha fec
fin
Dentro del programa se declara una variable ( por ejemplo pe que es de tipo
Persona)
Persona pe
Inga. Jenny M. Rodríguez V.
Algoritmos y Programación 210
pe.código
pe.nombre
Los que están anidados ( dentro del miembro fec ), se manejan así:
pe.fec.dia
pe.fec.mes
Codificación e++
#include <iostream>
#include <conio>
#include <stdio>
struct Fecha
{
unsigned int día; // enteros positivos
unsigned int mes;
unsigned int anio;
};
struct Persona
{
long codigo;
char nombre[20J;
float altura;
float peso;
Fecha fec; // dato fec es de tipo Fecha ( estructura )
};
void main()
{
Persona pe; // declarando variable pe tipo Persona que contiene fec
cout << "Ingrese codigo: "; cin >> pe.codigo;
cout << "Ingrese nombre:"; gets(pe.nombre);
cout << " Ingrese altura: "; cin >> pe.altura;
cout << "Ingrese peso: "; cin >> pe.peso;
cout << "Ingrese dia:";cin >> pe.fec.dia;
cout << "Ingrese mes: "; cin >> pe.tac.mes;
cout << "Ingrese anio: "; cin >> pe.fec.anio;
cout << "\n\nlos datos ingresados son:" << endl;
cout << "Codigo : "<< pe.codígo << endl;
cout << "Nombre: "<< pe.nombre << endl;
cout << "Altura : "<< pe.altura << endl;
cout << "Peso : " << pe.peso << endl;
cout << "Fecha : "<< pe.fec.dia << "f' << pe.fec.mes << "/" << pe.fec.anio;
getch( );
}
Inga. Jenny M. Rodríguez V.