Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Laboratorios CB412 2017-1 Primera Parte
Laboratorios CB412 2017-1 Primera Parte
PROGRAMACION DIGITAL
LABORATORIOS
CICLO 2017-I
Introducción
1. Competencias
2. Metodología
3. Cronograma
4. Temas
5. Software
6. Entorno
4. Evaluación
5. Bibliografía
Metodología1
• En las sesiones de laboratorio, el alumno experimenta la
creación y ejecución de un programa real, mediante la
interacción directa con el computador.
• El docente de laboratorio dirige al alumno en el desarrollo
de los programas y lo evalúa en dos prácticas de uso de
la computadora previo a las evaluaciones de los
Exámenes 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
Temas de Laboratorios1
Semana Laboratorio Tema
1 0 Introducción. Entorno PSeInt. Entorno DEV.
2 1 Creación y Ejecución de Diagramas de Flujo. Paso a paso. Prueba de Escritorio.
3 2 Edición, Compilación y Ejecución de un programa C. Elementos del lenguaje C.
4 3 Sentencias de entrada y salida. Decisiones y bifurcaciones.
5 4 Funciones Matemáticas. Ciclos controlados y de selección.
6 5 Archivos tipo texto. Arreglos lineales.
7 PL1 Primera Práctica de Laboratorio
8 EXAMEN PARCIAL
9 6 Arreglos bidimensionales.
10 7 Funciones.
11 8 Paso de parámetros.
12 9 Cadenas de caracteres.
13 10 Arreglos de cadenas.
14 11 Registros.
15 PL2 Segunda Práctica de Laboratorio
16 EXAMEN FINAL
Software1
PSeInt
Construcción y Ejecución de
Diagramas de Flujo.
http://pseint.sourceforge.net/
DEV C++
Edición y Ejecución de
Programas en lenguaje C
https://sourceforge.net/projects/orwelldevcpp/
AREA DE COMANDOS
TRABAJO
LINEA DE
ESTADO
PROGRAMACION DIGITAL - CB412 CICLO 2017-1 8
HERRAMIENTAS
AREA DE
TRABAJO
LINEA DE
ESTADO
PROGRAMACION DIGITAL - CB412 CICLO 2017-1 9
Evaluación1
Bibliografía1
1. MARZAL, Andrés; GRACIA, Isabel
Introducción a la Programación con C
Departamento de Lenguajes y Sistemas Informáticos
Universitat Jaume I, España, 2004.
2. KERNIGHAN, Brian; RITCHIE, Dennis
El Lenguaje de Programación C
Editorial Prentice Hall, Estados Unidos, 1991.
3. DEL VALLE SOTELO, Juan Carlos
Álgebra Lineal para Estudiantes de Ingeniería y Ciencias
Editorial McGraw Hill, México, 2011.
1: Silabo ABET de Programación Digital 2017-I
PROGRAMACION DIGITAL - CB412 CICLO 2017-1 11
PROGRAMACION DIGITAL
LABORATORIO N° 1
CICLO 2017-I
Laboratorio N°1
Objetivos
1. Utilizar el PSeInt para la creación y ejecución de
Diagramas de Flujo.
2. Conocer las facilidades del PSeInt para la Ejecución
Paso a Paso y Prueba de Escritorio.
PROGRAMACION DIGITAL - CB412 CICLO 2017-1 13
AREA DE COMANDOS
TRABAJO
LINEA DE
ESTADO
PROGRAMACION DIGITAL - CB412 CICLO 2017-1 14
AREA DE COMANDOS
TRABAJO
PROGRAMACION DIGITAL - CB412 CICLO 2017-1 15
Creación de
Diagramas
de Flujo
PROGRAMACION DIGITAL - CB412 CICLO 2017-1 16
Operadores y Funciones
PROGRAMACION DIGITAL - CB412 CICLO 2017-1 17
Prueba de Escritorio
PROGRAMACION DIGITAL - CB412 CICLO 2017-1 21
Ejercicios
1. Se leen las coordenadas (x, y) de un triángulo y un
punto P (px, py). Determinar si el punto P está en el
interior o no del triángulo.
x
2. Dados n valores x, determinar el mayor valor, el menor
valor, el promedio de valores y la desviación estándar.
PROGRAMACION DIGITAL - CB412 CICLO 2017-1 22
Ejercicios
3. Telefónica del Perú ha diseñado los siguientes planes
para sus usuarios de telefonía 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 2017-I
Laboratorio N°2
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 2017-1 26
PROGRAMACION DIGITAL - CB412 CICLO 2017-1 27
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 2017-1 28
Exportación a C
PROGRAMACION DIGITAL - CB412 CICLO 2017-1 29
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 2017-1 30
HERRAMIENTAS
AREA DE
TRABAJO
LINEA DE
ESTADO
PROGRAMACION DIGITAL - CB412 CICLO 2017-1 31
Compilar
Compila el archivo actual
Ejecutar
Parámetros…
Compilar y Ejecutar
Reconstruir Todo
Revisar Sintáxis
Limpiar Resultados
Análisis de Perfil
Reiniciar ejecución del programa
PROGRAMACION DIGITAL - CB412 CICLO 2017-1 33
Lenguaje de Programación C
Terminal
Inicio int main(){
… …
Fin }
PROGRAMACION DIGITAL - CB412 CICLO 2017-1 35
Comentarios
//Comentario en una línea
/*Comentario en
varias líneas*/
Declaración de Variables
tipo variable;
char caracter
int entero
long entero largo
float punto flotante
double doble precisión
PROGRAMACION DIGITAL - CB412 CICLO 2017-1 36
Operadores
Permiten realizar operaciones en el programa.
Aritméticos Lógicos
+ Suma && Y
- Resta || O
* Multiplicación ! Negación
/ División
% Resto división entera Primarios
() Llamada función
Incrementales
[] Indice de arreglo
++ Incremento en 1
. Miembro estructura
-- Decremento en 1
PROGRAMACION DIGITAL - CB412 CICLO 2017-1 37
Operadores
Permiten realizar operaciones en el programa.
De Asignación Relacionales
= Asignación simple == Igual que
+= Asignación suma < Menor que
-= Asignación resta > Mayor que
*= Asignación <= Menor o igual que
multiplicación >= Mayor o igual que
/= Asignación división != No igual que
%= Asignación resto
PROGRAMACION DIGITAL - CB412 CICLO 2017-1 38
Procesos
var=expresion;
var expresión
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 2017-1 39
Errores de Sintáxis
prrintf("\n Hola mundo ");
Errores de Ejecución
c=15/0; /*No tiene errores de sintaxis*/
Errores Lógicos
Si en vez de la instrucción:
a=b+c;
hubiera escrito:
a=b*c;
PROGRAMACION DIGITAL - CB412 CICLO 2017-1 41
PROGRAMACION DIGITAL
LABORATORIO N° 3
CICLO 2017-I
Laboratorio N°3
Objetivos
Utilizar Sentencias de Ejecución:
• Lectura
• Escritura
• Decisión
• Selector múltiple
PROGRAMACION DIGITAL - CB412 CICLO 2017-1 43
Lectura
Leer
scanf(“formato”,&Var);
Var
Especificadores de formato
%c carácter
%d entero
%ld entero largo
%f punto flotante
%lf doble precisión
%g punto flotante o notación científica
con signo, el que sea más corto
PROGRAMACION DIGITAL - CB412 CICLO 2017-1 44
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 2017-1 45
Escritura
Escribir
printf(“formato”,Var);
Var
Secuencias de Escape
\n salto de línea
\t tabulador
\” doble comilla
\\ diagonal
PROGRAMACION DIGITAL - CB412 CICLO 2017-1 46
Especificadores de Formato
Especificadores Efecto
Adicionales
Ancho Justifica a la derecha
.Precisión Redondea al n° de decimales
- Justifica a la izquierda
+ Muestra el signo del valor
0 Llena con ceros según el ancho
PROGRAMACION DIGITAL - CB412 CICLO 2017-1 47
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);
Decisión
V F
Condición
… V
Sentencias … F
Sentencias
if(Condición){
Sentencias V;
}
else {
Sentencias F;
}
PROGRAMACION DIGITAL - CB412 CICLO 2017-1 49
Ejemplo de Decisión
Codificación
//Créditos permitidos según 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 2017-1 51
Selector Múltiple
~ 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 2017-1 52
Nro Nombre
1 ENERO
2 FEBRERO
… …
12 DICIEMBRE
PROGRAMACION DIGITAL - CB412 CICLO 2017-1 53
Codificación
//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 2017-1 54
PROGRAMACION DIGITAL
LABORATORIO N° 4
CICLO 2017-I
Laboratorio N°4
Objetivos
Utilizar:
• Funciones Matemáticas
• Ciclos controlados y de selección
PROGRAMACION DIGITAL - CB412 CICLO 2017-1 56
Funciones Matemáticas
#include<math.h>
PROGRAMACION DIGITAL - CB412 CICLO 2017-1 57
Funciones Matemáticas
Función Descripción
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
Funciónx) arco tangente(x)
Descripción
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 2017-1 58
Funciones Matemáticas
Función Descripción
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
Función Descripción
mas cercano
double sinh(double x) seno hiperbólico(x), x en radianes
double cosh(double x) coseno hiperbólico(x)
double tanh(double x) tangente hiperbólica(x)
PROGRAMACION DIGITAL - CB412 CICLO 2017-1 59
~
F
Condición while(Condición){
Sentencias;
V
}
Sentencias
~
PROGRAMACION DIGITAL - CB412 CICLO 2017-1 60
Sentencias do {
Sentencias;
}
V
Condición while(Condición);
F
~
PROGRAMACION DIGITAL - CB412 CICLO 2017-1 61
Bucle de repetición
Permite repetir una sentencia o bloque de
sentencias, mientras se cumple una determinada
condición. ~
variable ← v_inicial .. v_final, cambio
sentencia
for(inicial;
~
condición; cambio){
sentencia;
}
PROGRAMACION DIGITAL - CB412 CICLO 2017-1 62
Ejercicio 1
Dada una poligonal abierta de N vértices, se desea
calcular sus ángulos de deflexión 1, 2, ... (en
grados)
X Y
X1 Y1
X2 Y2
… …
XN YN
PROGRAMACION DIGITAL - CB412 CICLO 2017-1 64
Ejecución 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 2017-1 65
Ejercicio 2
Dados las coordenadas de una poligonal cerrada
de n puntos (x,y). Determinar su perímetro 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
Perímetro = 123.456
Lado menor = L3
PROGRAMACION DIGITAL - CB412 CICLO 2017-1 66
Diagrama de Flujo 2
3
3
PROGRAMACION DIGITAL - CB412 CICLO 2017-1 67
Codificación 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 2017-1 69
Ejercicios Propuestos
PROGRAMACION DIGITAL
LABORATORIO N° 5
CICLO 2017-I
Laboratorio N°5
Objetivos
Utilizar:
• Arreglo lineal
• Archivo tipo texto
PROGRAMACION DIGITAL - CB412 CICLO 2017-1 72
Arreglo Lineal
Declaración:
tipo nombre_arreglo[N° elementos];
x0 x1 x2 … x49
subíndice
50 elementos
PROGRAMACION DIGITAL - CB412 CICLO 2017-1 73
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 2017-1 74
Ejercicio1
Entradas Salidas
N media
xi (i 1..N) desv
PROGRAMACION DIGITAL - CB412 CICLO 2017-1 75
Codificación C
/*Obtiene la media y desviacion de n números 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 2017-1 76
Ejecución
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 2017-1 77
Archivo de Archivo de
Datos Programa Resultados
ENTRADA SALIDA
PROGRAMACION DIGITAL - CB412 CICLO 2017-1 78
FILE *var_archi;
2. Abrir el Archivo
var_archi=fopen(archivo, modo);
Modo Descripción
Apertura
“r” Abre un Archivo para lectura (ENTRADA)
“w” Crea un Archivo para escritura (SALIDA)
“a” Abre un Archivo para añadir al final (SALIDA)
PROGRAMACION DIGITAL - CB412 CICLO 2017-1 79
4. Cerrar el Archivo
fclose(var_archi);
_fcloseall();
PROGRAMACION DIGITAL - CB412 CICLO 2017-1 80
Archivo
de
Lectura
EOF
!feof(var_archi) será Verdadero mientras no se alcance
el EOF.
negación
PROGRAMACION DIGITAL - CB412 CICLO 2017-1 81
while(!feof(var_archi)){
//Sentencias de Lectura
…
}
_______________________________________________
do {
//Sentencias de Lectura
…
} while(!feof(var_archi));
PROGRAMACION DIGITAL - CB412 CICLO 2017-1 82
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 83
Ejercicio2
Un archivo contiene las coordenadas (x, y) de los
puntos de una poligonal cerrada. Determinar si es
una poligonal cóncava 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 84
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
……
PROGRAMACION DIGITAL - CB412 CICLO 2015-1 86
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