You are on page 1of 232

PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 1

UNIVERSIDAD NACIONAL DE INGENIERIA


FACULTAD DE INGENIERIA CIVIL

PROGRAMACION DIGITAL
LABORATORIO N 1
CICLO 2014-1

WILFREDO CUPE ROMN


PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 2

COMPETENCIAS DEL CURSO


1. Disea programas para procesar datos, la generacin de
informacin y su interpretacin.
2. Razona, planea y construye una secuencia lgica de procesos
utilizando estructuras de seleccin e iteracin.
3. Conoce nuevas tcnicas y herramientas que permita su
aplicacin en la solucin de problemas.
4. Conoce y utiliza un lenguaje de programacin a travs de
prcticas de edicin y ejecucin de programas estructurados.
5. Comprende el comportamiento de otros programas de
cmputo durante su utilizacin.
Las competencias 3, 4 y 5 se desarrollarn en las sesiones de
Laboratorio
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 3

Laboratorio N1
Objetivos
1. Utilizar el PSeInt para la creacin y ejecucin
de Diagramas de Flujo.
2. Conocer las facilidades del PSeInt para la
Ejecucin Paso a Paso, Prueba de Escritorio y
Exportacin a C.
3. Utilizar el DEV C++ para la Depuracin de la
codificacin en C.
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 4

Entorno del PSeInt


MENU
HERRAMIENTAS

AREA DE COMANDOS
TRABAJO

LINEA DE
ESTADO
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 5

Creacin de Diagramas de Flujo

AREA DE COMANDOS
TRABAJO
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 6

Creacin de Diagramas de Flujo


PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 7

Operadores y Funciones
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 8

Ejecucin del Diagrama de Flujo


PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 9

Ejecucin del Diagrama de Flujo


PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 10

Ejecucin paso a paso

Permite realizar un seguimiento ms detallado de


la ejecucin del diagrama de flujo, observando en
tiempo real las instrucciones y el orden en que se
ejecutan.
Tambin se puede observar el contenido de
variables o expresiones durante el proceso.
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 11

Ejecucin paso a paso


PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 12

Ejecucin paso a paso


PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 13

Prueba de Escritorio

Permite configurar una tabla con un conjunto de


variables o expresiones para que sean evaluadas
en cada paso de la ejecucin paso a paso y
registradas en dicha tabla automticamente para
analizar luego la evolucin de los datos y el
diagrama de flujo.
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 14

Prueba de Escritorio
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 15

Exportacin a C
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 16

Entorno del DEV C++


MENU

HERRAMIENTAS

AREA DE
TRABAJO

LINEA DE
ESTADO
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 17

Menu File (Archivo)

Nuevo Archivo Fuente


Proyecto
Abrir Proyecto o Archivo
Abrir Archivo Reciente
Grabar
Grabar Como
Grabar Todo
Cerrar
Cerrar Todo
Propiedades
Importar
Exportar
Imprimir
Configura Impresin
Salir
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 18

Menu Execute (Ejecutar)

Compilar
Compila el archivo actual
Ejecutar
Parmetros
Compilar y Ejecutar
Reconstruir Todo
Revisar Sintxis
Limpiar Resultados
Anlisis de Perfil
Reiniciar ejecucin del programa
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 19

Lenguaje de Programacin C

Un programa est constituido por un conjunto de


instrucciones que se ejecutan de modo
secuencial.
El ANSI C es un lenguaje de alto nivel, es decir
est mucho ms cerca del lenguaje natural.
El C++ puede ser considerado como una
extensin del C.

ANSI: American National Standards Institute


PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 20

Ejemplo de Programa 1
/*Mayor de tres numeros*/ Comentario

#include<stdio.h> Directiva de Preprocesador.


main() { Se incluye en el programa la librera de
Funcin Principal funciones estndar de Entrada/Salida
int a,b,c,mayor,suma;
printf("Ingrese 3 datos\n");
scanf("%d",&a); scanf("%d",&b); scanf("%d",&c);
if (a>b)
mayor=a;
else
mayor=b;
if (c>mayor)
mayor=c;
printf("El mayor valor: %d\n",mayor);
suma=a+b+c;
printf("suma: %d\n",suma);
}
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 21

Compilacin (Execute Compile)

El compilador traduce el programa a lenguaje de


mquina y verifica la sintxis.
El programa est almacenado en el archivo
fuente.
El resultado de este proceso de compilacin es
un archivo objeto, con la extensin .obj.

Archivo Fuente COMPILACION Archivo Objeto

LAB1.C
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 22

Compilacin (Execute Compile)

El linker enlaza todos los archivos compilados


(archivo objeto y librerias pre-compiladas) y crea
un archivo .exe ejecutable.

Archivo Objeto
Archivo
ENLACE
Ejecutable
Librerias
Pre-compiladas LAB1.EXE
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 23

Compilacin (Execute Compile)


La ventana de Progreso de Compilacin mostrar
los Errores y Warnings del programa:
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 24

Ejecucin (Execute Run)

El archivo ejecutable es independiente del DEV.


PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 25

Errores

Errores de Sintxis

Errores de Ejecucin

Errores Lgicos
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 26

Errores de Sintxis

Los errores de sintaxis, o sintcticos, ocurren


cuando el programador escribe cdigo que no va
de acuerdo a las reglas de escritura del lenguaje
de programacin. Por ejemplo, la instruccin:
prrintf( "\n Hola mundo " );
La sentencia correcta debe ser:
printf( "\n Hola mundo " );

Los errores de sintaxis se detectan en el proceso


de compilacin.
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 27

Errores de Ejecucin

Se producen cuando la computadora no puede


ejecutar alguna instruccin de forma correcta.
Por ejemplo, la instruccin:

c = 15 / 0; /*No tiene errores de sintaxis*/

Producir un error de ejecucin, ya que,


matemticamente, no se puede dividir entre
cero.
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 28

Errores Lgicos

Ocurren a causa de una lgica equivocada, los


resultados obtenidos no son los esperados.
Por ejemplo, si en vez de la instruccin:
a = b + c;
el alumno hubiera escrito:
a = b * c;
Se producir un error lgico, para descubrirlo se
deber analizar los resultados del programa.
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 29

UNIVERSIDAD NACIONAL DE INGENIERIA


FACULTAD DE INGENIERIA CIVIL

PROGRAMACION DIGITAL
LABORATORIO N 2
CICLO 2014-1

WILFREDO CUPE ROMN


PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 30

Laboratorio N2
Objetivos
1. Crear un DF con PseInt y exportarlo a C
2. Depurar el programa con el DEV C++
3. Conocer los Elementos del Programa C:
Tipos de Datos. Identificadores.
Constantes y Variables. Operadores
Expresiones y Asignacin de Memoria
Las Directivas y el Preprocesador
Secciones de un programa
4. Conocer las Sentencias de Ejecucin:
Entrada y Salida. Decisiones
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 31

Ejercicio: DF con PseInt


Dados los datos de dos circunferencias:
C1x C1y r1 //coordenadas del centro y radio de
C2x C2y r2 //la circunferencia
Determinar si estas circunferencias son
TANGENTES, SECANTES o simplemente no han
contacto entre ellas.

Entradas Salida
C1x, C1y, r1 Tangentes
C2x, C2y, r2 Secantes
No hay contacto
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 32
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 33

Exportacin a C
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 34
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 35

Tipos de Datos

Tipo Descripcin Tamao Rango


char Carcter 1 byte -128 a +127
int Entero 2 bytes -215 a +215 1
long Largo 4 bytes -231 a +231 1
float Punto 4 bytes -3.40 1038 a +3.40 1038
flotante -1.18 10-38 a +1.18 10-38
double Doble 8 bytes -1.70 10308 a +1.70 10308
precisin -2.70 10-307 a +2.70 10-307
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 36

