Nothing Special   »   [go: up one dir, main page]

TPConceptual N1

Descargar como docx, pdf o txt
Descargar como docx, pdf o txt
Está en la página 1de 16

UNIVERSIDAD ABIERTA INTERAMERICANA

FACULTAD DE TECNOLOGÍA INFORMÁTICA


Programación Estructurada
Trabajo práctico individual Nro 1 – Año 2020

Objetivo del TP:

Desarrollo del Teorema del programa estructurado propuesto por Corrado


Böhm y Giuseppe Jacopini. Identificar y ejemplificar a partir de enunciados
desarrollados por usted mismo las tres estructuras propuestas por los autores.

El trabajo práctico constará de 3 partes:

1) Definiciones teóricas de los autores sobre las tres estructuras de la


programación estructurada (Secuencia, selección e iteración).

2) Un enunciado desarrollado por usted mismo (Problema similar a los que


utilizamos para practicar los ejercicios) para cada tipo de estructura
identificada en el punto 1.

3) Diagramación lógica en diagrama conceptual y pseudocódigo (Puede


utilizar Pseint) de cada solución del punto 2 y el código en C
desarrollado para solucionar cada enunciado.

Aclaraciones:

-Puede desarrollar un solo enunciado donde tenga que aplicar las tres
estructuras juntas o bien cada una por separado.

-El TP se entrega en formato Word o pdf con los detalles teóricos, diagramas y
código (Formato imagen) en el mismo Word o pdf.

1)
Teorema del programa estructurado
UNIVERSIDAD ABIERTA INTERAMERICANA
FACULTAD DE TECNOLOGÍA INFORMÁTICA
Programación Estructurada
Trabajo práctico individual Nro 1 – Año 2020

El teorema del programa estructurado es un resultado en la teoría de


lenguajes de programación. Establece que toda función computable puede ser
implementada en un lenguaje de programación que combine sólo tres
estructuras lógicas. Esas tres formas (también llamadas estructuras de control)
específicamente son:

 Secuencia: ejecución de una instrucción tras otra.


 Selección: ejecución de una de dos instrucciones (o conjuntos), según el
valor de una variable booleana.
 Iteración: ejecución de una instrucción (o conjunto) mientras una variable
booleana sea 'verdadera'. Esta estructura lógica también se conoce
como ciclo o bucle.
Este teorema demuestra que la instrucción GOTO no es estrictamente
necesaria y que para todo programa que la utilice existe otro equivalente que
no hace uso de dicha instrucción.

Los científicos de la computación usualmente acreditan el teorema a un


artículo de 1966 escrito por Corrado Böhm y Giuseppe Jacopini. Sin embargo,
David Harel rastreó sus orígenes hasta la descripción de 1946 de la
arquitectura de von Neumann y el teorema de la forma normal de Kleene.

La demostración de Böhm-Jacopini describe cómo construir diagramas


de flujo estructurados a partir de cualquier diagrama de flujo, usando los bits de
una variable entera extra para dar seguimiento a la información que el
programa original representa mediante puntos de entrada en el código. Esta
construcción estuvo basada en el lenguaje de programación P′′ de Böhm. La
demostración de Böhm-Jacopini no esclareció la cuestión sobre cuándo
convendría usar programación estructurada para el desarrollo de software, en
parte porque la construcción ofuscaba el código del programa en lugar de
mejorarlo. Por otro lado, fue el punto de partida para iniciar el debate. Edsger
Dijkstra escribió una importante carta titulada "La sentencia Go To considerada
dañina" en el año 1968. Posteriores estudios agregaron aproximaciones más
prácticas a la demostración de Böhm-Jacopini, que mantenían o mejoraban la
claridad del programa original.
UNIVERSIDAD ABIERTA INTERAMERICANA
FACULTAD DE TECNOLOGÍA INFORMÁTICA
Programación Estructurada
Trabajo práctico individual Nro 1 – Año 2020

DEFINICIÓN DE LAS 3 ESTRUCTURAS BÁSICAS

1. Estructura Secuencial: Indica que las instrucciones de un programa se


ejecutan una después de la otra, en el mismo orden en el cual aparecen en el
programa. Se representa gráficamente como una caja después de otra, ambas
con una sola entrada y una única salida.

