Anda di halaman 1dari 232

PROGRAMACION DIGITAL - CB412-I

CICLO 2014-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

COMPETENCIAS DEL CURSO


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
1.

PROGRAMACION DIGITAL - CB412-I

CICLO 2014-1

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

Entorno del PSeInt


MENU

HERRAMIENTAS

AREA DE
TRABAJO

LINEA DE
ESTADO

COMANDOS

PROGRAMACION DIGITAL - CB412-I

Creacin de Diagramas de Flujo

AREA DE
TRABAJO

COMANDOS

CICLO 2014-1

PROGRAMACION DIGITAL - CB412-I

Creacin de Diagramas de Flujo

CICLO 2014-1

PROGRAMACION DIGITAL - CB412-I

Operadores y Funciones

CICLO 2014-1

PROGRAMACION DIGITAL - CB412-I

CICLO 2014-1

Ejecucin del Diagrama de Flujo

PROGRAMACION DIGITAL - CB412-I

CICLO 2014-1

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

Ejecucin paso a paso

CICLO 2014-1

11

PROGRAMACION DIGITAL - CB412-I

Ejecucin paso a paso

CICLO 2014-1

12

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

Prueba de Escritorio

CICLO 2014-1

14

PROGRAMACION DIGITAL - CB412-I

Exportacin a C

CICLO 2014-1

15

PROGRAMACION DIGITAL - CB412-I

Entorno del DEV C++


MENU
HERRAMIENTAS

AREA DE
TRABAJO

LINEA DE
ESTADO

CICLO 2014-1

16

PROGRAMACION DIGITAL - CB412-I

CICLO 2014-1

17

Menu File (Archivo)


Nuevo
Nuevo
Archivo
Archivo Fuente
Fuente
Proyecto
Proyecto
Abrir
Abrir Proyecto
Proyecto oo Archivo
Archivo
Abrir
Abrir Archivo
Archivo Reciente
Reciente
Grabar
Grabar
Grabar
Grabar Como
Como
Grabar
Grabar Todo
Todo
Cerrar
Cerrar
Cerrar
Cerrar Todo
Todo
Propiedades
Propiedades
Importar
Importar
Exportar
Exportar
Imprimir
Imprimir
Configura
Configura Impresin
Impresin
Salir
Salir

PROGRAMACION DIGITAL - CB412-I

CICLO 2014-1

18

Menu Execute (Ejecutar)