Identificadores
Es el nombre con el que se hace referencia a una
variable o funcin.
Reglas:
Letras a..z, A..Z y digitos 0..9
Carcter subrayado (_)
El primer carcter debe ser una letra o un (_),
no debe haber espacios ni operadores.
Se hace distincin entre maysculas y
minsculas
El ANSI C permite definir al identificador hasta
31 caracteres de longitud
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 37

Constantes

Las Constantes son valores que no pueden ser


modificados.
Constante Descripcin
Numrica Nmero entero o de punto flotante.
Ejm: 15, 16.4, -21
Carcter Cualquier carcter individual encerrado
entre comillas simples (a, Y, \n,
etc.).
El cdigo ASCII establece una
equivalencia entre cada carcter y un
valor numrico correspondiente.
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 38

Constantes

Constante Descripcin
Cadena Conjunto de caracteres alfanumricos
encerrados entre comillas dobles.
Ejm: CB412, Hola Mundo
Simblica Se define con la directiva #define
del preprocesador.
#define PI 3.14159
#define mensaje Hola Mundo
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 39

Variables

Las Variables cambian de valor durante la


ejecucin del programa.

Declaracin de Variables
Una variable se declara precediendo su
identificador con el tipo de datos de la variable.
Tipo_dato identificador = valor inicial ;



opcional
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 40

Operadores
Permiten realizar operaciones en el programa.
Aritmticos Lgicos
+ Suma && Y
- Resta || O
* Multiplicacin ! Negacin
/ Divisin
% Resto divisin entera Primarios
() Llamada funcin
Incrementales
[] Indice de arreglo
++ Incremento en 1
. Miembro estructura
-- Decremento en 1
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 41

Operadores
Permiten realizar operaciones en el programa.
De Asignacin Relacionales
= Asignacin simple == Igual que
+= Asignacin suma < Menor que
-= Asignacin resta > Mayor que
*= Asignacin <= Menor o igual que
multiplicacin >= Mayor o igual que
/= Asignacin divisin != No igual que
%= Asignacin resto
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 42

Expresiones y Asignacin de Memoria

Las expresiones se evalan durante la


compilacin. Los valores se almacenan en
variables, en la memoria de la computadora.

m=9/2*3; Divisin entera (12)


n=m/5; Expresin variable (2.4 o 2)?
++m; Incrementa el valor de m en 1
m++;
&m Direccin en memoria de m
funcion() Valor retornado por la funcin
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 43

Evitar el igual qu entre decimales

Los nmeros decimales no se pueden almacenar,


en general, de forma exacta en la computadora.

Esto origina errores en los clculos y en las


comparacin igual que entre valores decimales.
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 44

Las Directivas y el Preprocesador

Las directivas son lneas que empiezan con #.


El procesador es un programa independiente que
analiza e interpreta las directivas.
En el programa utilizaremos: #include y #define
Ejemplo:

#include<stdio.h> : Incluye el archivo de


Funciones Entrada/Salida
stdio = standard-input-output
#define PI 3.14159 : Define la constante PI
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 45

Secciones de un Programa C
#include<stdio.h>
Directivas del Preprocesador
#define PI 3.14159
int main() Inicio Funcin Principal
{
int a, b; Declaracin, Inicializacin
de Variables
scanf(%d, &a);
Entrada de Datos

b = 5*a*a 4*a + 3;
Expresiones y Asignacin

printf(b = %d\n,b);
Salida de Resultados

} Fin Funcin Principal
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 46

Salida por Pantalla: printf

Imprime en la unidad de salida estndar (monitor)


texto, constantes y variables que se especifiquen.

printf(cadena de formato, valor);

Especificadores de Formato Constante


Especificadores Adicionales Variable
Secuencias de Escape Expresin
Texto
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 47

Especificadores de Formato

Especificadores de Tipo de la expresin


Formato
%c Caracter
%d Entero
%ld Entero largo
%f Punto Flotante
%lf Doble Precisin
%s Cadena de Caracteres
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 48

Especificadores de Formato

Especificadores Efecto
Adicionales
Ancho Justifica a la derecha
.Precisin Redondea al n de decimales
- Justifica a la izquierda
+ Muestra el signo del valor
0 Llena con ceros segn el ancho
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 49

Secuencias de Escape

Secuencia Efecto
de Escape
\n Salto de lnea
\t Tabulador
\r Retorno de carro
\ Comilla simple
\ Doble comilla
\\ Diagonal
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 50

Entrada por Teclado: scanf

Lee datos de la entrada estndar (teclado).

scanf(cadena de formato, &variable);


Similar a printf

Especificadores de Formato
Secuencias de Escape
Texto
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 51

Decisiones: Sentencia if

Permite ejecutar o no una sentencia simple o


compuesta segn se cumpla o no una
determinada condicin.
~
F
if(condicin){ condicin
sentencia; V
}
sentencia

Las llaves son opcionales


cuando hay una sola sentencia. ~
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 52

Sentencia if

Ejm: ~
F
nota10
if (nota>=10)
printf(Aprobado); V
Esc
Aprobado

~
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 53

Decisiones: Sentencia if else

Permite realizar una bifurcacin, ejecutando una


parte u otra del programa, segn se cumpla o no
una determinada condicin.
~
if(condicin) { V F
condicin
sent_V;
}
else { sent_V sent_F
sent_F;
}
~
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 54

Sentencia if else
~
Ejm:
V F
nota10

Esc Esc
Aprobado Desaprobado

if (nota>=10) ~
printf(Aprobado);
else
printf(Desaprobado);
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 55

Sentencia if else mltiple

if(cond1) ~
sent1; V F
cond1
else if(cond2)
sent2; sent1 V
cond2
F

else if(cond3)
sent2 V F
sent3; cond3
else if()
sent3 sentn
[else
sentn;]
~
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 56

Sentencia if else mltiple


~
V F
10nota 20

Esc V F
Aprobado 10> nota6

Esc V F
Desaprobado 6> nota 0

Esc Esc
Reprobado Nota no Vlida

~
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 57

Sentencia if else mltiple

if(nota>=10 && nota<=20)


printf(Aprobado);
else
if(nota>=6 && nota<10)
printf(Desaprobado);
else
if(nota>=0 && nota<6)
printf(Reprobado);
else
printf(Nota no vlida);
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 58

UNIVERSIDAD NACIONAL DE INGENIERIA


FACULTAD DE INGENIERIA CIVIL

PROGRAMACION DIGITAL
LABORATORIO N 3
CICLO 2014-1

WILFREDO CUPE ROMN


PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 59

Operadores

Son signos especiales que indican determinadas


operaciones a realizar con las variables y/o
constantes.

Aritmticos
De asignacin
Incrementales
Relacionales
Lgicos
Primarios
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 60

Operadores

Aritmticos Lgicos
+ Suma && Y
- Resta || O
* Multiplicacin ! Negacin
/ Divisin
% Resto divisin entera Primarios
() Llamada funcin
Incrementales [] Indice de arreglo
++ Incremento en 1 . Miembro estructura
-- Decremento en 1
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 61

Operadores

De Asignacin Relacionales
= Asignacin simple == Igual que
+= Asignacin suma < Menor que
-= Asignacin resta > Mayor que
*= Asignacin <= Menor o igual que
multiplicacin >= Mayor o igual que
/= Asignacin divisin != No igual que
%= Asignacin resto
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 62

Inicio
Ejemplo4.-
Leer
x, y

xx+5

yy+1

z resto entero(x/y)

Escribir
x, y, z

Fin
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 63

/*Ejemplo de printf, scanf y operadores*/


