Está en la página 1de 25

Proyecto Final

Anthuan Francisco Pizarro Olmos

Programación de computadores 1

Instituto IACC

18 de enero de 2019
Desarrollo

1) La empresa XYZ le ha solicitado a usted, como su Técnico Superior en Informática, el

diseño y construcción de un sistema computacional que integre de manera modular

las herramientas necesarias para entregar de manera confiable algunos de los cálculos

realizados a diario dentro de sus operaciones. Dicho sistema deberá contar con un

menú principal y un módulo independiente para cada uno de los siguientes ítems:

a) El primer módulo deberá calcular el valor del área de un rectángulo y su perímetro,

dados su base y su altura. Al momento de entregar dicho cálculo deberá imprimir

un mensaje como el siguiente:

“El área del rectángulo ingresado es: XXX centímetros cuadrados”.

“Su perímetro es de: XXX centímetros”.

b) El segundo módulo deberá recibir por pantalla 3 números enteros mayores que

cero (0) y menores que 100, y devolver cuál de ellos es el mayor. El formato del

mensaje a entregar es:

“El mayor de los números que usted ha ingresado es: XX”.

c) El tercer módulo deberá recibir por pantalla el ingreso de un número entre 1 y 7, e

imprimir por pantalla a qué día de la semana corresponde. La numeración de los

días corresponde a: 1 = Lunes, 2 = Martes, 3 = Miércoles… y así sucesivamente.

Ejemplo del mensaje a entregar:

“Ingrese día de la semana (1-7): __ ”.

“El día ingresado es: ______________ ”.

d) El cuarto módulo deberá, ante el ingreso de los 7 primeros dígitos de la cédula de

identidad de una persona, devolver el dígito verificador que le corresponda.


Desarrolle una función que realice específicamente esta tarea y que sea llamada a

ejecución cuando se pulse la opción 4, en el menú principal del sistema.

e) Finalmente, esta opción es la salida del sistema y ante su selección deberá emitir

por pantalla el siguiente mensaje:

Primera línea: “Usted se ha desconectado del Sistema XYZ”

Segunda línea: “La sesión ha finalizado correctamente”

Tercera línea: “Este sistema ha sido desarrollado por (su nombre)”

2) El funcionamiento de cada uno de los módulos, así como el menú principal, debe estar

documentado a través de un Diagrama de Flujo, que explique en forma clara y

correctamente su estructura procedimental.

3) Asimismo, el funcionamiento de cada uno de los módulos y del menú principal, debe

estar documentado con un pseudocódigo (uno por cada uno de ellos) que explique

claramente su estructura procedimental, como paso intermedio antes de la

generación del código definitivo.


R.- Primer módulo, cálculo de área y perímetro de un rectángulo.

Pseudocodigo;

Algoritmo Modulo_1
definir Lado1, Lado2, Perimetro,Area como entero;// definicion de variable tipo int
Escribir "Bienvenido al modulo de calculo de area y perimetro de un rectangulo"//string de bienvenida al
usuario
Escribir "Ingrese primer lado del rectangulo en centimetros";//string de solicitud de ingreso de datos
Leer Lado1;//lectura de datos ingresados y asignacion de estos a variable Lado1
Escribir "Ingrese segundo lado del rectangulo en centimetros"//string de solicitud de ingreso de datos
Leer Lado2;//lectura de datos ingresados y asignacion de estos a variable Lado2
Area = (Lado1*Lado2);//asignacion de valores a variable Area segun resultado de la operacion solicitada
Perimetro = (lado1+Lado2)*2;//asignacion de valores a variable Perimetro segun resultado de la operacion
solicitada
Escribir " El area del rectangulo ingresado es: ", Area, " centimetros cuadrados";//imprime valor de Area
acompañado del string entregado
Escribir " Y su perimetro es de: ", Perimetro, " centimetros";//imprime valor de Perimetro acompañado del
string entregado

FinAlgoritmo
Diagrama de flujo;
Código PHP;

<?php

$stdin = fopen('php://stdin','r');

settype($lado1,'integer');

settype($lado2,'integer');

settype($perimetro,'integer');

settype($area,'integer');

echo 'Bienvenido al modulo de calculo de area y perimetro de un rectangulo',PHP_EOL;

echo 'Ingrese primer lado del rectangulo en centimetros',PHP_EOL;

fscanf($stdin,"%d",$lado1);

echo 'Ingrese segundo lado del rectangulo en centimetros',PHP_EOL;

fscanf($stdin,"%d",$lado2);

$area = ($lado1*$lado2);