Ejemplo. En los diagramas de la Figura 1 tenemos que en la estructura de tipo


secuencial las cajas A y B pueden ser definidas para ejecutar desde una simple
instrucción hasta un módulo o programa completo, siempre y cuando éstos
también sean programas apropiados.

2. Estructura Selectiva: También conocida como la estructura si verdadero -


falso, plantea la selección entre dos alternativas con base en el resultado de la
evaluación de una condición; equivale a la instrucción IF de todos los lenguajes
de programación.

Ejemplo. En el diagrama de flujo de la Fig. 1 en la estructura de tipo selectiva,


C es una condición que se evalúa; A es la acción que se ejecuta cuando la
evaluación de esta condición resulta verdadera y B es la acción ejecutada
cuando el resultado de la evaluación indica falso. La estructura también tiene
una sola entrada y una sola salida; y las funciones A y B también pueden ser
cualquier estructura básica o conjunto de estructuras.

3. Estructura Repetitiva (Iterativa): También llamada la estructura hacer –


mientras - que, corresponde a la ejecución repetida de una instrucción mientras
que se cumple una determinada condición.

Ejemplo. En la estructura correspondiente a la iteración, aquí el bloque A se


ejecuta repetidamente mientras que la condición C se cumpla o sea cierta.
También tiene una sola entrada y una sola salida; igualmente A puede ser
cualquier estructura básica o conjunto de estructuras.
UNIVERSIDAD ABIERTA INTERAMERICANA
FACULTAD DE TECNOLOGÍA INFORMÁTICA
Programación Estructurada
Trabajo práctico individual Nro 1 – Año 2020

Figura 1. Diagramas de flujo de cada tipo de estructura: secuencia, selección e


iteración.

2)

Enunciados

a) En este ejercicio se pide que se calcule el sueldo mensual de un


trabajador ingresando ingresando el número de horas trabajadas en el mes y el
valor tanto como de las horas normales de trabajo y las horas extra.

b) Se trata de escribir el algoritmo que permita emitir la factura


correspondiente a una compra de un artículo determinado, del que se
adquieren una o varias unidades. El IVA es del 17% y si el precio bruto ( precio
venta más IVA) es mayor de $11000 se debe realizar un descuento del 7%.

c) Dado N notas de un estudiante calcular:

1) Cuantas notas tiene reprobadas.


2) Cuantas notas aprobadas.
3) El promedio de notas.
4) El promedio de notas aprobadas y reprobadas.
UNIVERSIDAD ABIERTA INTERAMERICANA
FACULTAD DE TECNOLOGÍA INFORMÁTICA
Programación Estructurada
Trabajo práctico individual Nro 1 – Año 2020

3)

a) Pseudocódigo Ejercicio1

Algoritmo Ejercicio1
Escribir "Calcular Sueldo y horas extra";
Escribir "Ingrese el nombre del trabajador ";
Leer trabajador;
Escribir "Ingrese el número de horas de trabajo al día";
Leer horas_dia;
Escribir "Ingrese el valor de cada hora de trabajo: ";
Leer valor_hora;
Escribir "Ingrese el número de dias trabajados en el mes: ";
Leer Dias_mes;
Escribir "Ingrese el número de horas extra: ";
Leer horas_extra;
Escribir "Ingrese el valor de cada hora extra: ";
Leer valor_extra;
Sueldo_dia <- horas_dia*valor_hora;
Sueldo_mes <-Sueldo_dia*Dias_mes;
Sueldo_extra<-horas_extra*valor_extra;
Sueldo_total<-Sueldo_mes+Sueldo_extra;
Escribir "El sueldo total es: ", Sueldo_total;
FinAlgoritmo

CÓDIGO DE EJERCICIO 1 EN DEV-C++

#include<iostream>
using namespace std;