#include<stdio.h>
int main()
{ int x,y,z;
printf("Ejemplo de printf y scanf\n");
printf("Ingrese Punto : ");
scanf("%d,%d",&x,&y);
x=x+5; //incrementa x en 5
y++; //incrementa y en 1
z=x%y; //resto entero de x entre y
printf("x=%4d\n",x);
printf("y=%4d\n",y);
printf("z=%4d\n",z);
system("pause");
}
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 64

Ejemplo4.-
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 65

Sentencias Condicionales de Control de Flujo

Modifican el flujo secuencial en la ejecucin del


programa.
Se denominan Condicionales o Bifurcaciones y
permiten elegir entre dos o ms opciones segn
ciertas condiciones.

En las condiciones se utilizarn:


Operadores relacionales : >, <, >=, <=, ==, !=
Operadores lgicos : &&, ||, !
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 66

Sentencia if

Permite ejecutar o no una sentencia simple o


compuesta segn se cumpla o no una
determinada condicin.
~
F
if(expresion) expresin
sentencia; V
sentencia

La sentencia compuesta
forma un bloque { }
~
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 67

Sentencia if

Ejm: ~
F
if (nota>=10) nota10
printf(Aprobado); V
Esc
Aprobado

~
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 68

Sentencia if else

Permite realizar una bifurcacin, ejecutando una


parte u otra del programa, segn se cumpla o no
una determinada condicin.
~
if(expresion) V F
expresin
sent1;
else
sent2; sent1 sent2

~
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 69

Sentencia if else

Ejm: ~
V F
nota10

Esc Esc
Aprobado Desaprobado

if (nota>=10)
~
printf(Aprobado);
else
printf(Desaprobado);
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 70

Sentencia if else mltiple

Permite realizar una ramificacin mltiple


bifurcacin, ejecutando una parte u otra del
programa, segn se cumpla una entre n
condiciones.
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 71

Sentencia if else mltiple


if(expr1) ~
sent1; V F
expr1
else if(expr2)
sent2; sent1 V
expr2
F

else if(expr3)
sent2 V F
sent3; expr3
else if()
sent3 sentn
[else
sentn;]
~
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 72

Sentencia if else mltiple


~
V F
10nota 20

Esc V F
Aprobado 10> nota6

Esc V F
Desaprobado 6> nota 0

Esc Esc
Reprobado Nota no Vlida

~
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 73

Sentencia if else mltiple

Ejm:

if(nota>=10 && nota<=20)


printf(Aprobado);
else if(nota>=6 && nota<10)
printf(Desaprobado);
else if(nota>=0 && nota<6)
printf(Reprobado);
else
printf(Nota no vlida);
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 74

Sentencia switch

Alternativa mltiple, permite seleccionar, por


medio de una expresin, un bloque de sentencias
a ejecutar entre n posibles.
El resultado de evaluar la expresin debe ser un
valor perteneciente a un tipo de dato finito y
ordenado, es decir, entero, lgico, carcter,
enumerado o subrango.
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 75

Sentencia switch
switch(expr) {
case cte1:
sent1; ~
break; expr
cte1 cte2 cten default
case cte2:
sent2;
break; sent
sent1 sent2 sentn

case cten:
sentn; ~
break;
[default:
sent;]
}
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 76

Sentencia switch

~
3 4 lados 5 default

Esc Esc Esc Esc


Tringulo Cuadrado Pentgono Otro

~
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 77

Sentencia switch
Ejemplo:
switch(lados) {
case 3:
printf(Tringulo);
break;
case 4:
printf(Cuadrado);
break;
case 5:
printf(Pentgono);
break;
default:
printf(Otro);
}
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 78

Ejercicios
Dados tres nmeros, determinar el mayor valor
de los tres.
Escribir un programa que presente en pantalla un
men de opciones:
Opciones
1.- Tringulo
2.- Cuadrado
3.- Pentgono
Ingresar opcin:

Ingresar la opcin y mostrar un mensaje con la


opcin que fue elegida.
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 79

Ejercicios
Ingresar la opcin y mostrar un mensaje con la
opcin que fue elegida.
Ingresar por teclado las notas del examen
parcial, final y promedio de prcticas de un
alumno de programacin digital. Calcular su
promedio y determinar si est aprobado,
desaprobado o reprobado.
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 80

Laboratorio N 3

Funciones Funciones Trigonomtricas


Matemticas
Potencias
Logaritmos
Raz cuadrada
Valor Absoluto
Redondeo de decimales
Funciones Hiperblicas
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 81

Funciones Matemticas

El ANSI C tiene una biblioteca estndar de


funciones matemticas.
Se debe incluir al comienzo del programa el
archivo math.h con la sentencia:

#include<math.h>
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 82

Funciones Trigonomtricas

Funcin Descripcin
double sin(double x) Seno(x), x en radianes
double cos(double x) Coseno(x)
double tan(double x) Tangente(x)
double asin(double x) arco seno(x) en radianes
double acos(double x) arco coseno(x)
double atan(double x) arco tangente(x)

Tipo del valor devuelto Argumento o parmetro


PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 83

Potencias y Logaritmos

Funcin Descripcin
double pow(double x, Devuelve el valor de xy
double y)
double exp(double x) Devuelve el valor de ex
double log(double x) logaritmo neperiano de x
double log10(double x) logaritmo decimal de x

Tipo del valor devuelto Argumento o parmetro


PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 84

Raz Cuadrada, Valor Absoluto, Redondeo de


Decimales

Funcin Descripcin
double sqrt(double x) Devuelve x (x positivo)
double abs(int x) Devuelve |x| (entero x)
double fabs(double x) Devuelve |x| (double x)
double ceil(double x) Redondea x hacia arriba al
entero mas cercano
double floor(double x) Redondea x hacia abajo al
entero mas cercano
Tipo del valor devuelto Argumento o parmetro
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 85

Funciones hiperblicas

Funcin Descripcin
double sinh(double x) seno hiperblico(x), x en
radianes
double cosh(double x) coseno hiperblico(x)
double tanh(double x) tangente hiperblica(x)

Tipo del valor devuelto Argumento o parmetro


PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 86

Ejercicio1
Dados dos puntos A(xa, ya) y B(xb, yb), calcular la
longitud de la lnea AB.

B(xb, yb)

longitud xa xb2 ya yb2


A(xa, ya)
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 87

Inicio

Leer
xa, ya, xb, yb

longitud xa xb2 ya yb2


Escribir
longitud

Fin
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 88

/*Distancia entre dos puntos*/


#include<stdio.h>
#include<math.h>
int main()
{float xa,ya,xb,yb;
double longitud;
printf("Distancia entre dos puntos\n");
printf("Punto A: ");
scanf("%f,%f",&xa,&ya);
printf("Punto B: ");
scanf("%f,%f",&xb,&yb);
longitud=sqrt(pow(xa-xb,2)+pow(ya-yb,2));
printf("Longitud = %.3lf",longitud);
system("pause");
}
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 89
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 90

Ejercicio2
Dados la hipotenusa y un cateto de un tringulo
rectngulo, calcular el ngulo que forman y el otro
cateto.

a
c=?

ang=?
b
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 91

Inicio

Leer
a, b

c a 2 b2

ang arcocoseno b/a*180 / 3.141592

angm(ang - ang ) * 60

Escribir
c, ||ang||, angm

Fin
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 92

/*Calcula cateto y angulo interno*/


#include<stdio.h>
#include<math.h>
#define PI 3.141592
int main()
{double a,b,c,ang,angm;
printf("Calcula cateto y angulo interno\n");
printf("a: "); scanf("%lf",&a);
printf("b: "); scanf("%lf",&b);
c=sqrt(pow(a,2)-pow(b,2));
ang=acos(b/a)*180/PI;
printf("Cateto = %.3lf\n",c);
angm=(ang-floor(ang))*60;
printf("Angulo = %.0lf%c %.2lf\\n",
floor(ang),248,angm);
system("pause");
}
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 93
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 94

