Docsity
Docsity

Prepare-se para as provas
Prepare-se para as provas

Estude fácil! Tem muito documento disponível na Docsity


Ganhe pontos para baixar
Ganhe pontos para baixar

Ganhe pontos ajudando outros esrudantes ou compre um plano Premium


Guias e Dicas
Guias e Dicas

apuntes de clase de programacion, Resumos de Informática

desarrollo de algoritmos desarrollo de algoritmos

Tipologia: Resumos

2025

Compartilhado em 12/04/2025

felipe-loayza-beramendi-1
felipe-loayza-beramendi-1 🇧🇷

2 documentos

1 / 50

Toggle sidebar

Esta página não é visível na pré-visualização

Não perca as partes importantes!

bg1
I NT RO DU C CI ÓN A LA AL GO RI T MI A 93
Estructura de Selección Múltiple
switch
LOGRO DE LA UNIDAD DE APRENDIZAJE
Al finalizar la unidad, los alumnos, utilizando estructuras algorítmicas de selección,
diseñarán algoritmos en pseudocódigo que resuelvan problemas que involucren tomas
de decisiones.
TEMARIO
6.1. La estructura de selección múltiple switch.
ACTIVIDADES
Los alumnos desarrollan algoritmos que involucren estructuras de selección múltiple.
UNIDAD DE
APRENDIZAJE
3
SEMANA
9
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a
pf1b
pf1c
pf1d
pf1e
pf1f
pf20
pf21
pf22
pf23
pf24
pf25
pf26
pf27
pf28
pf29
pf2a
pf2b
pf2c
pf2d
pf2e
pf2f
pf30
pf31
pf32

Pré-visualização parcial do texto

Baixe apuntes de clase de programacion e outras Resumos em PDF para Informática, somente na Docsity!

I N T R O D U C C I Ó N A L A A L G O R I T M I A 9 3

Estructura de Selección Múltiple

switch

LOGRO DE LA UNIDAD DE APRENDIZAJE

Al finalizar la unidad, los alumnos, utilizando estructuras algorítmicas de selección,

diseñarán algoritmos en pseudocódigo que resuelvan problemas que involucren tomas

de decisiones.

TEMARIO

6.1. La estructura de selección múltiple switch.

ACTIVIDADES

Los alumnos desarrollan algoritmos que involucren estructuras de selección múltiple.

UNIDAD DE

APRENDIZAJE

SEMANA

94

6.1. LA ESTRUCTURA DE SELECCIÓN MULTIPLE switch

La e structura de selección múltiple switch permite seleccionar una ruta de entre varias

rutas posibles en base al valor de una variable selector que se compara con una lista

de constantes enteras o de carácter c1 , c2 , c3 , ..., cn. Cuando se encuentra una

correspondencia entre el valor de la variable selector y una constante, se ejecuta la

acción o el grupo de acciones asociadas a dicha constante. Si el selector no coincide

con ninguna constante, se efectúa la acción por defecto, si es que existe.

Figura 6.1 Estructura de Selección Múltiple switch

En la tabla que sigue se muestra el código y el pseudocódigo de la estructura switch.

Código C++ Pseudocódigo

switch ( selector ){ case c1 : accion1 ; break; case c2 : accion2 ; break; . . . case cn : accionn ; break; default : acciondefecto ; }

segun ( selector ){ caso c1 : accion caso c2 : accion . . . caso cn : accionn defecto: acciondefecto }

96

El equivalente switch es el siguiente:

switch ( z ){ case 0: a = 10; break; case 1: case 3: case 5: a = 2; break; case 2: case 4: a = 7; break; default: a = 3; }

Problema 6. 3

Diseñe un programa que determine la cantidad de días y el nombre de un mes

conociendo los valores numéricos del mes y del año.

Algoritmo

Inicio // Declaración de variables entero dias, mes, anio cadena nombre

// Entrada de datos Leer mes, anio

// Determina el nombre del mes según( mes ){ caso 1 : nombre = "Enero" caso 2 : nombre = "Febrero" caso 3 : nombre = "Marzo" caso 4 : nombre = "Abril" caso 5 : nombre = "Mayo" caso 6 : nombre = "Junio" caso 7 : nombre = "Julio" caso 8 : nombre = "Agosto" caso 9 : nombre = "Setiembre" caso 10: nombre = "Octubre" caso 11: nombre = "Noviembre" defecto: nombre = "Diciembre" }

// Determina el número de días del mes según( mes ){ caso 1: caso 3: caso 5: caso 7: caso 8: caso 10: caso 12: dias = 31 caso 4: caso 6: caso 9: caso 11: dias = 30

I N T R O D U C C I Ó N A L A A L G O R I T M I A 9 7