Compilar
Compilar
Compila
Compila el
el archivo
archivo actual
actual
Ejecutar
Ejecutar
Parmetros
Parmetros
Compilar
Compilar yy Ejecutar
Ejecutar
Reconstruir
Reconstruir Todo
Todo
Revisar
Revisar Sintxis
Sintxis
Limpiar
Limpiar Resultados
Resultados
Anlisis
Anlisis de
de Perfil
Perfil
Reiniciar
Reiniciar ejecucin
ejecucin del
del programa
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
Comentario
/*Mayor de tres numeros*/
#include<stdio.h>
Directiva de Preprocesador.
Se incluye en el programa la librera de
main() {
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

Compilacin

CICLO 2014-1

21

(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

LAB1.C

COMPILACION

Archivo Objeto

PROGRAMACION DIGITAL - CB412-I

Compilacin

CICLO 2014-1

22

(Execute Compile)

El linker enlaza todos los archivos compilados


(archivo objeto y librerias pre-compiladas) y crea
un archivo .exe ejecutable.
Archivo Objeto
ENLACE
Librerias
Pre-compiladas

Archivo
Ejecutable

LAB1.EXE

PROGRAMACION DIGITAL - CB412-I

Compilacin

CICLO 2014-1

23

(Execute Compile)

La ventana de Progreso de Compilacin mostrar


los Errores y Warnings del programa:

PROGRAMACION DIGITAL - CB412-I

Ejecucin

CICLO 2014-1

24

(Execute Run)

El archivo ejecutable es independiente del DEV.

PROGRAMACION DIGITAL - CB412-I

Errores
Errores de Sintxis
Errores de Ejecucin
Errores Lgicos

CICLO 2014-1

25

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

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

30

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
C1x, C1y, r1
C2x, C2y, r2

Salida
Tangentes
Secantes
No hay contacto

PROGRAMACION DIGITAL - CB412-I

CICLO 2014-1

32

PROGRAMACION DIGITAL - CB412-I

Exportacin a C

CICLO 2014-1

33

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

+127

int

Entero

2 bytes

-215

+215 1

long

Largo

4 bytes

-231

+231 1

float

Punto
flotante

4 bytes -3.40 1038


-1.18 10-38

a +3.40 1038
a +1.18 10-38

8 bytes -1.70 10308


-2.70 10-307

a +1.70 10308
a +2.70 10-307

double Doble
precisin

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 identificador = valor inicial ;


opcional

PROGRAMACION DIGITAL - CB412-I

CICLO 2014-1

40

Operadores
Permiten realizar operaciones en el programa.
+
*
/
%

Aritmticos
Suma
Resta
Multiplicacin
Divisin
Resto divisin entera

Incrementales
++ Incremento en 1
-- Decremento en 1

Lgicos
&& Y
|| O
! Negacin

()
[]
.

Primarios
Llamada funcin
Indice de arreglo
Miembro estructura

PROGRAMACION DIGITAL - CB412-I

CICLO 2014-1

41

Operadores
Permiten realizar operaciones en el programa.
De Asignacin
= Asignacin simple
+= Asignacin suma
-= Asignacin resta
*= Asignacin
multiplicacin
/= Asignacin divisin
%= Asignacin resto

==
<
>
<=
>=
!=

Relacionales
Igual que
Menor que
Mayor que
Menor o igual que
Mayor o igual que
No igual que

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;
n=m/5;
++m;
m++;
&m
funcion()

Divisin entera (12)


Expresin variable
(2.4 o 2)?
Incrementa el valor de m en 1
Direccin en memoria de m
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, expresin);

Especificadores de Formato
Especificadores Adicionales
Secuencias de Escape
Texto

Constante
Variable

PROGRAMACION DIGITAL - CB412-I

CICLO 2014-1

47

Especificadores de Formato
Especificadores de
Formato

Tipo de la expresin

%c
%d
%ld
%f
%lf
%s

Caracter
Entero
Entero largo
Punto Flotante
Doble Precisin
Cadena de Caracteres

PROGRAMACION DIGITAL - CB412-I

CICLO 2014-1

48

Especificadores de Formato
Especificadores
Adicionales

Efecto

Ancho
.Precisin
+
0

Justifica a la derecha
Redondea al n de decimales
Justifica a la izquierda
Muestra el signo del valor
Llena con ceros segn el ancho

PROGRAMACION DIGITAL - CB412-I

CICLO 2014-1

Secuencias de Escape
Secuencia
de Escape
\n
\t
\r
\
\
\\

Efecto
Salto de lnea
Tabulador
Retorno de carro
Comilla simple
Doble comilla
Diagonal

49

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.

if(condicin){
sentencia;
}
Las llaves son opcionales
cuando hay una sola sentencia.

condicin
V
sentencia

PROGRAMACION DIGITAL - CB412-I

CICLO 2014-1

52

Sentencia if
Ejm:

nota10
if (nota>=10)
printf(Aprobado); V
Esc
Aprobado

PROGRAMACION DIGITAL - CB412-I

53

CICLO 2014-1

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
sent_V;
}
sent_V
else {
sent_F;
}

condicin

sent_F

PROGRAMACION DIGITAL - CB412-I

Sentencia if else
Ejm:

Esc
Aprobado

CICLO 2014-1

~
F

nota10

Esc
Desaprobado

~
if (nota>=10)
printf(Aprobado);
else
printf(Desaprobado);

54

PROGRAMACION DIGITAL - CB412-I

CICLO 2014-1

55

Sentencia if else mltiple


if(cond1)
V
sent1;
else if(cond2)
sent1
sent2;
else if(cond3)
sent3;
else if()

[else
sentn;]

~
cond1
V

sent2

cond2
V

sent3

cond3

sentn

PROGRAMACION DIGITAL - CB412-I

CICLO 2014-1

56

Sentencia if else mltiple


V
Esc
Aprobado

10nota 20

V
Esc
Desaprobado

10> nota6

V
Esc
Reprobado

6> nota 0

F
Esc
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
Suma
Resta
Multiplicacin
Divisin
Resto divisin entera

Incrementales
++ Incremento en 1
-- Decremento en 1

Lgicos
&& Y
|| O
! Negacin

()
[]
.

Primarios
Llamada funcin
Indice de arreglo
Miembro estructura

PROGRAMACION DIGITAL - CB412-I

CICLO 2014-1

61

Operadores
De Asignacin
= Asignacin simple
+= Asignacin suma
-= Asignacin resta
*= Asignacin
multiplicacin
/= Asignacin divisin
%= Asignacin resto

==
<
>
<=
>=
!=