Evaluar la funcin:

f ( x) seno( x) e cos( x )
x 2
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 95

Inicio

Leer
x

f seno(x) ecos(x) x 2

Escribir
f

Fin
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 96

/*Evalua Formula*/
#include<stdio.h>
#include<math.h>
int main()
{
float x;
double f;
printf("Evalua Formula\n");
printf("x: ");
scanf("%f",&x);
f=fabs(sin(x)-exp(cos(x)))+floor(pow(x,2));
printf("f(%.3f) = %.4lf",x,f);
system("pause");
}
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 97
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 98

Laboratorio N 4

Sentencias Sentencia if
Condicionales de
Control de Flujo
Sentencia if else

Sentencia if else mltiple

Sentencia switch
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 99

Sentencias Condicionales de Control de Flujo

Modifican el flujo secuencial en la ejecucin del


programa.
Se denominan Condicionales o Bifurcaciones y
permiten elegir entre dos o ms opciones segn
ciertas condiciones.

En las condiciones se utilizarn:


Operadores relacionales : >, <, >=, <=, ==, !=
Operadores lgicos : &&, ||, !
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 100

Sentencia if

Permite ejecutar o no una sentencia simple o


compuesta segn se cumpla o no una
determinada condicin.
~
F
if(expresion) expresin
sentencia; V
sentencia

La sentencia compuesta
forma un bloque { }
~
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 101

Sentencia if

Ejm: ~
F
if (nota>=10) nota10
printf(Aprobado); V
Esc
Aprobado

~
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 102

Sentencia if else

Permite realizar una bifurcacin, ejecutando una


parte u otra del programa, segn se cumpla o no
una determinada condicin.
~
if(expresion) V F
expresin
sent1;
else
sent2; sent1 sent2

~
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 103

Sentencia if else

Ejm: ~
V F
nota10

Esc Esc
Aprobado Desaprobado

if (nota>=10)
~
printf(Aprobado);
else
printf(Desaprobado);
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 104

Sentencia if else mltiple

Permite realizar una ramificacin mltiple


bifurcacin, ejecutando una parte u otra del
programa, segn se cumpla una entre n
condiciones.
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 105

Sentencia if else mltiple


if(expr1) ~
sent1; V F
expr1
else if(expr2)
sent2; sent1 V
expr2
F

else if(expr3)
sent2 V F
sent3; expr3
else if()
sent3 sentn
[else
sentn;]
~
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 106

Sentencia if else mltiple


~
V F
10nota 20

Esc V F
Aprobado 10> nota6

Esc V F
Desaprobado 6> nota 0

Esc Esc
Reprobado Nota no Vlida

~
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 107

Sentencia if else mltiple

Ejm:

if(nota>=10 && nota<=20)


printf(Aprobado);
else if(nota>=6 && nota<10)
printf(Desaprobado);
else if(nota>=0 && nota<6)
printf(Reprobado);
else
printf(Nota no vlida);
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 108

Sentencia switch

Alternativa mltiple, permite seleccionar, por


medio de una expresin, un bloque de sentencias
a ejecutar entre n posibles.
El resultado de evaluar la expresin debe ser un
valor perteneciente a un tipo de dato finito y
ordenado, es decir, entero, lgico, carcter,
enumerado o subrango.
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 109

Sentencia switch
switch(expr) {
case cte1:
sent1; ~
break; expr
cte1 cte2 cten default
case cte2:
sent2;
break; sent
sent1 sent2 sentn

case cten:
sentn; ~
break;
[default:
sent;]
}
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 110

Sentencia switch

~
3 4 lados 5 default

Esc Esc Esc Esc


Tringulo Cuadrado Pentgono Otro

~
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 111

Sentencia switch
Ejemplo:
switch(lados) {
case 3:
printf(Tringulo);
break;
case 4:
printf(Cuadrado);
break;
case 5:
printf(Pentgono);
break;
default:
printf(Otro);
}
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 112

Ejercicios
Dados tres nmeros, determinar el mayor valor
de los tres.
Escribir un programa que presente en pantalla un
men de opciones:
Opciones
1.- Tringulo
2.- Cuadrado
3.- Pentgono
Ingresar opcin:

Ingresar la opcin y mostrar un mensaje con la


opcin que fue elegida.
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 113

Ejercicios
Ingresar la opcin y mostrar un mensaje con la
opcin que fue elegida.
Ingresar por teclado las notas del examen
parcial, final y promedio de prcticas de un
alumno de programacin digital. Calcular su
promedio y determinar si est aprobado,
desaprobado o reprobado.
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 114

UNIVERSIDAD NACIONAL DE INGENIERIA


FACULTAD DE INGENIERIA CIVIL

PROGRAMACION DIGITAL
GUIA DE LABORATORIO
CICLO 2013-2
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 115

Laboratorio N 5

Sentencias Repetitivas Sentencia while


de Control de Flujo

Sentencia do while

Sentencia for
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 116

Sentencias Repetitivas de Control de Flujo

Modifican el flujo secuencial en la ejecucin del


programa.
Se denominan Bucles y permiten repetir la
ejecucin de unos procesos un determinado
nmero de veces o hasta que se cumpla una
condicin de tipo lgico o aritmtico.
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 117

Sentencia while

Permite ejecutar repetidamente una sentencia o


bloque de sentencias, mientras se cumpla una
determinada condicin.
~
F
expresin
while (expresion)
V
sentencia;
sentencia

~
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 118

Ejemplo

Escribir un programa que permita ingresar


sucesivamente notas por teclado, verificando que
sean notas vlidas.
El programa terminar cuando se ingrese una
nota no vlida.
Dar como respuesta el promedio de las notas
ingresadas (con dos decimales).
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 119

Inicio

suma 0
conta 0 prom suma/conta
Leer Escribir
nota prom

F Fin
0 nota 20
V
suma suma + nota

conta conta + 1

Leer
nota


PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 120

Ejemplo

Calcular el MCD de dos nmeros utilizando el


algoritmo de Euclides.
Por ejemplo para 2366 y 273:

El MCD es 91
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 121

Sentencia do while

Anloga a while, con la diferencia de que la


evaluacin de la condicin se realiza al final del
bucle, despus de haber ejecutado al menos una
vez las sentencias. ~

do sentencia
sentencia;
while (expresion); V
expresin

F
~
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 122

Ejemplo

Realizar un programa que encuentre el valor de e


con un error menor a 10-4, dado que el valor del
exponencial para un valor de x se puede expresar
mediante la serie:

ex=1+x+x2/2!+x3/3!+..
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 123

Inicio

serie 0
error 1 Escribir
serie
conta 0
Fin
Leer
x

serie serie + error

conta conta + 1

error error * x / conta

V
|error| > 10-4

F

PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 124

Sentencia for

Permite repetir una sentencia o bloque de


sentencias, mientras se cumple una determinada
condicin.
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 125

Sentencia for

for(inicial; expr; increm)


sentencia;

~
Inicial; expr; increm

sentencia

~
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 126

Ejemplo
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 127

Ejemplo

Dados n nmeros ingresados por teclado, escribir


un programa que permita determinar el mayor y el
menor de los n nmeros.
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 128

Inicio

Leer
n,num

menor num F
num > mayor
mayor num
V
mayor num
i 2..n

Leer
num
Escribir
F
num < menor mayor,menor

V Fin
menor num


PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 129

Laboratorio N 6

Arreglo Lineal
Variable
y Ejercicios
Subindicada
Bidimensional
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 130

Variable Subindicada

Es una variable que almacena un conjunto de valores del


mismo tipo de dato.
Cada valor del conjunto se identifica con un subndice
entero (0, 1, 2,).
Tambin se le denomina arreglo.

Tipos:

Arreglo Lineal: un solo subndice (vector)*