defecto: si((anio%4 == 0) && ((anio%100 != 0) || (anio%400 == 0))) dias = 29 sino dias = 28 }

// Salida Imprimir nombre, dias Fin

Programa

#include #include

using namespace std;

int main() {

// Declaración de variables int dias, mes, anio; string nombre;

// Entrada de datos cout << "Ingrese el mes (Enero = 1, Febrero = 2, etc) : "; cin >> mes; cout << "Ingrese el anio actual : "; cin >> anio;

// Determina el nombre del mes switch( mes ){ case 1 : nombre = "Enero"; break; case 2 : nombre = "Febrero"; break; case 3 : nombre = "Marzo"; break; case 4 : nombre = "Abril"; break; case 5 : nombre = "Mayo"; break; case 6 : nombre = "Junio"; break; case 7 : nombre = "Julio"; break; case 8 : nombre = "Agosto"; break; case 9 : nombre = "Setiembre"; break; case 10: nombre = "Octubre"; break; case 11: nombre = "Noviembre"; break; default: nombre = "Diciembre"; }

I N T R O D U C C I Ó N A L A A L G O R I T M I A 9 9

caso 3: ancho =8.52. alto = 112. caso 4: ancho =8.52. alto = 142. caso 5: ancho =7.252. alto = 10.52. defecto: ancho =5.52. alto = 8.52. }

// Calcula el area imprimible area = (ancho-mrgizq-mrgder)*(alto-mrgsup-mrginf)

// Muestra al área imprimible Imprimir area Fin

Programa

#include #include

using namespace std;

int main() {

// Declaración de variables int tamanio; double mrgsup, mrginf, mrgder, mrgizq, ancho, alto, area;

// Entrada ade datos cout << "TAMANIO DEL PAPEL" << endl; cout << "A4 = 0" << endl; cout << "B5 = 1" << endl; cout << "A5 = 2" << endl; cout << "Carta = 3" << endl; cout << "Legal = 4" << endl; cout << "Ejecutivo = 5" << endl; cout << "Media carta = 6" << endl << endl; cout << "Ingrese el tamanio de papel : "; cin >> tamanio; cout << "Ingrese el margen superior (cm) : "; cin >> mrgsup; cout << "Ingrese el margen inferior (cm) : "; cin >> mrginf; cout << "Ingrese el margen derecho (cm) : "; cin >> mrgder; cout << "Ingrese el margen izquierdo (cm) : "; cin >> mrgizq;

// Determina el ancho y el alto del papel en cm switch(tamanio){ case 0: ancho = 29.7; alto = 21.0; break; case 1: ancho = 18.2; alto = 25.7; break; case 2: ancho = 14.8; alto = 21.0;

100

break; case 3: ancho =8.52.54; alto = 112.54; break; case 4: ancho =8.52.54; alto = 142.54; break; case 5: ancho =7.252.54; alto = 10.52.54; break; default: ancho =5.52.54; alto = 8.52.54; }

// Calcula el área imprimible area = (ancho-mrgizq-mrgder)*(alto-mrgsup-mrginf);

// Muestra al área imprimible cout << "Area imprimible : " << area << " cm2" << endl;

system("pause"); return 0; }

Problema 6.

Diseñe un algoritmo que determine la cifra de las unidades de un número natural como

palabra.

Algoritmo

Inicio // Declaración de variables entero numero, unidades cadena palabra

// Entrada de datos Leer numero

// Determine la cifra de las unidades como número unidades = numero%

// Determine la cifra de las unidades como palabra segun ( unidades ){ caso 0 : palabra = “cero” caso 1 : palabra = “uno” caso 2 : palabra = “dos” caso 3 : palabra = “tres” caso 4 : palabra = “cuatro” caso 5 : palabra = “cinco” caso 6 : palabra = “seis” caso 7 : palabra = “siete” caso 8 : palabra = “ocho” defecto : palabra = “nueve” }

// Salida de resultados Imprimir palabra

Fin

102

Problemas propuestos

Actividad

1. Una heladería vende helados a los precios unitarios dados en la siguiente tabla:

Helado Precio unitario

Sol S/. 1.

Fresa S/. 2.

Mar S/. 1.

Rico S/. 2.

Diseñe un algoritmo que determine el importe a pagar por la compra de cierta

cantidad de helados del mismo tipo.

2. Reemplace la estructura if...else...if por la estructura switch. Considere que n es

de tipo int.

if ( n == 0 ) z = 1; else if ( n == 7 || n == 4 ) { z = 2; if( a < b) z = 7; } else if( n == 5 ) z = 5; else z = 8;

3. Diseñe un algoritmo que califique el puntaje obtenido en el lanzamiento de un

dado de acuerdo a la siguiente tabla:

Puntaje Calificación

1 ó 2 Pésimo

3 ó 4 Regular

5 Muy bien

6 Excelente

4. La empresa Construya Fácil ha puesto a la venta los libros indicados en la

siguiente tabla:

Puntaje Precio en la sede

Manual Práctico de Construcción $ 30

Manual Práctico de Instalaciones Sanitarias $ 27

Manual Práctico de Instalaciones Eléctricas $ 20

Manual Práctico de Acabados $ 35

I N T R O D U C C I Ó N A L A A L G O R I T M I A 1 0 3

Los precios indicados en la tabla se aplican en caso que el pago se efectúe en la

sede de la empresa. Si el pago se efectúa a domicilio, el precio se incrementa en

un 2%. Dada una compra de cierta cantidad de unidades de un mismo título de

libro, diseñe un algoritmo que determine el importe total a pagar y el precio

unitario pagado por cada libro.

Autoevaluación

1. Diseñe un programa que lea un número entero en el intervalo de 1 a 7,

correspondiente a un día de la semana y determine el nombre del día. Considere:

1 para lunes, 2 para martes, 3 para miércoles, 4 para jueves, 5 para viernes, 6

para sábado y 7 para domingo. Si el número no está en el intervalo de 1 a 7,

imprima un mensaje de error.

2. En un instituto, los cursos de matemática, física y química se evalúan en base a

tres prácticas calificadas. Cada práctica tiene un peso dado en la siguiente tabla:

Curso Práctica 1 Práctica 2 Práctica 3

Matemática 1 2 3

Física 1 1 2

Química 1 1 1

Dadas las notas de práctica de un alumno para uno de los tres cursos, diseñe un

programa que determine el peso de cada práctica, el promedio final del alumno y

su condición de aprobado o desaprobado. La nota mínima aprobatoria es 13.

3. En un cine, los precios de las entradas son los mostrados en la siguiente tabla:

Día General Niños

Lunes S/. 9 S/.

Martes S/. 7 S/.

Miércoles a Viernes S/. 10 S/.

Sábado y Domingo S/. 12 S/.

Como oferta, el cine entrega un vale por media entrada si el número total de

entradas adquiridas (la suma del número de entradas generales más el número

de entradas de niños) es mayor que 5. Diseñe un programa que determine cuánto

debe pagar un cliente por la compra de cierta cantidad de entradas generales y/o

de niños.

4. Determine que imprime el siguiente fragmento de programa para cada uno de los

siguientes casos: a). v igual a 1, b). v igual a 2, c). v igual a 3 y d). v igual a 4.

Considere que la variable v es de tipo int.