int main() {
float dias_mes;
float horas_dia;
float horas_extra;
float sueldo_dia;
float sueldo_extra;
float sueldo_mes;
float sueldo_total;
int trabajador;
float valor_extra;
float valor_hora;
cout << "Calcular Sueldo y horas extra" << endl;
cout << "Ingrese el nombre del trabajador " << endl;
UNIVERSIDAD ABIERTA INTERAMERICANA
FACULTAD DE TECNOLOGÍA INFORMÁTICA
Programación Estructurada
Trabajo práctico individual Nro 1 – Año 2020

cin >> trabajador;


cout << "Ingrese el número de horas de trabajo al día" << endl;
cin >> horas_dia;
cout << "Ingrese el valor de cada hora de trabajo: " << endl;
cin >> valor_hora;
cout << "Ingrese el número de dias trabajados en el mes: " << endl;
cin >> dias_mes;
cout << "Ingrese el número de horas extra: " << endl;
cin >> horas_extra;
cout << "Ingrese el valor de cada hora extra: " << endl;
cin >> valor_extra;
sueldo_dia = horas_dia*valor_hora;
sueldo_mes = sueldo_dia*dias_mes;
sueldo_extra = horas_extra*valor_extra;
sueldo_total = sueldo_mes+sueldo_extra;
cout << "El sueldo total es: " << sueldo_total << endl;
return 0;
}
UNIVERSIDAD ABIERTA INTERAMERICANA
FACULTAD DE TECNOLOGÍA INFORMÁTICA
Programación Estructurada
Trabajo práctico individual Nro 1 – Año 2020

Diagrama de flujo Ejercicio 1 “Secuencial”


UNIVERSIDAD ABIERTA INTERAMERICANA
FACULTAD DE TECNOLOGÍA INFORMÁTICA
Programación Estructurada
Trabajo práctico individual Nro 1 – Año 2020

b)

Pseudocódigo Ejercicio 2

Algoritmo Ejercicio2Seleccion
Definir total Como Entero
Definir num_art Como Entero
Definir precio Como Entero
Definir preciobruto Como Real
Definir desc Como Real
// inicio
Escribir 'Ingresar precio del producto'
Leer precio
Escribir 'Ingresar cantidad de artículos del producto seleccionado'
Leer num_art
total <- precio*num_art
iva <- total*0.19
preciobruto <- total+iva
Si preciobruto>=11000 Entonces
desc <- (preciobruto*7)/100
SiNo
desc <- 0
FinSi
preciobruto <- preciobruto-desc
Escribir 'Precio de venta total sin IVA ',total
Escribir 'El IVA es : ',iva
Escribir 'El descuento es : ',desc
Escribir 'El precio que paga el cliente es : ',preciobruto
FinAlgoritmo

CÓDIGO DE EJERCICIO 2 EN DEV-C++

#include<iostream>
using namespace std;

int main() {
float desc;
float iva;
int num_art;
int precio;
float preciobruto;
int total;
// inicio
cout << "Ingresar precio del producto" << endl;
UNIVERSIDAD ABIERTA INTERAMERICANA
FACULTAD DE TECNOLOGÍA INFORMÁTICA
Programación Estructurada
Trabajo práctico individual Nro 1 – Año 2020

cin >> precio;


cout << "Ingresar cantidad de artículos del producto seleccionado" <<
endl;
cin >> num_art;
total = precio*num_art;
iva = total*0.19;
preciobruto = total+iva;
if (preciobruto>=11000) {
desc = (preciobruto*7)/100;
} else {
desc = 0;
}
preciobruto = preciobruto-desc;
cout << "Precio de venta total sin IVA " << total << endl;
cout << "El IVA es : " << iva << endl;
cout << "El descuento es : " << desc << endl;
cout << "El precio que paga el cliente es : " << preciobruto << endl;
return 0;
}
UNIVERSIDAD ABIERTA INTERAMERICANA
FACULTAD DE TECNOLOGÍA INFORMÁTICA
Programación Estructurada
Trabajo práctico individual Nro 1 – Año 2020

Diagrama de flujo ejercicio 2 “Selección”


UNIVERSIDAD ABIERTA INTERAMERICANA
FACULTAD DE TECNOLOGÍA INFORMÁTICA
Programación Estructurada
Trabajo práctico individual Nro 1 – Año 2020

c)

Pseudocódigo Ejercicio 3