$perimetro = ($lado1+$lado2)*2;

echo ' El area del rectangulo ingresado es: ',$area,' centimetros cuadrados',PHP_EOL;

echo ' Y su perimetro es de: ',$perimetro,' centimetros',PHP_EOL;

?>
Segundo modulo, número mayor entre 3;

Pseudocodigo;

Algoritmo Modulo_2
Definir Num_1, Num_2, Num_3 como entero;// definicion de variable tipo int
Escribir "Bienvenido al modulo de calculo de numero mayor entre tres";// string de bienvenida al usuario
Escribir"Debe ingresar 3 numeros enteros mayores a 0 y menores a 100";//string de instrucciones
Escribir "Ingrese su primer numero"// string de solicitud de ingreso de datos
Leer Num_1;// lectura de datos ingresados y asignacion de estos a variable Num_1
Escribir "Ingrese su segundo numero"// string de solicitud de ingreso de datos
Leer Num_2;// lectura de datos ingresados y asignacion de estos a variable Num_2
Escribir "Ingrese su tercer numero"// string de solicitud de ingreso de datosLeer Num_3;// lectura de datos
ingresados y asignacion de estos a variable Num_3
Si (Num_1>Num_2 && Num_1>Num_3) Entonces//instruccion If...Elseif...Else que compara los valores para
determinar el mayor
Escribir " El mayor de los numeros que Usted ha ingresado es: ", Num_1;// en caso de cumplir imprime
SiNo
Si (Num_2>Num_1 && Num_2>Num_3) Entonces
Escribir " El mayor de los numeros que Usted ha ingresado es: ", Num_2;// en caso de cumplir imprime
SiNo
Si (Num_3>Num_1 && Num_3>Num_2) Entonces
Escribir " El mayor de los numeros que Usted ha ingresado es: ", Num_3;// en caso de cumplir
imprime
Fin si
Fin si
Fin si
FinAlgoritmo
Diagrama de flujo;
Código PHP;

<?php
$stdin = fopen('php://stdin','r');
settype($num_1,'integer');
settype($num_2,'integer');
settype($num_3,'integer');
echo 'Bienvenido al modulo de calculo de numero mayor entre tres',PHP_EOL;
echo 'Debe ingresar 3 numeros enteros mayores a 0 y menores a 100',PHP_EOL;
echo 'Ingrese su primer numero',PHP_EOL;
fscanf($stdin,"%d",$num_1);
echo 'Ingrese su segundo numero',PHP_EOL;
fscanf($stdin,"%d",$num_2);
echo 'Ingrese su tercer numero',PHP_EOL;
fscanf($stdin,"%d",$num_3);
if (($num_1>$num_2 && $num_1>$num_3)) {
echo ' El mayor de los numeros que Usted ha ingresado es: ',$num_1,PHP_EOL;
} else {
if (($num_2>$num_1 && $num_2>$num_3)) {
echo ' El mayor de los numeros que Usted ha ingresado es: ',$num_2,PHP_EOL;
} else {
if (($num_3>$num_1 && $num_3>$num_2)) {
echo ' El mayor de los numeros que Usted ha ingresado es: ',$num_3,PHP_EOL;
}
}
}
?>
Tercer módulo, mostrar día de la semana;

Pseudocodigo;

Algoritmo Dia_semana
Definir Dia como entero;// definicion de variable tipo int
Escribir"Bienvenido al modulo del día de la semana";// string de bienvenida al usuario
Escribir"Escriba un numero entre 1 y 7 y sabra a que día de la semana corresponde";// string de
instrucciones
Escribir"Ingrese su numero"// string de solicitud de ingreso de datos
leer Dia; // lectura de datos ingresados y asignacion de estos a variable Dia
Segun Dia Hacer// instruccion switch para asignar dias a los numeros a ingresar
1:
Escribir "El día ingresado es: Lunes" ;
2:
Escribir "El día ingresado es: Martes";
3:
Escribir "El día ingresado es: Miercoles";
4:
Escribir "El día ingresado es: Jueves";
5:
Escribir "El día ingresado es: Viernes";
6:
Escribir "El día ingresado es: Sabado";
7:
Escribir "El día ingresado es: Domingo";

De Otro Modo:

Escribir "El numero no corresponde a ningun día de la semana"// en caso de que el


usuario ingrese numero fuera de rango
FinSegun

FinAlgoritmo
Diagrama de Flujo;
Código PHP;

