Professional Documents
Culture Documents
PROGRAMACION DIGITAL
LABORATORIO N 1
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 4
AREA DE COMANDOS
TRABAJO
LINEA DE
ESTADO
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 5
AREA DE COMANDOS
TRABAJO
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 6
Operadores y Funciones
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 8
Prueba de Escritorio
Prueba de Escritorio
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 15
Exportacin a C
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 16
HERRAMIENTAS
AREA DE
TRABAJO
LINEA DE
ESTADO
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 17
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
Ejemplo de Programa 1
/*Mayor de tres numeros*/ Comentario
LAB1.C
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 22
Archivo Objeto
Archivo
ENLACE
Ejecutable
Librerias
Pre-compiladas LAB1.EXE
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 23
Errores
Errores de Sintxis
Errores de Ejecucin
Errores Lgicos
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 26
Errores de Sintxis
Errores de Ejecucin
Errores Lgicos
PROGRAMACION DIGITAL
LABORATORIO N 2
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
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 31
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
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
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
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
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
Especificadores de Formato
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
Especificadores de Formato
Secuencias de Escape
Texto
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 51
Decisiones: Sentencia if
Sentencia if
Ejm: ~
F
nota10
if (nota>=10)
printf(Aprobado); V
Esc
Aprobado
~
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 53
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
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
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
PROGRAMACION DIGITAL
LABORATORIO N 3
CICLO 2014-1
Operadores
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
Ejemplo4.-
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 65
Sentencia if
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
~
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
else if(expr3)
sent2 V F
sent3; expr3
else if()
sent3 sentn
[else
sentn;]
~
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 72
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
Ejm:
Sentencia switch
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
~
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:
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 Matemticas
#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)
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
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)
Ejercicio1
Dados dos puntos A(xa, ya) y B(xb, yb), calcular la
longitud de la lnea AB.
B(xb, yb)
Inicio
Leer
xa, ya, xb, yb
Fin
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 88
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
angm(ang - ang ) * 60
Escribir
c, ||ang||, angm
Fin
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 92
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 switch
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 99
Sentencia if
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
~
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
else if(expr3)
sent2 V F
sent3; expr3
else if()
sent3 sentn
[else
sentn;]
~
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 106
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
Ejm:
Sentencia switch
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
~
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:
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
PROGRAMACION DIGITAL
GUIA DE LABORATORIO
CICLO 2013-2
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 115
Laboratorio N 5
Sentencia do while
Sentencia for
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 116
Sentencia while
~
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 118
Ejemplo
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
El MCD es 91
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 121
Sentencia do while
do sentencia
sentencia;
while (expresion); V
expresin
F
~
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 122
Ejemplo
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
conta conta + 1
V
|error| > 10-4
F
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 124
Sentencia for
Sentencia for
~
Inicial; expr; increm
sentencia
~
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 126
Ejemplo
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 127
Ejemplo
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
Tipos:
Arreglo Lineal
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
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
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
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
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];
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
2. Abrir el Archivo
4. Cerrar el Archivo
Fin de Archivo
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 150
Archivo
Tipos:
Tabla ASCII
Fuente: http://www.elcodigoascii.com.ar/
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 152
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
FILE *var_archi;
Donde:
2. Abrir el Archivo
var_archi=fopen(archivo, modo);
Donde:
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
Donde:
fscanf Lee la variable desde el archivo segn el
formato.
~
Leer (var_archi)
variable
~
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 157
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
Fin de Archivo
Archivo
EOF
Archivo
de
Lectura
EOF
!feof(var_archi) ser Verdadero mientras no se alcance
el EOF.
negacin
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 162
V
sentencias
~
while(!feof(var_archi)){
//Sentencias de Lectura
}
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 163
sentencia
~
for(Inicial; !feof(var_archi); increm){
//Sentencias de Lectura
}
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 164
Ejercicio2
Ejercicio3
Laboratorio N 8
Funcin
Llamado
Definicin
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 167
Funcin
DIVIDIR FUNCION 2
PROGRAMA
FUNCION 3
Paso de Parmetros
Definicin
Valor(x)
z=Valor(x,);
Definicin
Referencia(*x)
z=Referencia(&x,);
Valor Retornado
1. Declaracin
2. Llamado 1. Declaracin
3. Definicin
2. Llamado
3. Definicin
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 173
Llamado: Declaracin y
parmetro_actual Definicin:
parmetro_formal
parmetro formal
Memoria de la
Funcin
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 174
1. Declaracin
Donde:
2. Llamado
Donde:
3. Definicin
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
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
Ejemplo2
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
Ejemplo3
Planteamiento
Que parmetros necesita la funcin?
ninguno
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
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
Laboratorio N 9
Funcin
Llamado
Definicin
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 186
Definicin
Referencia(*x)
z=Referencia(&x,);
Llamado Declaracin y
Definicin
*parmetro_formal
&parmetro_actual
parmetro_actual
Memoria de
la funcin
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 188
1. Declaracin
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
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
Donde:
Ejercicio1
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
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
Ejercicio3
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
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
Llamado
Definicin
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 200
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
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
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
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 &
~
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
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
Ejecucin
Ejercicio1
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
Ejercicio2
Solucin2
Ejercicios Propuestos
Laboratorio N 12
Tipos Simples y
Estructurados
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 218
Estructuras o Registros
Definicin de la Estructura
Definicin de la Estructura
struct variable
{tipo1 campo1;
tipo2 campo2;
campo1 campo2
} variable;
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 221
Definicin de la Estructura
Ejemplo
struct datos datos
{char coda[11];
char apenom[40];
int credap;
coda apenom credap prom
float prom;
};
variable.campo
variable_puntero->campo
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 224
Ejemplos:
strcpy(alu1.coda, 20130001A);
strcpy(alu1.apenom, Perez-Manuel);
alu1.credap=100;
alu1.prom=15.6;
Asignacin directa
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
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
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
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
40 car.
PROGRAMACION DIGITAL - CB412-I CICLO 2014-1 232
Laboratorio N 13
Punteros Definicin
Aritmtica de Punteros
Aplicaciones