Algoritmo Ejercicio3Iteración
Definir n Como Entero
Definir cont Como Entero
Definir cantrep Como real //Cantidad de notas de "reprobado"
Definir numapro Como real // Número de aprobados
Definir suma_rep Como Entero // Suma de reprobados
Definir suma_ap Como Entero // Suma de aprobados
Definir suma Como Entero
Definir nota Como Entero
Definir prom_rep Como real // Promedio de reprobados
Definir prom_ap Como real // promedio de aprobados
Definir prom Como real // promedio de notas en general
//Inicio
Escribir "Ingresar cantidad de notas a evaluar : "
Leer n
cont <-1
cantrep <-0
numapro <-0
suma_rep <-0
suma_ap <-0
suma <-0
//Cada nota tiene un puntaje entre 0 y 100 puntos
Mientras cont<= n Hacer
Escribir "Las notas se califican de 0 a 100 puntos"
Escribir "Ingresamos notas :"
Leer nota
Si nota < 51 Entonces
cantrep <- cantrep +1
suma_rep <- suma_rep + nota
SiNo
numapro <- numapro +1
suma_ap <-suma_ap +nota
Fin Si
suma <- suma + nota
cont <- cont +1
Fin Mientras
prom_ap <- suma_ap / numapro
prom_rep <- suma_rep/cantrep
prom <-suma/n
Escribir "Cantidad de materias reprobadas: ", cantrep
Escribir "Cantidad de materias aprobadas : ",numapro
Escribir "Promedio general del estudiante: ",prom
UNIVERSIDAD ABIERTA INTERAMERICANA
FACULTAD DE TECNOLOGÍA INFORMÁTICA
Programación Estructurada
Trabajo práctico individual Nro 1 – Año 2020

Escribir "Promedio de materias aprobadas: ",prom_ap


Escribir "Promedio de materias reprobadas :", prom_rep
FinAlgoritmo

CÓDIGO EJERCICIO 3 EN DEV-C++

#include<iostream>
using namespace std;

int main() {
float cantrep;
int cont;
int n;
int nota;
float numapro;
float prom;
float prom_ap;
float prom_rep;
int suma;
int suma_ap;
int suma_rep;
// Cantidad de notas de "reprobado"
// Numero de aprobados
// Suma de reprobados
// Suma de aprobados
// Promedio de reprobados
// promedio de aprobados
// promedio de notas en general
// Inicio
cout << "Ingresar cantidad de notas a evaluar : " << endl;
cin >> n;
cont = 1;
cantrep = 0;
numapro = 0;
suma_rep = 0;
suma_ap = 0;
suma = 0;
// Cada nota tiene un puntaje entre 0 y 100 puntos
while (cont<=n) {
cout << "Las notas se califican de 0 a 100 puntos" << endl;
cout << "Ingresamos notas :" << endl;
cin >> nota;
if (nota<51) {
cantrep = cantrep+1;
suma_rep = suma_rep+nota;
UNIVERSIDAD ABIERTA INTERAMERICANA
FACULTAD DE TECNOLOGÍA INFORMÁTICA
Programación Estructurada
Trabajo práctico individual Nro 1 – Año 2020

} else {
numapro = numapro+1;
suma_ap = suma_ap+nota;
}
suma = suma+nota;
cont = cont+1;
}
prom_ap = suma_ap/numapro;
prom_rep = suma_rep/cantrep;
prom = suma/n;
cout << "Cantidad de materias reprobadas: " << cantrep << endl;
cout << "Cantidad de materias aprobadas : " << numapro << endl;
cout << "Promedio general del estudiante: " << prom << endl;
cout << "Promedio de materias aprobadas: " << prom_ap << endl;
cout << "Promedio de materias reprobadas :" << prom_rep << endl;
return 0;
}
UNIVERSIDAD ABIERTA INTERAMERICANA
FACULTAD DE TECNOLOGÍA INFORMÁTICA
Programación Estructurada
Trabajo práctico individual Nro 1 – Año 2020

Diagrama de flujo ejercicio 3 “Iteración”

Foto 1
UNIVERSIDAD ABIERTA INTERAMERICANA
FACULTAD DE TECNOLOGÍA INFORMÁTICA
Programación Estructurada
Trabajo práctico individual Nro 1 – Año 2020

Foto 2
UNIVERSIDAD ABIERTA INTERAMERICANA
FACULTAD DE TECNOLOGÍA INFORMÁTICA
Programación Estructurada
Trabajo práctico individual Nro 1 – Año 2020

Foto 3

También podría gustarte