Introducción a la Programación.

miércoles, 2 de marzo de 2022

Algoritmo con estructuras repetitivas

 Análisis del problema y diseño de un algoritmo, utilizando estructuras repetitivas 

Supongamos que necesitamos diseñar un algoritmo que permita a un profesor calcular el promedio de notas de cada una de sus secciones asignadas en un periodo académico.

Al principio del proceso se desconoce de cuántas secciones se trata, y también desconoce la cantidad de alumnos inscritos por cada sección a cargo del profesor.

1)      Análisis del problema

Problema: Calcular promedio de notas por sección.

Datos:

  •    Datos Fijos o Constantes: Ninguno
  •    Datos que debe dar el usuario: Las notas de cada alumno por sección

Operaciones a realizar:

Por cada sección se van acumulando las notas de cada estudiante, una vez sumadas todas, se divide entre la cantidad de alumnos totalizados.

Salida:

El promedio calculado por cada sección

 

2)      Algoritmo

 Algoritmo PromediandoSecciones

Declaración

Variables

   HaySec: Carácter

   Alumnos, i: Entero

   Nota, Suma, Promedio: Real

Inicio

  Escribir “Algoritmo que procesa notas por secciones, para promediarlas”

  Escribir “Indique la letra s, si tiene sección para procesar, sino introduzca cualquier tecla”

  Leer HaySec

  Mientras (HaySec = ´s´) Hacer

   Sumaß 0

   Promedio ß0

   Escribir “Cuántos alumnos tiene la sección a procesar”

   Leer Alumnos

   Para i= 1 Hasta Alumnos inc 1

      Escribir “Introduzca nota del alumno #”, i

      Leer Nota

      SumaßSuma + Nota

   Fin Para

   Promedio ß suma/Alumnos

   Escribir “El promedio de la sección procesada es de “, Promedio, “ ptos.”

   Escribir “Existe otra sección para procesar”

   Leer HaySec

Fin Mientras

Fin

 

Comentario: Fíjese como podemos obtener algoritmos con ciclos anidados, es decir, un ciclo dentro de otro ciclo. Tal es el caso del ciclo de los alumnos (Para), que tiene por objeto pedir en cada iteración, la nota por alumno para sumarla. Este ciclo está dentro del ciclo de las secciones (Mientras), que tendrá una iteración por cada sección existente.

 

En cada iteración del ciclo de las secciones, se tendrán tantas iteraciones como alumnos se hayan especificado en la entrada de datos.

HaySec es la variable que controla las iteraciones en el ciclo Mientras, y la variable i, controla las iteraciones en el ciclo Para.

 

 

domingo, 20 de febrero de 2022

¿Qué es el anidamiento de estructuras selectivas?

Condicionales anidadas

Las estructuras selectivas permiten indicar acciones selectivas en los algoritmos y programas. Generalmente, la lógica para la resolución algorítmica de un problema necesita que estas estructuras se aniden, es decir, se establezcan condiciones dentro de condiciones, formando así una especie de cascada. Es por ello que en este post les presento un ejemplo.

Este estracto de algoritmo permite determinar cuál es el número intermedio entre los valores de A, B y C. Mostrando el orden ascendente entre ellos.

sábado, 19 de febrero de 2022

Algoritmo con Estructuras Selectivas. Ejemplo 1

Algoritmo para el cálculo de nota definitiva de un estudiante

Veamos el diseño del algoritmo que calcula la nota definitiva de un estudiante, en función de 3 notas parciales equivalentes al 35%, 40% y 25% respectivamente.

El algoritmo debe indicar si el estudiante aprobó o no la materia. Tome en cuenta que las notas son valores del 0 al  10. Se aprueba con 4.5 puntos o más.

En caso de que la nota definitiva indique que el estudiante reprobó, el algoritmo debe verificar si el estudiante tiene al menos una de las notas con valor por encima o igual a 7 puntos o más, de tal forma que se le puedan sumar 0.5 puntos. 

ALGORITMO  CALCULO NOTA 

DECLARACIÓN

CONSTANTES

   PORC1=0.35

   PORC2=0.40 

   PORC3=0.25

VARIABLES

   EXAM1, EXAM2,EXAM3, NOTA1,NOTA2,NOTA3,DEFI: REAL

INICIO

   ESCRIBIR “ALGORITMO QUE  CALCULA LA NOTA DEFINITIVA  DE UN ESTUDIANTE”

   ESCRIBIR”NOTA  DEL EXAMEN 1”

   LEER EXAM1

   ESCRIBIR”NOTA  DEL EXAMEN 2”

   LEER EXAM2

   ESCRIBIR”NOTA  DEL EXAMEN 3”

   LEER EXAM3

   SI (EXAM1>=0 Y EXAM2>=0 Y EXAM3>=0) ENTONCES

NOTA1 <= EXAM1*PORC1