<?php
$stdin = fopen('php://stdin','r');
settype($dia,'integer');
echo 'Bienvenido al modulo del día de la semana',PHP_EOL;
echo 'Escriba un numero entre 1 y 7 y sabra a que día de la semana corresponde',PHP_EOL;
echo 'Ingrese su numero',PHP_EOL;
fscanf($stdin,"%d",$dia);
switch ($dia) {
case 1:
echo 'El día ingresado es: Lunes',PHP_EOL;
break;
case 2:
echo 'El día ingresado es: Martes',PHP_EOL;
break;
case 3:
echo 'El día ingresado es: Miercoles',PHP_EOL;
break;
case 4:
echo 'El día ingresado es: Jueves',PHP_EOL;
break;
case 5:
echo 'El día ingresado es: Viernes',PHP_EOL;
break;
case 6:
echo 'El día ingresado es: Sabado',PHP_EOL;
break;
case 7:
echo 'El día ingresado es: Domingo',PHP_EOL;
break;
default:
echo 'El numero no corresponde a ningun día de la semana',PHP_EOL;
}
?>
Cuarto modulo, cálculo de código verificador;

Pseudocodigo;

Proceso calculoVerificador
Definir regla,suma,rut,RUUT,num,cod,ver como numerico;// definicion de variable tipo int
Definir resp como caracter;// definicion de variable tipo string

Repetir

regla=2;
suma=0;

Limpiar Pantalla;
Escribir "Bienvenido al modulo de Rut"
Escribir "Ingrese los numeros del Rut sin puntos ni digito verificador";
Leer rut;
RUUT=rut;

Repetir

num=rut MOD 10;


suma=suma+(num*regla);
regla=regla+1;
rut=trunc(rut/10);

si regla=8 entonces
regla=2;
FinSi

Hasta Que rut=0

cod=suma%11;
ver=11-cod;

Si ver<10 entonces
Escribir "Su rut completo es: ",RUUT,"-",ver;
FinSi

Si ver=10 entonces
Escribir "Su rut completo es: ",RUUT,"-K";
FinSi

Si ver=11 O ver=0 entonces


Escribir "Su rut completo es: ",RUUT,"-0";
FinSi

Escribir "Presione enter para ingresar un nuevo Rut o escriba salir";


Leer resp;

Hasta Que resp="salir'

FinProceso
Diagrama de flujo;
Codigo PHP;

<?php
$stdin = fopen('php://stdin','r');
settype($regla,'float');
settype($suma,'float');
settype($rut,'float');
settype($ruut,'float');
settype($num,'float');
settype($cod,'float');
settype($ver,'float');
settype($resp,'string');
do {
$regla = 2;
$suma = 0;
echo PHP_EOL;
echo 'Bienvenido al modulo de Rut',PHP_EOL;
echo 'Ingrese los numeros del Rut sin puntos ni digito verificador',PHP_EOL;
fscanf($stdin,"%d",$rut);
$ruut = $rut;
do {
$num = $rut%10;
$suma = $suma+($num*$regla);
$regla = $regla+1;
$rut = floor($rut/10);
if ($regla==8) {
$regla = 2;
}
} while ($rut!=0);
$cod = $suma%11;
$ver = 11-$cod;
if ($ver<10) {
echo 'Su rut completo es: ',$ruut,'-',$ver,PHP_EOL;
}
if ($ver==10) {
echo 'Su rut completo es: ',$ruut,'-K',PHP_EOL;
}
if ($ver==11 || $ver==0) {
echo 'Su rut completo es: ',$ruut,'-0',PHP_EOL;
}
echo 'Presione enter para ingresar un nuevo Rut o escriba salir',PHP_EOL;
$resp=rtrim(fgets($stdin),PHP_EOL);
} while ($resp!='salir');
?>
Sistema completo con menú de ingreso y salida;

Pseudocodigo;

Algoritmo Menu_principal

Definir Eleccion como entero;


Escribir "Bienvenido al sistema XYZ";
Escribir "para Calculo de area y perimetro digite 1";
Escribir "para Mayor entre tres digite 2";
Escribir "para Día de la semana digite 3";
Escribir "para Rut digite 4"
Escribir "para menu de salida digite 5"
Leer Eleccion;
Segun eleccion Hacer
1:

Definir lado1,Lado2,Perimetro,Area Como Entero


Escribir 'Bienvenido al modulo de calculo de area y perimetro de un
rectangulo'
Escribir 'Ingrese primer lado del rectangulo en centimetros'
Leer lado1
Escribir 'Ingrese segundo lado del rectangulo en centimetros'
Leer Lado2
Area <- (lado1*Lado2)
Perimetro <- (lado1+Lado2)*2
Escribir ' El area del rectangulo ingresado es: ',Area,' centimetros
cuadrados'
Escribir ' Y su perimetro es de: ',Perimetro,' centimetros'

