Académique Documents
Professionnel Documents
Culture Documents
PROGRAMACION DIGITAL
LABORATORIOS
CICLO 2016-II
Introduccin
1. Competencias
2. Metodologa
3. Cronograma
4. Temas
5. Software
6. Entorno
4. Evaluacin
5. Bibliografa
Metodologa1
En las sesiones de laboratorio, el alumno experimenta la
creacin y ejecucin de un programa real, mediante la
interaccin directa con el computador.
El docente de laboratorio dirige al alumno en el desarrollo
de los programas y lo evala en dos prcticas de uso de
la computadora previo a las evaluaciones de los
Exmenes Parcial y Final.
El docente se apoya de medios escritos y audio-visuales,
como separatas, pizarra y proyecciones multimedia as
como el uso del Aula Virtual
Cronograma de Laboratorios1
Temas de Laboratorios1
Semana Laboratorio Tema
1 0 Introduccin. Entorno PSeInt. Entorno DEV.
2 1 Creacin y Ejecucin de Diagramas de Flujo. Paso a paso. Prueba de Escritorio.
3 2 Edicin, Compilacin y Ejecucin de un programa C. Elementos del lenguaje C.
4 3 Sentencias de entrada y salida. Decisiones y bifurcaciones.
5 4 Ciclos controlados y de seleccin. Principales funciones matemticas.
6 5 Archivos tipo texto. Arreglos lineales.
7 PL1 Primera Prctica de Laboratorio
8 EXAMEN PARCIAL
9 6 Arreglos bidimensionales.
10 7 Funciones.
11 8 Paso de parmetros.
12 9 Cadenas de caracteres.
13 10 Arreglos de cadenas.
14 11 Registros.
15 PL2 Segunda Prctica de Laboratorio
16 EXAMEN FINAL
Software1
PSeInt
Construccin y Ejecucin de
Diagramas de Flujo.
http://pseint.sourceforge.net/
DEV C++
Edicin y Ejecucin de
Programas en lenguaje C
https://sourceforge.net/projects/orwelldevcpp/
AREA DE COMANDOS
TRABAJO
LINEA DE
ESTADO
PROGRAMACION DIGITAL - CB412 CICLO 2016-2 9
HERRAMIENTAS
AREA DE
TRABAJO
LINEA DE
ESTADO
PROGRAMACION DIGITAL - CB412 CICLO 2016-2 10
Evaluacin1
Bibliografa1
1. MARZAL, Andrs; GRACIA, Isabel
Introduccin a la Programacin con C
Departamento de Lenguajes y Sistemas Informticos
Universitat Jaume I, Espaa, 2004.
2. KERNIGHAN, Brian; RITCHIE, Dennis
El Lenguaje de Programacin C
Editorial Prentice Hall, Estados Unidos, 1991.
3. DEL VALLE SOTELO, Juan Carlos
lgebra Lineal para Estudiantes de Ingeniera y Ciencias
Editorial McGraw Hill, Mxico, 2011.
1: Silabo ABET de Programacin Digital 2016-II
PROGRAMACION DIGITAL - CB412 CICLO 2016-2 12
PROGRAMACION DIGITAL
LABORATORIO N 1
CICLO 2016-II
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 y Prueba de Escritorio.
PROGRAMACION DIGITAL - CB412 CICLO 2016-2 14
AREA DE COMANDOS
TRABAJO
LINEA DE
ESTADO
PROGRAMACION DIGITAL - CB412 CICLO 2016-2 15
AREA DE COMANDOS
TRABAJO
PROGRAMACION DIGITAL - CB412 CICLO 2016-2 16
Creacin de
Diagramas
de Flujo
PROGRAMACION DIGITAL - CB412 CICLO 2016-2 17
Operadores y Funciones
PROGRAMACION DIGITAL - CB412 CICLO 2016-2 18
Prueba de Escritorio
PROGRAMACION DIGITAL - CB412 CICLO 2016-2 22
Ejercicios
1. Se leen las coordenadas (x, y) de un tringulo y un
punto P (px, py). Determinar si el punto P est en el
interior o no del tringulo.
x
2. Dados n valores x, determinar el mayor valor, el menor
valor, el promedio de valores y la desviacin estndar.
PROGRAMACION DIGITAL - CB412 CICLO 2016-2 23
Ejercicios
3. Telefnica del Per ha diseado los siguientes planes
para sus usuarios de telefona fija:
Plan Min. Libres Costo por min. adicional % Dscto.
1 300 0.10 0%
2 200 0.08 5%
PROGRAMACION DIGITAL
LABORATORIO N 2
CICLO 2016-II
Laboratorio N2
Objetivos
Ejercicio1
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 hay
contacto entre ellas.
Entrada Salida
C1x, C1y, r1 Tangentes
C2x, C2y, r2 Secantes
No hay contacto
PROGRAMACION DIGITAL - CB412 CICLO 2016-2 27
PROGRAMACION DIGITAL - CB412 CICLO 2016-2 28
Codigo PSeInt
Proceso Circunferencias
Leer c1x,c1y,r1
Leer c2x,c2y,r2
d<-rc((c1x-c2x)^2+(c1y-c2y)^2)
Si d<r1+r2 Y d>abs(r1-r2) Entonces
Escribir 'Son Secantes'
Sino
Si d>r1+r2 O d<abs(r1-r2) Entonces
Escribir 'No se Tocan'
Sino
Escribir 'Son Tangentes'
FinSi
FinSi
FinProceso
PROGRAMACION DIGITAL - CB412 CICLO 2016-2 29
Exportacin a C
PROGRAMACION DIGITAL - CB412 CICLO 2016-2 30
Codigo C
//Circunferencias Tangentes, Secantes o no se Tocan
#include<stdio.h>
#include<math.h>
int main() {
float c1x,c1y,c2x,c2y,d,r1,r2;
scanf("%f %f %f",&c1x,&c1y,&r1);
scanf("%f %f %f",&c2x,&c2y,&r2);
d = sqrt(pow((c1x-c2x),2)+pow((c1y-c2y),2));
if (d<r1+r2 && d>abs(r1-r2)) {
printf("Son Secantes\n");
} else {
if (d>r1+r2 || d<abs(r1-r2)) {
printf("No se Tocan\n");
} else {
printf("Son Tangentes\n");
}
}
}
PROGRAMACION DIGITAL - CB412 CICLO 2016-2 31
HERRAMIENTAS
AREA DE
TRABAJO
LINEA DE
ESTADO
PROGRAMACION DIGITAL - CB412 CICLO 2016-2 32
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 CICLO 2016-2 34
Lenguaje de Programacin C
Terminal
Inicio int main(){
Fin }
PROGRAMACION DIGITAL - CB412 CICLO 2016-2 36
Comentarios
//Comentario en una lnea
/*Comentario en
varias lneas*/
Declaracin de Variables
tipo variable;
char caracter
int entero
long entero largo
float punto flotante
double doble precisin
PROGRAMACION DIGITAL - CB412 CICLO 2016-2 37
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 CICLO 2016-2 38
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 CICLO 2016-2 39
Procesos
var=expresion;
var expresin
var=var+delta;
var var + delta
var+=delta;
var=var+1;
var var + 1
var++;
a=b%2;
a b Resto 2
PROGRAMACION DIGITAL - CB412 CICLO 2016-2 40
Errores de Sintxis
prrintf("\n Hola mundo ");
Errores de Ejecucin
c=15/0; /*No tiene errores de sintaxis*/
Errores Lgicos
Si en vez de la instruccin:
a=b+c;
hubiera escrito:
a=b*c;
PROGRAMACION DIGITAL - CB412 CICLO 2016-2 42
PROGRAMACION DIGITAL
LABORATORIO N 3
CICLO 2016-II
Laboratorio N3
Objetivos
Utilizar Sentencias de Ejecucin:
Lectura
Escritura
Decisin
Selector mltiple
PROGRAMACION DIGITAL - CB412 CICLO 2016-2 44
Lectura
Leer
scanf(formato,&Var);
Var
Especificadores de formato
%c carcter
%d entero
%ld entero largo
%f punto flotante
%lf doble precisin
%g punto flotante o notacin cientfica
con signo, el que sea ms corto
PROGRAMACION DIGITAL - CB412 CICLO 2016-2 45
Ejemplos de Lectura
Leer Leer
n x1,y1
scanf(%d,&n);
scanf(%f,&x1);
scanf(%f,&y1);
scanf(%d %f %f,&n,&x1,&y1);
PROGRAMACION DIGITAL - CB412 CICLO 2016-2 46
Escritura
Escribir
printf(formato,Var);
Var
Secuencias de Escape
\n salto de lnea
\t tabulador
\ doble comilla
\\ diagonal
PROGRAMACION DIGITAL - CB412 CICLO 2016-2 47
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 CICLO 2016-2 48
Ejemplos de Escritura
Escribir Escribir
printf(Perimetro= %f,perim);
printf(Perimetro= %f\n,d);
printf(Perimetro= %.3f\n,d);
printf(Perimetro= %7.3f\n,d);
Decisin
V F
Condicin
V
Sentencias F
Sentencias
if(Condicin){
Sentencias V;
}
else {
Sentencias F;
}
PROGRAMACION DIGITAL - CB412 CICLO 2016-2 50
Ejemplo de Decisin
Codificacin
//Crditos permitidos segn el promedio ponderado
#include<stdio.h>
int main(){
float pp;
int credmax;
printf("Promedio= ");
scanf("%f",&pp);
if(pp<7) credmax=16;
else if(pp<10) credmax=20;
else if(pp<13) credmax=26;
else if(pp<=20) credmax=28;
printf("Creditos permitidos=%d\n",credmax);
}
PROGRAMACION DIGITAL - CB412 CICLO 2016-2 52
Selector Mltiple
~ switch(expr){
case cte1:
cte1 cte2 expr cten default sent1;
break;
case cte2:
sent1 sent2 sentn sent sent2;
break;
~ case cten:
sentn;
break;
[default:
sent;]
}
PROGRAMACION DIGITAL - CB412 CICLO 2016-2 53
Nro Nombre
1 ENERO
2 FEBRERO
12 DICIEMBRE
PROGRAMACION DIGITAL - CB412 CICLO 2016-2 54
Codificacin
//Nombre del mes
#include<stdio.h>
int main(){
int mes;
printf("Mes= "); scanf("%d",&mes);
switch(mes){
case 1: printf("ENERO\n"); break;
case 2: printf("FEBRERO\n"); break;
case 3: printf("MARZO\n"); break;
case 4: printf("ABRIL\n"); break;
case 5: printf("MAYO\n"); break;
case 6: printf("JUNIO\n"); break;
case 7: printf("JULIO\n"); break;
case 8: printf("AGOSTO\n"); break;
case 9: printf("SETIEMBRE\n"); break;
case 10: printf("OCTUBRE\n"); break;
case 11: printf("NOVIEMBRE\n"); break;
case 12: printf("DICIEMBRE\n"); break;
default: printf("ERROR\n");
}
}
PROGRAMACION DIGITAL - CB412 CICLO 2016-2 55
PROGRAMACION DIGITAL
LABORATORIO N 4
CICLO 2016-II
Laboratorio N4
Objetivos
Utilizar:
Funciones Matemticas
Ciclos controlados y de seleccin
PROGRAMACION DIGITAL - CB412 CICLO 2016-2 57
Funciones Matemticas
#include<math.h>
PROGRAMACION DIGITAL - CB412 CICLO 2016-2 58
Funciones Matemticas
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
Funcinx) arco tangente(x)
Descripcin
double pow(double x, double y) xy
double exp(double x) ex
double log(double x) ln(x)
double log10(double x) log(x)
PROGRAMACION DIGITAL - CB412 CICLO 2016-2 59
Funciones Matemticas
Funcin Descripcin
double sqrt(double x) x (x positivo)
double abs(int x) |x| (entero x)
double fabs(double x) |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
Funcin Descripcin
mas cercano
double sinh(double x) seno hiperblico(x), x en radianes
double cosh(double x) coseno hiperblico(x)
double tanh(double x) tangente hiperblica(x)
PROGRAMACION DIGITAL - CB412 CICLO 2016-2 60
~
F
Condicin while(Condicin){
Sentencias;
V
}
Sentencias
~
PROGRAMACION DIGITAL - CB412 CICLO 2016-2 61
Sentencias do {
Sentencias;
}
V
Condicin while(Condicin);
F
~
PROGRAMACION DIGITAL - CB412 CICLO 2016-2 62
Bucle de repeticin
Permite repetir una sentencia o bloque de
sentencias, mientras se cumple una determinada
condicin. ~
variable v_inicial .. v_final, cambio
sentencia
for(inicial;
~
condicin; cambio){
sentencia;
}
PROGRAMACION DIGITAL - CB412 CICLO 2016-2 63
Ejercicio 1
Dada una poligonal abierta de N vrtices, se desea
calcular sus ngulos de deflexin 1, 2, ... (en
grados)
X Y
X1 Y1
X2 Y2
XN YN
PROGRAMACION DIGITAL - CB412 CICLO 2016-2 65
Ejecucin N X Y
1 78 89
2 128 162
3 192 87
4 224 148
5 303 98
2 105.11630
94.6
4
4912
111.84371 5
1 3
PROGRAMACION DIGITAL - CB412 CICLO 2016-2 66
Ejercicio 2
Dados las coordenadas de una poligonal cerrada
de n puntos (x,y). Determinar su permetro y su
menor lado.
Entrada
n L3
x1 y1
Ln (x3,y3)
x2 y2
X
L2
xn yn (x1,y1)
L1 (x2,y2)
Y
Salida
Permetro = 123.456
Lado menor = L3
PROGRAMACION DIGITAL - CB412 CICLO 2016-2 67
Diagrama de Flujo 2
3
3
PROGRAMACION DIGITAL - CB412 CICLO 2016-2 68
Codificacin C
#include<stdio.h>
#include<math.h>
int main() {
float d,dmin,perim,x1,x1copia,x2,y1,y1copia,y2; int i,lmin,n;
printf("Nro Vertices: "); scanf("%d",&n);
printf("Vertice1: "); scanf("%f %f",&x1,&y1);
x1copia = x1; y1copia = y1; i = 2; perim = 0;
while (i<=n) {
printf("Vertice%d: ",i); scanf("%f %f",&x2,&y2);
d = sqrt(pow((x1-x2),2)+pow((y1-y2),2));
perim = perim+d;
if (i==2) {
dmin = d; lmin = 1;
} else {
if (d<dmin) {
dmin = d; lmin = i-1;
}
}
x1 = x2; y1 = y2; i = i+1;
}
d = sqrt(pow((x1copia-x2),2)+pow((y1copia-y2),2));
perim = perim+d;
if (d<dmin) {
dmin = d; lmin = n;
}
printf("Perimetro = %7.3f\n",perim); printf("Lado Menor= L%d\n",lmin);
}
PROGRAMACION DIGITAL - CB412 CICLO 2016-2 70
Ejercicios Propuestos
PROGRAMACION DIGITAL
LABORATORIO N 5
CICLO 2016-II
Laboratorio N5
Objetivos
Utilizar:
Arreglo lineal
Archivo tipo texto
PROGRAMACION DIGITAL - CB412 CICLO 2016-2 73
Arreglo Lineal
Declaracin:
tipo nombre_arreglo[N elementos];
x0 x1 x2 x49
subndice
50 elementos
PROGRAMACION DIGITAL - CB412 CICLO 2016-2 74
Arreglo Lineal
Lectura y Escritura:
scanf(formato,&elemento[i-simo]);
printf(formato,elemento[i-simo]);
~
Ejemplo: Leer
scanf(%d, &x[i]); xi
~
~
Escribir
printf(%d, x[i]); xi
PROGRAMACION DIGITAL - CB412 CICLO 2016-2 75
Ejercicio1
Entradas Salidas
N media
xi (i 1..N) desv
PROGRAMACION DIGITAL - CB412 CICLO 2016-2 76
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 CICLO 2016-2 77
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 CICLO 2016-2 78
Archivo de Archivo de
Datos Programa Resultados
ENTRADA SALIDA
PROGRAMACION DIGITAL - CB412 CICLO 2016-2 79
FILE *var_archi;
2. Abrir el Archivo
var_archi=fopen(archivo, modo);
Modo Descripcin
Apertura
r Abre un Archivo para lectura (ENTRADA)
w Crea un Archivo para escritura (SALIDA)
a Abre un Archivo para aadir al final (SALIDA)
PROGRAMACION DIGITAL - CB412 CICLO 2016-2 80
4. Cerrar el Archivo
fclose(var_archi);
_fcloseall();
PROGRAMACION DIGITAL - CB412 CICLO 2016-2 81
Archivo
de
Lectura
EOF
!feof(var_archi) ser Verdadero mientras no se alcance
el EOF.
negacin
PROGRAMACION DIGITAL - CB412 CICLO 2016-2 82
while(!feof(var_archi)){
//Sentencias de Lectura
}
_______________________________________________
do {
//Sentencias de Lectura
} while(!feof(var_archi));
PROGRAMACION DIGITAL - CB412 CICLO 2016-2 83
Ejercicio 1
Un archivo contiene las coordenadas (x, y) de los
puntos de una poligonal cerrada. Determinar los
ngulo internos de la poligonal si no se conoce la
cantidad de puntos.
Poligonal.txt
(x4,y4)
x1 y1
x2 y2
x3 y3 (x3,y3)
x4 y4 X
x5 y5
(x1,y1)
(x2,y2)
Y
PROGRAMACION DIGITAL - CB412 CICLO 2015-1 84
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.
Poligonal.txt
10 13
11 06
20 12
17 21
09 18
05 16
PROGRAMACION DIGITAL - CB412 CICLO 2015-1 85
Ejercicio3
Ejercicio4
Se tiene registrado las marcaciones de un
empleado (fecha, hora de entrada y de salida) en
el archivo Marca.txt, se desea guardar en otro
archivo las horas trabajadas en el mes.
Marca.txt Horastrab.txt
2014-04-03 09:58:49 2014-04-03 11:05:56
2014-04-03 21:04:45 2014-04-04 8:11:09
2014-04-04 10:19:53 2014-04-05 8:04:38
2014-04-04 18:31:02
2014-04-05 10:26:15
2014-04-05 18:30:53
Ejercicio5
Ejercicio Propuesto
Un archivo contiene las coordenadas (x, y) de los
puntos de una poligonal. Escribir un programa
que genere un archivo script (*.SCR) para dibujar
los puntos (x, y) en AutoCAD.
Puntos.txt Puntos.scr AutoCAD
10 13 POINT
9,18
11 06 10,13
20 12 POINT
17 21 11,06 5,16
09 18
05 16 ZOOM
E 10,13
PDMODE
35