Relacionales
Igual que
Menor que
Mayor que
Menor o igual que
Mayor o igual que
No igual que

PROGRAMACION DIGITAL - CB412-I

Ejemplo4.-

Inicio
Leer
x, y
xx+5
yy+1
z resto entero(x/y)
Escribir
x, y, z
Fin

CICLO 2014-1

62

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

Ejemplo4.-

CICLO 2014-1

64

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.

if(expresion)
sentencia;

expresin
V
sentencia

La sentencia compuesta
forma un bloque { }

PROGRAMACION DIGITAL - CB412-I

CICLO 2014-1

67

Sentencia if
Ejm:

nota10
if (nota>=10)
printf(Aprobado); V
Esc
Aprobado

PROGRAMACION DIGITAL - CB412-I

68

CICLO 2014-1

Sentencia if else
Permite realizar una bifurcacin, ejecutando una
parte u otra del programa, segn se cumpla o no
una determinada condicin.

V
if(expresion)
sent1;
else
sent1
sent2;

expresin

sent2

PROGRAMACION DIGITAL - CB412-I

CICLO 2014-1

Sentencia if else

Ejm:
V

Esc
Aprobado

nota10

Esc
Desaprobado

if (nota>=10)
~
printf(Aprobado);
else
printf(Desaprobado);

69

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)
V
sent1;
else if(expr2)
sent1
sent2;
else if(expr3)
sent3;
else if()

[else
sentn;]

~
expr1
V

sent2

expr2
V

sent3

expr3

sentn

PROGRAMACION DIGITAL - CB412-I

CICLO 2014-1

72

Sentencia if else mltiple


V
Esc
Aprobado

10nota 20

V
Esc
Desaprobado

10> nota6

V
Esc
Reprobado

6> nota 0

F
Esc
Nota no Vlida

PROGRAMACION DIGITAL - CB412-I

CICLO 2014-1

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);

73

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;
cte1
case cte2:
sent2;
break; sent1

case cten:
sentn;
break;
[default:
sent;]
}

~
cte2

expr

cten

default

sent2

sentn

sent

PROGRAMACION DIGITAL - CB412-I

CICLO 2014-1

76

Sentencia switch

~
3

lados

default

Esc

Esc

Esc

Esc

Tringulo

Cuadrado

Pentgono

Otro

PROGRAMACION DIGITAL - CB412-I

Sentencia switch
Ejemplo:
switch(lados) {
case 3:
printf(Tringulo);
break;
case 4:
printf(Cuadrado);
break;
case 5:
printf(Pentgono);
break;
default:
printf(Otro);
}

CICLO 2014-1

77

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
parcial, final y promedio
alumno de programacin
promedio y determinar
desaprobado o reprobado.

notas del examen


de prcticas de un
digital. Calcular su
si est aprobado,

PROGRAMACION DIGITAL - CB412-I

CICLO 2014-1

80

Laboratorio N 3
Funciones
Matemticas

Funciones Trigonomtricas
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)
Tipo del valor devuelto

arco tangente(x)

Argumento o parmetro

PROGRAMACION DIGITAL - CB412-I

CICLO 2014-1

83

Potencias y Logaritmos
Funcin

Descripcin

double pow(double x,
double y)
double exp(double x)

Devuelve el valor de xy

double log(double x)

logaritmo neperiano de x

Devuelve el valor de ex

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)
Tipo del valor devuelto

tangente hiperblica(x)

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
A(xa, ya)

xa xb 2 ya yb 2

PROGRAMACION DIGITAL - CB412-I

CICLO 2014-1

Inicio
Leer
xa, ya, xb, yb

longitud

xa xb 2 ya yb 2
Escribir
longitud
Fin

87

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(yayb,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.

c=?

a
b

ang=?

PROGRAMACION DIGITAL - CB412-I

CICLO 2014-1

91

Inicio
Leer
a, b

c a2 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 = %.2lf\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

94

CICLO 2014-1

Evaluar la funcin:

f ( x) seno( x) e

cos( x )

PROGRAMACION DIGITAL - CB412-I

CICLO 2014-1

Inicio
Leer
x

f seno(x) e cos (x) x 2


Escribir
f
Fin

95

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
Condicionales de
Control de Flujo

Sentencia if
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.

if(expresion)
sentencia;

expresin
V
sentencia

La sentencia compuesta
forma un bloque { }

PROGRAMACION DIGITAL - CB412-I

CICLO 2014-1

101

Sentencia if
Ejm:

nota10
if (nota>=10)
printf(Aprobado); V
Esc
Aprobado

PROGRAMACION DIGITAL - CB412-I

102

CICLO 2014-1

Sentencia if else
Permite realizar una bifurcacin, ejecutando una
parte u otra del programa, segn se cumpla o no
una determinada condicin.

V
if(expresion)
sent1;
else
sent1
sent2;

expresin

sent2

PROGRAMACION DIGITAL - CB412-I

CICLO 2014-1

Sentencia if else

Ejm:
V

Esc
Aprobado

nota10

Esc
Desaprobado

if (nota>=10)
~
printf(Aprobado);
else
printf(Desaprobado);

103

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)
V
sent1;
else if(expr2)
sent1
sent2;
else if(expr3)
sent3;
else if()

