A lg o r it m o s y D ia g r a m a s " e f lu jo A p lic a d o s O
i
Megrabyte ue GRUPO
EDITORIAL
Primera Edición, Octubre 2006 : Computación e informática Hecho el Depósito Legal en la Biblioteca Nacional del Perú N e 2006 - 5844 (Ley N s 26905/D.S. N?017-98-ED) R.U.C. ND20507993444 ISBN: 9972-821 -83-8 Area
© Edward Aburto Correa Gerente General
© Robert Jaime Pantigoso Silva ____ © GGan Cario Apolinario García Autor
__„
Un Hbro abierto es un cerebro que habla; cerrado un amigo que espera; olvidado, un alma que perdona; destruido, un corazón que llora.
Proverbio hindú Dedico estas páginas a quienes me apoyan día a día y a ti que en la distancia iluminas el camino hacia la felicidad, te iubesc mult mon petit puiutz.
Contenido de CD
C o n t e n id o d e l E! Cd adjunto a este iibro contiene todos los programas desarrollados en =r irascurso del texto, con la finalidad de q ue el leyente comprue be la veracidad
ÍNDICE Capítulo: Conceptos Básicos Algoritmos Características de los algoritmos Programa Diagrama de flujo Variables Constantes Expresiones Operadores
19 ¡9 19 20 21 21 2] 22
Algoritmos y Diagramas de flujo aplicados e n C++
Pseudocódigo Ejemplo 1.1: Área de un triángulo Ejemplo 1.2: Escritura en forma inversa Ejemplo 1.3: Resolver (A+B)72 Ejemplo 1.4: Promedio de un alumno Ejemplo 1.5: Cuadrado y cubo de un número positivo.. Ejemplo 1.6: Perímetro y superficie de un rectángulo... Ejemplo 1.7: Área de circunferencia Problema 1.8: Conversión de unidades Problema 1.9: Casa de cambio Problema 1.10: Área y volumen de un cilindro Problema I.II: Conversión de acres a hectárea Problema 1.12: Velocidad en olimpiadas Problema 1.13: Área del triángulo en base a sus lados. Problema Í.I4: Intercambio de tres valores Problema 1.15: Intercambio de cinco números Problema 1.16: Invertir número de tres cifras Problema 1.17: Número mínimo de billetes Problema 1.18: Operaciones sobre un cono Problema 1.19: Área y volumen de una esfera Problema 1.20: Operaciones sobre un cubo Problema 1.21: Distancia entre dos puntos
índice
27 27 29 30 32 ió
34 36 37 39 40 41 42 45 46 48 49 52 53 56 57 59
< ii |> f tu l o I I : E s t r u c t u r a s l ó g i c a s s e l e c t i v a s Intrndi
n
SL,.Entonces (Selección simple) 3 I: Alumno aprobado Amurillo n trabajador ..Si no (Alternativa doble)
63 63 64 65 67
GRITO EDITORIAL MEGABYTE
Ejemplo 2.3: Alumno aprobado II Ejemplo 2.4: Aumento a trabajador II Anudamiento de Estructuras condicionales Ejemplo 2.5: Validación de nota ingresada Ejemplo 2.6: Número par o impar I ,i estructura de selección múltiple Ejemplo 2.7: Resolver función Ejemplo 2.8: Aumento de sueldo según1 categoría Ejemplo 2.9: Números en forma descendente Ejemplo 2.10; Número de sonidos emitidos por un grillo Ejemplo 2.11: Factores q satisfacen a P3 + Q4 - 2*P2 < 680 Ejemplo 2.12: Mayor y menor de dos números Ejemplo 2.13: Reportar calificación según rango de notas Ejemplo 2.14: Mayor de tres números Ejemplo 2.15: Números ordenados Ejemplo 2.5 6: Al menos dos letras iguales Ejemplo 2.17: Menú de operaciones Ejemplo 2.18: Aumento de trabajador según categoría Ejemplo 2.19: Promedio de alumno Ejemplo 2.20: Número capicúa Ejemplo 2.21 Formato de Fechas Ejemplo 2.22: Validar fecha Ejemplo 2.23: Calcular día siguiente Ejemplo 2.24: Días transcurridos
67 69 71 73 74 75 77 79 82 83 84 85 88 90 91 92 94 98 101 103 105 109 112
¡ipltulo III: Estructuras lógicas repetitivas Dtrotlucción 1
111 u 11 ira
117 Hacer Mientras
lo 3.1: Nómina de una empresa I ••• KMTORIAL MEGABYTE
117
119
índic
Algoritmos y Diagramas de flujo aplicados en
Ejemplo 3.2; Nómina con estructura Hacer mientras
121
Ejemplo 3.3: Obtene r número de ceros ingresado s
123
Estruct ura Mient ras
125
i mplo 1,2: Media aritm étic a mpl o4 ,3 : Máximo y mínimo de unas lista de números il.
iii' iiln de un vector
|d(1 til 111 burbuja
173 174 176 176
líjcmplo 3.4: Suma de gastos de viaje
126
Ejemplo 3.5: Calcul ar el cubo de un grupo de número s
128
I femplo 3.6: Cálcuio de compr a total
130
I [emplo 3.7: Pago de trabajadores
131
Ejemplo 3.8: Cálcul o de serie 100 + 98 + 96 + 94 + . . . + 0
133
I ¡emplo 3.9: Mostrar los N núme ros enteros
133
líjcmplo 3.10: Prom edio de un grupo de alumno s
135
litlii i Inc ul
19 5
rjomplo 3.11: Operaciones con números pares e impares
137
• l 'i . . l. i l u n a r i a
198
Ejemplo 3.12: Tabla de multiplicar.
• >l> orde nam iento de la burbuja mejor ada r orden amient o por Inserción i de Selección lOÜü tic She ll <
.|MM I.I L'M un vecto r
180 181 186 190 195
140
I •.lin dura Desde
142
Ululo V: Uso de funciones para desarrollar
Ejemplo 3.13 : Suma de los primeros númer o positivo s
142
Ejemplo 3.14: Núm ero primo
145
Ejemplo 3.15: Operac iones con sueldos
146
miiuilos
I juilipío 3.16: Calcu lar notas elimina ndo la menor
14S
i i i entre funciones y proce dimi entos
I yemplo 3.17: Númer o mayor y meno r de un grupo de número s
151
i Bl entre Proced imiento s y Funci ones
208
154
i de Lis vari able s
208
lijcmplo 3.18: Serie 5, 8, 11, 14, 17 ,2 0, 23 , Hn np li i 3.19: Serie 1, 2,4 ,8 , 16, 32,
n
, 10000
I II1II1IS
205 207
207
155
Lblfl local
208
i |emplo 3.20: Factorial de un número
156
i iblfl global
209
I templo 3.21 : Inv enir un número
158
Ejemplo 3.22: Núme ros primos gemelo s
160
I ¡ampio 3.2 3: Núm ero perfectos
163
• ( ii
|'M .m iel ros
y Procedimi entos como parámet ros || dt Funciones y Proced imient os '•>
( apítulo IV: Vectores o Arreglos
I: Operaciones según menú
21 0
213 214 214
': Número de ceros con funciones
218
Vei tor ea, .„
169
í (Jalon amient o de un vector con funciones
222
I ec lu n y escritura de un vector
170
> I < )peraciones con un vector auto genera do
226
1 ¡emplo 4. 1: Suma de elementos de un arreglo
171
GRUPO EDITORIAL MEGABYTE
I DIIONIAI. MliííABYTE
Introducción
In tr o d u c c ió n • = ¿oritmos forman parte de nuestra vida cotidiana, a menudo los hacemos sin •B cuenta. Por ejemplo al ¡r de compras, estamos pensando que cosas se alaran, hasta que precio estamo s dispuestos a pagar, si no encontramos lo que s s r o s podemos reem plazarlo?, cuanto tiem po tenem os para realizar las compras?, -\- po suficiente que podemos hacer?. " ~jchas interrogantes que intuitivamente vamos resolviendo mediante un ~: es por ello que e l algoritm o es una form a de resolver un problem a. S e trata : T :.e dicho algoritmo sea el mas eficiente.
Capítulo I Concentos "Básicos capítulo contiene:
Capítulo I:
I^nceptos básicos de algoritmia
Conceptos Básicos
Algoritmos y Diagramas de flujo aplicados en
Capítulo I:
C++
Conceptos Básicos
Ínstrucciaxiñs_que forman el algoritmo (ya codificados en un lenguaje de programación) y que se dan a una computadora para solucionar un problema
Salida: Se utiliza para mostrar datos, será el símbolo usado en este texto.
específico.
Conector: Sirve para enlazar dos paites cualesquiera de un diagrama a través de un conector en la salida y otro conector en la entrada.
Heurística l )n algoritmo que da o produce una solución a un problema planteado aunque estii solución lio sea la óptima es llamado "Heurístico".
Salida: Indica operaciones lógicas o de comparación entre datos y en función del resultado de la misma determina cual de los distintos caminos alternativos del programa se debe seguir.
Diagrama de flujo El diagrama de flujo es. la representación gráfica de dicha secuencia de instrucciones que conforman el algoritmo^ El siguiente es un ejemplo de un diagrama de flujo para sumar dos variables B y H, el resultado es almacenado en la variable A.
En caso de: Usado para indicar varias acciones posibles según sea un dato de entrado al control. •
Desde: Estructura repetitiva q indica un ciclo de N repeticiones de una o mas acciones.
1
.mi los elementos que se utilizan para contener datos de distintos tipos: números, lis, cadenas de caracteres, valores lógicos, etc. El valor contenido en una Bflílblc puede cambiara lo largo de la ejecución de un programa.
< onstantes Los símbolos mas comunes y los cuales usaremos son: Terminal: Se usa para indicar el inicio o fin de un diagrama de flujo Proceso: Cualquier tipo de operación que pueda originar cambio de valor, operaciones aritméticas, de transformaciones, etc. Entrada/Salida: Se usa para indicar el ingreso o salida de datos. GRUPO EDITORIAL MEGAIÍYTE
MUÍ elementos que contienen datos, el valor asignado a una constante es fijo y i |fl puede cambiar durante toda la ejecución de un programa.
i (¿presiones I as expresiones son combinaciones de constantes, variables, símbolo de Dpi i.u-ión, paréntesis y nombres de funciones especiales. Por ejemplo a + (b + 3 )/ c
Cuda expresión toma un valor que se determina tomando los valores de las •Hables y constantes implicadas y la ejecución de las operaciones implicadas. miro EDITORIAL MEGABYTE
Capítulo I: Conceptos Básicos
¡lmo\ y l>utgi-gnuis de flujo aplicados en C++
I iiui («presión consta de operadores y operandos. Según sea el tipo de datos qU9 manipulan, se clasifican las expresiones en: Aritméticas Relaciónales i ógicas
Operadores i .os operadores aritméticos nos permiten, básicamente, hacer cualquier operación .111 (mélica (suma, resta, multiplicación y división). En la siguiente tabla se muestran los operadores de los que se dispone.
+ * / A
aperadores Lógicos
1 os operadores lógicos producen un resultado booleano, y sus operandos son liimhién valores lógicos o asimilables a ellos (los valores numéricos son asimilados ii filerto o falso según su valor sea cero o distinto de cero). I os operadores lógicos son tres; dos de ellos son binarios, el último (negación) i . imano. AND (Y)
Operadores Aritméticos
Operador -
i
Acción
Ejemplo
Resta Suma Multiplicación División Potencia Módulo División entera
x = 5- 3
x = 2+ 3 x=2* 3 x = 6/ 2 x =3
A
2
Resultado 2 5 6 3 9
Produce un resultado con valor de verdad true cuando ambos operandos tienen Vfllor de verdad true; en cualquier otro caso el resultado tendrá un valor de verdad lillsc. Sintaxis: operando! AND.operando2 OR (O)
Produce un resultado con yalor de falso cuando ambos operadores ti enen valores I.ilsos; en cualquier otro caso el resultado tendrá un valor de verdad. Sintaxis: operando 1 ORoperan do2 NOT (NO)
El operador MOD nos devuelve el residuo de una división entera, mientras que el operador DTV permite realizar una división entre dos números enteros, allí radica la diferencia con e! operador "/".
Invierte el valor de verdad de operando. Sintaxis: NOT operando I Ejemplo: Si operando tiene un valor de verdad, not operando produce un resultado con vnlor falso.
Operadores relaciónales
l'i ioridad de los Operadores
MOD D1V
x = 5MOD2 x=5 DIV2
2
Al igual que en matemáticas, estos operadores nos permitirán evaluar las relaciones (igualdad, mayor, menor, etc) entre un par de operandos (en principio, pensemos en números). Los operadores relaciónales de los que disponemos son:
Los operadores deben ser evaluados según la siguiente prioridad I.-O 2.-
Operador > < <= = != 0 O
Acción
Mayorque Mayor ü igual que Menor que Mcnoro iyual que Igual Distinto
GRUPO EDITORIAL MEGABYTE
A
3.-*,/,Mod,Not 4.-+,-, And 5.->, <, >=, <=, <> ,=, Or ENTRADA / SALIDA de datos Los dispositivos de entrada / salida permiten que cí usuario interactúe con la GRUPO EDITOKIAL MEGABYTE
Capítulo I: Conceptos Básicos
l>iuf>ramas de flujo aplicados en C++
a. Por medio tic los dispositivos de entrada el usuario ingresa los datos a prOCSI&ren el sistema y los dispositivos de salida presentan los resultados en un l'ui mulo legible. I ,ns Instrucciones de E/S dan acceso al programador a las funciones básicas de • 108 dispositivos, permitiéndole capturar datos de los dispositivos de entrada y niigrmrlOS a variables para operar con ellos y mostrar resultados del proceso en lu-, dispositiv os de salida.
tmtrucclón
\ ilinaciones I finí asignació n consiste en darle un deter minad o valor a una variable o Itílllte, por ejemplo en la siguiente sentencia observamos que a la variable A, h
•
•
A
A = 4 + (3*Y 2 )
LEER
II permite el ingreso de datos al compu tador, el dato leido debe ser almacenado en muí variable, la sintaxis es la siguiente: i < • \ v a r i a b l e
venios que una expresión a sido asignada a la variable A Algunos autores usan el símbolo <- en vez de igual ( = ) para una asignación.
I )VCIH ración de variables
Instrucción ESCRIBIR I Slfl instrucción permite reportar resultados de un proceso, también se usa p ii.i enviar un mensaje a! operario. La sintaxis es la siguiente: INSCRIBIR variable INSCRIBIR Texto' ESCRIBIR Expresión Veamos unos ejemplos, según sean las sintaxis anteriores respectivamente ESCRIBIR Resultado Estfl instrucción devuelve el contenido de la variable Resultado ES( IRIBIR 'Prepárese para el ingreso de datos' Esta Instrucción muestra al usuario el contenido de los apostrofes, nótese que para pode] emitir un texto este debe ir encerrado en apostrofes ESCRIBIR 4*n i iM 11 icrióii primero calcula la expresión 4*n y luego mu estra ese resultado .
Tipos di datos escalares
Mediimte la declaración de variables describimos las características de las mlKintis. La sintaxis qu e usar emos es la sigu iente: Nombre_de_variable: Tipo I
I ni ¡elídase por tipo, al tipo de dato de la variable.
técnicas de desarrollo de algoritmos l'Hir.U'ii dos principales técnicas de diseño de algoritmos de programación, el |ll|> I >uwn y el Bottom Up.
Illp Pown
i
h
Tiiwbicn conocida como de arriba-abajo y consiste en establecer una serie de lllVt'lrs de mayor a menor complejidad (arriba-abajo) que den solución al problema. I iiiiNiMc en efectuar una relación entre las etapas de la estructuración de forma t|IH< IIIIII etapa jerárq uica y su inmediato inferior se relacionen mediant e entradas \ ífilulus de información. Este diseño consiste en una serie de descomposiciones «HrCNÍvus del problema inicial, que recibe el refinamiento progresivo del repertorio \\v UiHlrucciones que van a formar parte del programa.
Son iquolloi 11 pos de datos cuyos miembros están com puesto s por un solo ítem (dalo) I oí lipes de datos escalares nativos son aquel los tipos de datos escalares que y.i - itáfl Imp lcmentados en el lenguaje jun to a sus respectivas oper aciones.
I ti utilización de la técnica de diseño Top-Down tiene los siguientes objetivos ItAtlctis;
Entra CSlOS lipos tic datos tenemos Entero, Real, Carácter, Booleano; más «pelante veremos otros tipos de datos como por ejemplo los tipos de datos agregado
• l ns diferentes partes del pr oblema pueden ser progra madas de modo lililí-pendiente e incluso por diferentes persona s.
GRUPO EDITORIAL MEGABVTE
• Simplificación del problema y de los subprograma s de cada descomposición.
miro
KIMTORIAL MEGABYTE
Aiuorttuios .1» DUltílWUm ttfjllijo apliciutos en
Capítulo I: Conceptos Básicos
C++
•Mil imprimid Ilntll i|uodíi estructurado en forma de bloque o módulos lo que lince mas scncillti su lectura y mantenimiento.
Bottom lip El diseño ascendente se refiere a la identificación de aquellos procesos que necesitan computan zarse conforme vayan apareciendo, su análisis como sistema y su codificación, o bien, ía adquisición de paquetes de software para satisfacer el problema inmediato. * Cuando la programación se realiza internamente y haciendo un enfoque ascendente, es difícil llegar a integrar- los subsistemas ai grado tal de que el desempeño global, sea fluido. Los problemas de integración entre los subsistemas son sumamente costosos y muchos de ellos no se solucionan hasta que la programación alcanza la fecha límite para la integración total del sistema. En esta lecha, ya se cuenta con muy poco tiempo, presupuesto o paciencia de los usuarios, como para corregir aquellas delicadas interfaces, que en un principio, se ignoran. Aunque cada subsistema parece ofrecer lo que se requiere, cuando se contempla al sistema como una entidad global, adolece de ciertas limitaciones por haber lomado un enfoque ascendente. Uno de ellos es ia duplicación de esfuerzos para acceder el software y mas aún al introducir los datos. Otro es, que se introducen al sistema muchos datos carentes de valor. : Un tercero y tal- vez el mas serio inconveniente del enfoque ascendente, es que los objetivos globales de la organización no fueron considerados y en consecuericia no se satisfacen.
Entonces... La diferencia entre estas dos técnicas de programación se fundamenta en el resultado que presentan frente a un problema dado. Imagine una empresa, la cual se compone de varios departamentos (contabilidad, mercadeo,...) , en cada uno de ellos se fueron presentando problemas a los cuales se les dio una solución basada en un enfoque ascendente (Bottom Up): creando programas que satisfacían sólo el problema que se presentaba. Cuando la empresa decidió integrar un sistema global para suplir todas las necesidades de todos los departamentos se dio cuenta que cada una de las soluciones presentadas no era compatible ía una con la otra, no representaba una globalidad, característica principal de los sistemas. GRUPO EDITORIAL MEGABYTE
Como no hubo un previo análisis, diseñó de una solución a nivel global en todos IIS departamentos, centralización de información, que son características propias i' un diseño Descendente (Top Down) y características fundamentales de los i .lemas; la empresa no pudo satisfacer su necesidad a nivel global. La creación de algoritmos es basado sobre la técnica descendente, la cual i •mida el diseño ideal para la solución de un problema.
l'scudocódigo I Kremos que una notación es un pseudocódigo si mediante ella podemos describir I ulgoritmo, utilizando palabras y frases del lenguaje natural sujetas a unas Bterminadas reglas. I i ido pseudocódigo debe posibilitar la descripción de: •¡•Instrucciones de entrada / salida. •¡•Instrucciones de proceso. •!• Sentencias de control del flujo de ejecución. • Acciones compuestas, a refinar posteriormente. Tara entender mejor estos conceptos veamos algunos ejemplos. i propio 1.1 l/ I ¡labore un algoritmo y su pseudocódigo para calcular e imprimir el área de un l'l ingulo. Kollición
I leclarar Variables b,h: real I' ntrada: (datos a introducir al computador) Base = b Altura = h (Ipcración: calcular área del triángulo (Base x Altura)/2 Salida: (Resultado que mostrará el computador) PdCUdocódigo: I . Ini cia r proceso 2. Declarar variables (¿utico EDITORIAL MEGABYTE
Capítulo I: Conceptos Básicos
Algoritmos y Diagramas de flujo aplicados en C++
h b A 3. LEER 4. LEER
DI ucrania de flujo
: real : real : real b h
Codificación en C++ #include \
#include void main()
5. A = ( b * h ) / 2
float h; float b; float A; clrscr(); cin>>b; cin>>h;
6. ESCRIBIR A 7. Terminar el proceso
Este pseudocódigo es fácil pero daremos una pequeña explicación de ello. 1. Se inicia el proceso, todo programa o bloque de programa, debe tener un indicativo de inicio, ya sea inicio de bloque o inicio de programa. 2. Declaramos las variables a usar, nótese que las variables h y b son de tipo real, de eso se deduce que el resultado de una operación entre estas dos variables también sea del tipo real, p or eso A es del tipo real. Las siguiente línea, tiene el mismo resultado para la declaración de las variables b, hyA. b,h, A: Real 3. Leemos el valor de la variables b, por ejemplo digamos el valor introducido sea 5 4. Leemos el valor de la variable h, para este ejemplo ingresemos 7. 5. Calculamos la expresión (b*h)/2 y dicho resultado lo almacenamos en la variable A, entonces será: A = (5*7)/2, por lo tanto tendremos A = 17.5 6. Escribimos el resultado de la operación,1 en este caso será 7. 7.Cuando un proceso o programa se inicia, debemos indicar su fin, caso contrario,, dicho proceso puede ejecutarse infinitamente, es decir al ser traducido a uir lenguaje de programación Una vez elaborado el algoritmo, el problema a programar está prácticamente resuelto, ya que lo único que faltaría sería la codificación correspondiente en el lenguaje de programación que se esté usando, técnicamente un algoritmo es codificable en cualquier lenguaje de programación. Primero veamos cual es el diagrama de flujo de este ejercicio y luego su codificación en C++
GRUPO EDITORIAL MEGABYTE
A - ( b * h )
\
V
• .
•
/ 2;
' , •
Las dos primeras líneas del programa en C++ hacen referencia a las librerías i|iic deben usar para la ejecución de ¡os comandos usados, tales como clrscr() y líi'tch(), funciones que nos permiten limpiar la pantalla y detener la acción hasta presionar una tecla. I íl comando cin nos permite leer un dato desde el teclado mientras que el comando i mil nos muestra por pantalla el contenido de una variable o un comentario i imlquiera. I ,a declaración de las variables os del tipo float q es lo mismo que decir del tipo h'iil
KJcmplo 1.2 (Construya un pseudocódigo, que dados los datos A, B, C y D que representan números enteros, escriba los mismos en orden inverso. Notación
Declarar variables A, B, C, D : Entero Ingresar datos A, B, C, D Imprimir datos invertidos Nótese que por ahora este ejercicio solo es una simple lectura y escritura de illllos. La declaración de datos lo hemos hecho en una sola línea debido a que ludas las variables son del mismo tipo. EDITORIAL MEGABYTE
\
\ W\ :
COut«A;
getch{);}
\
'\'r
^ e^tSP^O tu»t^ e^> nY^
Algoritmos y Diagramas de flujo aplicados en
C++
Capítulo I: Conceptos Básicos
Suponiendo que se ingresan los valores: 7, 28,150, 35, la impresión produce lo siguiente: 35,15 0,28 ,7. - Pseudocódigo 1. Iniciar proceso 2. Declarar variables A, B, C, D : Entero 3. LEER A, B, C, D 4. ESCRIBIR D, C, B, A 5. Termi nar el proceso
-. •
^
.
.'.'.
-
' • •
¡
Nótese que en la línea 3 y 4, usamos una línea para leer y escribir el contenido Y de las variables respectivamente. Diagr ama de flujo Codificación en C++ . -, >
#include (
Inicio )
A, B : Entero Ingresar A, B Realizar un proceso, donde se ejecute la formula indicada ((A + B)2)/3. Mostrar el resultado Pseudocódigo 1. Iniciar proceso 2. Declarar variables A, B : Entero R : Real 3. LEER A, B 4. Calcular R = ((A + B) A 2)/3 4. ESCRIBIR R 5. Terminar el proceso
#include void main() int A, B, C, D; clrscr(); cin>>A>>B>>C>>D COut<
• >•:•
;j.
getch();
: Variable de tipo real. Almacena el resultado de la expresión. Observe que i Siendo A y B de tipo enteros, R es de tipo real, esto es debido a que no 1 m moi l.i seguridad de que la expresión ((A+B) A2/3 será entera, lo mas probable H tjiic si-n'i de tipo real, previniendo eso declaramos R de tipo real. 'i la l "ilifícación en C++ podemos notar que mostramos a través de cout un " ii nj< ni usuario pidiéndole que ingrese una valor y luego lee dicho valor, esta III en que se debe programar, de tal manera que nuestro programa es linble con el usuario; los ejemplos siguientes tendrán esta forma de i íl M M I M .
It'm.
HKrama de flujo En la escritura de datos, después de cada variable mostrada,.se imprime dos espacios en blanco descritos entre comillas, con la finalidad de no mostrar en pantalla el valor de las variables juntas.
Inicio
/
Ejemplo 1.3 Construya un pseudocódigo, que dado los datos enteros A y B, escriba el resultado de la siguiente expresión: ( A + B) 2
"
•"••
A7B A
= ((A+B) 2)/3
-
3
Solución: Declarar variables
FIN GRUPO EDITORIAL MEGABYTE
IIIIKIAI. MEGABYTE
Codificación en C++ #include #include #include void main(){ int A, B; float R; c ou t« " Ingrese el valor de A: " ;CÍn>>A; cout<<"Ingrese el valor de B:";cin>>B; R=(pow((A+B),2)>/3; cout<<"El resultado es:
Capítulo I: Conceptos Básicos
Algoritmos y Diagramas de flujo aplicados en C++
I ,JI fUnciÓn pow(N,P) es usada en C++ para elevar un número o expresión Arica N a la potencia P
Ejemplo 1.4 Dada cl código de matrícula y 5 calificaciones de un alumno obtenidas a ló l.u j [<) del semestre; construya un pseudocódigo imprima la matrícula del alumno y el promedio de sus calificaciones. Solución:
1 Vilumr Variables CÓDIGO : Entero largo Cl, C2, C3, C4, C5, PRO : Real Ingresar el código de matrícula y sus calificaciones. < ¡ftlcular el promedio de las calificaciones.
'
Reportar la matrícula y el promedio obtenido.
#include void main() { int long CÓDIGO ; float Cl, C2, C 3, C4, C5, PRO; clrscrf>; cout «"In grese código del alumno: cin>>CODIGO; cout<<"Ingrese las 5 notas:"; PRO=(C1 + C2 + C3 + C4 + C5)/5; cout<<"El alumno: "<
Kjemplo 1.5
INeudocódigo 1. Iniciar proce so 2. Declarar variables CÓDIGO : Ent ero largo Cl f C2, C3, C 4, C5, PRO : Real 3. LEER Mat, Cl, C2 , C3, C4 , C5 4. Cal cular PRO = (Cl + C2 + C3 + C4 + C5)/5 4. ESCRIBIR MAT, PRO 5. Terminar el proceso
(' ()| )1( iO es una variable de tipo entero, que representa la matrícula del alumno. PRO: Variable de tipo real. Almacena el promedio de ías calificaciones del alumno.
Codificación en C++ If i nclude II i iiclude
GRUPO EDITORIAL MECABVTE
Escriba un pseudocódigo que permita calcular e imprimir el cuadrado y el cubo de un número entero positivo NUM. Solución: Declarar Variables NUM : Entero Ingresar el número. Calcular el cuadrado y cubo del número ingresado. Mostrar los resultados obteni dos. Pseudocódigo 1. Iniciar proces o 2. Declarar variables NUM : Entero CUA, CUB : Real 3. LEER NUM 4. C alcular CUA = N UM -"• 2 5. Calcu lar CUB = NUM * 3 6.- ESCRIBIR' CUA, CUB * (¡RUPO EDITORIAL MEGABYTE
^
Capítulo 1: Conceptos Básicos
Algoritmos y Diagramas de flujo aplicados en C++
7. Ter mi na r el pr oc es o ( I JA: Variable de tipo real. Almacena el cuadrado del número que se ingresa. í i lli: Variable de tipo real. Almacena el cubo del número que se ingresa. III cálculo del cubo deNUM, también lo hubiéramos podido realizar de la siguiente Ca lcu lar CUB = NUM * NUM * NUM Calcular CUB - (NUM ~ 2» * NUM C al cu l ar CUB = CUA * NUM lisie último es válido ya que anteriormente en la línea 4, CUA ya tiene el valor
*>E1 perímetro se calcula como: Perímetro = 2 * (base + altura) Solución: Declarar Variables B, A : Reales Ingresar base y altura (B y A) L Calcular la superf.ee y penmetro del rectángulo. Pseudo código x
Cl la expresión NUMA2. Diagrama de flujo
1 ,. •
/
,
v
CUA=NUMA2 I CUB = NUMA3 | I CUA CUB I -^" \
PER
u
#mclude . , #i nc lu de „ n , tu ; #include . void m a m ()
/
.
= Real SUP
'
:
R ea l
3. LEER B, A 4. Calcular PER = (B + A) * 2 5. Ca lc ul ar SUP = B * A 6
- ESCRIBIR PER, SUP 7. Terminar el proceso
int NUM;
floa t CUA, CUB; ¿ n g r e s e número: -; cin»NUM; CUA = pow (NUM, 2) ; C U B = P W
. " V a r i a b l e de ÜP° r c a l " Almacena la superficie del rectángulo I>ER: Variable de tipo real. Almacena el perímetro del rectángulo. Diagrama de flujo Codificación en C ++ iUP
V
( Hr¡i ve/, usamos la función powQ para hallar tanto el cuadrado como el cubo
/
L
del número. Ks importante notar que la librería Math.h es usada para poder utilizar
v
A B 7 2L^ /
pER = (B + A r 2
I
SUP,B*A
1.6
I onstruya un pseudocódigo, que dados como datos la base y la altura de un raotáneulo, calcule el perímetro y la superficie del mismo.
Coniideraciones:
, , ,j i • • i c •:• I a superficie de un rectángulo se calcula aplicando la siguiente formula: Superficie = base * altura GRUPO EDITORIAL MEC.ABYTF
I
i
PER, SUP
^
^ —^ 1 s
f
#include #include #include vo id main( ) {
^° )
^ I
la función P 0W().
-N
f
EJemplO
A
'
/
NUM
J
B
Codificación en C-H„ . - , - , .
S v i INICIO J UU i J V ' '
In ici ar proc eso
2. Declarar variab les
1
^
y v. FIN J
<» ' EDITORIAL MEGABYTE
f ^^
^
^
^^
^
clrscr n • cout«"lñgrese altura del rectángulo: - ;
j
Cin>>A; c o u t « " ing rese ba se de l re ctán gul o: " ;
cm =»BÍB ,
PER
__
+ A)
SUP - B * A;
*
2;