2:
Definir Num_1,Num_2,Num_3 Como Entero
Escribir 'Bienvenido al modulo de calculo de numero mayor entre tres'
Escribir 'Debe ingresar 3 numeros enteros mayores a 0 y menores a 100'
Escribir 'Ingrese su primer numero'
Leer Num_1
Escribir 'Ingrese su segundo numero'
Leer Num_2
Escribir 'Ingrese su tercer numero'
Leer Num_3
Si (Num_1>Num_2 Y Num_1>Num_3) Entonces
Escribir ' El mayor de los numeros que Usted ha ingresado es: ',Num_1
SiNo
Si (Num_2>Num_1 Y Num_2>Num_3) Entonces
Escribir ' El mayor de los numeros que Usted ha ingresado es:
',Num_2
SiNo
Si (Num_3>Num_1 Y Num_3>Num_2) Entonces
Escribir ' El mayor de los numeros que Usted ha ingresado
es: ',Num_3
FinSi
FinSi
FinSi
3:
Definir Dia Como Entero
Escribir 'Bienvenido al modulo del día de la semana'
Escribir 'Escriba un numero entre 1 y 7 y sabra a que día de la semana
corresponde'
Escribir 'Ingrese su numero'
Leer Dia
Segun Dia Hacer
1:
Escribir 'El día ingresado es: Lunes'
2:
Escribir 'El día ingresado es: Martes'
3:
Escribir 'El día ingresado es: Miercoles'
4:
Escribir 'El día ingresado es: Jueves'
5:
Escribir 'El día ingresado es: Viernes'
6:
Escribir 'El día ingresado es: Sabado'
7:
Escribir 'El día ingresado es: Domingo'
De Otro Modo:
Escribir 'El numero no corresponde a ningun día de la semana'
FinSegun
4:
Definir regla,suma,rut,RUUT,num,cod,ver Como Real
Definir resp Como Caracter
Repetir
regla <- 2
suma <- 0
Borrar Pantalla
Escribir 'Bienvenido al modulo de Rut'
Escribir 'Ingrese los numeros del Rut sin puntos ni digito verificador'
Leer rut
RUUT <- rut
Repetir
num <- rut MOD 10
suma <- suma+(num*regla)
regla <- regla+1
rut <- trunc(rut/10)
Si regla=8 Entonces
regla <- 2
FinSi
Hasta Que rut=0
cod <- suma MOD 11
ver <- 11-cod
Si ver<10 Entonces
Escribir 'Su rut completo es: ',RUUT,'-',ver
FinSi
Si ver=10 Entonces
Escribir 'Su rut completo es: ',RUUT,'-K'
FinSi
Si ver=11 O ver=0 Entonces
Escribir 'Su rut completo es: ',RUUT,'-0'
FinSi
Escribir 'Presione enter para ingresar un nuevo Rut o escriba salir'
Leer resp
Hasta Que resp='salir'
5:
Escribir"Usted se ha desconectado del Sistema XYZ"
Escribir"La sesion ha finalizado correctamente"
Escribir "Este sistema ha sido desarrollado por Anthuan Francisco Pizarro
Olmos"
De Otro Modo:
escribir "Favor reinicie"
Fin Segun
FinAlgoritmo
Diagrama de flujo;

Codigo PHP;

<?php
$stdin = fopen('php://stdin','r');