[else
sentn;]

~
expr1
V

sent2

expr2
V

sent3

expr3

sentn

PROGRAMACION DIGITAL - CB412-I

CICLO 2014-1

106

Sentencia if else mltiple


V
Esc
Aprobado

10nota 20

V
Esc
Desaprobado

10> nota6

V
Esc
Reprobado

6> nota 0

F
Esc
Nota no Vlida

PROGRAMACION DIGITAL - CB412-I

CICLO 2014-1

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);

107

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;
cte1
case cte2:
sent2;
break; sent1

case cten:
sentn;
break;
[default:
sent;]
}

~
cte2

expr

cten

default

sent2

sentn

sent

PROGRAMACION DIGITAL - CB412-I

CICLO 2014-1

110

Sentencia switch

~
3

lados

default

Esc

Esc

Esc

Esc

Tringulo

Cuadrado

Pentgono

Otro

PROGRAMACION DIGITAL - CB412-I

Sentencia switch
Ejemplo:
switch(lados) {
case 3:
printf(Tringulo);
break;
case 4:
printf(Cuadrado);
break;
case 5:
printf(Pentgono);
break;
default:
printf(Otro);
}

CICLO 2014-1

111

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
parcial, final y promedio
alumno de programacin
promedio y determinar
desaprobado o reprobado.

notas del examen


de prcticas de un
digital. Calcular su
si est aprobado,

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

Laboratorio N 5

CICLO 2014-1

115

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.

expresin

while (expresion)
sentencia;

V
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
nota

Escribir
prom

0 nota 20
V
suma suma + nota
conta conta + 1
Leer
nota

Fin

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;
while (expresion);

sentencia
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

Inicio
serie 0
error 1
conta 0
Leer
x
serie serie + error
conta conta + 1
error error * x / conta
V

|error| > 10-4


F

Escribir
serie
Fin

123

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

Sentencia for
for(inicial; expr; increm)
sentencia;

~
Inicial; expr; increm

sentencia

CICLO 2014-1

125

PROGRAMACION DIGITAL - CB412-I

Ejemplo

CICLO 2014-1

126

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

num > mayor

mayor num

V
mayor num

i 2..n
Leer
num
num < menor
V
menor num

Escribir
mayor,menor
Fin

PROGRAMACION DIGITAL - CB412-I

Laboratorio N 6

CICLO 2014-1

129

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]

subndice
50 elementos

x[49]

PROGRAMACION DIGITAL - CB412-I

CICLO 2014-1

132

Arreglo Lineal
Lectura y Escritura:
scanf(formato,&elemento[i-simo]);
printf(formato,elemento[i-simo]);
Ejemplo:
scanf(%d, &x[i]);

~
Leer
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
xi (i 1..N)

media
desv

PROGRAMACION DIGITAL - CB412-I

Diagrama PSeInt

CICLO 2014-1

134

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

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 . . .

136

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.
ones
ci
compara

x1

x2

x3

x4

comparacion
es

Entradas

Salidas

N
xi (i 1..N)

moda
vecesmoda

xN

PROGRAMACION DIGITAL - CB412-I

Diagrama PSeInt

CICLO 2014-1

138

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

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");
}

140

PROGRAMACION DIGITAL - CB412-I

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 . . .

CICLO 2014-1

141

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
An 1

A2
An 2

...

...
Ak

A( m 1) n 1

A( m 1) n 2

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

...
...

An

A2 n

... ...

... Amn

m*n

B1
Bn 1

B2
Bn 2

...

...

B( m 1) n 1

B( m 1) n 2

Entradas

Salidas

m, n
Ai (i 1..m*n)
Bi (i 1..m*n)

Ci (i 1..m*n)

... Bn

... B2 n

...
...
Bk

