tutorial de algoritmos 2da parte

Iniciado por netco0m, 26 Agosto 2012, 08:23 AM

0 Miembros y 1 Visitante están viendo este tema.

netco0m

hola aqui seguimos con el tutorial de algoritmos en DF
dato : un procesador trabaja a 10^-9 seg.(nanosegundos)

bueno como ya hemos visto un algoritmo simple de un contador, ahora veremos un algoritmo en DF, que al ingresar numeros enteros, este nos muestre los numeros pares, y cuando no sea par nos de un mensaje que no es par.



bueno siguiendo con el tema, en este ejersicio are algo asi de un algoritmo que imita el proceso de sacar el promedio de notas (calificaciones), de un alumo en su colegio.



Este es un ejemplo de formulación de algoritmos mediante el mejoramiento de arriba/abajo(estructuras de control anidadas). Orientado a C++


[align=justify]Si consideramos un problema como este :  En un colegio  se dará un examen a aquellos alumnos que hayan aprobado el curso de prerrequisito para el mismo y necesitan saber si el alumno aprobo o reprobo el curso prerrequisito en una lista mmm digamos que de 15 alumnos, y será un codigo sencillo de un simple 1 aprobado o 2 reprobado.[/align]

Nuestro programa debe analizar los resultados de el examen de esta manera:

1.   Introducir cada resultado (1 o 2), que en la pantalla nos despliegue el mensaje de " Introducir resultado", cada vez que el programa nos pida otro resultado de examen.

2.   Que cuente el numero de resultados del examen de cada tipo.

3.   Desplegar un resumen de los resultados, que nos indique la cantidad de alumnos aprobados y reprobados.

4.   Si aprobaron mas de 10 alumnos que nos despliegue un mensaje de "Incrementaar Inscripciones"


Empezamos haciendo un orden lógico para nuestro codigo después de haber analizado cuidadosamente las instrucciones y podemos hacer observaciones sobre el codigo que haremos:

1.   El programa debe procesar los resultados de la evaluación para 15 estudiantes, utilizaremos una repetición controlada por un contador.

2.   Cada resultado de la evaluación es un numero, 1 o 2. Cada vez que el progama lee un resultado el programa debe determinar si el numero es igual a 1 o a 2; nuestro algoritmo evaluaremos el "1" , si el numero no es igual a 1 se asume que es 2.

3.   Analizamos utilizar 2 contadores para mantener la pista de los resultados, uno para contar los alumnos que aprobaron y otro para contar los que reprobaron.

4.   Después que el programa procesó todos los resultados nos debe de decir si mas de diez estudiantes aprobaron.



Bien procedamos pasito a pasito con el mejoramiento arriba/abajo.

Nuestra primera mejora sería:

CitarInicializa las variables
Introduce quince calificaciones y cuenta aprobados y reprobados
Despliega un resumen de los resultados y decide si las inscripciones se aumentan

[align=justify]Aunque tengamos una representación mas o menos completa del programa debemos mejorarla, y pondremos variables especificas; los contadores son necesarios para registrar aprobados y reprobados, entonces utilizaremos un contador para el proceso de ciclo y necesitamos una variable para almacenar la entrada del usuario. Aunque la variable  almacena la entrada no se inicializara ya que viene del usuario durante el ciclo de iteración del ciclo.[/align]

La instrucción del pseudocodigo xD

CitarInicializa variables

Podemos mejorar......

CitarInicializa aprobados con cero
Inicializa reprobados con cero
Inicializa contador de estudiantes con uno

Observaremos que solo se inicializaron los contadores.

CitarIntroduce quince calificaciones y cuenta aprobados y los reprobados

[align=justify]Bien esto requiere un ciclo para que introduzca de manera sucesiva el resultado de cada examen, de antemano sabemos que son quince resultados, entonces de manera apropiado un ciclo controlado por un contador. Dentro del ciclo(es decir, anidado en el ciclo xD, para los que no conocen bien los terminos), una estructura de selección doble determinara si cada resultado es aprobado o reprobado e incrementara el contador apropiado...entonceeeeees aquí viene la mejora del pseudocodigo anterior:[/align]

CitarWhile el contador de estudiantes sea menor o igual que quince
   Introduce el siguiente resultado del examen

   If el estudiante aprobó
      Suma uno a aprobados
   
   Else
      Suma uno a reprobados

   Suma uno al contador de estudiantes


Observen que el uso de lineas en blanco para terminar la estructura de control if/else y mejorar la claridad del mismo

Despliega u resumen de los resultados del examen y decide si las inscripciones deben aumentarse

Podemos definirlo de esta manera:

CitarDespleiga el numero de aprobados
Despliega el numero de reprobados

   If aprobaron mas de diez estudiantes
      Despliega "Aumentar inscripciones"





Bien entonces nuestro pseudocodigo completo quedaria de esta manera:

CitarInicializa aprobados con cero
Inicializa reprobados con cero
Inicializa contador de estudiantes con uno

While el contador de estudiantes sea menor o igual que quince
   Introduce el siguiente resultado del examen

   If el estudiante aprobó
      Suma uno a aprobados

   Else
      Suma uno a reprobados

Despliega el numero de aprobados
Despliega el numero de reprobados

If aprobaron mas de diez estudiantes
   Despliega "Aumentar inscripciones"

Este sería nuestro producto final xD:
#include <iostream>

using namespace std;

int main()
{
int aprobados=0;
int reprobados=0;
        int contadorAlumnos=1;
int resultado;

while ( contadorAlumnos <= 15 ) {

cout << "Introduce resultado (1 = aprobado, 2 = reprobado) :";
cin >> resultado;

if ( resultado==1)
aprobados = aprobados + 1;

else
reprobados = reprobados + 1;

contadorAlumnos = contadorAlumnos +1;
   }
   
   cout << "Aprobados " << aprobados << endl;
   cout << "Reprobados " << reprobados << endl;
   
   if ( aprobados > 10 )
cout << "Aumentar inscripciones " << endl;

return 0;

}



bueno cualquier duda me la preguntan en un comentario, adios y que les sirva
.
.
.
credits : pum4
solo falta decirle adiós a la persona que amas para estar mas tiempo en el computador!