Arreglo Bidimensional: dos subndices (matriz)
Arreglo Multidimensional: tres o mas subndices

* Una cadena de caracteres equivale a un arreglo lineal de caracteres.


PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 131

Arreglo Lineal

Tiene un solo subndice.

Declaracin: tipo nombre_arreglo[N elementos];

Ejemplo: int x[50];

x[0] x[1] x[2] x[49]

subndice
50 elementos
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 132

Arreglo Lineal

Lectura y Escritura:
scanf(formato,&elemento[i-simo]);

printf(formato,elemento[i-simo]);
~
Ejemplo: Leer
scanf(%d, &x[i]); xi

~
~
printf(%d, x[i]); Escribir
xi
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 133

Ejercicio1

Dado un arreglo de n elementos, determinar la media


y la desviacin estndar.

Entradas Salidas
N media
xi (i 1..N) desv
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 134

Diagrama PSeInt
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 135

Codificacin C
/*Obtiene la media y desviacion de n nmeros x*/
#include<stdio.h>
#include<math.h>
int main()
{ int n,i; double s=0,x[100],media,d=0,desv;
printf("Ingrese n:" ); scanf("%d",&n);
for (i=1;i<=n;i++) {
printf("x%d: ",i); scanf("%lf",&x[i]);
s=s+x[i];
}
media=s/n;
for (i=1;i<=n;i++) {
d=d+(x[i]-media)*(x[i]-media);
}
desv=sqrt(d/(n-1));
printf("Media = %8.2lf\nDesviacion = %8.2lf\n",media,desv);
system("pause");
}
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 136

Ejecucin
Ingrese n:6
x1: 4
x2: 1
x3: 11
x4: 13
x5: 2
x6: 7
Media = 6.33
Desviacion = 4.89
Presione una tecla para continuar . . .
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 137

Ejercicio2

Dado un arreglo de N elementos, determinar cual es


el valor que ms veces se repite y cuntas veces se
presenta.

x1 x2 x3 x4 xN

Entradas Salidas
N moda
xi (i 1..N) vecesmoda
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 138

Diagrama PSeInt
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 139