... Bmn

m*n

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

PROGRAMACION DIGITAL - CB412-I

Diagrama PSeInt

CICLO 2014-1

143

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

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");
}

CICLO 2014-1

145

PROGRAMACION DIGITAL - CB412-I

Ejecucin
Nro
Nro
A:
9 3
8 6
5 2
B:
5 7
9 6
4 9
C:

filas: 3
columnas: 4
8 1
4 0
3 4
2 3
1 1
3 7

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 . . .

CICLO 2014-1

146

PROGRAMACION DIGITAL - CB412-I

CICLO 2014-1

147

Arreglo Bidimensional
Tiene dos subndices.
Declaracin:
tipo nombre_matriz[Nfilas][Ncolumnas];

Ejemplo:
col 0

int x[20][30];
col 1

col 2

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


fila 1 x[1][0] x[1][1] x[1][2]

fila 19 x[19][0] x[19][1] x[19][2]


fila 0

30 columnas

col 29

x[0][29]
x[1][29]

x[19][29]

20
filas

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

Laboratorio N 7

CICLO 2014-1

149

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

Tabla ASCII

Fuente: http://www.elcodigoascii.com.ar/

CICLO 2014-1

151

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
Datos
ENTRADA

Programa

Pasos a seguir:
1. Declarar variable FILE
2. Abrir el archivo
3. Leer y/o Escribir
4. Cerrar el archivo

Archivo de
Resultados
SALIDA

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
r
w
a
r+
w+
a+

Descripcin
Abre un Archivo para lectura (ENTRADA)
Crea un Archivo para escritura (SALIDA)
Abre un Archivo para aadir al final (SALIDA)
Abre un Archivo para lectura/escritura
Crea un Archivo para lectura/escritura
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
formato.

Lee la variable desde el archivo segn el

~
Leer (var_archi)
variable

PROGRAMACION DIGITAL - CB412-I

CICLO 2014-1

157

3. Leer y/o Escribir


fprintf(var_archi, formato, expresin);
Donde:
fprintf
formato.

Escribe la expresin al archivo segn el

~
Escribir (var_archi)
expresin

PROGRAMACION DIGITAL - CB412-I

CICLO 2014-1

4. Cerrar el Archivo
fclose(var_archi);
fcloseall();
Donde:
fclose

Cierra el archivo.

fcloseall Cierra todos los archivos abiertos.

fclose(var_archi)

fcloseall( )

158

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

Lectura del archivo usando while con !feof()

!feof(var_archi)

V
sentencias

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

162

PROGRAMACION DIGITAL - CB412-I

CICLO 2014-1

Lectura del archivo usando for con !feof()

~
Inicial; !feof(var_archi); increm

sentencia

for(Inicial; !feof(var_archi); increm){


//Sentencias de Lectura

163

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

9 3 8 1
8 6 4 0
5 2 3 4

Matrizt.txt

9
3
8
1

8
6
4
0

5
2
3
4

PROGRAMACION DIGITAL - CB412-I

Laboratorio N 8

CICLO 2014-1

166

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
FUNCION 11

PROGRAMA
PROGRAMA

DIVIDIR
DIVIDIR

FUNCION
FUNCION 22

FUNCION
FUNCION 33

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 pasados por referencia.

PROGRAMACION DIGITAL - CB412-I

CICLO 2014-1

169

Parmetros pasados por Valor


Por ejemplo la funcin Valor(x,):
IDA
pia
Se pasa una co
del valor de x

z=Valor(x,);
VUELTA
Retorna
un valor
(opc

Valor
x,

ional)

: nombre de la funcin
: parmetros

Definicin
Valor(x)

PROGRAMACION DIGITAL - CB412-I

CICLO 2014-1

170

Parmetros pasados por Referencia


Por ejemplo la funcin Referencia(*x,):
IDA
cin
c
e
ir
d
la
a
s
a
p
e
S
x
en memoria de

z=Referencia(&x,);
VUELTA
Retorna
un valor
(opc

ional)

Referencia : nombre de la funcin


x,
: parmetros

Definicin
Referencia(*x)

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
3. Definicin

1. Declaracin

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.
Declaracin y
Definicin:
parmetro_formal

Llamado:
parmetro_actual

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

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

177

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

Codificacin2
double grad_a_rad(int grad, int min)
{ double ang;
ang=(grad+min/60.0)*PI/180;
return ang;
}

180

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

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;
}

182

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

Laboratorio N 9

CICLO 2014-1

185

PROGRAMACION DIGITAL - CB412-I

