Sei sulla pagina 1di 3

Curso: Tcnicas de programacin Ciclo: 2017-2

Profesor: Nancy Espinoza R. Horario: 432

Clase 5 28/08/2017
1 Calcular ecuacin
Escriba un programa que permita leer los datos que se requieran para calcular e imprimir el valor de alfa.

program obtenerAlfa;
{Autor: Nancy Espinoza
Fecha de creacin: 27/08/2017
Fecha de actualizacin: 27/08/2017}
var phi25, phi1, cos1, senh, log5, raiz5, raiz3, delta47, tan8: real;
alfa,phi, delta, omega:real;
begin
writeln('Ingrese los valores de phi, delta y omega');
readln(phi, delta, omega);
phi25:=exp(2.5*ln(phi));
phi1:=exp(phi25*ln(phi));
cos1:=arcTan(sqrt(1-sqr(phi1))/phi1);
senh:=(exp(delta+omega)-(1/exp(delta+omega)))/2;
log5:=ln(sqrt(delta)/senh)/ln(5);
raiz5:=exp((1/5)*ln(log5));
raiz3:=exp((1/3)*ln(phi));
delta47:=exp((4+raiz3)*ln(delta));
tan8:=sin(delta47)/cos(delta47);
alfa:=exp((1/5)*ln(cos1*raiz5/tan8));
writeln('Alfa es igual a : ',alfa:10:5);
readln();
end.

PONTIFICIA UNIVERSIDAD CATLICA DEL PER 1


Curso: Tcnicas de programacin Ciclo: 2017-2
Profesor: Nancy Espinoza R. Horario: 432
2 Calcular nota
Escriba un programa que permita ingresar el nombre de un alumno, su cdigo y sus notas de un curso (cuatro
prcticas, las notas de los exmenes 1, 2 y del examen especial). El programa deber calcular la nota que obtendr
el alumno en el curso. La nota se calcular de la siguiente manera:

Donde:
pp es el promedio de prcticas eliminando la nota ms baja.
ex1 es la nota del primer examen
ex2 es la nota del segundo examen
El examen especial reemplaza a uno de los exmenes en el caso que uno de ellos no se hubiera rendido. Si no se
rindieron los dos exmenes, el examen especial reemplazar al segundo examen.

Datos: Se tiene como datos el nombre del alumno y el cdigo, sus notas a las que llamaremos pr1, pr2, pr3, pr4, ex1,
ex2, exE. Las notas estarn entre 0 y 20, si un examen no se di, se ingresar en su lugar el valor -1, si no se rindieron
los dos exmenes, el examen especial reemplazar al segundo examen.

Tareas que se han de realizar en el programa:


- Determinar la nota ms baja de prcticas.
- Calcula pp: Sumar las cuatro notas de prctica y restarle la menor, el resultado dividirlo entre tres.
- Verificar si se rindi el examen 2, si no es as reemplazarlo por el ex. especial.
- Verificar si se rindi el examen 1, si no es as reemplazarlo por el ex. especial si es que se rindi el examen 2.
- Calcular nota del alumno.

Resultado: Nota del alumno

program promedioNotas;
{Autor: Nancy Espinoza
Fecha de creacin: 27/08/2017
}
var p1, p2, p3, p4, pMenorNota, ex1, ex2, exEsp: Integer;
promedioPas, notaFinal: Real;
codigo, nombre: String;
begin
writeln('Ingrese el codigo del alumno');
readln(codigo);
writeln('Ingrese el nombre del alumno');
readln(nombre);
writeln('Ingrese las notas de las cuatro practicas');
readln(p1, p2, p3, p4); //18 10 08 15
writeln('Ingrese las notas del examen 1, examen 2 y examen especial');
readln(ex1, ex2, exEsp); //15 18 -1
//Obtenemos la menor nota de las prcticas
pMenorNota:= p1*ord(p1<=p2)+p2*ord(p2<p1);
pMenorNota:= pMenorNota*ord(pMenorNota<=p3)+p3*ord(p3<pMenorNota);
pMenorNota:=pMenorNota*ord(pMenorNota<=p4)+p4*ord(p4<pMenorNota);
promedioPas:=(p1+p2+p3+p4-pMenorNota)/3;
//Obtenemos notas de los examenes
ex1:=ex1*ord(ex1<>-1)+exEsp*ord((ex1=-1)and(ex2<>-1));
ex2:=ex2*ord(ex2<>-1)+exEsp*ord(ex2=-1);
notaFinal:=round((promedioPas*3+ex1*3+ex2*4)/10); //16
writeln('El alumnno: ', codigo,'-',nombre,' obtuvo de nota ',notaFinal:10:2);
readln();
end.

PONTIFICIA UNIVERSIDAD CATLICA DEL PER 2


Curso: Tcnicas de programacin Ciclo: 2017-2
Profesor: Nancy Espinoza R. Horario: 432
3 Manejo de bits
El tipo de dato Byte permite almacenar valores enteros en una representacin binaria de un byte sin signo. En un
programa se han asignado valores a dos variables de tipo Byte (b1 y b2). Escriba la porcin de cdigo en Pascal que
permita asignar a otra variable (v1) un valor que se forme a partir de los bits de las variables b1 y b2. La composicin
se realizar de la siguiente manera: se toman los 3 bits menos significativos de b1, se invierten (si tiene un 0 se pone
un 1 y viceversa) y se colocan como los bits ms significativos de v1. Tome los bits de las posiciones 2 al 6 de b2 y
colquelos como bits menos significativos en v1

Slo podr emplear variables de tipo Byte.

NOTA: Esta pregunta busca evaluar el uso de los operadores de bits por lo que NO EST PERMITIDO emplear otros
operadores como: /, *, div, mod,, etc. ni funciones como exp, ln, sin,..., etc., tampoco se pueden usar valores
constantes a menos que sean 1 2.

program manejoBits;
{Autor: Nancy Espinoza
Fecha de creacin: 27/08/2017}
var b1, b2, v1: Byte;
masc, parte1, parte2: Byte;
begin
writeln('Ingrese el valor de b1 y b2');
readln(b1, b2);
//b1=194 es 1100 0010 b2=11 es 0110 0111
//Creamos la primera mascara
masc:=1; //0000 0001
masc:=masc shl 1; //0000 0010
masc:=masc+1; //0000 0011
masc:=masc shl 1; //0000 0110
masc:=masc+1; //0000 0111
parte1:=b1 and masc;//0000 0010
parte1:=parte1 xor masc; //0000 0101
parte1:= parte1 shl 1; //0000 1010
parte1:=parte1 shl 1; //0001 0100
parte1:=parte1 shl 1; //0010 1000
parte1:=parte1 shl 1; //0101 0000
v1:=parte1 shl 1; //1010 0000
//Creamos la segunda mascara
masc:=1; //0000 0001
masc:=masc shl 1+1; //0000 0011
masc:=masc shl 1+1; //0000 0111
masc:=masc shl 1+1; //0000 1111
masc:=masc shl 1+1; //0001 1111
masc:=masc shl 1; //0011 1110
masc:=masc shl 1; //0111 1100
parte2:=b2 and masc; //0110 0100
parte2:=parte2 shr 1;//0011 0010
parte2:=parte2 shr 1;//0001 1001
v1:=v1 or parte2; //1011 1001
writeln('El valor de v1 es ', v1);
readln();
end.

PONTIFICIA UNIVERSIDAD CATLICA DEL PER 3

Potrebbero piacerti anche