Guia Completa Programacion en C/C++
Guia Completa Programacion en C/C++
Guia Completa Programacion en C/C++
Facultad de Ingeniera
Ingeniera Electr
onica
GUIA DE LABORATORIO No - 1
TEMA: Introduccion al Dev C++
ETN-307
PROGRAMACION
1.
Objetivo
Conocer los antecedentes que llevaron a la creacion del lenguaje C++.
Reconocer el entorno de desarrollo Dev-C++.
Conocer la estructura general de un programa en C, sus tipos de datos y operadores.
Conocer como se declaran las variables y constantes dentro de un codigo fuente.
Conocer el procedimiento b
asico para la edicion compilacion, depuracion y ejecucion de un programa.
2.
El Lenguaje C++
2.1.
Antecedentes
El lenguaje C es un lenguaje de proposito general que fue desarrollado en los laboratorios Bell en 1972.
Sus creadores son Dennis Ritchie y Ken Thompson, y cuyo predecesor fue el lenguaje B (1967 por Martin
Richards).Sus aplicaciones iniciales fueron en Unix, en el desarrollo de su Kernel y otras funciones.
En 1980 ANSI desarrolla ANSI C estandary posteriormente ANSI C++ principalmente por Bjarne Stroustrup. que involucra manipulaci
on de objetos y se transforma en un lenguaje hbrido(programacion estructurada y programaci
on orientada a objetos ).
C++ tiene la posibilidad de re-definir los operadores, y crear nuevos tipos que se comporten como tipos
fundamentales.
La mayora de los compiladores actuales soportan la programacion en C Estandar, C Orientado a Objetos
y La Programaci
on Visual.
Algunos de los compiladores existentes son:
Gcc
C++
Turbo C ++
Borland C++
Entre las aplicaciones mas conocidas desarrolladas en lenguaje C++ se tiene:
Facebook
Google
Unix
Office
YouTube
2.2.
2.3.
El Men
u y la barra de herramientas
2.4.
Explorador de proyectos
Dependiendo de la pesta
na que seleccionemos en esta area tendremos acceso a:
1. Explorador de proyectos, que muestra los archivos por los
que est
a formado nuestro proyecto (o los que son necesarios para generar nuestra aplicacion) bien sean de codigo, de
encabezados, o de recursos.
2. Explorador de clases, una de las funciones mas u
tiles. En este
caso veremos cada una de las estructuras y/o clases definidas
en los ficheros de nuestro proyecto, as como los metodos y
datos que forman parte de la estructura/clase, incluyendo
sus argumentos y su tipo. Tambien veremos una lista de las
funciones globales que tenemos en el proyecto, tambien con
sus argumentos. Pulsando doble clic en un metodo, funcion
o clase, iremos directamente al archivo y lnea donde se ha
definido.
3. Informaci
on de depuraci
on, aqu podremos definir las variables que queramos cuando estemos depurando un programa.
2.4.1.
Area
de edici
on
Figura 4: Area
de Edicion
Aqu aparecer
an los ficheros de c
odigo que esten activos. Se puede tener mas de un fichero abierto a la
vez, y seleccionarlo por medio de las pesta
nas que apareceran en la parte superior de este area.
3
2.4.2.
Salida de compilaci
on y mensajes
El men
u File
2.4.4.
El men
u Edit
Figura 7: El men
u Edit
El men
u Search
El men
u Proyecto
Figura 8: El men
u Search
Se refiere a la creaci
on de proyectos y su administracion.
Algunas de las operaciones que se pueden realizar son:
Crear nuevo proyecto
Adicionar al proyecto
Remover del Proyecto
opciones de Proyecto
2.4.7.
Figura 9: El men
u Proyecto
El men
u View
2.4.8.
El men
u Ejecutar
2.5.
2.5.1.
Es utilizado para realizar un comentario corto que puede entrar en una sola linea
Es utilizado para realizar un comentario largo que sobrepasa mas de una linea
La Linea
int main () {
Define la declaraci
on de la funcion principal main.La
unica funcion que debe estar absolutamente
presente, siendo la primera funcion que es llamada cuando comienza al ejecucion del programa.
Guardamos el programa con el nombre de ejemplo 1.cpp y compilamos con Ctrl+F9 o por medio
del men
u ejecutar y compilar o simplemente en el icono
Luego ejecutar el programa, para ello
haga clic en el icono
, por medio de el men
u o finalmente por medio de las teclas Ctrl+F10
si existiera alg
un problema o error verificar que:
Revisar bien la sintaxis, cada coma, punto es fundamental que se encuentre en la secuencia
correcta.
Ser cuidadoso con el uso apropiado de may
usculas y min
usculas, debido a que C es CaseSensitive.
Recordar el conjunto de palabras reservadas de C, las cuales no se pueden usar como nombres
de variables.
b) Pedir dos n
umeros al usuario y hacer operaciones con ellos
Transcribir el siguiente C
odigo en el editor de codigos
#include<stdio.h>
#include<conio.h>
main()
{
7
getche();
return(0);
} //fin main
La Linea
#include <iostream.h>
Incluye la librera est
andar de funciones de entrada y salida de C++. Las Lineas
cout<<"Introduzca valor de a:\t";
cin>>a;
cout(( y cin)) son las funciones de entrada y salida estandar en C++ y son mas flexibles, note que
ya no se utiliza los especificadores.
2.5.2.
2.6.
Nota
Los trabajos deben enviarse al correo prog [email protected] hasta mas tardar 10:00 pm del lunes antes
de cada clase.
GUIA DE LABORATORIO No - 2
TEMA: Fundamentos del C/C++
ETN-307
PROGRAMACION
1.
Objetivo
Conocer los fundamentos de la estructura y codificacion de un programa en lenguaje C++
Conocer la estructura de un programa en C++.
Conocer los tipos de datos y operadores.
Conocer conocer los operadores existentes .
Conocer el procedimiento b
asico para la edicion compilacion, depuracion y ejecucion de un programa.
2.
Todo programa en C o C++ consta de una o mas funciones, una de las cuales se llama main. El programa
comienza en la funci
on main, desde la cual es posible llamar a otras funciones. El resto de las funciones
necesarias pueden declararse antes o despues de la funcion main.
Cada funci
on estar
a formada por la cabecera de la funcion, compuesta por el nombre de la misma y
la lista de argumentos (si los hubiese), la declaraci
on de las variables a utilizar y la secuencia de
sentencias a ejecutar.
Un ejemplo generico:
2.1.
Un ejemplo gen
erico en C++.
// C
o digo 1
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
/* P r o g r a m a c i
on I
*/
/* L a b o r a t o r i o n o 2
*/
/* TEMA : M a n i p u l a c i
o n de Datos */
/*
en el C / C ++
*/
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
# include < iostream >
int main ()
{
int a , b ;
a =5;
b =++ a ;
std :: cout < < b ;
return 0;
}
3.
3.1.
3.2.
Tipos de datos
Los tipos de datos que manipula el lenguaje C pueden ser agrupados de diferentes maneras, primitivos y
complejos. De los datos primitivos podemos tener dos grupos enteros y de punto flotante, como se muestra
en la tabla:
Tipo
char
int
float
double
void
Tama
no en Bytes
1
2
4
8
-
Ancho en bits
8
16
32
64
Rango en PC
-128 a 127
-32768 a 32767
3.4E-38 a 3.4E+38
1.7E-308 a 1.7E+308
sin valores
Tipo
char
unsigned char
signed char
int
unsigned int
signed int
short int
unsigned short int
signed short int
long int
signed long int
unsigned long int
float
double
long double
Tama
no en Bytes
1
1
1
2
2
2
2
2
2
4
4
4
4
8
8
Ancho en bits
8
8
8
16
16
16
16
16
16
32
32
32
32
64
64
Rango en PC
-128 a 127
0 a 256
-128 a 127
-32768 a 32767
0 a 65535
-32768 a 32767
-32768 a 32767
0 a 65535
-32768 a 32767
-2147483648 a 2147483647
-2147483648 a 2147483647
0 a 4294967295
3.4E-38 a 3.4E+38
1.7E-308 a 1.7E+308
1.7E-308 a 1.7E+308
3.2.1.
// C
o digo 2
// D e c l a r a c i
o n de tipos de datos
void main ()
{
unsigned int i , j =2; // d e c l a r a c i o
n de varias v a r i a b l e s en una l
nea y su i n i c i a l i z a c i
on
unsigned ii ;
int k = -20;
char a = A ;
float f_1 , f_2 =20.45;
double df_1 = 2. 0 00 00 00 0 00 1;
i = j;
}
En C++ se adiciona un tipo de variable denominado bool que puede tener solo dos valores verdadero y
falso (TRUE,FALSE), y es usada como respuesta a preguntas como El color de la pizarra es blanca?
3.3.
Declaraci
on de Constantes
Ejemplos de constantes
// C
o digo 3
# define pi 3.1415
# define verdad 1
const int a =3;
3.4.
3.5.
Declaraci
on de variables del tipo complejo
Variables globales y locales
Las variables se agrupan en dos tipos globales y locales Las variables globales son aquellas que se puede
acceder ellas en todo lugar del programa y las variables locales solo en la funcion donde fue definida
Ejemplo
// C
o digo 4
# include < stdio .h >
# include < conio .h >
int a =3 , b =1;
// v a r i a b l e global
int fun_1 ( int ); // d e c l a r c i
o n de la funci
on
int main ()
{
int x =2;
printf ( " \ t El
printf ( " \ t El
printf ( " \ t El
// se m o d i f i c a
a =5;
printf ( " \ t El
a = fun_1 ( x );
printf ( " \ t El
return 0;
}
int fun_1 ( int a )
{
b = b *9;
printf ( " \ t El
printf ( " \ t El
return a *2;
}
valor de la
valor de la
valor de la
la v a r i a b l e
Caracteres especiales
Algunos caracteres son usados en C/C++ para dar formato la salida de un programa, como los mostrados
en la figura, generalmente son usados con la funcion printf
3.6.
Los operadores
Los operadores indican al compilador que traduzca a lenguaje maquina la operacion correspondiente
entre los operandos, que pueden ser constantes o variables. La lista de operadores se pueden agrupar en
aritmeticos, de incremento,relacionales - logicos y a nivel de bits, etc. Se muestran en las tablas siguientes
con ejemplos para su uso.
3.6.1.
Operadores Aritm
eticos
C
odigo
\b
\f
\n
\r
\t
\
\
\0
\\
\v
\a
\o
\x
Significado
Espacio Atras
Salto de pagina
Salto de lnea
Retorno de carro
Tabulador horizontal
Comillas Dobles
Comilla simple
Nulo
Barra invertida
Tabulador vertical
Alerta
Constante octal
Constante hexadecimal
++
Acci
on
Resta, tambien menos monario
suma
multiplicacion
division
decremento
incremento
Ejemplo
// C
o digo 5
// M a n i p u l a c i
o n de datos y o p e r a d o r e s a r i t m
eticos
# include < stdio .h >
# include < conio .h >
int main ()
{
int x , y ;
x = 10;
y = 3;
printf ( " Se realiza la operaci
o n " );
printf ( " \ t x / y= %d \ t " , x / y ); // m o s t r a r a 3
printf ( " \ t x %y= %d \ n " , x %y ); // m o s t r a r a 1 el resto de la d i v i s i
o n entera
// forma a l t e r n a t i v a
x = 1;
y = 2;
printf ( " Se realiza la operaci
o n " );
printf ( " \ t x / y= %d \ t x %y= %d \ n " ,x /y , x %y );
// El o p e r a d o r ++ i n c r e m e n t o
y = x;
x = x + 1; // x se suma 1 y se asigna a x
y ++;
// y se i n c r e m e n t a en uno pero hace la misma o p e r a c i
on
// orden de o p e r a c i o n e s
// se realiza por el lado i z q u i e r d o
x = 10;
y = ++ x ;
// se i n c r e m e n t a en uno a x y el r e s u l t a d o se asigna a y sin cambiar x
// el " x " es 10 y " y " es 11
x = 10;
y = x ++;
x = 2;
y = 3;
// La p r e c e d e n c i a de los o p e r a d o r e s a r i t m
eticos
printf ( " \ t La precedencia de los operadores aritm
e ticos \ n " );
printf ( " \ t Mayor
++ , - \ n " );
printf ( " \ t
- ( menos monario )
\ n " );
printf ( " \ t
* , / , %
\ n " );
printf ( " \ t Menor
+, \ n " );
printf ( " \ t Si x= %d y y= %d
\ n " ,x , y ); // se i m p r i m i r
a 5=(2 +1) -3+ (2*3 )
x = x ++ - y + x * y ;
printf ( " \ t La operaci
o n %d = x ++ - y + x * y \ n " ,x ); // se i m p r i m i r
a 5=(2 +1) -3+ (2*3 )
printf ( " \ t Si x= %d y y= %d
\ n " ,x , y ); // se i m p r i m i r
a 5=(2 +1) -3+ (2*3 )
x = x ++ -( y + x )* y ;
printf ( " \ t La operaci
o n %d = x ++ -( y + x )* y \ n " ,x ); // se i m p r i m i r
a 5=(2 +1) -3+ (2*3 )
return 0;
}
3.6.2.
Operadores Relacionales,l
ogicos
Acci
on
Mayor que
Mayor que o igual
Menor que
Menor que o igual
igual
no igual
Operador
&&
||
!
Acci
on
Y
O
No
3.6.3.
Los operadores Operadores a nivel de bit se muestran en la siguiente tabla y un ejemplo de su uso
Ejemplo
// C
o digo 6
// M a n i p u l a c i
o n de datos y o p e r a d o r e s r e l a c i o n a l e s l
o gicos y a nivel de bit
# include < stdio .h >
# include < conio .h >
int main ()
Operador
&
|
>>
<<
Acci
on
Y
O
O exclusiva (XOR)
complemento a uno
desplazamiento a la derecha
desplazamiento a la izquierda
{
int x , y ;
x = 10;
y = 3;
// La p r e c e d e n c i a de los o p e r a d o r e s r e l a c i o n a l e s
printf ( " \ t La precedencia de los operadores relacionales y l
o gicos \ n " );
printf ( " \ n " );
printf ( " \ t Mayor
!
no
\ n " );
printf ( " \ t
> , >= , < , <=
Mayor que
\ n " );
printf ( " \ t
== , !=
igual
\ n " );
printf ( " \ t
&&
Y
\ n " );
printf ( " \ t Menor
||
O
\ n " );
printf ( " \ t _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \ n " );
printf ( " \ n " );
printf ( " \ t Los operadores relacionales devuelven un valor de 1 o 0 \ n " );
printf ( " \ t seg
u n sea cierto o falso r es pe ct i va me nt e
\ n " );
printf ( " \ n " );
printf ( " \ t Como x= %d es mayor que y= %d el resultado de x > y da %d \ n " ,x ,y ,x > y );
printf ( " \ t _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \ n " );
printf ( " \ t La siguiente operaci
o n !1&&0 da como resultado
%d \ n " ,!1&&0);
printf ( " \ t _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \ n " );
printf ( " \ t La siguiente operaci
o n !(1&&0) da como resultado %d \ n " ,!(1&&0));
// O p e r a d o r e s a nivel de bits
printf ( " \ t _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \ n " );
printf ( " \ n " );
printf ( " \ t Los operadores a nivel de bits devuelven la operaci
o n l
o gica a bits \ n " );
printf ( " \ t Esto es ejemplo 5= 0101 y 6= 0110 5&6=4
\ n " );
printf ( " \ t
5
&
6
=
4
\ n " );
printf ( " \ t
0
&
0
=
0
\ n " );
printf ( " \ t
1
&
1
=
1
\ n " );
printf ( " \ t
0
&
1
=
0
\ n " );
printf ( " \ t
1
&
0
=
0
\ n " );
printf ( " \ n " );
printf ( " \ t _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \ n " );
printf ( " \ t Como x= %d y y= %d el resultado de x & y da %d \ n " ,x ,y , x & y );
printf ( " \ t _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \ n " );
printf ( " \ t Como x= %d y y= %d el resultado de x | y da %d \ n " ,x ,y , x | y );
printf ( " \ t _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \ n " );
printf ( " \ t Como x= %d y y= %d el resultado de x ^ y da %d \ n " ,x ,y , x ^ y );
printf ( " \ t _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \ n " );
printf ( " \ t Como x= %d
el resultado de ~ x= %d
\ n " ,x ,~ x );
printf ( " \ t _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \ n " );
y =x < <1; // rota a la i z q u i e r d a 1 vez
printf ( " \ t Como x= %d se rota a la izquierda y = x < <1 = %d
\ n " ,x , y );
printf ( " \ t _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \ n " );
y =x > >1; // rota a la i z q u i e r d a 1 vez
printf ( " \ t Como x= %d se rota a la derecha
y =x > >1 = %d
\ n " ,x , y );
printf ( " \ t _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \ n " );
return 0;
}
3.7.
Manipulaci
on de datos y operadores especiales
3.7.1.
El operador ?
Es un operador ternario que funciona evaluando una condicion y si es cierto devuelve la segunda expresi
on
y si es falsa devuelve la tercera expresi
on como muestra el ejemplo a continuacion.
Ejemplo
// C
o digo 7
// M a n i p u l a c i
o n de datos y o p e r a d o r e s e s p e c i a l e s
# include < stdio .h >
# include < conio .h >
int main ()
{
int x , y ;
x = 10;
y = 3;
// El o p e r a d o r t e r n a r i o ?
u til para r e e m p l a z a r if - then - else
printf ( " \ t El operador ternario ? util para reemplazar if - then - else \ n " );
printf ( " \ n " );
printf ( " \ t La forma general del operador ternario es
\ n " );
printf ( " \ t
Exp1 ? Exp2 : Exp3
\ n " );
printf ( " \ t
Si Exp1 es cierta entonces
\ n " );
printf ( " \ t
se eval
u a Exp2 y
toma el valor de Exp2
\ n " );
printf ( " \ t
Si Exp1 es falsa entonces
\ n " );
printf ( " \ t
se evalua Exp3 y
toma el valor de Exp3
\ n " );
printf ( " \ t _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \ n " );
printf ( " \ n " );
printf ( " \ t Como x= %d y y= %d y x > y la exp . y = x > y ? 100 : 200;
\ n " ,x , y );
y = x > y ? 100 : 200; // y toma el valor de 100
printf ( " \ t Toma el valor de
100
\ n " ,x , y );
printf ( " \ t _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \ n " );
printf ( " \ t Como x= %d y y= %d y
la exp . y = x < y ? 100 : 200;
\ n " ,x , y );
y = x < y ? 100 : 200; // y toma el valor de 100
printf ( " \ t Toma el valor de
200
\ n " ,x , y );
printf ( " \ t _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \ n " );
return 0;
}
3.7.2.
Son una poderosa herramienta para la referencia a valores, variables y mas y se muestra su aplicaci
on en
el siguiente ejemplo.
Ejemplo
// C
o digo 8
// M a n i p u l a c i
o n de datos y o p e r a d o r e s de puntero ( o p e r a d o r monario )
# include < stdio .h >
# include < conio .h >
# include < locale .h >
int main ()
{
setlocale ( LC_CTYPE , " Spanish " );
int x ,* y , z ;
x = 10;
// El o p e r a d o r t e r n a r i o ? util para r e e m p l a z a r if - then - else
printf ( " \ t Los operadores & y *
\ n " );
printf ( " \ n " );
printf ( " \ t Proporcionan una rapida forma de referenciar a un elemento \ n " );
printf ( " \ t o elementos de un arreglo ( array )
\ n " );
printf ( " \ t Permiten a las funciones de C modificar los par
a metros
\ n " ,160);
printf ( " \ t de llamada
\ n " );
printf ( " \ t _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \ n " );
printf ( " \ n " );
printf ( " \ t El operador & x devuelve la direcci
o n de memoria del operando x \ n " ,x , y );
y = &x;
printf ( " \ t la variable x= %d y cuyo valor esta almacenado en la direcci
o n \ n " ,x );
printf ( " \ t de memoria & x= %x h es la direcci
o n interna de la computadora \ n " ,y );
printf ( " \ t _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \ n " );
printf ( " \ n " );
printf ( " \ t El operador * x devuelve el valor almacenado en la direcci
o n \ n " );
printf ( " \ t que se especifica
\ n " );
z = *y;
printf ( " \ t la direcci
o n * y= %x contiene el valor de %d \ n " ,y , x );
printf ( " \ t la operaci
o n z =* y almacena en z el valor de %d " ,z );
printf ( " \ t _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \ n " );
return 0;
}
4.
Procedimiento
1. Transcribir los C
odigos del 1 al 8 compilar y ejecutar.
2. Modificar los valores y par
ametros de cada codigo par probar su validez
5.
Para Resolver
5.1.
Nota
Los trabajos deben enviarse al correo prog [email protected] hasta mas tardar 10:00 pm del lunes antes
de cada clase.
GUIA DE LABORATORIO No - 3
TEMA: Algoritmos, Diagramas de flujo, y Sentencias de Control.
ETN-307
PROGRAMACION
1.
Objetivo
Conocer la utilidad de los algoritmos para representar procesos de tratamiento de datos.
Conocer la representaci
on de los algoritmos en forma de diagramas graficos llamados diagrama de flujo.
Reconocer las caractersticas de la programacion estructurada.
Conocer las variedad que ofrece los lenguajes de programacion en cuanto a las sentencias que permiten
el control del flujo del proceso.
Realizar aplicaciones practicas para la concepcion de los procesos.
2.
Los Algoritmos
Es una representaci
on de un conjunto ordenado de operaciones sistematicas que permite hacer un una
evaluaci
on, toma de decisi
on, y acci
on que conlleve ala solucion de un o varios tipos de problemas. su
representacion puede ser por medio de:
Ejemplo 1 Se desea calcular la distancia recorrida [m] por un movil que tiene velocidad constante [m/s]
durante un tiempo T [s], considerar que es un M.R.U.(movimiento rectilneo y uniforme).
Lenguaje Natural
Lenguaje Simbolico
Lenguaje simbolico
Se leen los datos de velocidad V Diagramas de flujo
y de tiempo T
se opera mediante la formula
d=V T
se muestra el resultado d
pseudoc
odigo
Leer v
Leer t
d=v*t
Escribir d
3.
3.0.1.
En la cuadro 1 se muestra una representacion de las figuras utilizadas para la representacion de los
algoritmos en diagramas de flujo, que son u
tiles para realizar la programacion.
4.
4.0.2.
Sentencias de Control
La sentencia IF
La estructura de control IF permite decidir entre dos opciones resultantes de la evaluacion de una sentencia. Si la evaluaci
on es positiva hace una cosa, tambien podemos especificar acciones para realizar en caso
1
imprimir mensajes
procesamiento de datos
funciones
......
Cuadro 1: Smbolos de diagramas de flujo
de que la evaluaci
on sea negativa.
1
2
// C
o digo 1 E s t r u c t u r a s e n t e n c i a IF
if ( sentencia 1 ) sentencia 2
La estructura anterior es u
til siempre y cuando la sentencia2 es u
nica, pero su se debe hacer un grupo
de sentencias es posible seguir la siguiente estructura
1
2
3
4
5
6
7
8
9
// C
o digo 2 E s t r u c t u r a s e n t e n c i a IF
if ( sentencia 1 )
{
grupo de s e n t e n c i a s // por s e n t e n c i a 1 e s v e r d a d e r a o c i e r t a
}
else
{
grupo de s e n t e n c i a s // por s e n t e n c i a 1 e s f a l s a
}
Otra estructura u
til son los IF anidados
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
// C
o digo 3 E s t r u c t u r a s e n t e n c i a IF a n i d a d o s
if ( sentencia 1 )
{
grupo de s e n t e n c i a s // por s e n t e n c i a 1 e s v e r d a d e r a
}
else i f ( sentencia 2 )
{
grupo de s e n t e n c i a s // por s e n t e n c i a 2 e s v e r d a d e r a
} else i f ( sentencia 3 )
..
..
else
{
grupo de s e n t e n c i a s // por d e f e c t o s e e j e c u t a
}
Hay que hacer notar que la estructura IF del codigo 1 tiene la misma estructura del operador .
4.0.3.
La sentencia SWITCH
// C
o digo 4 E s t r u c t u r a s e n t e n c i a SWITCH
switch ( e x p r e s i
on entera )
case e x p r e s i
on constante1 : sentencias1
case e x p r e s i
on constante2 : sentencias2
...
case e x p r e s i o
n constanten : sentenciasn
default : s e n t e n c i a
4
5
6
7
8
Cuando se usa la sentencia switch el control se transfiere al punto etiquetado con el case cuya expresi
on
constante coincida con el valor de la expresion entera evaluada dentro del switch. A partir de ese punto
todas las sentencias ser
an ejecutadas hasta el final del switch, es decir hasta llegar al . Esto es as porque
las etiquetas s
olo marcan los puntos de entrada despues de una ruptura de la secuencia de ejecucion, pero
no marcan los puntos de salida. Para que solo una secuencia de sentencias sea ejecutada se puede adicionar
la palabra reservada break que permite salir de la sentencia switch
5.
Los Bucles
5.1.
El bucle FOR
// C
o digo 5 E s t r u c t u r a s e n t e n c i a FOR
for ( i n i c i a l i z a c i o
n ; condici
on ; incremento )
{
grupo de s e n t e n c i a s ;
}
iniciaci
on del bucle, que puede ser una expresion o una declaracion. En este apartado se suelen iniciar las
variables usadas en el bucle. Estas variables tambien pueden ser declaradas en este punto, pero en ese caso
tendr
an validez (
ambito) s
olo dentro del bucle for. Despues de cada iteracion se ejecutara el incremento
de las variables del bucle. Este incremento tambien es una sentencia de asignacion, y no tiene por que ser
necesariamente un incremento. En general, podemos considerar que la parte de inicializacion establece las
condiciones iniciales del bucle, la parte de la condicion establece la condicion de salida, y la parte del
incremento, modifica las condiciones iniciales para establecer las de la siguiente iteracion del bucle, o para
alcanzar la condici
on de salida. Todas las expresiones son opcionales, y si no se especifica la condici
on se
asume que es verdadera.
5.2.
El bucle WHILE
5.3.
el bucle DO / WHILE
6.
6.1.
Sentencias especiales
La sentencia BREAK
La sentencia break tiene dos usos. se puede usar para finalizar un case en una sentencia switch, lo que
ya se ha explicado, pero tambien se puede usar para forzar la terminacion inmediata de un bucle, saltando
la evaluaci
on condicional normal del ciclo.
// C
o digo 8 E s t r u c t u r a s e n t e n c i a BREAK
int c = 0 ;
3{
4
f o r ( i n t x =0; x < 1 0 0 ; x++) c+=x ;
5
break ;
6
c += 1 0 0 ;
7}
8c /= 1 0 0 ;
1
2
En este ejemplo, la sentecia c += 100; no se ejecutara, ya que la sentencia break transfiere la ejecuci
on
secuencial fuera del bloque.
6.2.
La sentencia exit()
6.3.
s e s a l e d e l programa
La sentencia CONTINUE
La sentencia continue funciona de una forma algo similar a break. Sin embargo en vez de forzar la
terminaci
on, continue fuerza una nueva iteracion del bucle y salta cualquiera otra sentencia
// C
o digo 10 E s t r u c t u r a s e n t e n c i a CONTINUE
do {
3
c i n >>num ;
4
i f (num<0) continue ;
5
cout<<x ;
6} w n i l e ( x ! 1 0 0 )
1
2
6.4.
Es un salto incondicional al lugar donde se encuentre declarada la etiqueta, su uso no es muy recomendado
pero es util en ciertas ocaciones.
// C
o digo 11 E s t r u c t u r a s e n t e n c i a ETIQUETA / GOTO
x =1;
3b u c l e :
4x++;
5i f ( x <100) goto b u c l e ;
1
2
// C
o digo 12 E s t r u c t u r a s e n t e n c i a ETIQUETA / GOTO
for ( . . . ) {
for ( . . . ) {
while ( . . . ) {
i f ( . . . ) goto p a r a r ;
}
}
}
9
10
11
parar :
cout<< e r r o r de programa ;
GUIA DE LABORATORIO No - 4
TEMA: Funciones.
ETN-307
PROGRAMACION
1.
Objetivo
Conocer el metodo de declaraci
on y utilizacion de las funciones.
Conocer las libreras y las funciones del estandar ANSI.
Conocer como se pasan los argumentos a las funciones y como retorna valores
Desarrollar programas de ejemplo para la utilizacion de las funciones.
2.
< assert.h>
< complex.h>
< ctype.h>
< errno.h>
< fenv.h>
< float.h>
< inttypes.h>
< iso646.h>
< limits.h>
< locale.h>
< math.h>
< setjmp.h>
< signal.h>
< stdarg.h>
< stdbool.h>
< stdint.h>
< stddef.h>
< stdio.h>
< stdlib.h>
< string.h>
< tgmath.h>
< time.h>
< wchar.h>
< wctype.h>
Contiene la macro assert (asercion), utilizada para detectar errores logicos y otros tipos de fallos
en la depuraci
on de un programa.
Conjunto de funciones para manipular n
umeros complejos (nuevo en C99).
Contiene funciones para clasificar caracteres seg
un sus tipos o para convertir entre may
usculas y
min
usculas independientemente del conjunto de caracteres (tpicamente ASCII o alguna de sus
extensiones).
Para analizar los c
odigos de error devueltos por las funciones de biblioteca.
Para controlar entornos en coma flotante (nuevo en C99).
Contiene la definici
on de constantes que especifican ciertas propiedades de la biblioteca de coma
flotante, como la diferencia mnima entre dos n
umeros en coma flotante ( EPSOLON), el n
umero
m
aximo de dgitos de precision ( DIG), o el rango de valores que se pueden representar ( MIN,
MAX).
Para operaciones de conversion con precision entre tipos enteros (nuevo en C99).
Para utilizar los conjuntos de caracteres ISO 646 (nuevo en NA1).
Contiene la definici
on de constantes que especifican ciertas propiedades de los tipos enteros, como
rango de valores que se pueden representar ( MIN, MAX).
Para la funci
on setlocale() y las constantes relacionadas. Se utiliza para seleccionar el entorno local
apropiado (configuracion regional).
Contiene las funciones matematicas comunes.
Declara las macros setjmp y longjmp para proporcionar saltos de flujo de control de programa no
locales.
Para controlar algunas situaciones excepcionales como la division por cero.
posibilita el acceso a una cantidad variable de argumentos pasados a una funcion.
Para el tipo booleano (nuevo en C99).
Para definir varios tipos enteros (nuevo en C99).
Para definir varios tipos de macros de utilidad.
Proporciona el n
ucleo de las capacidades de entrada/salida del lenguaje C (incluye la venerable
funci
on printf).
Para realizar ciertas operaciones como conversion de tipos, generacion de n
umeros pseudoaleatorios, gesti
on de memoria dinamica, control de procesos, funciones de entorno, de se
nalizaci
on
(??), de ordenaci
on y b
usqueda.
Para manipulaci
on de cadenas de caracteres.
Contiene funcionalidades matematicas de tipo generico (type-generic) (nuevo en C99).
Para tratamiento y conversion entre formatos de fecha y hora.
Para manipular flujos de datos anchos y varias clases de cadenas de caracteres anchos (2 o m
as
bytes por car
acter), necesario para soportar caracteres de diferentes idiomas (nuevo en NA1).
Para clasificar caracteres anchos (nuevo en NA1).
3.
Definici
on de una funci
on
La estructura de una funci
on es muy simple La forma de definir una funcion es por medio de el prototipo
// D e c l a r a c i
o n de una funci
on
e s p e c i f i c a d o r _ d e ti po _d e _f un c i
o n ( lista de par
a metros )
{
cuerpo de la funci
on
}
programa devuelve un c
odigo de terminacion de proceso de llamada(generalmente es el sistema operativo).
el valor devuelto debe ser un entero generalmente (0), un otro valor indica que se producido un tipo de error.
4.
Es posible llamar a funciones por valor (ejemplo anterior)y por referencia(haciendo referencia a su direcci
on). esto es posible utilizando los punteros. En cuanto a los argumentos se debe observar que tanto en el
// Paso por r e f e r e n c i a
# include < iostream >
using namespace std ;
void i n t e r c a m b i a r _ c r a c t e r e s ( char * , char *);
// d e c l a r a c i
o n de sus a r g u m e n t o s
// en forma de p u n t e r o s
int main ()
{
char c_1 , c_2 ;
cout < < " \ n \ t Introducir primer carcter caracter
cin > > c_1 ;
cout < < " \ n \ t Introducir segundo carcter caracter
cin > > c_2 ;
cout < < " \ n \ tlos carcteroes son c_1 = " << c_1 < < " \ t
// se imprime el valor de c_1 y c_2
i n t e r c a m b i a r _ c r a c t e r e s (& c_1 ,& c_2 );
// se pasa el la d i r e c c i o n de c_1 y c_2
cout < < " \ n \ tlos carcteroes son c_1 = " << c_1 < < " \ t
// se i m p r i m e n los valores en el orden c -1 y c_2
return 0;
}
void i n t e r c a m b i a r _ c r a c t e r e s ( char * c1 , char * c2 )
// c1 y c2 c o n t i n e n e las d i r e c c i o n e s de c_1 y c_2
{
char tem ;
tem =* c1 ;
* c1 =* c2 ;
* c2 = tem ;
}
";
";
y c_2 = " << c_2 ;
5.
// Paso de a r g u m e n t o s a main
# include < iostream >
# include < conio .h >
# include < stdio .h >
using namespace std ;
char * encuantra ( char , char *); // d e c l a r a c i
o n de sus a r g u m e n t o s en forma de p u n t e r o s
int main ()
{
char s [80] ,* p , c ;
gets ( s );
cout < < " \ n \ t La cadena
buscada ser
a =\" " <<s < < " \"\ n " ;
c = getche ();
cout < < " \ n \ t El caracter buscado ser
a =\" " <<c < < " \"\ n " ;
p = encuantra (c , s );
if (* p )
{
cout < < " \ n \ n \ t " <<c < < " \ t SI se encuentra en " <<s ;
}
else
{
cout < < " \ n \ n \ t " <<c < < " \ t NO se encuentra en " <<s ;
}
cout < < " \ n \ n " ;
return 0;
}
char * encuantra ( char c , char * s )
{
register int cont =0;
while ( c != s [ cont ]&& s [ cont ]) cont ++;
return (& s [ cont ]);
}
6.
// Paso de a r g u m e n t o s a main
# include < iostream >
using namespace std ;
int main ( int argc , char * argv []) // argc define el n
u mero de a r g u m e n t o s (1 por defecto ) ,
// define un puntero a una arreglo de p u n t e r o s a c a r a c t e r
{
if ( argc !=2)
{
cout < < " Ha olvidado escribir su nombre !!! " ;
return 1;
}
cout < < " Hola " << argv [1];
return 0;
}
7.
Procedimiento
8.
Para Resolver
8.1.
1. Que relaci
on existen entre la biblioteca de los compiladores Borlan C, Gcc, Turbo C y otros.
2. Que es una librera est
atica y din
amica.
3. Como se crean libreras
4. Que estructura deben tener las Libreras
Nota
Los trabajos deben enviarse al correo progr [email protected] hasta mas tardar 10:00 pm del lunes antes
de cada clase.
GUIA DE LABORATORIO No - 5
TEMA: Arreglos y Punteros.
ETN-307
PROGRAMACION
1.
Objetivo
Conocer la forma de declarar un arreglo y al acceso de los datos que contiene.
Conocer las formas de operar manipular los arreglos.
Conocer como se declaran arreglos multi dimensionales y su uso como punteros.
conocer como se asignas arreglos o crean los mismos en forma dinamica.
2.
Declaraci
on de un arreglo
// M a n i p ul a c i o
n de a r r e g l o s
#include<i o s t r e a m >
using namespace s t d ;
i n t main ( )
{
char a r r e g l o [ 8 0 ] ; // e s t e e s un a r r e g l o de 8 e l e m e n t o s t i p o c a r
acter
int i ;
f o r ( i =0; i <=7; i ++)
{
cout<<"\n \t Introduzca el primer car
a cter " <<e n d l ;
c i n >>a r r e g l o [ i ] ;
cout<<"\n \t se almacen
o en arreglo ["<<i <<"] el valor de "<<a r r e g l o [ i ]<< e n d l ;
}
cout<<"\n\ tEl arreglo es " ;
cout<<"\n\t arreglo =[ " ;
f o r ( i =0; i <=6; i ++)
{
cout<<a r r e g l o [ i ]<<" - " ;
}
cout<<a r r e g l o [ i ]<<" ]"<<e n d l ;
return 0 ;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
// m a n i p u l a c i o n de a r r e g l o s
#include<i o s t r e a m >
using namespace s t d ;
i n t main ( )
{
char s ;
unsigned char a r r e g l o [ 6 5 5 3 5 ] ; // e s t e e s un a r r e g l o de 8 e l e m e n t o s t i p o c a r a c t e r
char a r r e g l o c o n t i g u o [ 8 ] = { 1 , 2 , 5 2 , 1 , 1 , 1 , 1 } ;
int i ;
f o r ( i =0; i <=65535; i ++)
{
a r r e g l o [ i ]= i ;
}
cout<<"\n \t arreglo ["<<i 2<<" ]= "<<a r r e g l o [ i 2]<< e n d l ;
cout<<"\n \t arreglo ["<<i 1<<" ]= "<<a r r e g l o [ i 2]<< e n d l ;
cout<<"\n \t arreglo ["<<i <<" ]= "<<a r r e g l o [ i ]<< e n d l ;
cout<<"\n \t arreglo ["<<i +1<<" ]= "<<a r r e g l o [ i +1]<< e n d l ;
cout<<"\n \t arreglo ["<<i +2<<" ]= "<<a r r e g l o [ i +2]<< e n d l ;
return 0 ;
}
Cuadro 3: Error de acceso a otras variables por sobrepasar las dimensiones del arreglo
3.
La forma de pasar un arreglo a una funcion es de tres maneras posibles como puntero, como arreglo
delimitado o no delimitado.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
// paso de a r r e g l o s a f u n c i o n e s
#include<i o s t r e a m >
int f s u m a r a r r e g l o p u n t e r o ( int ) ;
int f s u m a r a r r e g l o d e l i m i t a d o ( int ) ;
int f s u m a r a r r e g l o n o d e l i m i t a d o ( int ) ;
using namespace s t d ;
i n t main ( )
{
int a r r e g l o [ 5 ] = { 1 , 2 , 3 , 4 , 5 } ;
cout<<"\n\t la suma de 1+2+3+4+5= "<<f s u m a r a r r e g l o p u n t e r o ( a r r e g l o )<<e n d l ;
cout<<"\n\t la suma de 1+2+3+4+5= "<<f s u m a r a r r e g l o p u n t e r o ( a r r e g l o )<<e n d l ;
cout<<"\n\t la suma de 1+2+3+4+5= "<<f s u m a r a r r e g l o p u n t e r o ( a r r e g l o )<<e n d l ;
return 0 ;
}
int f s u m a r a r r e g l o p u n t e r o ( int a r r e g l o )
{
i n t suma=0;
f o r ( i n t i =0; i <=4; i ++)
{
suma=suma+ a r r e g l o ;
a r r e g l o ++;
}
return suma ;
}
i n t f s u m a r a r r e g l o d e l i m i t a d o ( i n t a r r e g l o [ 1 5 5 ] ) //
{
i n t suma=0;
f o r ( i n t i =0; i <=4; i ++)
{
33
34
35
36
37
38
39
40
41
42
43
44
45
46
suma=suma+a r r e g l o [ i ] ;
}
return suma ;
}
int f s u m a r a r r e g l o n o d e l i m i t a d o ( int a r r e g l o [ ] )
{
i n t suma=0;
f o r ( i n t i =0; i <=4; i ++)
{
suma=suma+a r r e g l o [ i ] ;
}
return suma ;
}
Cuadro 4: Error de acceso a otras variables por sobrepasar las dimensiones del arreglo
4.
Las cadenas
Las cadenas de caracteres son tambien otro tipo de arreglos donde son un conjunto de caracteres que
terminan en un elemento denominado nulo \0 . es bueno hacer notar que la terminacion de una cadena es
un ntro un espacio en blanco.
2
1
2
3
4
5
6
7
8
9
Cuadro 6: Condicional if
Cuadro 7: Condicional if
5.
Arreglos bidimensionales
Es posible declarar arreglos como un conjunto bidimensional de elementos como una matriz de filas y
columnas y utilizarlos par operaciones muy u
tiles como en el algebra lineal.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
6.
1
2
3
4
5
6
7
8
9
10
11
12
Cuadro 8: Condicional if
7.
Procedimiento
8.
Para resolver
1. Realizar un programa que reconozca de una cadena de caracteres aleatoria cuantos de ellos son letras
y cunatos espacios y cuantos son n
umeros
2. Realizar un programa que calcule la matriz inversa de una matriz definida por teclado comprobando
que AA1 = I
3. Crear un programa que imprima la siguiente tabla
8.1.
Nota
Los trabajos deben enviarse al correo progr [email protected] hasta mas tardar 10:00 pm del lunes antes
de cada clase.
GUIA DE LABORATORIO No - 6
TEMA: Estructuras y uniones.
ETN-307
PROGRAMACION
1.
Objetivo
Conocer las forna de definir de un tipo especial como las estructura y uniones.
Manipular y acceder a los datos incluidos en las estructuras
Aplicar a ejemplos pr
acticos
2.
Estructuras
El tipo struct permite agragar al programa componente de diferentes tipos de datos con un solo nombre
y su forma de declaraci
on es:
1 // Forma g e n e r a l de l a d e c l a r a c i o
n de una e s t r i c t u r a
2 struct n o m b r e e s t r u c t u r a {
3
tipo variable1 ;
4
t i p o v a r i a b l e 2=c o n s t a n t e ;
5
};
3.
La forma de pasar un arreglo a una funcion es de tres maneras posibles como puntero, como arreglo
delimitado o no delimitado.
1
2
3
4
5
6
7
8
9
10
// paso de a r r e g l o s a f u n c i o n e s
#include<i o s t r e a m >
int f s u m a r a r r e g l o p u n t e r o ( int ) ;
int f s u m a r a r r e g l o d e l i m i t a d o ( int ) ;
int f s u m a r a r r e g l o n o d e l i m i t a d o ( int ) ;
using namespace s t d ;
i n t main ( )
{
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
// M a n i p ul a c i o
n de a r r e g l o s
#include<i o s t r e a m >
using namespace s t d ;
i n t main ( )
{
char a r r e g l o [ 8 0 ] ; // e s t e e s un a r r e g l o de 8 e l e m e n t o s t i p o c a r
acter
int i ;
f o r ( i =0; i <=7; i ++)
{
cout<<"\n \t Introduzca el primer car
a cter " <<e n d l ;
c i n >>a r r e g l o [ i ] ;
cout<<"\n \t se almacen
o en arreglo ["<<i <<"] el valor de "<<a r r e g l o [ i ]<< e n d l ;
}
cout<<"\n\ tEl arreglo es " ;
cout<<"\n\t arreglo =[ " ;
f o r ( i =0; i <=6; i ++)
{
cout<<a r r e g l o [ i ]<<" - " ;
}
cout<<a r r e g l o [ i ]<<" ]"<<e n d l ;
return 0 ;
}
int a r r e g l o [ 5 ] = { 1 , 2 , 3 , 4 , 5 } ;
cout<<"\n\t la suma de 1+2+3+4+5= "<<f s u m a r a r r e g l o p u n t e r o ( a r r e g l o )<<e n d l ;
cout<<"\n\t la suma de 1+2+3+4+5= "<<f s u m a r a r r e g l o p u n t e r o ( a r r e g l o )<<e n d l ;
cout<<"\n\t la suma de 1+2+3+4+5= "<<f s u m a r a r r e g l o p u n t e r o ( a r r e g l o )<<e n d l ;
return 0 ;
}
int f s u m a r a r r e g l o p u n t e r o ( int a r r e g l o )
{
i n t suma=0;
f o r ( i n t i =0; i <=4; i ++)
{
suma=suma+ a r r e g l o ;
a r r e g l o ++;
}
return suma ;
}
i n t f s u m a r a r r e g l o d e l i m i t a d o ( i n t a r r e g l o [ 1 5 5 ] ) //
{
i n t suma=0;
f o r ( i n t i =0; i <=4; i ++)
{
suma=suma+a r r e g l o [ i ] ;
}
return suma ;
}
int f s u m a r a r r e g l o n o d e l i m i t a d o ( int a r r e g l o [ ] )
{
i n t suma=0;
f o r ( i n t i =0; i <=4; i ++)
{
suma=suma+a r r e g l o [ i ] ;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
// m a n i p u l a c i o n de a r r e g l o s
#include<i o s t r e a m >
using namespace s t d ;
i n t main ( )
{
char s ;
unsigned char a r r e g l o [ 6 5 5 3 5 ] ; // e s t e e s un a r r e g l o de 8 e l e m e n t o s t i p o c a r a c t e r
char a r r e g l o c o n t i g u o [ 8 ] = { 1 , 2 , 5 2 , 1 , 1 , 1 , 1 } ;
int i ;
f o r ( i =0; i <=65535; i ++)
{
a r r e g l o [ i ]= i ;
}
cout<<"\n \t arreglo ["<<i 2<<" ]= "<<a r r e g l o [ i 2]<< e n d l ;
cout<<"\n \t arreglo ["<<i 1<<" ]= "<<a r r e g l o [ i 2]<< e n d l ;
cout<<"\n \t arreglo ["<<i <<" ]= "<<a r r e g l o [ i ]<< e n d l ;
cout<<"\n \t arreglo ["<<i +1<<" ]= "<<a r r e g l o [ i +1]<< e n d l ;
cout<<"\n \t arreglo ["<<i +2<<" ]= "<<a r r e g l o [ i +2]<< e n d l ;
return 0 ;
}
Cuadro 4: Error de acceso a otras variables por sobrepasar las dimensiones del arreglo
44
45
46 }
}
return suma ;
Cuadro 5: Error de acceso a otras variables por sobrepasar las dimensiones del arreglo
4.
Las cadenas
Las cadenas de caracteres son tambien otro tipo de arreglos donde son un conjunto de caracteres que
terminan en un elemento denominado nulo \0 . es bueno hacer notar que la terminacion de una cadena es
un ntro un espacio en blanco.
2
1
2
3
4
5
6
7
8
9
6
7
8
9
10
11
12 }
Cuadro 7: Condicional if
5.
Arreglos bidimensionales
Es posible declarar arreglos como un conjunto bidimensional de elementos como una matriz de filas y
columnas y utilizarlos par operaciones muy u
tiles como en el algebra lineal.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
6.
1
2
3
4
Cuadro 8: Condicional if
5 {
6
7
8
9
10
11
12 }
i n t p ,A[ 6 ] = { 2 , 3 , 4 , 5 , 6 , 7 } ;
p=A;
cout<<"\n\ tel valor de A [0]= "<<p ;
cout<<"\n\ tel valor de A [1]= "<<p [ 1 ] ;
cout<<"\n\ tel valor de A [3]= "<<(p +2);
cout<<"\n\ tel valor de A [5]= "<<A [ 5 ] ;
return 0 ;
Cuadro 9: Condicional if
7.
Procedimiento
8.
Para resolver
1. Realizar un programa que reconozca de una cadena de caracteres aleatoria cuantos de ellos son letras
y cunatos espacios y cuantos son n
umeros
2. Realizar un programa que calcule la matriz inversa de una matriz definida por teclado comprobando
que AA1 = I
3. Crear un programa que imprima la siguiente tabla
8.1.
Nota
Los trabajos deben enviarse al correo progr [email protected] hasta mas tardar 10:00 pm del lunes antes
de cada clase.
GUIA DE LABORATORIO No - 6
TEMA: Estructuras y uniones.
ETN-307
PROGRAMACION
1.
Objetivo
Conocer las forna de definir de un tipo especial como las estructura y uniones.
Manipular y acceder a los datos incluidos en las estructuras
Aplicar a ejemplos pr
acticos
2.
Estructuras
El tipo struct permite agragar al programa componente de diferentes tipos de datos con un solo nombre
y su forma de declaraci
on es:
1 // Forma g e n e r a l de l a d e c l a r a c i o
n de una e s t r i c t u r a
2 struct n o m b r e e s t r u c t u r a {
3
tipo variable1 ;
4
t i p o v a r i a b l e 2=c o n s t a n t e ;
5
};
Cuadro 2: Declaraci
on de una dato tipo estructura (nombre estructura)
3.
1
2
3
4
5
6
7
8
9
10
11
12
Un ejemplo
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
4.
Procedimiento
5.
Para resolver
1. Crear un programa que solo liste los nombres con mayora de edad
2. Crear un Programa que seleccione los nombres por orden de CI
5.1.
Nota
Los trabajos deben enviarse al correo progr [email protected] hasta mas tardar 10:00 pm del lunes antes
de cada clase.
GUIA DE LABORATORIO No - 7
TEMA: Archivos
ETN-307
PROGRAMACION
1.
Objetivo
Conocer las forma de almacenamiento de de datos en archivos.
Manipular y acceder a los datos almacenados en ficheros.
Aplicar a ejemplos pr
acticos.
2.
La manipulaci
on de grandes cantidades de datos y su almacenamiento normalmente se hace en un dispositivo de memoria secundaria(fsico - disco ) y se conocen como archivos, que es un conjunto de datos
estructurados en entidades elementales denominadas registros de igual tipo y que a su vez constan de campos.
Tipos de Archivos
Existen dos tipos de archivos:
1. Archivos de texto
2. Archivos binarios.
Los Archivos de texto son una secuencia de caracteres organizadas en lneas terminadas por un car
acter
de nueva lnea. estos suelen ser generalmente de uso para fuentes de programas, base de datos simples, etc.
Un archivo binario es una secuencia de bytes que tienen una correspondencia uno a uno con un dispositivo
externo. Son usados para almacenar Fotografas,texto con formatos, archivos ejecutables (aplicaciones), etc.
En c, un archivo es un concepto l
ogico que puede aplicarse a muchas cosas desde archivos de disco hasta
terminales o una impresora.
Se asocia una secuencia con un archivo especifico realizando una operacion de apertura y en ese instante
la informaci
on puede ser intercambiada entre este y el programa.
Se puede conseguir la entrada y la salida de datos a un archivo a traves del uso de la biblioteca de
funciones;
3.
Se debe incluir la librera STDIO.H. Observe que la mayora de las funciones comienzan con la letra ?f?,
esto es un vestigio del est
andar C de Unix.
Nombre
fopen()
fclose()
fgets()
fputs()
fseek()
fprintf()
fscanf()
feof()
ferror()
rewind()
remove()
fflush()
Funcion
Abre un archivo.
Cierra un archivo.
Lee una cadena de un archivo.
Escribe una cadena en un archivo
Busca un byte especifico de un archivo.
Escribe una salida con formato en el archivo.
Lee una entrada con formato desde el archivo.
Devuelve cierto si se llega al final del archivo.
Devuelve cierto si se produce un error.
Coloca el localizador de posicion del archivo
al principio del mismo.
Borra un archivo.
Vaca un archivo.
3.1.
El puntero a un archivo
Significado
Abre un archivo de texto para lectura.
Crea un archivo de texto para escritura.
Abre un archivo de texto para a
nadir.
Abre un archivo binario para lectura.
Crea un archivo binario para escritura.
Abre un archivo binario para a
nadir.
Abre un archivo de texto para lectura / escritura.
Crea un archivo de texto para lectura / escritura.
A
nade o crea un archivo de texto para lectura
/ escritura.
Abre un archivo binario para lectura / escritura.
Crea un archivo binario para lectura / escritura.
A
nade o crea un archivo binario para lectura
/ escritura.
3.2.
La funci
on fopen()
Devuelve un puntero a archivo. Un programa nunca debe alterar el valor de ese puntero. Si se produce
un error cuando se esta intentando abrir un archivo, fopen() devuelve un puntero nulo. Se puede abrir un
archivo bien en modo texto o binario. En la mayora de las implementaciones, en modo texto, la secuencias
de retorno de carro salto de lnea se convierten a caracteres de salto de lnea en lectura. En la escritura,
ocurre lo contrario: los caracteres de salto de lnea se convierten en salto de lnea. Estas conversiones no
ocurren en archivos binarios
3.3.
Cierre de un archivo
La funci
on fclose() cierra una secuencia que fue abierta mediante una llamada a fopen(). Escribe toda la
informaci
on que todava se encuentre en el buffer en el disco y realiza un cierre formal del archivo a nivel del
sistema operativo. Un error en el cierre de una secuencia puede generar todo tipo de problemas, incluyendo
la perdida de datos, destrucci
on de archivos y posibles errores intermitentes en el programa. El prototipo de
esta funci
on es:
1 i n t f c l o s e ( FILE F ) ;
Donde F es el puntero al archivo devuelto por la llamada a fopen(). Si se devuelve un valor cero significa
que la operaci
on de cierre ha tenido exito. Generalmente, esta funcion solo falla cuando un disco se ha
retirado antes de tiempo o cuando no queda espacio libre en el mismo.
Para introducir u obtener datos de un archivo tenemos:
1 fprintf () y fscanf ()
Estas funciones se comportan exactamente como prinft() y scanf(), excepto que operan sobre archivo.
Sus prototipos son:
1 i n t f p r i n t f ( FILE F , const char c a d e n a d e c o n t r o l , . . . . . ) ;
2 i n t f s c a n f ( FILE F , const char c a d e n a d e c o n t r o l , . . . . . ) ;
La funci
on puts() escribe la cadena a un archivo especifico. La funcion fgets() lee una cadena desde el
archivo especificado hasta que lee un caracter de nueva lnea o longitud-1 caracteres.
Si se produce un EOF (End of File) la funcion gets retorna un NULL.
3.4.
Funcion feof()
Cuando se abre un archivo para entrada binaria, se puede leer un valor entero igual de la marca EOF.
Esto podra hacer que la rutina de lectura indicase una condicion de fin de archivo a
un cuando el fin fsico
del mismo no se haya alcanzado. Para resolver este problema, C incluye la funcion feof(), que determina
cuando se ha alcanzado el fin del archivo leyendo datos binarios. La funcion tiene el siguiente prototipo:
1 i n t f e o f ( FILE F ) ;
Su prototipo se encuentra en STDIO.H. Devuelve cierto si se ha alcanzado el final del archivo, en cualquier
otro caso, 0. Por supuesto, se puede aplicar este metodo a archivos de texto tambien.
Ahora bien para el ejemplo anterior usted incluira los datos de la forma:
Nombre del alumno1 nota Nombre del alumno2 nota .....
Algunas veces usted necesitara manipular por separado el nombre del alumno y su nota, para esto
es necesario separarlo en campos. Se puede realizar introduciendo caracteres delimitadores entre campo y
campo, por ejemplo:
fprinft(C,?
Esto generara un archivo de tipo:
Nombre del alumno1;nota Nombre del alumno2;nota .....
La funci
on rewind() inicializa el indicador de posicion, al principio del archivo, indicado por su argumento.
Su prototipo es:
void rewind (FILE *F);
Donde F es un puntero a un archivo valido. Esta funcion se encuentra en STDIO.H
La funci
on ferror() determina si se ha producido en error en una operacion sobre un archivo. Su prototipo
es:
int ferror(FILE *F);
Donde F es un puntero a un archivo valido. Devuelve cierto si se ha producido un error durante la ultima
operaci
on sobre el archivo. En caso contrario, devuelve falso. Debido a que cada operacion sobre el archivo
actualiza la condici
on de error, se debe llamar a ferror() inmediatamente despues de la operacion de este
tipo; si no se ase as, el error puede perderse. Esta funcion se encuentra en STDIO.H
La funci
on remove() borra el archivo especificado. Su prototipo es el siguiente:
1 i n t remove ( char n o m b r e a r c h i v o ) ;
Devuelve cero si tiene exito. Si no un valor distinto de cero. La funcion fflush() escribe todos los datos
almacenados en el buffer sobre el archivo asociado con un apuntador. Su prototipo es:
int fflush(FILE *F);
Si se llama esta funci
on con un puntero nulo se vacian los buffers de todos los archivos abiertos. Esta
funci
on devuelve cero si tiene exito, en otro caso, devuelve EOF.
1 #include <g r a p h i c s . h>
i f ( g r a p h r e s u l t ( ) ! = grOk ) {
c o u t << ? E r r o r a l i n i c i a r e l modo g r
a f i c o , e l programa f i n a l i z a r a
?;
getch ( ) ;
exit (1);
}
closegraph();
Generalmente al iniciar el modo gr
afico se dispone de una resolucion de 640x480. Es decir disponemos
de 640 pixeles en el eje x y 480 pixeles en el eje y. Para comprobar esto, podemos hacer uso de la funciones
getmaxx() y getmaxy() que devuelven el maximo pxel del eje x e y respectivamente.
1 cout <<?R e s o l u c i o
n : ? << getmaxx ( ) << ? x ? << getmaxy ( ) ;
Establecer colores
Para seleccionar el color de fondo en modo grafico debemos utilizar la funcion setbkcolor() y para establecer el color de dibujo setcolor(). Para limpiar la pantalla en modo grafico se utiliza la funcion cleardevice()
que dejar
a la pantalla con el color establecido en setbkcolor().
4.
Procedimiento
5.
Para resolver
1. Realizar un programa que reconozca de una cadena de caracteres aleatoria cuantos de ellos son letras
y cunatos espacios y cuantos son n
umeros
2. Realizar un programa que calcule la matriz inversa de una matriz definida por teclado comprobando
que AA1 = I
3. Crear un programa que imprima la siguiente tabla
5.1.
Nota
Los trabajos deben enviarse al correo progr [email protected] hasta mas tardar 10:00 pm del lunes antes
de cada clase.