CICLO 2014-1

186

Parmetros pasados por Referencia


Por ejemplo la funcin Referencia(*x,):
IDA
cin
c
e
ir
d
la
a
s
a
p
e
S
x
en memoria de

z=Referencia(&x,);
VUELTA
Retorna
un valor
(opc

ional)

Referencia : nombre de la funcin


x,
: parmetros

Definicin
Referencia(*x)

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.
Declaracin y
Definicin
*parmetro_formal

Llamado
&parmetro_actual
parmetro_actual

Memoria de
la funcin

PROGRAMACION DIGITAL - CB412-I

CICLO 2014-1

188

1. Declaracin
tipo funcion(*parmetros formales);
Donde:
tipo
funcin

: tipo de dato del valor retornado por la 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
funcin

: tipo de dato del valor retornado por la 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
*n

lee_vector(x, &n)

i 1..*n

i 1..n

Leer
xi

Escribir
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
DEFINICION

intercambio(x, y, n)
i 1..n
t xi
xi yi
yi t

LLAMADO

lee_vector(x, &n)
LLAMADO

lee_vector(y, &n)
LLAMADO

intercambio(x, y, n)
i 1..n
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

Inicio

lee_matriz(A, *m, *n)


LLAMADO

Leer
*m , *n

lee_matriz(A, &m, &n)

i 1..*m

i 1..m

j 1..*n

j 1..n

Leer
Ai j

Escribir
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

Diagrama de Flujo4
DEFINICION

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

Fin

LLAMADO

CICLO 2014-1

198

Inicio

lee_matriz(A,&m,&n)
LLAMADO

lee_matriz(B,&n,&p)
LLAMADO

multiplica(A,B,C,m,n,p)

i 1..m
j 1..n
Escribir
Ci j

Fin

PROGRAMACION DIGITAL - CB412-I

Laboratorio N 10

CICLO 2014-1

199

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)
V

n>0

LLAMADO
RECURSIVO

p x*pot(x,n-1)

Inicio
F

p1

return p
Fin

LLAMADO

Leer
x, n

p pot(x,n)
Escribir
p
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)
V
LLAMADO
RECURSIVO

a%b>0

m mcd(b,a%b)

Inicio
F

mb

return m
Fin

Leer
a, b
LLAMADO

m mcd(a,b)
Escribir
m
Fin

PROGRAMACION DIGITAL - CB412-I

Laboratorio N 11

CICLO 2014-1

205

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
0

M u n d o \n
4

12 caracteres

10

\0
11

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

Lectura de Cadenas
Lee hasta encontrar espacio o salto de lnea.

207

Leer
cad

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

Escritura de Cadenas
char car[30];

CICLO 2014-1

208

~
Escribir
cad

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
strlen(cad)

Descripcin

strcpy(cad1, cad2)

Retorna la longitud de cad. No se


cuenta el nulo.
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
0

n=?
i=0,1,,?

n-i-1

\0

n-3

n-2

n-1

PROGRAMACION DIGITAL - CB412-I

CICLO 2014-1

213

Solucin1
cad: a r e p
0

n-i-1

\0

n-3

n-2

n-1

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

Laboratorio N 12

CICLO 2014-1

217

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
{tipo1 campo1;
tipo2 campo2;

} variable;

alias

campo1 campo2

PROGRAMACION DIGITAL - CB412-I

CICLO 2014-1

220

Definicin de la Estructura
Es posible definir la estructura sin alias y declarar la
variable.
struct
{tipo1 campo1;
tipo2 campo2;

} variable;

variable

campo1 campo2

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
{tipo1
tipo2

};

alias

alias
campo1;
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;
apeno
coda
credap prom
m
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

apeno
coda
credap prom
m

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

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 . . .

CICLO 2014-1

230

PROGRAMACION DIGITAL - CB412-I

CICLO 2014-1

231

ALUMNOS.TXT
20120101A
20100101B
20110101C
20100101D
20130101E

PEREZ LOPEZ JUAN CARLOS


RAMOS ESTRADA KEVIN FAUSTO
SANTIAGO LLEELLISH JOSE
OTERO MONTEZA ALEXANDER
MOYA CAHUANA CARLOS ARTURO

40 car.

15.80
10.90
14.60
13.70
19.90

120
100
200
190
200

PROGRAMACION DIGITAL - CB412-I

CICLO 2014-1

232

Laboratorio N 13
Punteros

Definicin

Aritmtica de Punteros

Aplicaciones

Anda mungkin juga menyukai