NOTA2 <= EXAM2*PORC2

NOTA3 <= EXAM3*PORC3

DEFI <= NOTA1+NOTA2+NOTA3

SI  (DEFI>=4 Y DEFI<=4.4) ENTONCES

       SI (EXAM1>=7 O EXAM2>=7 O EXAM3>= 7) ENTONCES

                           DEFI <= DEFI + 0.5       

                   FIN SI

             FIN SI

             SI (DEFI>= 4.5) ENTONCES

                    RESPUESTA <= ”APROBÓ”

             SINO

                    RESPUESTA <= ”REPROBRÓ”

             FIN SI

             ESCRIBIR “EL ESTUDIANTE “, RESPUESTA, “LA MATERIA CON “, DEFI, “Ptos.”

    SINO

             ESCRIBIR ”ERROR, LAS NOTAS DEBEN SER VALORES ENTRE  0 Y 10”

   FIN SI

FIN

 


Observemos su respectiva codificación en lenguaje C++

#include <iostream>

using namespace std;

const float PORC1= 0.35;

const float PORC2=0.40;

const float PORC3=0.25;

int main(){

  float EXAM1, EXAM2,EXAM3, NOTA1,NOTA2,NOTA3,DEFI;

  char RESPUESTA[8]; //declaracion de una variable tipo cadena

  cout <<"PROGRAMA QUE  CALCULA LA NOTA DEFINITIVA  DE UN ESTUDIANTE \n";

  cout<<"NOTA  DEL EXAMEN 1\n";

  cin>> EXAM1;

  cout<<"NOTA  DEL EXAMEN 2\n";

  cin>>EXAM2;

  cout<<"NOTA  DEL EXAMEN 3\n";

  cin>>EXAM3;

  if (EXAM1>=0 && EXAM2>=0 && EXAM3>=0){

  NOTA1=EXAM1*PORC1;

  NOTA2=EXAM2*PORC2;

  NOTA3=EXAM3*PORC3;

  DEFI=NOTA1+NOTA2+NOTA3;

  if  (DEFI>=4 && DEFI<=4.4) 

       if (EXAM1>=7 || EXAM2>=7 || EXAM3>= 7)

           DEFI=DEFI+  0.5;

  if (DEFI>= 45)

     strcpy(RESPUESTA,"APROBO");

  else          

     strcpy(RESPUESTA,"REPROBRO");

  cout<< "\nEL ESTUDIANTE  "<<RESPUESTA<<"  LA MATERIA CON "<<DEFI<< "   Ptos.\n";

}  

else

  cout<<"\n ERROR, LAS NOTAS DEBEN SER VALORES ENTRE  0 Y 10";

system("pause");  

}//fin del main




 

 

viernes, 18 de febrero de 2022

Expresiones selectivas en la programación

Dentro de las estructuras de control se definen las estructuras selectivas, a través de estas podemos establecer criterios de ejecución de ciertas acciones en el algoritmo. 

martes, 15 de febrero de 2022

Variables

Hagamos el seguimiento a los cambios que sufren las variables a,b y c

Examine las asignaciones que se aplican a las variables a, b y c; sígalas en estricto orden y al final veamos cuáles son los valores de estas variables.

a ← 10

b ← 20

c ← 5

a ← a + 3

b ← b + 4 – a

c ← a + b + c

a ← a + c

b ← 4

c ← c + 3 - b + 2

 

Bien, para resolver esto, se sugiere hacer la traza o seguimiento de los cambios que van sufriendo las variables (que bien pudieran formar parte de un algoritmo). 

Como estrategia diseñemos una tabla, donde cada columna se rotule con una variable; y en cada fila se irán colocando los valores que las variables van adquiriendo en cada asignación que se le hace.

 

a

b

c

10

20

5

13

11

29

42

4

30

 

 !Listo, ya lo tienes!

Entonces... aplicando el proceso descrito anteriormente, resuelve las asignaciones siguientes.

1.  Examine las asignaciones que se aplican a las variables a, b, c y d; sígalas en estricto orden y al final diga cuáles son los valores finales de estas variables. 

a ← 5

b ← 18

c ← 15

d ← 25

a ← a + 10

b ← b + 5 – c

c ← c + 4 + b

d ← d + b + a

a ← a + 1

b ← b + c

c ← b + c

d ← b + b


2.   Examine las asignaciones que se aplican a las variables a y b; sígalas en estricto orden y al final diga cuáles son los valores finales de estas variables.

 

a ← 9

b ← 6

a ← a + 4

b ← b + 2

a ← a + 10

b ← b – 25

a ← a – 20

b ← b + 5

a ← a + 4

b ← b + 2

a ← a + 10

b ← b – 10

 Te invito a comentar cuál fue el resultado.


“Fíjese que una variable puede cambiar su valor, y puede mantener solo un valor a la vez”.