switch(v){

case 1:

cout << "Uno\n";

case 2:

I N T R O D U C C I Ó N A L A A L G O R I T M I A 1 0 5

Para recordar

 Si un case no tiene break, sucederá que al ejecutar las acciones de dicho case

se ejecutarán, también, las acciones de los case que siguen hasta encontrar un

break o hasta llegar al final del switch.

 Se puede usar la estructura switch en una toma de decisiones únicamente si las

condiciones consisten en comparaciones de una misma variable con una lista de

constantes enteras o de carácter.

106

108

7.1. PROGRAMACION MODULAR

La programación modular es una metodología de programación que permite construir

un programa grande descomponiéndolo en pequeños subprogramas o módulos. Para

ello se parte de un módulo principal que se descompone en varios submódulos que

son controlados por el módulo principal. Si la tarea asignada a un módulo es

demasiado compleja este deberá descomponerse en otro módulos más pequeños

hasta lograr módulos que hagan tareas relativamente sencillas. A este proceso de

refinamiento sucesivo se conoce también como la técnica de “divide y vencerás”.

Figura 7.1 Descomposición modular de un programa

Las tareas asignadas a los subprogramas pueden ser de diversa índole: entrada,

salida, cálculos, control de otros módulos, etc. Para que un subprograma pueda

efectuar su tarea tiene que ser llamado o invocado por el programa principal o por

algún otro módulo que considere necesario el servicio del subprograma. Una vez que

el subprograma termina su tarea, devuelve el control al punto donde se hizo la

llamada. Un subprograma puede llamar a su vez a otros subprogramas.

Figura 7.2 Un programa con diferentes niveles de subprograma.

En el lenguaje C++ a los módulos o subprogramas se denominan funciones.

I N T R O D U C C I Ó N A L A A L G O R I T M I A 1 0 9

7.2. VARIABLES LOCALES Y GLOBALES

Las funciones pueden utilizar sus propias variables denominadas variables locales o

variables de uso compartido, comunes a todos las funciones, denominadas variables

globales.

7.2.1. Variables Locales

Una variable local tiene las siguientes características:

Declaración : Se declara en el interior de una función.

Alcance : Sólo puede ser utilizada en el interior de la función que la declara

Creación : Se crea al iniciar la ejecución de la función que la declara

Destrucción : Se destruye al finalizar la ejecución de la función que la declara

Inicialización : No se inicializa automáticamente, pero al crearse no se crea vacía,

sino que contienen un valor basura.

7.2.2. Variables Globales

Una variable global tiene las siguientes características:

Declaración : Se declara en el exterior de todos las funciones y antes de la

definición de la primera función.

Alcance : Puede ser utilizada por cualquier función del programa

Creación : Se crea al iniciar la ejecución del programa.

Destrucción : Se destruye al finalizar la ejecución del programa.

Inicialización : Se inicializadas automáticamente: en 0 si es de tipo int , en 0.0 si es

de tipo double , en false si es de tipo bool , en ‘\0’ si es de tipo char

y en "\0" si es de tipo string

7.3. FUNCIONES TIPO void

Una función tipo void es un módulo de programa que puede recibir datos de entrada

a través de variables locales denominadas parámetros ; pero, que no retorna ningún

resultado al punto donde es invocado, razón por el que se le conoce también como

función sin valor de retorno.

Las funciones tipo void pueden dividirse a su vez en dos tipos:

 Funciones tipo void sin parámetros.

 Funciones tipo void con parámetros.

7.3.1. Función tipo void sin parámetros

Estas funciones no pueden recibir datos de entrada ni retornar ningún resultado al

punto de su invocación.

I N T R O D U C C I Ó N A L A A L G O R I T M I A 1 1 1

Definición

La definición de una función tipo void con parámetros sigue la siguiente sintaxis:

void nombre ( tipo1 p1, tipo2 p2, tipo3 p3,... ){

Declaración de variables locales

Cuerpo de la función

Donde:

nombre : Es el nombre de la función

p1, p2, p3, ... : Son los nombres de los parámetros

tipo1, tipo2, tipo3, … : Son los tipos de datos de los parámetros

Llamada

La invocación o llamada se efectúa de la siguiente manera:

nombre (v1, v2, v3,... );

Donde:

nombre : Es el nombre de la función invocada

v1, v2, v3, ... : Son los valores dados a los parámetros (argumentos)

7.4. PROTOTIPOS DE FUNCIONES

C++ requiere que una función se declare o se defina antes de su uso. La declaración

de una función se denomina prototipo. El prototipo de una función contiene la misma

cabecera usada en la definición de la función, con la diferencia que los prototipos

terminan con punto y coma. En la lista de parámetros de los prototipos únicamente se

requieren los tipos de datos de los parámetros, añadir los nombres de los parámetros

es opcional.

Por ejemplo, la siguiente es una lista de prototipos válidos:

void funcion1();

void funcion2(int x, int z);

void funcion3(string, int, int);

Los prototipos se sitúan normalmente al principio del programa, antes de la definición

de la función main. Los prototipos permiten, al compilador, verificar el uso correcto de

la función al validar que el número y tipo de los argumentos (datos enviados a los

parámetros) sean correctos.

La definición de la función declarada debe existir en alguna parte del programa, antes

o después de la función main.

112

7.5. PROBLEMAS RESUELTOS

Problema 7.

En una universidad, los alumnos están categorizados en cuatro categorías. A cada

categoría le corresponde una pensión mensual distinta dada en la siguiente tabla:

Categoría Pensión

A S/. 550

B S/. 500

C S/. 460

D S/. 400

Semestralmente, la universidad efectúa rebajas en las pensiones de sus estudiantes a

partir del segundo ciclo en base al promedio ponderado del ciclo anterior en

porcentajes dados en la tabla siguiente:

Promedio Descuento

0 a13.99 No hay descuento

14.00 a 15.99 10 %

16.00 a 17.99 12 %

18.00 a 20.00 15 %

Diseñe un programa que determine cuánto de rebaja recibirá un estudiante sobre su

pensión actual y a cuánto asciende su nueva pensión.

Declare todas las variables como globales y use funciones tipo void.

Programa

#include #include

using namespace std;

// ----------------------------------------------------------------------- // Prototipos de funciones void ingresarDatos(); void calcularPensionActual(); void calcularDescuento(); void calcularNuevaPension(); void mostrarResultados(); // ----------------------------------------------------------------------- // Declaración de variables globales char categoria; double promedio, actualpen, nuevapen, descuento; // ----------------------------------------------------------------------- // Ingresa datos void ingresarDatos(){ cout << "Ingrese la categoria (A/B/C/D) : "; cin >> categoria; cout << "Ingrese el promedio ponderado : "; cin >> promedio; } // ----------------------------------------------------------------------- // Calcula la pensión actual