Codificacin C
/*Obtiene la(s) moda(s) de n nmeros enteros x*/
#include<stdio.h>
int main()
{ int i,j,k=0,n,x[100],moda[100],vecesmoda=1,veces;
printf("Ingrese n:" ); scanf("%d",&n);
for(i=1;i<=n;i++)
{ printf("x%d: ",i); scanf("%d",&x[i]);
}
for(i=1;i<=n;i++)
{ veces=1;
for(j=i+1;j<=n;j++)
if(x[i]==x[j]) veces++;
if(veces>vecesmoda) {
k=1;
vecesmoda=veces;
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 140

moda[k]=x[i];
}
else
if(veces==vecesmoda) {
k++;
moda[k]=x[i];
}
}
if(k*vecesmoda<n)
for(i=1;i<=k;i++)
printf("La moda %d se repite %d
veces\n",moda[i], vecesmoda);
else printf("No hay moda\n");
system("pause");
}
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 141

Ejecucin
Ingrese n:13
x1: 9
x2: 8
x3: 7
x4: 1
x5: 4
x6: 9
x7: 5
x8: 4
x9: 1
x10: 5
x11: 9
x12: 1
x13: 5
La moda 9 se repite 3 veces
La moda 1 se repite 3 veces
La moda 5 se repite 3 veces
Presione una tecla para continuar . . .
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 142

Ejercicio3

Dadas las matrices A y B de m*n, se pide sumarlas


utilizando arreglos lineales.

A1 A2 ... An B1 B2 ... Bn

An 1 An 2 ... A2 n Bn 1 Bn 2 ... B2 n
...
... ... ... ... ... ... ...
Ak Bk
A( m 1) n 1 A( m 1) n 2 ... Amn m*n B( m 1) n 1 B( m 1) n 2 ... Bmn m*n

k#col+(#fila-1)*n Entradas Salidas k#col+(#fila-1)*n


m, n Ci (i 1..m*n)
Ai (i 1..m*n)
Bi (i 1..m*n)
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 143

Diagrama PSeInt
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 144

Codificacin C
/*suma de matrices A(m*n) y B(m*n) usando
arreglos lineales*/
#include<stdio.h>
int main()
{ int i,j,k,m,n;
float A[100],B[100],C[100];
printf("Nro filas: "); scanf("%d",&m);
printf("Nro columnas: "); scanf("%d",&n);
printf("A:\n");
for(i=1;i<=m*n;i++) scanf("%f",&A[i]);
printf("B:\n");
for(i=1;i<=m*n;i++) scanf("%f",&B[i]);
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 145

printf("C:\n");
for(i=1;i<=m;i++)
{
for(j=1;j<=n;j++)
{ k=j+(i-1)*n;
C[k]=A[k]+B[k];
printf("%8.1f",C[k]);
}
printf("\n");
}
system("pause");
}
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 146

Ejecucin
Nro filas: 3
Nro columnas: 4
A:
9 3 8 1
8 6 4 0
5 2 3 4
B:
5 7 2 3
9 6 1 1
4 9 3 7
C:
14.0 10.0 10.0 4.0
17.0 12.0 5.0 1.0
9.0 11.0 6.0 11.0
Presione una tecla para continuar . . .
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 147

Arreglo Bidimensional
Tiene dos subndices.
Declaracin:
tipo nombre_matriz[Nfilas][Ncolumnas];
Ejemplo: int x[20][30];

col 0 col 1 col 2 col 29



fila 0 x[0][0] x[0][1] x[0][2] x[0][29]
fila 1 x[1][0] x[1][1] x[1][2] x[1][29] 20
filas
fila 19 x[19][0] x[19][1] x[19][2] x[19][29]

30 columnas
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 148

Arreglo Bidimensional

Lectura y Escritura:
scanf("formato",&matriz[fila-sima][col-sima]);

printf("formato",matriz[fila-sima][col-sima]);
~
Ejemplo:
scanf("%d", &x[i][j]); Leer
xi,j

~
~
printf("%d", x[i][j]); Escribir
xi,j
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 149

Laboratorio N 7

Archivo
Archivo Tipo Texto Definicin

Uso 1. Declarar variable FILE

2. Abrir el Archivo

3. Leer y/o Escribir

4. Cerrar el Archivo

Fin de Archivo
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 150

Archivo

Empleado para almacenar informacin de manera


permanente.

Ejemplo: LAB7.C, DATOS.TXT, PLANO.DWG

Tipos:

Texto : Conjunto de caracteres ASCII


Cada grupo de 8bits corresponde a 1
byte o 1 carcter.
Binario : Conjunto de bits de longitud variable.
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 151

Tabla ASCII

Fuente: http://www.elcodigoascii.com.ar/
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 152

Archivo Tipo Texto

Esta formado por un conjunto de caracteres ASCII


organizados secuencialmente.
Utilizamos el archivo para entrada y/o salida del
programa.
Archivo de Archivo de
Datos Programa Resultados
ENTRADA SALIDA

Pasos a seguir:
1. Declarar variable FILE
2. Abrir el archivo
3. Leer y/o Escribir
4. Cerrar el archivo
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 153

1. Declarar variable FILE

FILE *var_archi;
Donde:

FILE Tipo especial de dato, establece un rea de


memoria temporal de transferencia (Buffer)
entre el programa y el archivo.
var_archi Variable (puntero), indica el inicio del Buffer.
var_archi

Programa Buffer Archivo


PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 154

2. Abrir el Archivo

var_archi=fopen(archivo, modo);
Donde:

fopen Conecta el archivo fsico con el programa.


archivo Nombre del archivo (cadena de caracteres)

Ejm: En diagrama de flujo:

DATOS.TXT var_archi fopen(archivo, modo)


SALIDA.TXT
E:\\DATOS.TXT
E:\\CARPETA\\SALIDA.TXT
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 155

2. Abrir el Archivo

var_archi=fopen(archivo, modo);
Donde:
modo Forma en que se utilizar el archivo.
Modo Apertura Descripcin
r Abre un Archivo para lectura (ENTRADA)
w Crea un Archivo para escritura (SALIDA)
a Abre un Archivo para aadir al final (SALIDA)
r+ Abre un Archivo para lectura/escritura
w+ Crea un Archivo para lectura/escritura
a+ Abre o crea un Archivo para aadir al final
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 156

3. Leer y/o Escribir

fscanf(var_archi, formato, &variable);

Donde:
fscanf Lee la variable desde el archivo segn el
formato.
~
Leer (var_archi)
variable
~
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 157

3. Leer y/o Escribir

fprintf(var_archi, formato, expresin);

Donde:
fprintf Escribe la expresin al archivo segn el
formato.
~
Escribir (var_archi)
expresin
~
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 158

4. Cerrar el Archivo

fclose(var_archi);
fcloseall();

Donde:
fclose Cierra el archivo.
fcloseall Cierra todos los archivos abiertos.

fclose(var_archi) fcloseall( )
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 159

Ejercicio1

Escribir un programa que escriba en un archivo una


pirmide como el de la figura. El dato del programa
ser la altura de la pirmide. Por ejemplo:
h= 5
Piramide.txt
*
***
*****
*******
*********
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 160

Fin de Archivo

Todo archivo tiene un inicio y un fin: EOF (End Of File)


inicio

Archivo

EOF

La funcin feof determina si se ha alcanzado el EOF.


PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 161

Fin de Archivo aplicado a archivos de lectura

feof(var_archi) ser Verdadero si se alcanz el EOF y


ser Falso si an no se alcanza.
inicio

Archivo
de
Lectura
EOF
!feof(var_archi) ser Verdadero mientras no se alcance
el EOF.
negacin
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 162

Lectura del archivo usando while con !feof()


~
F
!feof(var_archi)

V
sentencias

~
while(!feof(var_archi)){
//Sentencias de Lectura

}
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 163

Lectura del archivo usando for con !feof()


~
Inicial; !feof(var_archi); increm

sentencia

~
for(Inicial; !feof(var_archi); increm){
//Sentencias de Lectura

}
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 164

Ejercicio2

Un archivo contiene las coordenadas (x, y) de los


puntos de una poligonal cerrada. Determinar si es
una poligonal cncava o convexa. No se conoce la
cantidad de puntos. Por ejemplo:
Poligonal.txt
10,13
11,6
20,12
17,21
9,23
5,16
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 165

Ejercicio3

Un archivo contiene una matriz por filas y columnas.


Usando un arreglo lineal leer la matriz y escribir la
transpuesta en otro archivo. El orden de la matriz no
es dato. Por ejemplo:
Matriz.txt Matrizt.txt
9 3 8 1 9 8 5
8 6 4 0 3 6 2
5 2 3 4 8 4 3
1 0 4

PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 166

Laboratorio N 8

Funcin

Parmetros pasados Declaracin


por valor

Llamado

Definicin
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 167

Funcin

Un programa grande o complejo se puede dividir en


una serie de mdulos ms pequeos y manejables. A
cada mdulo se le llama funcin.
FUNCION 1

DIVIDIR FUNCION 2
PROGRAMA

FUNCION 3

La funcin es una parte o mdulo del programa que


realiza una tarea muy concreta.
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 168

Paso de Parmetros

Los parmetros son las variables que la funcin


necesita conocer para realizar su tarea.

Hay dos tipos de paso de parmetros:

1. Por Valor : Se pasa una copia del valor del


parmetro (el original no cambia)
2. Por Referencia: Se pasa la direccin en memoria
del parmetro (el original cambia)
Los arreglos son siempre pasa-
dos por referencia.
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 169

Parmetros pasados por Valor

Por ejemplo la funcin Valor(x,):

Definicin
Valor(x)

z=Valor(x,);

Valor : nombre de la funcin


x, : parmetros
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 170

Parmetros pasados por Referencia

Por ejemplo la funcin Referencia(*x,):

Definicin
Referencia(*x)

z=Referencia(&x,);

Referencia : nombre de la funcin


x, : parmetros
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 171

Valor Retornado

Valor que retorna la funcin con la sentencia return.

Si la funcin no retorna ningn valor, el tipo de la


funcin ser void (vaco)
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 172

Pasos para utilizar Funciones

Para utilizar funciones en nuestro programa se deben


seguir los siguientes pasos:

1. Declaracin
2. Llamado 1. Declaracin
3. Definicin

2. Llamado

3. Definicin
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 173

Parmetros Pasados por Valor

Pasamos por VALOR cuando se pasa una copia del


parmetro actual.
El parmetro actual no ser modificado por la funcin.

Llamado: Declaracin y
parmetro_actual Definicin:
parmetro_formal

parmetro formal

Memoria de la
Funcin
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 174

1. Declaracin

tipo funcion(parmetros formales);

Donde:

tipo : tipo de dato del valor retornado por la


funcin
funcin : Nombre de la funcin
Parmetros : Declaracin de los parmetros formales de
formales la funcin
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 175

2. Llamado

variable = funcion(parmetros actuales);

Donde:

variable : Variable donde se asigna el valor retornado


por la funcin (opcional)
funcin : Nombre de la funcin
parmetros : Listado de los parmetros actuales de la
funcin
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 176

3. Definicin

tipo funcion(parmetros formales)


{

}

Donde:
tipo : tipo de dato del valor retornado por la
funcin
funcin : Nombre de la funcin
Parmetros : Declaracin de los parmetros formales de
formales la funcin
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 177

Ejemplo1

Definir una funcin que evale el polinomio:


P(x) = anxn + an-1xn-1 + + a2x2+a1x+a0

Planteamiento
Que parmetros necesita la funcin?
a0..n por referencia (arreglo float)
n por valor (int)
x por valor (float)
La funcin retorna un valor?
Si, retorna el polinomio evaluado en x.
tipo double
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 178

Codificacin1

double poli(float a[50], int n, float x)


{ double p=0; int i;
for(i=n; i>=0; i--)
p=p*x+a[i];
return p;
}
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 179

Ejemplo2

Definir una funcin que dado un ngulo en grados y


minutos, retorne el ngulo en radianes.

Planteamiento
Que parmetros necesita la funcin?
grad por valor (int)
min por valor (int)
La funcin retorna un valor?
Si, retorna el ngulo en radianes.
tipo double
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 180

Codificacin2

double grad_a_rad(int grad, int min)


{ double ang;
ang=(grad+min/60.0)*PI/180;
return ang;
}
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 181

Ejemplo3

Definir una funcin que retorne la cantidad de filas


que hay en un archivo tipo texto.

Planteamiento
Que parmetros necesita la funcin?
ninguno

La funcin retorna un valor?


Si, retorna la cantidad de filas.
tipo int
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 182

Codificacin3

int num_filas()
{ FILE *g; int conta=0; char car;
g=fopen("DATOS.TXT","r");
while(!feof(g)){
fscanf(g,"%c",&car);
if(car=='\n') conta++;
}
fclose(g);
return conta+1;
}
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 183

Ejemplo4

Definir una funcin que escriba en pantalla la longitud


de una poligonal cerrada de n puntos (x, y)

Planteamiento
Que parmetros necesita la funcin?
n por valor (int)
x1..n por referencia (arreglo float)
y1..n por referencia (arreglo float)
La funcin retorna un valor?
Si, retorna la longitud de la poligonal.
tipo double
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 184

Codificacin4

void longitud_poli(float x[50], float


y[50], int n)
{ double lon=0; int i;
x[n+1]=x[n]; y[n+1]=y[n];
for(i=1; i<=n; i++)
lon=lon+sqrt(pow(x[i]-x[i+1],2) +
pow(y[i]-y[i+1],2));
printf("Longitud = %.3lf\n",lon);
}
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 185

Laboratorio N 9

Funcin

Parmetros pasados Declaracin


por referencia

Llamado

Definicin
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 186

Parmetros pasados por Referencia

Por ejemplo la funcin Referencia(*x,):

Definicin
Referencia(*x)

z=Referencia(&x,);

Referencia : nombre de la funcin


x, : parmetros
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 187

Parmetros Pasados por Referencia

Pasamos por REFERENCIA cuando el parmetro es


modificado en la funcin.
Si el parmetro no es modificado lo pasamos por VALOR.

Llamado Declaracin y
Definicin
*parmetro_formal
&parmetro_actual

parmetro_actual

Memoria de
la funcin
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 188

1. Declaracin

tipo funcion(*parmetros formales);

Donde:
tipo : tipo de dato del valor retornado por la funcin
funcin : Nombre de la funcin
Parmetros : Declaracin de los parmetros formales de la
formales funcin como punteros
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 189

2. Llamado

variable = funcion(&parmetros actuales);

Donde:
variable : Variable donde se asigna el valor retornado
por la funcin (opcional)
funcin : Nombre de la funcin
parmetros : Listado de los parmetros actuales de la
funcin pasando la direccin en memoria
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 190

3. Definicin

tipo funcion(*parmetros formales)


{

}

Donde:

tipo : tipo de dato del valor retornado por la funcin


funcin : Nombre de la funcin
Parmetros : Declaracin de los parmetros formales de la
formales funcin como punteros
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 191

Ejercicio1

Disear una funcin que lea un vector de n


elementos.

Planteamiento
Que parmetros necesita la funcin?
x por referencia (arreglo float)
*n por referencia (int)
La funcin retorna un valor?
No, n y x se retornan como parmetros por
referencia.
tipo void
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 192

Diagrama de Flujo1

DEFINICION
lee_vector(x, *n) Inicio
LLAMADO
Leer lee_vector(x, &n)
*n
i 1..*n i 1..n

Leer Escribir
xi xi

Fin Fin
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 193

Ejercicio2

Disear una funcin que intercambie el contenido


completo de dos vectores de n decimales.

Planteamiento
Que parmetros necesita la funcin?
x por referencia (arreglo float)
y por referencia (arreglo float)
n por valor (int)
La funcin retorna un valor?
No, x e y se retornan como parmetros por
referencia.
tipo void
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 194

Diagrama de Flujo2
Inicio
LLAMADO
DEFINICION
lee_vector(x, &n)
intercambio(x, y, n)
LLAMADO

i 1..n lee_vector(y, &n)


LLAMADO
t xi intercambio(x, y, n)
xi yi
i 1..n
yi t
Escribir
xi , yi
Fin
Fin
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 195

Ejercicio3

Disear una funcin que lea una matriz de orden m*n.

Planteamiento
Que parmetros necesita la funcin?
A por referencia (arreglo bidimensional float)
*m por referencia (int)
*n por referencia (int)
La funcin retorna un valor?
No, A, m y n se retornan como parmetros por
referencia
tipo void
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 196

Diagrama de Flujo3
DEFINICION
lee_matriz(A, *m, *n) Inicio
LLAMADO
Leer lee_matriz(A, &m, &n)
*m , *n
i 1..*m i 1..m

j 1..*n j 1..n

Leer Escribir
Ai j Ai j

Fin Fin
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 197

Ejercicio4

Disear una funcin que multiplique dos matrices


A(m*n) y B(n*p).

Planteamiento
Que parmetros necesita la funcin?
A por referencia (arreglo bidimensional float)
B por referencia (arreglo bidimensional float)
C por referencia (arreglo bidimensional float)
m, n, p por valor (int)
La funcin retorna un valor?
No, C se retorna como parmetro por referencia
tipo void
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 198

Inicio
Diagrama de Flujo4 LLAMADO
DEFINICION
multiplica(A,B,C,m,n,p) lee_matriz(A,&m,&n)
LLAMADO

i 1..m lee_matriz(B,&n,&p)
LLAMADO
j 1..p multiplica(A,B,C,m,n,p)
Ci j 0
i 1..m
k 1..n
j 1..n
Ci j Ci j + Ai k* Bk j
Escribir
Ci j

Fin Fin
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 199

Laboratorio N 10

Recursividad

Funcin Recursiva Declaracin

Llamado

Definicin
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 200

Funcin Recursiva

Una Funcin es recursiva cuando se llama a si


misma.

Por ejemplo, el factorial de n se puede calcular con


una funcin recursiva:

n * fact(n 1) n 0
fact(n)
1 n0
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 201

Ejercicio1
Calcular xn en forma recursiva, x decimal y n entero
positivo
x * pot ( x, n 1) n 0
pot ( x, n)
1 n0
Planteamiento
Que parmetros necesita la funcin?
x por valor (float)
n por valor (int)
La funcin retorna un valor?
Si, retorna xn.
tipo double
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 202

Diagrama Potencia

DEFINICION FUNCION PRINCIPAL

pot(x,n) Inicio
V F Leer
LLAMADO n>0
RECURSIVO x, n
LLAMADO
p x*pot(x,n-1) p1
p pot(x,n)

return p Escribir
p
Fin
Fin
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 203

Ejercicio2
Calcular en forma recursiva el mximo comn divisor de
dos nmeros
mcd (b, a%b) a%b 0
mcd (a, b)
b a%b 0
Planteamiento
Que parmetros necesita la funcin?
a por valor (int)
b por valor (int)
La funcin retorna un valor?
Si, retorna el MCD de a y b.
tipo int
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 204

Diagrama MCD

DEFINICION FUNCION PRINCIPAL

mcd(a,b) Inicio
V F Leer
LLAMADO a%b>0
RECURSIVO a, b
LLAMADO
m mcd(b,a%b) mb
m mcd(a,b)

return m Escribir
m
Fin
Fin
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 205

Laboratorio N 11

Cadenas de Caracteres Definicin

Funciones Principales
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 206

Cadenas de Caracteres
Una cadena es un arreglo de caracteres.
Declaracin:
char cadena[#carac]=valor inicial;
Ej:
char cad[30]=Hola Mundo\n;
cad: H o l a M u n d o \n \0
0 1 2 3 4 5 6 7 8 9 10 11

12 caracteres
El carcter nulo (\0) indica el final de la cadena.
Una constante cadena se encierra entre dobles comillas.
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 207

~
Lectura de Cadenas Leer
cad
Lee hasta encontrar espacio o salto de lnea.
~
char cad[30];
scanf("%s", cad); //por teclado, sin &
fscanf(g,"%s", cad); //de archivo, sin &

Lee hasta encontrar salto de lnea


char cad[30];
gets(cad); //por teclado
fgets(cad,#caracteres,g); //de archivo
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 208

~
Escritura de Cadenas
Escribir
cad
char car[30];
~
printf("%s", cad); //en pantalla
fprintf(h,"%s", cad); //en archivo
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 209

Funciones de Cadenas

Se debe incluir en el programa: #include<string.h>

Funcin Descripcin
strlen(cad) Retorna la longitud de cad. No se
cuenta el nulo.
strcpy(cad1, cad2) Copia cad2 en cad1.
strcat(cad1, cad2) Une cad1 con cad2.


strcmp(cad1, cad2) Compara cad1 con cad2.
<0 si cad1<cad2
Retorna =0 si cad1=cad2
>0 si cad1>cad2
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 210

Ejemplo con Funciones de Cadenas


#include<stdio.h>
#include<string.h>
int main()
{char ap[50],no[50],apn[100]; int n;
printf("Apellidos: "); gets(ap);
printf("Nombres: "); gets(no);
strcpy(apn,ap); strcat(apn," ");
strcat(apn,no);
printf("%s %d caracteres\n",apn, strlen(apn));
n=strcmp(ap,no);
if(n>0) printf("%s>%s\n",ap,no);
else if(n<0) printf("%s<%s\n",ap,no);
else printf("%s=%s\n",ap,no);//n=0
system("pause");
}
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 211

Ejecucin

Apellidos: PEREZ LOPEZ


Nombres: JUAN CARLOS
PEREZ LOPEZ JUAN CARLOS 23 caracteres
PEREZ LOPEZ>JUAN CARLOS
Presione una tecla para continuar . . .
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 212

Ejercicio1

Dada una cadena leda por teclado, determinar si es


palndroma (un palndromo es una palabra que se lee
igual en dos sentidos, Ejemplo: arepera, Ana, etc.).

cad: a r e p e r a \0
0 1 2 3 i n-i-1 n-3 n-2 n-1 n

n=?
i=0,1,,?
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 213

Solucin1

cad: a r e p e r a \0
0 1 2 3 i n-i-1 n-3 n-2 n-1 n

n caracteres

conta=0 //cuenta letras diferentes


n = strlen(cad);
for(i=0;i<=(n-1)/2;i++)
if(cad[i]!=cad[n-i-1])
conta++;

PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 214

Ejercicio2

Leer una frase y visualizar cada palabra seguida del


nmero de letras que la componen. Por ejemplo:
Estas fiestas pascuas tome con moderacin
Se mostrara:
Estas 5
fiestas 7
pascuas 7
tome 4
con 3
moderacin 10
20 car.
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 215

Solucin2

Frase: Estas fiestas pascuas tome con moderacin


Primero la frase se guarda en un archivo:
Frase.txt
Estas fiestas pascuas tome con moderacin

Luego se lee del archivo palabra por palabra:


while(!feof(g)){
fscanf(g,"%s", cad);
printf("%-20s %d\n",cad, strlen(cad));
}

PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 216

Ejercicios Propuestos

Dada una cadena leda por teclado, convertir las letras


minsculas a maysculas.

Dada una cadena leda por teclado, invertir el orden de


las letras de cada palabra.

Dado un archivo, leer por teclado una cadena y


determinar cuantas veces se repite la cadena en el
archivo.

Dado un archivo, leer por teclado dos cadenas, buscar la


primera cadena en el archivo y reemplazarla por la
segunda cadena.
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 217

Laboratorio N 12

Estructuras o Registros Definicin

Tipos Simples y
Estructurados
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 218

Estructuras o Registros

Una estructura es un tipo de datos especial


utilizada para guardar informacin que contiene
diferentes tipos de datos.
Una estructura (Registro) es un tipo de dato
especial, que est compuesto por elementos
denominados campos, cada uno de los cuales
puede ser de un tipo de dato diferente.
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 219

Definicin de la Estructura

La estructura se define con un alias y se declara la


variable.

struct alias alias


{tipo1 campo1;
tipo2 campo2;
campo1 campo2
} variable;
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 220

Definicin de la Estructura

Es posible definir la estructura sin alias y declarar la


variable.

struct variable
{tipo1 campo1;
tipo2 campo2;
campo1 campo2
} variable;
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 221

Definicin de la Estructura

Se puede utilizar el alias para declarar la variable


en otra sentencia.

struct alias alias


{tipo1 campo1;
tipo2 campo2;
campo1 campo2
};

struct alias variable;


PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 222

Ejemplo
struct datos datos
{char coda[11];
char apenom[40];
int credap;
coda apenom credap prom
float prom;
};

struct datos alu1, alu2;


PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 223

Acceso a los campos de una Estructura

Para acceder a la informacin guardada en una


estructura, podemos hacer uso de dos operadores:
1.-El operador punto (.)

variable.campo

2.-El operador puntero flecha (->)

variable_puntero->campo
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 224

Acceso a los campos de una Estructura

Ejemplos:
strcpy(alu1.coda, 20130001A);
strcpy(alu1.apenom, Perez-Manuel);
alu1.credap=100;
alu1.prom=15.6;

Para utilizar el operador flecha, debemos hacer uso


de punteros.
struct datos *ptr;
ptr=&alu1;
strcpy(ptr->coda, 20130001A);
ptr->credap=100;
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 225

Asignacin directa

Dos variables estructura del mismo tipo pueden


asignarse directamente.
struct datos alu1, alu2;

alu2=alu1;

Lectura y Escritura
Es campo por campo, utilizando el operador punto.
scanf(%s,alu1.coda);
gets(alu1.apenom);
scanf(%d %f,&alu1.credap, &alu1.prom);
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 226

Arreglo de Estructuras
struct alias arreglo[#elementos];
xi

coda apenom credap prom

struct datos x[50];

scanf(%s,x[i].coda);
gets(x[i].apenom);
scanf(%d %f,&x[i].credap, &x[i].prom);
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 227

Ejercicio1

Leer por teclado la siguiente informacin de n


alumnos:
Cdigo
Apellidos y Nombres
Crditos Aprobados
Promedio
Guardar lo ledo en un archivo. Utilizar un arreglo
de estructuras.
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 228

Codificacin1
/*Ejemplo con registros o estructuras*/
#include<stdio.h>
struct datos //1:Definicion
{char coda[11]; char apenom[40];
int credap; float prom;
}; //Aqui punto y coma
int main()
{ //2: Declaracion de variable
struct datos x[50]; int i,n; FILE *g;
printf("n: "); scanf("%d",&n);
for(i=1;i<=n;i++){
printf("Alumno%d\n",i);
printf("Promedio: "); scanf("%f",&x[i].prom);
printf("Codigo: "); scanf("%s",x[i].coda);
getchar(); //Para el salto de linea
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 229

printf("Apellidos y Nombres: "); gets(x[i].apenom);


printf("Creditos: "); scanf("%d",&x[i].credap);
}
g=fopen("ALUMNOS.TXT","w");
for(i=1;i<=n;i++){
fprintf(g,"%s ",x[i].coda);
fprintf(g,"%-40s",x[i].apenom);
fprintf(g,"%05.2f ",x[i].prom);
fprintf(g,"%d\n",x[i].credap);
}
fclose(g);
system("pause");
}
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 230

Ejecucin1
n: 5
Alumno1
Promedio: 15.8
Codigo: 20120101A
Apellidos y Nombres: PEREZ LOPEZ JUAN CARLOS
Creditos: 120
Alumno2
Promedio: 10.9
Codigo: 20100101B
Apellidos y Nombres: RAMOS ESTRADA KEVIN FAUSTO
Creditos: 100
Alumno3
Promedio: 14.6
Codigo: 20110101C
Apellidos y Nombres: SANTIAGO LLEELLISH JOSE
Creditos: 200
Alumno4
Promedio: 13.7
Codigo: 20100101D
Apellidos y Nombres: OTERO MONTEZA ALEXANDER
Creditos: 190
Alumno5
Promedio: 19.9
Codigo: 20130101E
Apellidos y Nombres: MOYA CAHUANA CARLOS ARTURO
Creditos: 200
Presione una tecla para continuar . . .
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 231

ALUMNOS.TXT

20120101A PEREZ LOPEZ JUAN CARLOS 15.80 120


20100101B RAMOS ESTRADA KEVIN FAUSTO 10.90 100
20110101C SANTIAGO LLEELLISH JOSE 14.60 200
20100101D OTERO MONTEZA ALEXANDER 13.70 190
20130101E MOYA CAHUANA CARLOS ARTURO 19.90 200

40 car.
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 232

Laboratorio N 13

Punteros Definicin

Aritmtica de Punteros

Aplicaciones

You might also like