settype($eleccion,'integer');
echo 'Bienvenido al sistema XYZ',PHP_EOL;
echo 'para Calculo de area y perimetro digite 1',PHP_EOL;
echo 'para Mayor entre tres digite 2',PHP_EOL;
echo 'para Día de la semana digite 3',PHP_EOL;
echo 'para Rut digite 4',PHP_EOL;
echo 'para menu de salida digite 5',PHP_EOL;
fscanf($stdin,"%d",$eleccion);
switch ($eleccion) {
case 1:
settype($lado1,'integer');
settype($lado2,'integer');
settype($perimetro,'integer');
settype($area,'integer');
echo 'Bienvenido al modulo de calculo de area y perimetro de un rectangulo',PHP_EOL;
echo 'Ingrese primer lado del rectangulo en centimetros',PHP_EOL;
fscanf($stdin,"%d",$lado1);
echo 'Ingrese segundo lado del rectangulo en centimetros',PHP_EOL;
fscanf($stdin,"%d",$lado2);
$area = ($lado1*$lado2);
$perimetro = ($lado1+$lado2)*2;
echo ' El area del rectangulo ingresado es: ',$area,' centimetros cuadrados',PHP_EOL;
echo ' Y su perimetro es de: ',$perimetro,' centimetros',PHP_EOL;
break;
case 2:
settype($num_1,'integer');
settype($num_2,'integer');
settype($num_3,'integer');
echo 'Bienvenido al modulo de calculo de numero mayor entre tres',PHP_EOL;
echo 'Debe ingresar 3 numeros enteros mayores a 0 y menores a 100',PHP_EOL;
echo 'Ingrese su primer numero',PHP_EOL;
fscanf($stdin,"%d",$num_1);
echo 'Ingrese su segundo numero',PHP_EOL;
fscanf($stdin,"%d",$num_2);
echo 'Ingrese su tercer numero',PHP_EOL;
fscanf($stdin,"%d",$num_3);
if (($num_1>$num_2 && $num_1>$num_3)) {
echo ' El mayor de los numeros que Usted ha ingresado es: ',$num_1,PHP_EOL;
} else {
if (($num_2>$num_1 && $num_2>$num_3)) {
echo ' El mayor de los numeros que Usted ha ingresado es: ',$num_2,PHP_EOL;
} else {
if (($num_3>$num_1 && $num_3>$num_2)) {
echo ' El mayor de los numeros que Usted ha ingresado es:
',$num_3,PHP_EOL;
}
}
}
break;
case 3:
settype($dia,'integer');
echo 'Bienvenido al modulo del día de la semana',PHP_EOL;
echo 'Escriba un numero entre 1 y 7 y sabra a que día de la semana corresponde',PHP_EOL;
echo 'Ingrese su numero',PHP_EOL;
fscanf($stdin,"%d",$dia);
switch ($dia) {
case 1:
echo 'El día ingresado es: Lunes',PHP_EOL;
break;
case 2:
echo 'El día ingresado es: Martes',PHP_EOL;
break;
case 3:
echo 'El día ingresado es: Miercoles',PHP_EOL;
break;
case 4:
echo 'El día ingresado es: Jueves',PHP_EOL;
break;
case 5:
echo 'El día ingresado es: Viernes',PHP_EOL;
break;
case 6:
echo 'El día ingresado es: Sabado',PHP_EOL;
break;
case 7:
echo 'El día ingresado es: Domingo',PHP_EOL;
break;
default:
echo 'El numero no corresponde a ningun día de la semana',PHP_EOL;
}
break;
case 4:
settype($regla,'float');
settype($suma,'float');
settype($rut,'float');
settype($ruut,'float');
settype($num,'float');
settype($cod,'float');
settype($ver,'float');
settype($resp,'string');
do {
$regla = 2;
$suma = 0;
echo PHP_EOL; // no hay forma directa de borrar la pantalla con php
echo 'Bienvenido al modulo de Rut',PHP_EOL;
echo 'Ingrese los numeros del Rut sin puntos ni digito verificador',PHP_EOL;
fscanf($stdin,"%d",$rut);
$ruut = $rut;
do {
$num = $rut%10;
$suma = $suma+($num*$regla);
$regla = $regla+1;
$rut = floor($rut/10);
if ($regla==8) {
$regla = 2;
}
} while ($rut!=0);
$cod = $suma%11;
$ver = 11-$cod;
if ($ver<10) {
echo 'Su rut completo es: ',$ruut,'-',$ver,PHP_EOL;
}
if ($ver==10) {
echo 'Su rut completo es: ',$ruut,'-K',PHP_EOL;
}
if ($ver==11 || $ver==0) {
echo 'Su rut completo es: ',$ruut,'-0',PHP_EOL;
}
echo 'Presione enter para ingresar un nuevo Rut o escriba salir',PHP_EOL;
$resp=rtrim(fgets($stdin),PHP_EOL);
} while ($resp!='salir');
break;
case 5:
echo 'Usted se ha desconectado del Sistema XYZ',PHP_EOL;
echo 'La sesion ha finalizado correctamente',PHP_EOL;
echo 'Este sistema ha sido desarrollado por Anthuan Francisco Pizarro Olmos',PHP_EOL;
break;
default:
echo 'Favor reinicie',PHP_EOL;
}
?>
Bibliografía

Contenidos del curso – Programación de computadores I – IACC 2019

Contenidos adicionales del curso – Programación de computadores I – IACC 2019

También podría gustarte