You are on page 1of 304
Fundamentos de Programacion C# DATOS DE CATALOGACION BIBLIOGRAFICA Fundamentos de Programacién C# més de 100 Algoritmos Codificados Autor: Ricardo Marcelo Villalobos © Derecho de autor reservado Empresa Editora Macro E.R. © Derecho de ediciOn, arte grafico y dlagramacién reservados Empresa Editora Macro ELL, Edicién a cargo de: Empresa Editora Macro E.LR.L. ‘Ay, Paseo de la Repiiblica 5613 ~ Miraflores ima - Pert & (611) 719.9700 Ded ventas@editorialmacro.com hhttp://wwweditorialmacro.com Primera edicién: Setiembre 2008 - 1000 ejemplares ISBN N2 978.603-4034-00-6 Hecho el Depésito Legal en la Biblioteca Nacional del Pert N® 2008-11878 Prohibida la reproduccién parcial o total, por cualquier medio o método de este libro sin previa autorizacion de la Empresa Editora Macro E.R, Ricardo Marcelo Villalobos Profesional de sistemas y contabilidad, con mas de 10 affos de experiencia en TI, ha participado como asesor y desarrollador en proyectos de software para diversas empresas privadas y publicas del pais como Minera del Hil, Aruntani, Verkaufen, MINSA, IPD y transnacionales como Magna Rosseta Ceramica = MRC utilizando sus conocimientos de contabilidad y de ingenieria de software en el analisis y disefio de software con RUP, UML y Patrones de arquitectura y disefio de software con lenguajes Java, .NET y PHP yy base de datos Oracle, SQL Server, MySQL y PostgreSQL. Difunde su experiencia como docente en la Universidad Nacional de Ingenieria (UNI-FIIS - CEPS-UNI), Instituto San Ignacio (ISI) y capacitaciones para empresas (Telefénica del Pert, FAP, La Caja de Pensiones Militar Policial, ALPECO, Banco de Materiales entre otros). ‘Ademds participa como expositor en universidades e institutos (Universidad Nacional de Ingenieria - CEPS-UNI, Universidad Nacional de Trujllo, Universidad Cesar Vallejos de Trujillo, Universidad Nacional José Faustino Sanchez Carrién de Huacho, Instituto San Agustin, Instituto José Pardo, Instituto Manuel Seoane Corrales, Instituto La Reyna Mercedaria) Ha escrito libros, articulos y manuales de desarrollo de software (Libro de Visual Basic Nivel It ‘components, Libro de Oracle 10g, Manuales de VB.NET, ADO.NET, POO.NET, Access, Java POO, PHP Fundamentos, PHP POO). En el 2008 es invitado por la Empresa Editora Macro para formar parte del staff de escritores y sale a la luz 4 obras relacionado a los primeros pasos de la Ingenieria de software (Libros de Fundamentos y mas dde 100 Algoritmos con Visual Basic, Java, C++ y Ci) Agradecimiento Es eifell dejar de mencionar a las personas que dla a dia fortalecen el conocimientoy la sabiduria de los demas. Me faltara lineas en este libro mencionar a todos, pero ‘quiero agradecer en primer lugar a Dios y mis padres. Y ha personas muy especiales que han ayudado con su sabiduriay experiencia plasmar muchas de sus ideas en esta obra, Peggy Sénchez, Sergio Matsukawa, Gustavo Coronel, Gino Henostroza, Julio Flores, loc! Carrasco, Luis Zia, Jesis Echevarria y todos mis alurnnos y amigos en general. P22 V3 ») Fundamentos de Programacion C# | Prélogo Como no recordar las primeras clases de Algoritmo y la ilusién de aprender a programar esta obra plasma los primeros pasos que todo estudiante de la carrera de Ingenieria de Sistemas, Software e Informatica debe conocer para empezar a analizar, disefiar y codificar sus primeras algoritmos y pasar la barra que todo programador debe dominar que son las estructuras de control de flujo tales como if, switch (cr, java y cH y select case (vb), while y for, Es importante en toda la carrera que usted sepa utilizar las estructuras de control por que es la base de todos los cursos afines, este libro contiene 9 capitulos con més de 100 algoritmos resueltos y 80 propuestos y al finalizar de leer la obra estoy seguro que usted formar parte del mundo de los desarrolladores de software, Capitulo 1: Fundamentos de programacién ‘Aqui encontrard los conceptos generales de arquitectura de la pe, hardware, software, lenguajes de programacién, metodologia de algoritmos, diagramas de flujo, pseudocodigo, variables, constantes, instrucciones entre otros, Capitulo 2: Estructura secuencial Este capitulo contiene 10 algoritmos basicos para entender y resolver en forma simple los primeros problemas de entrada, proceso (secuencial)y salida de los célculos realizados. Capitulo 3: Estructura selectiva simple y doble Este capitulo tiene 15 algoritmos con la estructura més utillzadas en la solucin de problemas llamada i. Capitulo 4: Estructura selectiva miiltiple Para evitar de resolver problemas en forma anidada usando if, aqui en este capitulo tiene la solucién donde encontraré la forma mas fécil de solucionar problemas sin el uso de if anidados y engorzosos. Capitulo 5: Estructura repetitiva mientras Para resolver procesos repetitivos aqui tiene 15 problemas que le ensefiard a entender y dor estructura repetitiva y aplicar los conceptos de contador, acurmulador, bucles entre otros, Capitulo 6: Estructura repetitiva para ‘Muchas vaces es mas fécil resolver procesos repetitivos usando la estructura for aqui encontraré 15 problemas resueltos muchos de ellos son problemas del capitulo anterior con la finalidad analizar su simplicidad. Capitulo 7: Estructura de datos Arregos (vectores y matrices) Uno de los temas mas utilizados en el manejo de colecciones de datos son los arreglos (arrays), este capitulo explica el concepto y resuelve problemas de arregios, algoritmos de busqueda y ordenacién de datos. Capitulo 8: Cadena de caracteres No todo es manejo de niimeros en la solucién de problemas, este capitulo explica y resuelve problemas ‘con cadena de caracteres (texto) Capitulo 9: SubAlgortimo (Procedimientes y Funciones) Una de las mejores recomendaciones para resolver y reutilizar procesos es el concepto de divide y vencerds, este capitulo ensefia como separar un problema en varias partes reutillzables, WIDIIIIWODAD > PID PRI PWD Fundamentos de Programacion C# ee ie | Capitulo 1 Fundamentos de Programacién Introduccién . Computadora ..., Arquitectura de una computadora Unidades de medida de almacenamiento Sistemas de Numeracién Conversién binario a decimal Conversién decimal a binario Representacidn de texto en el sistema binario 25 Representacién binaria de datos no numéricas ni de texto Los programas (software) Lenguajes de programacién ‘Traductores del lenguaje de programacién Ciclo de vida de un software Algoritmo, Caracteristicas que deben de cumplir los algoritmos obligatoriamente Caracteristicas aconsejables para los algoritmos.. Fases en la creacién de algoritmos 29 Herramientas de un Algoritmo ... Instrucciones Comentarios Palabras reservadas Identificadores .. Variables Constantes Tipo de datos simples (primitives) . Tipo de datos complejos (estructurados) .. Operadores y Expresiones ... Control de flujo Capitulo 2 Estructura Secuencia ... Estructura secuencial Problema 01 Problema 02 ... Problema 03 Problema 04 Problema 05 1 Problema 06 ... Problema 07 ... Problema 08 Problema 09 .. Problema 10 Problemas Propuestos Capitulo 3 Estructura Selectiva Simple y Doble Introduecién oe 59 Estructura Selectiva simple .. Estructura Selectiva doble ... Estructuras anidadas... Problema 11 Problema 12 Problema 13 ... Problema 14... Problema 15... Problema 16 Problema 17 Problema 18 Problema 19 Problema 20... Bs Problema 24 snus Problema 22 ... Problema 23... Problema 24 Problema 25 ... Problemas Propuestos Capitulo 4 Estructura Selectiva Multiple . Introduccién Estructura selectiva miltiple Estructura selectiva multiple usando rangos Problema 26 ... 99 Problema 27 201 Problema 28 103 Problema 29... 1105 Problema 30 aaa Problema 31 .. a 1109 Problema 32. 12 Problema 33. us Problema 34 17 Problema 35 .. 119 Problema 36. en Problema 37. 126 Problema 38 suse ieee 128 Problema 39. 131 Problema 40 .. Problemas Propuestos .. aan Capitulo 5 Estructura Repetitiva Mientras 143 Introduccién . 143 Contador 143 ‘Acumulador Salir del bucle .. Continuar al inicio del bucle .. Estructura repetitiva Mientras 1as Estructura repetitiva Mientras anidada .. 145 Problema 41 ... 14d Problema 42 147 Problema 43 sees 149 Problema 44 150 Problema 45 vee 152 Problema 46 153 Problema 47... 155 Problema 48... 156 Problema 49 ... 159 Problema SO Problema 5: Problema 52 a Problema 5: Problema 54 .. Problema 55 Problemas Propuestos Capitulo 6 Estructura Repetitiva Para 175 Introduccién Estructura repetitiva Para... 175 Estructura repetitiva Para anidads .. 176 Problema 56 Problema 57 Problema 58 . Problema 59 Problema 60 . Problema 61 .. Problema 62 Problema 63 vn Problema 64... Problema 65 Problema 66 . Problema 67 . Problema 68 Problema 69 Probleme 70. Problemas Propuestos .. Capitulo 7 Estructuras de Datos Arreglos (vectores y matrices) .. Introduecién Arrays (Arreglos) ..... Operaciones con Arrays Creacién de Arrays Recorrido por los elementos del Array .. Problema 71 . Problema 72.. Problema 73... Problema 74 181 182 185 187 190 198 207 208 209 210 212 214 Problema 75... -216 © Problema 76 Problema 77 ... 218 220 > Problema 78... 23 © Problema 79 _., Problema 80 224 226 > Problema 81 29 ~ Problema 82.... 2.232 Problema 83 235 ~ Problema 84 238 © Problema 85 .. oe 242 _~ Problemas Propuestos 246 Capitulo 8 ~ Cadenas de Caracteres .... hisses 247 207 ~ Juego de caracteres ... 247 ~ Cardcter (char) = Cadena de caracteres (St 249 Operaciones con caden: —Concatenacién 249 249 Comparacién __. Calculo de longitud 250 ~ Extraccién de cadenas (subcadenas) 2s Busqueda de cadenas 252 — Conversiones... 252 Problema 86 253 Problema 87. 255 Problema 88 . Problema 89 s Problema 90 ... 1259 ~ Problema 91 261_ Problema 92... 262 - Problema 93 son Problema 94 265 ~ Problema 95 268 ~ Problemas Propuestos ..... an Capitulo 9 SubAlgoritmos (Procedimientos y Funciones) 273 ~ Introduccién .... 273 Procedimientos . 274 Funciones ... 274 Paso de pardmetros 275 Parémetros por valor (entrada) Parémetros por referencia (salida) 27 Problema 96 27 ~ Problema 97... Problema 98 Problema 99 283 Problema 100 ~ Problema 101 ~ Problema 102 Problema 103, > Problema 104..... Problema 105 .... dD 302 Problemas Propuestos > , Capitulol = : Fundamentos de Programacion Introduccién En los primeros ciclos de toda carrera profesional relacionado ala Ingenieria de Sistemas, los estudiantes requieren entender, aprender y dominar los fundamentos de programacién para resolver problemas que permitiran automatizar procesos usando la computadora, Saber programar es la base de toda su carrera y para conseguir este objetivo he plasmado mi experiencia de docencia de mas de 10 afios dedicado a la Ingenieria de Sistemas, se que este libro le ayudara a resolver todas sus dudas y dominar las principales estructuras de programacion. Este libro contiene mas de 100 algoritmos resueltos y codificados en el lenguaje C# que en la actualidad {5 uno de los lenguajes de programacién propuesto por Microsoft para la tecnologia NET octet A continuacién se describen los conceptos generales de los fundamentos de programacién Computadora Fs un aparato electrénico que recibe datos (entrada), los procesa (instrucciones denominado programa) y dewwelve informacisn (salidal, también conocido como Ordenador o PC (Personal Computer) - En Ia actualidad existen una variedad de computadoras, para diferentes propésitos. Servidores Computadora personal Computadora Portatil PDA Arquitectura de una computadora Las computadoras tienen dos components principales que son el hardware el sofware que trabalan _ ‘en coordinacion para llevar a cabo sus objtives. Hardware: Hard (Duro) —ware {Componente}; representa la pare fisica dela computadora Software: Soft (Blando) ~ ware (Componentel; representa la parte Idgica de la computadors (los programas), estos se encuentran almacenados en los componentes fisicos de la computadora, tales como memorias RAM, ROM, Discos Duros (Hard Disk) entre otros. 2 Programasinternos tales como! - + BIOS = cmos B+ setup La siguiente figura muestra como la arquitectura de computadora y sus principales componentes en © eoordinacién, 8 "GU. as 2 {Central Proce: = 7 j 2 xi Cae (Arithmetic Logic Unit) Lamemoria interna (RAM) y las memorias externas (Disco duro) almacenan informacién. La informacién que se guarda y entiende la PC esta en formato binario (0-1), BIT (Binary Digit): EI bit representan la unidad minima de informacion, que almacena una computadora. ~ BYTE: Esta compuesto por 8 bit (01110011), entonces existe 2° = 256 combinaciones diferentes (tabla de A cbdigo ASCII). Por lo general la informacién se representa por caracteres y cada carécter (ntimero, letra, simbolo, etc.) esun byte. Para medir la informacidn se utiliza multiplos de bytes, fe Byte 18 8 bits ma kilobyte KB 2W*bytes —-1024 bytes, a Megabyte MB Pebytes 1024 KB a Gigabyte 168 Pbytes 1024 MB a Terabyte 1B bytes —:1028GB Sistemas de Numeracion Todos los sistemas de numeracién tienen una base, que es el nimero total de simbolos que utiliza el sistema. En el caso de la numeracién decimal la base es 10; en el sistema binario es 2. El Teorema Fundamental de la Numeracién permite saber el valor decimal que tiene cualquier numero — cen cualquier base. Dicho teorema utiliza la formula: Po KSB + KB + MBP MBE KBP Ee Donde: - +X; Es el simbolo que se encuentra en la posicién ndmero I del némero que se esté convirtiendo. — TTeniendo en cuenta que la posicién de las unidades es la posici6n 0 (la posicién -1 seria la del primer decimal). +B: Esla base del sistemas que se utiliza para representar al nimero. Por ejemplo si tenemos el niimero 153,6 utilizando el sistema octal (base ocho), el paso a decimal se — hai 1-82 4 5-8! 4 9-874 6-8 - BA + 40 +3 + 6 + 8 = 107,75 Conversion binario a decimal Elteorema fundamental de la numetacién se puede aplicar para saber el nimero decimal representado ~ Poor un ntimero escrito en binario. Asi para el nGmera binario 10011011011 la conversion se haria (los ceros se han ignorado) iD! TeDT e124 2-2 + dD + dea + 129 = 1203 - Conversion decimal a binario EI método mas utilizado es ir haciendo divisiones sucesivas entre dos. Los restos son las cifras binaries. Por ejemplo para pasar el 38: 39 = 2=19 vaste 2 19+ 2= 9 resto a 942= 4 rested 452-= 2 xesto0 & 2+2= 1 resto 0 1+2= 0 resto. ‘Ahora las cifras binarias se toman al revés. Con lo cual, el nimero 100111 es el equivalente en binario de 39. Representacion de texto en el sistema binario ©. Puesto que una computadora no slo maneja niimeros, habra digitos binarios que contengan informacin que no es traducible a decimal. Todo depende de cémo se interprete esa traduccién, Por ejemplo en el caso del texto, lo que se hace es codificar cada carécter en una serie de ndmeros ~ _ binarios. £1 cédigo ASCII ha sido durante mucho tiempo el mas utilizado. Inicialmente era un cédigo que A. utilizaba 7 bits para representar texto, lo que significaba que era capaz de codificar 127 caracteres, Por {ejemplo el ntimero 65 {1000001 en binario) se utiliza para la A mayiscula. Poco después aparecié un problema: este cédigo es suficiente para los caracteres del inglés, pero no para otras lenguas. Entonces se afiadié el octavo bit para representar otros 128 caracteres que son distintos. _~ _segiin idiomas (Europa Occidental usa unos cédigos que no utiliza Europa Oriental) so provoca que un cédigo como el 190 signifique cosas diferentes si amblamos de pais. Porello cuando tun ordenador necesita mostrar texto, tiene que saber qué juego de cédigos debe de utilizar (lo cual ~ _supone un tremendo problema). ~ _ Una ampliacién de este método de codiicacién es el cédigo UNICODE que puede utilizar hasta 4 bytes {82 bits) con lo que es capar de codificar cualquier carécter en cualquier lengua del planeta utilizando el mismo conjunto de cédigos. Poco a poco es el cédigo que se va extendiendo; pero la preponderancia histérica que ha tenido el cédigo ~ ASCII, complica su popularidad Representacion binaria de datos no numéricos ni de texto En el caso de datos mas complejos (imagenes, video, audio) se necesita una cadificacién mas compleja. > Ademés en estos datos no hay esténdares, por lo que hay decenas de formas de codificar > Enel caso, por ejemplo, de las imagenes, una forma basica de codificarlas en binario es la que graba cada pixel (cada punto distinguible en la imagen) mediante tres bytes: el primero graba el nivel de rojo, el ‘segundo el nivel de azul y el tercero el nivel de verde. Y asi por cada pixel Por ejemplo un punto en una imagen de color rojo puro a 111111111. 00000000 00000000 — _Naturalmente en una imagen no solo se graban los pixeles sino el tamafio de la imagen, el modelo de color... de ahi que representar estos datos sea tan complejo para el ordenador (y tan complejoentenderio para nosatros}. ~ Los programas (software) ~ Un programa o software es un conjunto de instrucciones ordenadas para ejecutarse en una computadora en forma répida y precisa E software se divide en dos grupos; software de sistema operativo y software de aplicaciones. El proceso de escribir un programa se denomina programacién y el conjunto de instrueciones que se ~ —_utilizan para escribir un programa se llama lenguaje de programacién, Lenguajes de programacion Sirve para escribir programas y permite la comunicacién usuario (programador) versus maquina (pc). Existen tres tipos de lenguajes de programacién: Lenguaje de maquina: Programacién binaria, dificil de programar y dependiente de la maquina: Lenguaje de bajo nivel (ensamblador): Usa simbolos nemotécnicos, necesita ser tradu cde maquina y sigue siendo dependiente. al Ienguaje Lenguaje de alto nivel: Cercano al lenguaje natural, tiempo de programacién relativamente corto, es independiente de la méquina. A continuacién se muestra un plano de la evolucién de los lenguajes de programacién de alto rivel. Fortran we Compiladores: Traduce el cédigo fuente a programa objeto (ejecutable cédigo maquina). ejecucién ~ répido. ~ Ciclo de vida de un software La construccién de un software por mas pequeiio que sea, involucra las siguientes etapas: Requerimiento: Enunciado del problema a resolver. Analisis: ¢Qué? (entender el problema entrada — proceso -salida) ~ _ Disefto: £Cémo? (resolver el problema —algoritmo - diagrama de flujo ~ disefio de interfaz de usuario.) ~___Implementacién: ¢Hacerlo? (Codificacién / Programarlo) Pruebas: éFunciona? (Verificar / Comprobar) Despliegue: dinstalar? (Distribuir el programa) So ‘Anal - 7 Disefio > Implementacion ] my Pruebas] a ‘ Despliegue Algoritmo Método que describe la solucién de un problema computacional, mediante una serie de pasos precisos, definidos y fnitos, Preciso: Indicar el orden de realizacién en cada paso. Definido: Repetir los pasos n veces y se obtiene el mismo resultado, Finito: Tiene un némero determinado de pasos. La solucién de un algoritmo debe describir tres partes: Entrada: Datos que se necesita para poder ejecutarse. Proceso: Acciones y célculos @ realizar. Salida: Resultado esperado, i — | —- ae La palabra algoritmo procede del matemstico Arabe Mohamed thn Al Kow Rizmi, el cual escribié sobre los aos 800 y 825 su obra Quitad Al Mugabela, donde se recogia el sistema de numeracin hind y el concepto del cero, Fibonaed,tadujo la obra al latin y a lamé: Algritmi Dit El lenguaje algoritmico es aquel que implementa una solucién teérica a un problema indicando las ‘operaciones a realizar y el orden en el que se deben efectuarse. Por ejemplo en el caso de que nos fencontremos en casa con un foco malograde de una mpara, un posible algoritmo seri 1. Comprobar si hay foco de repuesto 2. Enelcaso de que bs haya, sustituir el foco anterior por la nueva, 3. Sino hay foco de repuesto, bajar a comprar una nueva a la tienda y sustituir lo malogrado por la nueva Los algortmos son Ia base de la programacin de ordenadores, ya que los programas de ordenador se puede entender que son algoritmos escitos en un cédigo especial entenlible por un ordenador Lo malo del diseFo de algoritmos est en que no podemos escribir fo que deseems, el lenguaje ha utilizar no debe dejar posibildad de duda, debe recoger todas las posibiidades Caracteristicas que deben de cumplir los algoritmos obligatoriamente * Un algoritmo debe resolver el problema para el que fue formulado. Légicamente no sirve un algoritmo que no resuelve ese problema. En el caso de los programadores, a veces crean algoritmos {que resuelven problemas diferentes al planteado. Los algoritmos son independientes del lenguaje de programacién. Los algoritmos se eseriben para poder ser utiizados en cualquier lenguaje de programacion, * Los algoritmos deben de ser precisos. Los resultados de los eSleulos deben de ser exactos, de manera rigurosa. No es vilido un algoritmo que sélo aproxime la solucién. + Los algoritmos deben de ser finitos. Deben de finalizar en algiin momento, No es un algoritme valid quel que produce situaciones en las que el algoritmo no termina, + Los algoritmos deben de poder repetirse. Deben de permitir su ejecucion las veces que haga falta No son validos los que tras ejecutarse una vez, ya no pueden volver a hacerlo por la razén que sea. ~ Caracteristicas aconsejables para los algoritmos ~ + Validea: Un algoritmo es valido si carece de errores. Un algoritmo puede resolver el problema para el {que se plantes y sin embargo no ser vslido debido a que posee errores. Eficiencia: Un algoritmo es eficiente si obtiene la solucién al problema en poco tiempo. No loes si es lento en obtener el resultado, ~ + Optimo: Un algoritmo es éptimo si es el mds eficiente posible y no contione errores. La busqueda ~ deste algoritmo es el objetivo prioritario del programador. No siempre podemos garantizar que el algoritmo hallado es e! dptimo, a veces si. ~ Fases en la creacién de algoritmos ~ Hay tres fases en la elaboracién de un algoritmo: A. 1. Anélisis. En esta se determina cudl es exactamente el problema a resolver. Qué datos forman la entrada del algoritmo y cudles deherén obtenerse como salida. 2. Diseito. Elaboracién del algoritmo. 3. Prueba, Comprobacién del resultado. Se observa si el algoritmo obtiene la salida esperada para ~~ todas as entradas. ~ Herramientas de un Algoritmo Para expresar la solucién de un problema se pueden usar diferentes herramientas de programacién, tales como: © Diagrama de flujo (Flow chart ~ + Diagrama N-S (Nassi-Schneiderman), _~ + Pseudocodigo. Diagrama de flujo: Es una representacién grifica que utiliza simbolos normalizadas por ANSI, y expresa las sucesivas instrucciones que se debe realizar para resolver el problema. Estas instrucciones no dependen de la sintaxis de ningin lenguaje de programacién, sino que debe servir ~__ facilmente para su transformacién (codificacién) en un lenguale de programacién. r ay Inicio o Fin CG oO Conectores a f _/ Entrada o salida — It Direccién (Flujo) Proceso Teclado [A “ a Devisién [eso Rl Pantalla . | ‘SubAlgoritmo a? Entero © i Cadena Lf Fa 8 f. Entonces F v Tnstnvceion] Tmetruccion] S80 + Finsi Comentarios Permiten describir, explicar y sirve como ayuda para recordar y entender las operaciones que se van a ejecutar. Los comentarios no son instrucciones, por lo tanto al ser traducido el cédligo fuente a cédigo binario (tiempo de compilacién), los lenguajes de programacién las ignoran. Dependiendo et lenguaje de programacién los comentarios se escriben usando cierta simbologi libro usaremos el simbolo // en los pseudocodigos para colocar comentarios. eneste Ejemplo Pseudocodigo /{Nariables N : Entero cw / {variables int N Palabras reservadas Son palabras usadas por el lenguaje de programacién y que no deben ser utilizadas como identificadores de variables, funciones entre otros. ‘Algunas de las palabras reservadas de CH short, int, float, double, if, for, switch, this identificadores Son los nombres que asignamas a las variables, constantes, funciones, objetos entre otros y no pueden coincidir con las palabras reservadas por que seria ambiguo y el compilador no lo entender Por lo general los identificadores deben de cumplir as siguientes reglas: + Deben comenzar por una letra. Evite usar fy tilde. + No debe coincidir con palabras reservadas del lenguaje de programacién que esta utilizando. Error de Compilacién CH // Identifieador de Variable es if //-y asta es palabra reservada int if; Variables Representa un espacio de memoria RAM que guarda un valor que servird para algin proceso en particular, dicho valor puede ser modificado en cualquier momento, Las variables tienen por lo general un Identificador (nombre) y asignado el tipo de dato que se esta utilizando, es decir si almacena un numero (entero), si es texto o alfanumérico {cadena}, si es un valor verdadero o falso (\égico) llamado también booleano. Ejemplo Pseudocodigo J Nariables Nt Entero co I/ariables int Ny Para asignarle un valor usamos el operador de asignacién que para algoritmos usaremos la — 0 el =, que es el mas usado por los lenguajes de programacién. Ejemplo Pseudocodigo //asignar un valor N-10 {Cambiar su valor N50 cH //asignar un valor N= 10; / [Cambiar su valor Constantes Representa un espaciode memoria RAM que guarda un valor que serviré paraalgiin proceso en particular, dicho valor permanece fijo es decir no puede cambiarse en la ejecucién del programa. Las constantes tienen al igual que las variables un identificador (nombre) y un tipo de dato. Ejemplo Pseudocodigo / {constants PI ~ 3.14159 : Real /Pezror ya no puede modificarlo PE ~ 3.14 cH /{Constantes const float Pr = 3.141595; //axzor ya no puede modificarlo PI - 3.14; Tipo de datos simples (primitivos) {Al declarar una variable debemos ind Fel tipo de dato que es permitido almacenar en dicha variable. Cada lenguaje de programacién trabaja con una variedad de tipo de datos, por lo general todos usan los lNamados tipos de datos primitivos, que son los siguientes: + Entero Real + Carécter + Légico Entero: Representan los ntimeros enteros (no almacena decimales). Ejemplo Pseudocodigo //Czear 1a variable // (Gdentificador y tipo de dato) N+ Entero J/asignar un valor //(Adentificador, operador de asignacién y valor) Neas En el lenguaje de C# el tipo entero se puede trabajar con short, int y long, la diferencia esta que uno ‘almacenan rangos de nimeros diferentes, lamados también entero corto y entero largo. Ejemplo ch /fentexe corto short Ny //asignar un valor (error de desbordamiento) //Sobrepaso su limite (rango) Ww = 45000 /fantero largo int N; long Nz //asignar un valor W = 4500099; Real: Representan los ntimeros reales (almacena decimales). Ejemplo Pseudocodigo //crear 1a variable // Gdentificador y tipo de dato) Nt Real //asignar un valor //(Adentificador, operador de asignacién y valor) N ~ 15.75 Enel lenguaje de Ci el tipo real se puede trabajar con float o double, la diferencia esta en a cantidad de ‘decimales que pueden almacenar, lamados también precisién simple y precisién doble. //erecisién simple float Nz //Se redondea a 15.123457 N = 15,1234587: //Precisién doble double Ny J/t@ almacena sin redondear 15.12345678 N= 15.12345678; Caracter: Representa un cardcter de cualquier tipo texto, nlimeros, simbalo ete. El valor se coloca entre comillas simple. Ejemplo Pseudocodigo //crear 1a variable R : Caracter //asignar un valor Rea R- v9 Re Ejempio C# ‘Crear 1a variable char Ry ‘Asignar un valor 4 Aa fie sar Ree Légico: Representan los valores Verdadero 0 Falso, conocido también como boolean, no se colocan comilias simple ni dobles. Ejemplo Pseudocodigo [Crear a variable L : Logico //asignar un valor L ~ VERDADERO L = ALSO En CH se utiliza el tipo de dato llamado boolean, para almacenar valores ldgicos. Ejemplo ci ‘Crear 1a variable bool Li //asignar un valor L = true; L = false; Tipo de datos complejos (estructurados) Son aquellos que estén constituidos por tipos de datos simples y definen una estructura de datos, lun ejemplo claro es el tipo cadena, que esta compuesta por un conjunto de caracteres (tipo de dato caracter) Existe una variedad de tiso de de datos complejos, elenfoque de este libro es Algoritmos ysolo tocaremos dos tinos de datos comalejos que son cadena y arreglos, los libros que profundizan el tema se llaman libros de Estructura de catos. Cadena: Representa un conjunto de caracteres, internamente es una arreglo de caracteres, por lo general se representa con comillas dobles. Ejemplo Pseudocodigo / {Crear 1a variable R : Cadena /(asignar un valor R ~ “ricardomarceloghotmail.com” Operadores y Expresiones Son los que permiten realizar los cdlulos entre valores fos y variables, Los operadores se clasifcan por: * Operadores Aritméticos + operadores Relacionales + operadores Légicos + Operadores de Cadena Operadores Aritméticos: Son aquellos operadores que permiten realizar las operaciones aritméticas, de la misma forma como se utillzan en las matematicas. Operador Descripetén. + Suma Resta . Multiplicacién i Division \ Division entera * Exponenciacién Mod Médulo (resto de una divisién) Dependiendo el lenguaje de programacién los operadores varfan, ono implementan uno Uotro operador, cen el caso de CH implementa los siguientes. Operador Descripeién’ + Suma g Resta " Multiplicacién / Divisién’ % Médulo (resto de una divisién) Para levar ana potencia se usa ath .Pow (9.0, 2.0), dentro de los parémetrosse coloca ndmeros reales (double) y para division entera use / pero con niimeros entero. Sn Real Divisi6n Entera 0/40 /fretorna 2.25 N=9/4 //eetorna 2 Expresiones Aritméticas 3x3 Equivalea 83 =24 © cauilea 9/3 "2.886666 e305 Fa acs e Equivalea 82-64 we Equivalea —9%3/2)=3 a od Equivalea = 9 Mod 4= @7 a 421 Operadores Relacionales: Llamadas también operadores de comparacién y permiten evaluar si dos valores guardan alguna relacién entre si Operador Descripcion Igualdad ‘Mayor que ‘Menor o igual que Menor que Menor 0 igual que Diferente a Dependiendo el lenguaje de programacién los operadores varian ono implementan uno v otro operador, ten el caso de Ck varia la simbologia en algunos. ‘Operador Descripcion gualdad > Mayor que > ‘Menor o igual aue < Menor que ‘Menor o igual que Diferente a Exprasiones logicas (condiciones) ~ (Algoritmo) a=3 Falso a>a Verdadero Be3 Verdadero Bo8 Falso. Operadores Légicos: Son aquellos operadores que se utllzan en combinacién con los operadores de relacién, Operador Deseripeién Y Y Loco. ° Logic No. No Légico Y Légico: Sip y q son valores ldgicos, ambos deben ser verdaderos para que Y devuelva verdadero. Expresiones légicas (condiciones) a4 356 Falso ToS Y S54 Verdadero (© Légico: Sip y q son valores légicas, uno de ellos debe ser verdadero para que O devuelva verdadero. Expresiones légicas (condiciones) ~ (Algoritmo) 84 0 3=6 Verdadero 725 Y Sod Verdadero NO Légico: Sip es un valor légico, el operador NO invierte su valor. Expresiones légicas (condiciones) No(s>4) Falso No(=7) Verdadero Para C# se utiliza la siguiente simbologia, Operador Deseripcién. && ¥ Légico u © Légico ! No Légico Operadores de Cadena: Son aquellos operadores que permiten realizar operaciones con cadenas, por lo {general permiten unir cadena llamado también concatenar. Operador Descripeién. + Unir cadenas & Unir Cadenas| Expresiones de cadena “Ricardo” +“ + “Marcelo” Ricardo Marcelo “ricardomarcelo” & "@" & “hotmail.com” _|ricardomarcelo@hotmail.com En CH se utiliza solo el simbolo + para unir cadenas (concatenar), Control de flujo Todos los lenguajes ¢e programacién implementan estructuras para controlar la ejecucién de un programa, estas son: Estructura secuencal + Estructura selective simple y doble + Estructura selective miltiple + Estructura repetitva mientras + Estructura repetitive para En los siguientes capitulos se explican cada uno de las siguientes estructuras mencionadas. Capitulo 2 Estructura Secuencial Estructura secuencial ‘Son aquellos algoritmos que ejecutan instrucciones en forma consecutiva, es decir uno detras de otro, hasta finalizar el proceso, Instruccion 1 | Instruccion 1 Instruccion 2 Instruecion 2 ered Instruccion n Instruccion n a Problema 01 Enunciado: Dado dos nimeros enteros, hallar la suma, Analisis: Pars la solucién de este problema, se requiere que el usuario ingrese dos ntimeros enteros y el sistema realice el célculo respectivo para hallar la suma, para esto usard la siguiente expresién, Expresién Matemstica s=nl+n2 Expresién Algoritmica senlen2 Entrada Salida + Dos niimeros (ny 2). = Lasuma(s) Disef Interfaz de Usuario Diagrama de Flujo Pseudocodigo Inicio ro nt, m2, = : Entero al, n2, s : Entero //antrada ficex nl, a2 Leer nl, n2 i zo alt na / {Proceso s-nl + n2 Leer (Salida Bn Escribir s Fin Codificacién class Problema01 ( static void Main(string{] args) ‘ /Maviables int nl, 02, 3; /fBotrada Systen.Console.Write ("Numero 1: “); nl = int.Parse (System .Congole.ReadLine ()) 7 Systen.Console-Write ("Numero 2: “); n2 = int. Parse (System.Console.Readbine ()); / {Proceso $= nl + n2; d/salida System.Consols.Writebine ("”}; System.Console.WriteLine("Suma: * + s); Syetem.Console,Readhine (1; ~ Problema 02 Enui iado: Hallar el cociente y el residuo (resto) de dos niimeros enteros. ~ Andlisis: Para la solucién de este problema, se requiere que el usuario ingrese dos niimeros enteros y el sistema realice el céleulo respectivo para hallar el cociente y residuo, para esto use la siguiente expresién. Expresién Algoritmica cent /n2 rent Mod nd ~ Entrada [A * Dos niimeros(n1 yn2). Disefio: Diagrama de Flujo : A nl, n2, c, F + Bntero c en ni \ na Fr «nl Mod n2 Salida + ElCociente (e) + El Residuo (1). Interfax de Usuario [| Algoritmo Pseudocodigo Inicio J Naxiables ni, n2, c, ©: Entero //entrada Leer ni, nz //Px0ceso cent \ n2 r= nl Mod n2 J /salida Escribir c, r Fin using System class Problema02 ‘ static void Main(string!] axgs) ( /Waxiables int nl, n2, c, r¢ /fenteada Console-Write(*Numero 1: “); Al = int Console a2 = int / Proce: ¢= nl rant 12. Parse (Console. ReadLine ()) 7 rite ("Numero 2: “); \¢ Parse (Console.ReadLine(})7 702i $ naz //Salida Console. Console Console Problema 03 Enunciado: Dado el Valor de venta de un producto, hala el IGV (19%) y el Precio de venta, ‘Anilisis: Para la solucién de este problema, se requiere que el usuario ingrese el Valor de venta del producto y el sistema realice el cdlculo respectivo para hallar el IGV y el Precio de venta, para esto use la siguiente expresion, Expresién Algoritmica lav—w? 0.19 py —w-+igv Entrada * Valor de venta (wv). Disefio: sWritebine ("7 Writebine(*Cociente: “+ 0); WriteLine(*Residuo: “+ x)7 ReadLine(); Salida * ELIGV (ev). + El Precio de Venta (pv). Interfaz de Usuario Co) x Algoritmo Diagrama de Flujo Pseudocodigo Inicio //variable: vw, igv, pv i Real //entrada Ltacre 7 Leer wv igv — w * 0.19] //Proceso py wy + igy igv — ww * 0.19 J [Salida Escribir igv, py Fin Codificacién: using system: class Problema03 { static void Main(string[] args) { {Maxiables float wy, igy, py; //entrada Conscle.Write(*Valor de Venta: “); wy = iloat. Parse (Console.eadLine()}; J {Proceso dov = vw * 0,198) py = wy + igvy /iSarida Console.Writenine(™"); Console.liriteLine ("EGv: " + igv); Console.WriteLine (“Precio de Venta: * + py); Console.ReadLine(): ‘Algoritmos con C# Problema 04 Enunciado: Hallar la potencia de a%, donde 2 y n pertenecen a Z"(niimeros enteros positives). Anil: al sohcin de ete problema, se require auc el usarongese dos nmers enteros atic: ay, gue! temo proces bone a poenl trpresion Matemca pe neuaxerices txprstn Alor peatn trade sot | Prrapotnca tl * Dos numeros enteros (a, 0). Disefto: Interfaz de Usuario I:IOATOSA RO TE x Algoritmo Diagrama de Flujo Pseudocodigo Inicio Inicio /Naxiables | a, 1: Entero corto a) #7 Eatero corto y : Entero largo 1 Enzero largo ea a /Tentrada Leer 4, / [Proceso peat a //Salida Escribir Pp Fin using ‘System class Problema4 t cs static void Main(string[] args) { J Naxiables a short a nj = int Pi /fentrada A Console.Write("a: ™); = short. Parse (Console-Readrine()); Console.Write(*n: °)7 - n = short.Parse(Console.ReadLine()); (Proceso a p = (int)Math,Pow( (double), (double) n); (Salida Console.Writebine("”); i Console WriteLine(*Potencia: * + p)+ Console. Readiine(); ~ Problema 05 © Enunciado: Hallar la radicacién de Ya , donde ayn pertenecen a Z (numeros enteros positivos). _~ Analisis: Para la solucién de este problema, se requiere que el usuario ingrese dos némeros enteros positives a yn, luego el sistema procesa y obtiene la radicacién ~ _Expresién Matematica A Va=a@ Expresi6n Algoritmica rear (i/n) > entrada Salida * Dosintimeros enteros (an + La Radicacién (c) ~ Diseso: Interfaz de Usuario Algoritmo, Diagrama de Flujo Pseudocodigo Inicio mE? Entero corte ada : a: Entero largo a: Bntero largo 9 //entrada Lier 87 Leer arn pea” G/a pena rea (1/n) Leese //saiida Ga) Eseribiz x Fin Fin Codificacién: using system; class Problera05 static vid Main(string[] args) ‘ /Nariables int es short n, 27 f/entrada Console.Write("a: “)? a = int. Parse (Console. ReadLine()}; Console.Write(™n: “); n= short.Parse (Console.ReadLine()) + / {Proceso r = (short)Math.Pow((double)a, (1 / (double)n)); /fSalida Console. Writehine("”); Console.WriteLine(*Radicacion: “ + ©); Console, Readiuine (07 Problema 06 Enunciado: Dado un numero de 5 digitos, devolver el ntimero en orden inverso, Anidlisis: Para la solucién de este problema, se requiere que el usuario ingrese un niimero n, luego el sistema procesa y obtiene el nmero inverso ni, realizando 4 divisiones sucesivas entre 10, para acumnular el residuo y el iltimo cociente, Entrada + Un ntimero entero (n) Disefio: 12345[10 ‘Sasa @v3 [10 @ 10 eo | «+ Elndmero iverson) Interfax de Usuati Bs Diagrama de Flujo Tnieio entero largo Eo a ped 10 nna Vio mer * 10 r= n pod 10 Bent = ren mod 10 na Io Bie n+ ©) +10 +10 Algoritmo Pseudocodigo Inicio /Wvariables //entrada leer ns //Proces. ery ned 10 ea mod 10 aon Vio aD ey En nod 10 a= n Vio Aint * x) =n mod 10 an Nig ni "ini + ry En mod 10 noah aie + ep //satida Bocribir ni Sentero Largo 10 10 10 10 Codificacién: using System; class Problema0s { static void Main(string[] args) t (Naxiables int n, ni, x7 /jantrada Console.Write(*Numero: "); n~ int-Parse (Console, Readiine())7 /feroceso gran! 10; nan / 10; ai= 3 * 10; ren 10; n=n / 10; ni = (ni + x) * 10; ren 10; nan / 10; nd = (ni + x) #107 ron4 10; non / 10; ni = (ni + x) * 10; ni = ni + ny {Salida Console. Writenine("”); Console.WriteLine(*Inverso: “ + ni); Console. ReadLine() 5 Problema 07 Enunciado: Determinar la suma de los N primeros niimeros enteros positives (2) use la siguiente {érmula, Nivea) 2 Andlisis: Para la solucién de este problema, se requiere que el usuario ingrese un ntimero entero positive 1, luego el sistema procesa y obtiene la suma de los primeros nlimeros enteros positivos hasta n. Expresién Matemstica N+) 2 Expresién Algoritmica se(n*(n41)/2 + Numero entero (n). | Salida = suma (sh Interfaz de Usuario Algoritmo Diagrama de Flujo Pseudocodigo Inicio ny 8 : Entero corto = i Entera corto ie means? //Proceso se (n* (n+ iy) /2 //Salida ray Escribir s Fin using System; class Problema? static void Main(string[] args) {fvariables int n, 57 i fentrada Console.write ("Numero : “); n= int.Parse(Console.ReadLine()); 1 {Proceso e=(n* (n+ 1)) / 2) //Salida Console. Writebine (9); Console. WriteLine(*suma: “+ s)7 Gonsole.RoadLiine (); Problema 08 Enunciado: Calcular el interés compuesto generado por un capital depositado durante clerta cantidad de tiempo a una tasa de interés determinada, aplique las siguientes formulas. M=(L+r%).C -¢ ‘Monto (M): Es la suma del capital mas sus intereses producido en determinado tiempo. ‘Tasa de interés (1%): Es la ganancia que se obtiene por cada 100 unidades monetarias en cada periodo de tiempo. Capital (C: Es todo aquello que se va a ceder o imponer durante algun tiempo para generar una ganancia, Interés (1): Parte de la utilidad que obtiene el capitalista prestar su dinero. Tiempo (t): Es el periodo de tiempo durante el cual se cede el capital Para la solucién de este problema, se requiere que el usuario ingrese el capital cy la tasa de interés r, luego el sistema procesa y obtiene el interés ganado y el monte producido. Expresin Matematica Ma (14 r%).C Expresién Algoritmica m= ((1+r/100) 1) *¢ Entrada Salida = Capital (¢) © Interés (i) ‘+ Tasa de interés (r) + Monto (mi. = Tiempo (t) Disefi Interfaz de Usuario S- Codificacién Algoritmo Diagroma de Flujo Pseudocodigo Inicio /WNaxiables Ft iy mi Real cry ty iy ms Real //entxada Leer ¢, rt a //Proceso { Eeey LODE) Me. iu = (142/100) *t) Ae //salida using System; class Problema’ 4 Bscribir i, m Fin static void Main(string{] args) ( /Mariables float c, r, ty i, m /fentrada Console,Write(*Capital: © = float .Parse (Console. Console.Write("Tasa de r = float.Parse (Console. Console.Write(* Tiempo: t = float.Parse (Console. / Proceso Ne ReadLine())7 interes: ); Readhine()); ar Readhine()) + m = (float) (Math.Pow( (double) {1 + x / 100), (double)t)) * cs icm-c; (Salida Console.firitebine("”); Console.WiriteLine(*Interes: ¥ + 4); Console.WiriteLine("Monto: * + m); Console Readbine (17 Problema 09 Enunciado: Crear un programa pare encontrar ol Area de un Circulo, use la formula Area (A): Es el area del circulo. Azne PI (n}: Representa el valor constante pi (3.14159) Radio (r: Es el racio del circulo Analisis: Para la solucién de este problema, se requiere que el usuario ingrese el radio del circulo y el sistema procesa y obtiene el drea de! circulo. Expresién Algebraica Expresién Algoritmica A 3.14159* 82 Entrada © Radio (1) Salida = Area (a). Interfaz de Usuario Diagrama de Flujo PI ~ 3.14159 + Real i a: Real a-Pltrn2 Algoritmo Pseudocodigo Inicio //Constantes PI = 3.14159 : JNaxiables ry, a: Real Jfentrada Leer r J [Proceso aePr*r*2 J/salida Eseribir a Fin Real Codificacién: ~ using System; class Problema09 a 4 x static void Main(st#ing!) args) { - / (onatantes si const flost PI ~ 3.141597; rs //Nariables: - float ayri ie //Bntrada “ Console.Write(*Radio : “); a £ © float.Parse (Console .Readline ())7 an //Procesé a a (float) (PI * (Math.Pow{(double)r , 2.0}))7 a {Salida ms Console.WriteLine(™") + : Console.fiziteLine (Area: * + a); Console-Readline(); A y A J © Problema 10 _~ _ Enunciado: Crear un programa que permita convertir una cantidad de segundos en horas, minutos y segundos is: Para la solucién de este problema, se requiere que el usuario ingrese un tiempo expresado en segundos y el sistema procesa y obtiene las horas, minutos y segundos restantes, Entrada Salida ‘+ Tiempo en segundos (t) Horas (h) + Minutos (m) 4 + Segundos (3) Interfaz de Usuario fie:1D:/0ATOSMUBRO THOM. ISIE HORA manuro Bntero 1: Eatero hy my = Entero = EN ROR = © Mod HORA t \ MmnuTO Mod MINUTO HORA - 360 : Entero MINUTO - 6D : Entero /Naxiables t, hy m 8 3 Entero //antrada Leer t J [Proceso net \ HORA t+ t Mod HORA m—t \ MINUTO 8 = t Mod MINUTO //Salida Escribir h, m, s Fin __. Codificacién: A using system; class Problema) ( a static void Main(string[] args) a { /{onstantes const int HORA = 3600; o const int MINUTO = 60; A /Mariables if int t,hym,s; a //Batrada A Console.write(*tiempo en segundos: “); _ t = int.Parse(Console-Readnine()); S / {Proceso nq h = t / HORA; a t= © § HORA; iat m= t / MINUTO; se = t = MINUTO; co /fSalida * Console.tritebine(™); ae Console.WriteLine(*Horas: * + h); Console.WriteLine("Minutos: “ + m); a Console.WriteLine(*Segundos: * + s); a Console. ReadLine () + an } ) Problemas Propuestos Los siguientes problemas le servirin para medir su aprendizae, es importante que los resuelva Propuesto 01 Enunciado: Dado dosniimeros enteros (2), 2b, hallara + by a~b. Propuesto 02 Enunciado: Dado dos nimeros enters, determinar cuantos nimeros enteres estén incluidos en ellos Propuesto 03 Enunciado: Dada une cantidad de milimetros, expresario en la maxima cantidad de metros, el resto en decimetros, centimetros, y milimetros. Propuesto 04 Enunciado: Obtener al valor de cy d de acuerdo ala siguiente férmula (4a* +3ba+b*) (3c' +a+b) ab 4 Propuesto 05 Enunciado: Dado 4 nimeros enteros, obtener el porcentaje de cada uno en funcién a la suma de los 4 _ niimeros ingresados, Propuesto 06 Enunciado: Hallar el Area y el Perimetro de un Cuadrado. Propuesto 07 Enunciado: Dada uns cantidad de horas obtener su equivalente en minutos y segundos. Propuesto 08 Enunciado: Convertir una cantidad de grados Fahrenheit a Celsius y kelvin, Propuesto 09 Enunciado: Hallar el Area y el Perimetro de un Recténgulo, Propuesto 10 Enunclado: Convertir grados sexagesimales a centesimales. Capitulo 3 Estructura Selectiva Simple y Doble Introduccion Muchas veces tenemos que decidir y realizar una u otra tarea dependiendo de una condicién, en la programacién existe una estructura que permite evaluar una condicién (expresién logica que devuelve verdadero 0 falso) y determina que instruccién o instrucciones se debe ejecutar si la condicién es verdadera o sila condicién es falsa En este capitulo usted aprenderé a resolver problemas que permitan evaluar condiciones ldgicas, esta es tuna de las estructuras bésicas y la més utilizada en todo lenguaje de programacién. estas estructuras también se las conoce como estructura condicional, altemnativas y de decisiones. Estructura Selectiva simple Evalia una expresién légica (condicién), si es verdadero ejecuta una determinada instruccién 0 instrucciones. coe nl ving, nga atone v Tnstruccion 1 texuecion n [eee Fin si —+ Sintaxis CH //0na instruccién Af () / arias instrucciones Af () { ; ; Estructura Selectiva doble Evalia una expresién légica (condicién), si es verdadero ejecuta una o varias instrucciones y si es falso 9jecuta otro grupo de instrucciones. ) { ; z } else { ; ; Estructuras anidadas Si Entonces ‘Sino Fin si ‘Son aquellas estructuras que contienen una o més estructuras, es decir esta permitido colocar dentro de una estructura otra estructura. E v Exp. Loay Exp. Log, Instruccion 1 Instruccion A Tnstruccion 1 Instruccion n J oe Exp. Log v Instruccion 1 Instruccion a Si Entonces Si Entonces Fin Si Sino Si Sino Fin si Fin si Sintaxis Ch 4€ () { Af () { cInstruceion ) { n2= nl es Mayor Sin2> nl = n2.es Mayor Entrada + Dos nmeros (n1 y n2). Salida ‘= Numero Mayor (m). Disefio: Diagrama de Flujo Pseudocodigo a - [2 eee eee nl, n2, mz Entero < Liese ni, 22/ //eatzada Leer nl, n2 - En & Vv //Proceso me al Si nl > n2 Entonces S meal { Fin Si ~ E e Si n2 > ni Entonces & w mond site Fin Si = 1 //saida é [excita Bseribir a ; ~ Codificac using System; class Problemall gratic void Main(string(] args) / {Variables int nl, n2, m= 0; /fantrada Console.Write (“Numero 1: “); nl = int.Parse(Console.Readtine()}; Console.Write ("Numero 2: %); n2 = int,Parse(Console.Readbine()) 7 / {Proceso if (nl > na) Af (n2 > nl) m= nz; jf/salida Console. Writenine(™"); Console.Writeline(*Mayor: “ + m); Console -ReadLine (); Problema 12 Enunciado: Determinar si un nimero entero es positivo, negative © neutro, Anilisis: Para la solucién de este problema, se requiere que el usuario ingrese un néimero entero y el sistema verifique si es positiv, negative 0 neutro. Sin>0=>Positivo Sin<0=NEGATIVO Sin =0=> NEUTRO Salida + Numero (n. + Resultado (r) = Positivo| = NEGATIVO = NEUTRO Interfaz de Usuario Diagrama de Flujo Entero cadena i © ~ “EOSTTIVO™ ( ~ “NEGATIVO™ \ *NEUTRO" Fin Algoritmo Pseudocodigo Inicio /Nariables nt Entero r : Cadena /fentrada Leer 1 / [Proceso Sin > 0 Entonces x « “POSITIVO” Fin Si Sin < 0 Entonces x ~ “NEGATIVO” Fin si Sin = 0 Entonces x ~ “NEUTRO” Fin si J {Salida Escribir r Fin ~ Codificacién’ > using system; © class Problemal2 ~ Bt Zo static void Main(string!] args) 1 = /Wariables _ int nz String r=“; /fentrada a Console.Write(*Numero: “); n= int, Parse (Console. ReadLine()}; o J {Proceso - if (n> a) { A r = “BOSITIVO"; a ) a ifn < 0) _ ‘ x = “NEGATIVO"; A , a if (n= 0) rn ( x = “NEUTRO”; a } bi Usalida a Console.Writezine(*”}; ee Console.WriteLine(*Resultado: “ + r); Console.ReadLine () ; Problema 13 Enunciado: Dado un caracter determinar si es una vocal. Anidlisis: Para la solucién de este problema, se requiere que el usuario ingrese un caracter y el sistema verifica sies una vocal. Expresion Sie=4'v Sicze'v ‘A! => VOCAL ‘@ SVOcAL “VOCAL 10’ = VOCAL ve='U' => VOCAL Salida + Caracter(c} + Resultado (r) — ESVOCAL — NOES VOCAL Disefio: Interfaz de Usuario a ==») -) Algoritmo Diagrama de Flujo Pseudocodigo oe /Naxiables ©: Garacter rt Cadena © : Caracter rt Cadena Lie / ees a Leer ¢ ¥ J/Proceso 5 = "RO ES VOCAL” x = “NO ES VOCAL” 1 Si sta’ 0 c=”A" Entonces E r+ “ES VOCAL" Fin Si, % gots SE Norte Si c=’e’ 0 c=”E" Entonces t r+ “ES VOCAL” Fin si Picci 0 > + Si c="i" 0 c=" T! Entonces “ES vocaL” = "ES VOCAL” x Fin si Si c=to! 0 c=/0" Entonces x ~ “ES VOCAL” Fin $i = YES VOCAL” Si c='U" 0 c=0" Entonces i r= “ES VOCAL" F v //Proceso 5 //Salida Bseribir r Codificacién: using System; class ProblemalS { statie void Main(string!] args) { /Maxiables int n; String r; / (entrada Console.Write(*Numero: “); n= int,Parse(Console.ReadLine()); /{ereceso if (n= 2 ‘ 0) r= “PAR”; r= SIMPAR) : /(Salica Console.Writebine(*”); Console.WriteLine(*Resultado: * + r); Console. ReadLine ()7 Problema 16 Enunciado: Dado tres ntimeros enteros, devolver el ntimero mayor. Analisis: Para la solucién de este problema, se requiere que el usu 12 yn3 luego el sistema verifca y devuelve el nimero mayor. Entrada | Salida + Tres nimeros (ni, n2, n3) Disefio: Interfaz de Usuario 1grese tres nlimeros enteros n1, ‘© Namero mayor (en). Algoritmo Diagrama de Flujo - - Fas > 2a > a n I Es ana mend ana mal s J - = Fin — Pseudocodigo ~ Inicio A I Naxiables ni, na, n3 : Entexo / [entrada > heer aly m2, n3 re //Proceso -~ Sinl > n2 Entonces ‘Si nl > n3 Entonces = meal sino A mend Fin si siNo. ‘Si n2 > n3 Entonces me n2 A Sino mend A Bin si Fin Si / {Salida Bscribir m Fin Codificacién: using System; class Problemai6é static void Main(string[] args) ‘ /{Naxiables int nl, n2, n3, mi; fBatrada Console.Write ("Numero 1: “); nl = int.Parse(Console-Readbine()) + Console.Write ("Numero 2: “}; n2 = int.Parse(Console.Readhine())? Console.Write ("Numero 3: “); n3 + int.Parse (Console.Readiine()) 7 //Proceso 4f (nl > n2) ‘ if {ni > 03) else ‘ Af (n2 > 13) { m = n2; } else { m= n3; } : (salica Console.WiriteLine(""}; Console.Writebine(“Mayor: * + m); Console.ReadLine (} 7 ~ Problema 17 Enunciado: Dado un numero, devolver al doble siel nmero no es par, caso contrario el triple. ‘Analisis: Para la solucién de este problema, se requiere que el usuario ingrese un ntimero entero n, luego el sistema verifica y devuelve el doble o el triple del numero. Expresion Sima Mod2=0) => rn ren*2 ~ SiNo rs rent3 Entrada | Salida _# Niimero entero (n} + Resultado (1) ~ Disefto: a Interfaz de Usuari - file: 0:0, a Algoritmo int Diagrama de Flujo Pseudocodigo - Inicio - oe BE? Batero /fentrada Leer / {Proceso Si No(n Mod ren*2 sino ren‘3 Fin Si Entonces 7 Fin / {Salida Escribir © a Fin using system; class Problenai? { statie veld Maia(string!) { /Nariables int n, 37 (Tinteada Console. write ("Num or n = int -Parse (Console Readbine()); (/Proceso if (im $2 (/salida Console.WriteLine(™") Console.WriteLine (*Resultado: * + r); Conscle-Readtine (}; Problema 18 Enunciado: Dado 3 nimeros, devolver los ndimeros en orden ascendente. Anilisis: Para la soluci6n de este problema, se requiere que el usuario ingrese tres nUmeras (nl, n2_y 13), luego el sistema verifica y devuelve los nmeros ordenados en forma ascendente. Primero se debe encontrar el numero Mayor, luego el niimero Menor y al final el numero Intermedio, que es el resultado de Sumar los tres ntimeras - (Mayor + Menor}. Entrada Salida ‘+ Ndimeros (na, n2, r3) ‘+ Ndimeros ordenados (ma, int, me) Disefio: Interfaz de Usuario Algoritmo Diagrama de Fujo lew wi, od eee hee eee Tapee = Tabs = leaportmanes) Pseudocodigo Inicio /(Naxiabies Sim KT mepeey disc, pene 1 arate //Entrada fea a, 20 //Proceso. SPS Ga x at > ni tintonces fee ae sine hi uf aw, ¥ 02 > no: moances mare ae SiNo v eaper — as in si noe SPalc nz v pt < ni tntonces ease cane Sin? < ni ¥ n2.< n3 Entonces bee sino menor ~ 13 Fin Si Fin Si inter — (nlta2+n3)~(mayor+menor) J /salida Escribir mayor, inter, menor Fin Codificacién: using System class Problemais peetic void Main(etriag() 4x98) {/Yariables int"nl; n2, n3, mayor, inter, menor; [fEntrada, Console,Weite ("Numero 1: “)e nil snt Parse (Concole, Readiine(}); Console. ftrite ("Numero 2 = ant. Parse (Console. Readuine ())z Console, Write ("Numero n3 = int, Parse (Console. Readiane()); {Proceso if (al > a2 ga ni > n3) mayor = nl Sise : menor = 27 dise ica, Gonsole:triteline (Manor: “+ manor)? Gonsole:Readtine(); Problema 19 Enunciado: Un restaurante ofrece un descuento del 10% para consumos de hasta $/.100.00 y un escuento de 20% para consumos mayores, para ambos casos se aplica un Impuesto del 19%, Determinar ~ elmonto del descuento, el impuesto y el importe a pagar. Analisis: Para la solucién de este problema, se requiere que el usuario ingrese el consumo y el sistema ~ verifica y calcula el monto del descuento, el impuesto y el importe a pagar. -~ Entrada Salida + Consumo (c) ‘+ Monto del descuento (m_d) + Impuesto (m_igv) ‘+ Importe a pagar (p) Interfaz de Usuario Algoritmo Diagrama de Flujo Pseudocodigo a Inicio Inicio) //Constantes Di 0.1 + Real Dl = 0.1 Real bz - 0.2 : Real D2 = 0.2 : Real TGV ~ 0.19 : Real TGv = 0.19 : Real eS SS /Naxiables Le ete ; teats O ae //Proceso ma ~ oe mad eb md-c* DL sino = md-c* D2 Seeeeesaaee f aeeCeIEaat Fin Si migy— te - ma) * icv pec-nd+migv migy ~ (c - md) * I6v pec-md+fm igy / {Salida Bscribir ma, migv, p Fin Codificacién: using System; class Problemai9 ( static void Main(string{] args} t /{Constantes const float D1 const float D2 const float 16v = 0.195; 0.18; 0.25 /Waziables float :, md, migv, pi (entrada Console Write "Consumo: “)7 ¢ = float. Parse (Console. ReadLine()); /feroceso 4f ( <= 100) t md=c* Di: } else n_igv = {c - md) * z6v; ple-matmigy / {Salida Console-WriteLine(*”) + Console.Writeline ("Monto descuento: * + md); Console.Writeline(*impuesto 1GV: * + migy); Console.WriteLine("Importe a pagar: “ + p}; Conscle.ReadLine (); Problema 20 Enunciado: Debido a los excelentes resultado, el restaurante decide ampliar sus ofertas de acuerdo a la siguiente escala de consumo, ver tabla. Determinar el monto del descuento, el importe del impuesto yelimporte a pagar. Consumo (5/.) Dascuento (74) Hasta 100 Mayor a:100 Mayor a 200 10 20 30 Andlisis: Para la solucién de este problema, se requiere que el usuario ingrese el consumo y el sistema verificay calcula el monto del descuento, el impuesto y el importe a pagar. Entrada * Consumo (c) Salida ‘+ Monto del descuento (m_d) + Impuesto (m_igv) + Importe a pagar (p) Interfaz de Usuario Algoritmo DI ~ 0.1 : Real D2 - 0.2 : Real D3. 0.3 : Real IGv ~ 0.19 + Real Diagrama de Flujo ce ma, migv, p+ Real] o* D3 migv~ (-ma) > 16v pec-mdtmigy Pseudocodigo Inicio //Constantes DL = 0.1 ! Roal D2 = 012 : Real D3= 013 : Real Tqv = 6.19 : Real ([Narisbles cmd, migv, p : Real /fentreda leer e [Proceso Stes 200 Entonces mado 3 ‘Sic > 100 Entonces mdec? be sino mdsetoI Fin si Fin $1 migv ~ (c~ md) * Iov Bec md + aigv (Salida Escribir ma, migv, p ~ Godificacién using systems class Problema20 { rn static void Main(string[] args) t ie //Constantes a const float D1 = 0.1F; const float 02 = 0.267 = const float D3 = 0.3F; a const float Iev = 0.19F; /Naziables a float c, md, migy, py 4s /Fintrade Console. Write ("Consuno: *); A © = float. Parse (Console .Readhine (1); . /fereceso a if (e > 200) S ( md=c * Day } A else . { 4£ (e > 100) 5 1 oe md-c* ) n else A { m= cpl; as d a 1 = mig ~ (¢- md) + tev; a pec-ma+m igv; /(salida a Console.Writenine(™*); - Console-WriteLine(*Monto descuento: * + md); o Console. Writeline(*Inpuesto TeV: “+m igv); Console.WriteLine(*Importe a pagar: ” + p)z 4 Console-Readhine() ; na } [+e Problema 24 Enunciado; Al ingresar el valor de una temperature, obtener el tipo de clima segiin Ia siguiente tabla, ‘Temperatura Tipo de Cima Temp.< 10 Frio Temp. Entre 10 20 Nublado’ Temp. Entre 21 ¥ 30 Calor ‘Temp. > 30 ‘Tropical jema verifica y determina el cima Entrada Salida + Temperatura (t) = Clima (e) Dis Interfaz de Usuario TE |] Diagrama de Flujo ©? Batero 6: Cadena : Para la solucién de este problems, se requiere que el usuario ingrese la temperatura y el > SERIO" © = *NUBLADO” “TROPICAL fe = SCALOR™ -~ Pseudocodigo Inicio 7 /Nariables t: Entero a 6? Cadena a /fantrada ~ Leer t A /1roceso Sit < 10 Entonces A © = *ERIO” sino Sit >= 11 ¥ & <=20 Entonces - © ~ “NUBLADO” sino rn Si t >= 21 ¥ t <=20 Entonces = ALOR” rn siNo - ¢ = “TROPICAL” Fin si A Fin si Fin Si / [Salida Bscribir c icacién: using System; ~ class Problema2i ( static void Main(string[] args) {Maxiables n int ty A string rn i/entrada A Console write (Temperatura: %); t = int. Parse (Console. ReadLine()); i {Proceso af (t < 10) a 1 om © = “ERIO”; ) A else _ i it (t >= 10 &&@ t <= 20) rs ( c = *NOBLADO”; = ) 21 && t < 30) © = “CALOR”; ¢ = “TROPICAL”; ) (Salida Console. writenine (™"); Console. Writebine (*C: Console. Readiine(); Problema 22 Enunciado: Un negocio tiene dos tipos de cliente, Cliente general (6) o Cliente afilado (A), recibe dos formas de pago al Contador (C} 0 en Plazos (P), Nos piden crear un programa que al ingresar el monto de la compra se obtenga el Monto del descuento 0 el Monto del Recargo y el Total a Pagar segdn la siguiente tabla, Anélisis: Para la solucion de este problema, se requiere que el usuario Ingrese el monto de la compra, €l tipo de cliente y la forma de pago y el sistema verifca y determina el monto de descuento 0 recargo yeltotal a pagar. m4 ers Entrada + Monto de la compra (me) + Tipo de cliente (te) + Forma de pago (fp) Disef + Monto de descuento o recargo (m) s Contado (C) Plazos (P) as Descuento Recargo. Cliente general (6) 15% 10% Cliente afilado (A) 20% 5% Salida * Total a pagar (tp) Interfaz de Usuario Diagrama de Flujo ms paseo ~ 0-15 7 Real ze DESC_A 0.2 : Real RECG ~ 0.10 : Real 7 RECA © 0.05 ¢ Real A i we, wy tp ? Real ~ te, fp ©: Cadena -m meme*REC_A mme*DESC_A mamc*REC_G mmc*DESC_G - tpemcim tpene-m tpenctm tpemo-m EOTREC. 5 ew"besc. 200"| | r"rec. 100" | | x-vbesc. ise i FIN Pseudocodigo ~ Inicio ~ //Constantes: ~ DESC.G = 0-15 : Real "DESC = 0.2 : Real REC ~ 0.10 : Real ~\— RECIA = 0.05 : Real \ [Nariables 4 fe, m, tp: Real fe, fp, © + Cadena /entrada > Leer me, te, £p {Proceso ~ Site = "6" Entonces ‘Si fp = “CY Entonces ne meme * DESC G a cp me -m x ~ “DESCUENTO 153” Sino meme * RECG tp- me +m 5 ~ “RECARGA 108” Fin Si SiNo ‘Si fp = “C" Entonces m= me * DESC_A tp - me - m r ~ “DESCUENTO 203” SiNo m-me * RECA tp me +m y+ “RECARGA 5%” Fin si Fin si {Salida Escribir r, m, tp Fin Codificacién: using System; class Problema22 static void Main(string!] args) f J {Conszantes const float DESC_G = 0.i5F; const float DESCTA = 0.26; const float REC G = 0.iF; const float RECA = 0.051 /Mariables float me, m, tp7 char te, fp; string ty /fentrada Console.Write(*Monto de compra: ™ me = float. Parse (Console-ReadLine ( Console.Write(*Tipo de cliente: * tc = char. Parse (Console. ReadLine ( Console.Write(*Forma de pago: *); fp = char. Parse (Consale.ReadLine()); ) ) ) ) + d 7 {Proceso 4f (te == 16") { fs ep ee { m= me * DESC_G; tp = me = mz = “DESCUENTO 158"; me * REC_G7 tp = me +m x= “RECARGO 10877 else { ir scr) i m = me * DESC A: tp = mc = my r= “DESCUENTO 208"; t else i m= me * REC _Ay tp = mo + mj F = “RECARGO 58”; t ) {Salida Console .writenine(""); Console.WiriteLine(x +“: “+ mz Console. Writebine(*?otal a pagal Gonsole-ReadLine (); “+ tp) Problema 23 Enunciado: Elabore un algoritmo que resuelva una ecuacién de primer grado. b axtb Considerar sia es diferente a 0 no es una ecuacién de primer grado. Anilisis: Para la solucién de este problema, se requlere que el usuario ingrese el valor de a yb, luego el sistema verifica y determina el valor de x. Entrada Salida + Coeficiente a (2) # Raiex 6) ‘+ Termino indepen: Disef Interfaz de Usuario Algoritmo, idee Pseudocodigo Inicio /Waztaies iy By ¢ need ake ‘//Bntrada La seeran //Proceso nee abaneSt ohare ea i La el on , Fin $1 VA //salida Bocribir x Fin Codificacién: using System; class { Problema23 static void Main(string{] args) ( {Wariables float a, b, x2 /fantrada Console.Write("a: “); a = float. Parse (Console.ReadLine()); Console.write("B: “)7 b = float . Parse (Console-ReadLine()); /(erocaso af (a I= 0) “bf ar d/salida Console.WriteLine("”) Console-WriteLine (*x: Console-ReadLine()7 Seely Problema 24 Enunciado: Elabore un algoritmo que obtenga las ralces reales de una ecuacién de segundo grado. at tox te=0 bivb—tac— y_-b~vbF dae 2a 2a xt + Considerar que a # 0, para poder diviir. + Considerar b? ~ ac # 0, para obtener la ratz cuadrada, : Para la solucién de este problema, se requiere que el usuario ingrese el valor de a, by c, luego el sistema verifica y determina el valor de x y x2 Entrada Salida * Coeficiente aa) ‘© Primera raiz x (x1) * Coeficiente b (b} Segunda rai x (x2) + Término independiente ¢ (c) Disef Interfaz de Usuario Ce Algoritmo Diagrama de Flujo Pseudocodigo | //Variables fi b,c) a, xi, x2 + Real : /7antrada Leer a, by) ¢ //eroceso d-(b*2)-4* ate sia <> 0¥d>= 0 Entonces mle (b+de (1/2) /24%a x2e (b-d* (1/2) (24a SiNo x1 +0 x20 Fin si eibir xl, x2, /{salida Eseribir xl, x2 Fin : Fin -acién: using System; clase Problema24 { static void Main(string[] args) ‘ J fiariables double a, b, ¢, d, x1, x2; Jfentrada Consola.Write("a: “)7 a = double. Parse (Console.ReadLine ()); Console.Write("b: "); b = double. Parse (Console.ReadLine()); Console.Write(“c: “); ¢ ~ doable. Parse (Console.ReadLine()); J (Proceso d= Math.Pow(b, 2.0) - 4.0 * a * o; if (a != 0 6 d >= 0) « x1 = (-b + Math. 2ow(d, x2 = (-b - Math. Pow(d, } else { xl = 0; x2 = 0; : Salida Console. Writeline (*") ; Console.WriteLine(*x1: “ + x1); Console.WriteLine ("x2: “ + x2); Console:Readiine (); Problema 25 Enunciado: Dado la hore, minuto y segundo, encuentre la hora del siguiente segundo, Analisis: Para la solucién de este problema, se requiere que el usuario ingrese la hora, minutoy segundo, luego el sistema veritice y determina la hora, minuto y segundo del siguiente segundo. Entrada Salida Hora (h) = Hora (h) * Minuto (rn) + Minuto (m) + Segundo (s) + Segundo (s} Diagrama de Flujo h, ms + mntero| eeati tscelbie hy a, © Pseudocodigo Inicio /WWariables h, m, 8 + Entero //antrada Leer hy m, 3 //Pxoceso eesti Sis = 60 Entonces a0 memti Si m= 60 Entonces m-0 hehe. Sih = 6D Entonces neo Fin Si Fin si Fin Si //Salida Escribir h, m, 5 Fin Codificacién: using system; class Problema25 ‘ static void Main(string[] args) { ariables int hy my, s7 /7Bnteada Console.Write("Hora: *); h = ant. Parse (Console. ReadLine())z Console.Write("Minuto: “); m = Int. Parse (Console. ReadLine()); Console.write(*segundo: “); $ = int. Parse (Console.Readhine())+ //eroceso st=l Af (9 == 60) ( = 0; mes; if (m //Salida Console.WriteLine(*"} ; Console-WriteLine(*Hora: * + h); Console.WriteLine(*Minuto: “ +m); Console !WriteLine(*Segundo: * + s); Console-ReadLina(); Problemas Propuestos Los siguientes problemas le serviin para medi su aprendizaje, es importante que los resuelva Propuesto 14 Enunciado: Dado la edad de una persona determinar si es Mayor de edad o Menor de edad, considere que mayor de edad es mayor o igual a 18. Propuesto 12 Enunciado: Dado dos numeros enteros, devolver el ndmero Menor. Propuesto 13 Enunciado: Dado dos nuimeros determinar si son iguales o son diferentes. Propuesto 14 Enunciado: Dado un nimero entero, devolver el doble del nimero si el niimero es Positivo, el Triple del ‘imero si es Negativo, y Cero si al ntimero es Neutro. Propuesto 15 Enunciado: Crear un programa que al ngresar tres niimeros enteros, devuelva los numeros ordenado en forma ascendente y en forma descendente. Propuesto 16 Enunciado: Después de ingresar 4 notas, obtener el promedio de a tres mejores notas y el mensaje ‘Aprobado si el promedio es mayor o igual 411, caso contrario Desaprobado. Propuesto 17 Enunciado: Dado los siguientes datos de entrada: Saldo anterior, Tipo de Movimiento R (retiro) 0 D {deposito) y Monto de a transaccién, obtener como dato de Salida el Saldo actual Propuesto 18 Enunciado: Dado 2 ndmeros enteros ay b, determinar cual es mayor con respecto al otro. a.esmayor que b bes mayor que a aesigualab Propuesto 19 Enunciado: Dado 3 longitudes, diga si forman un triéngulo, TEOREMA: En todo trangulo, cada lado es menor que la suma de los otros dos, pero mayor que su __ diferencia, Propuesto 20 Enunciado: Dado 3 longitudes, si forman un triangulo devolver el tipo de tridngulo segin sus lados. 1 Equllétero: Sus 3 lados son iguales T.tsdsceles: 2 lados iguales. 1 Escaleno: 3 lados diferentes Capitulo 4 Estructura Selectiva Multiple Introduccion Sabes que en la actualidad tienes muchos bancos financieros que ofrecen préstamos con condiciones diferentes, usted al solicitar un préstamo, tiene que evaluar diversas alternativas y decidir por una de alla. Enlos lenguajes de programacién se cuenta con una implementactén similar, llamada estructura selectiva rmiiltiple que permite evaluar varias alternativas y realizar el proceso si cumple con la condicién elegida, Muchas veces para solucionar este tipo de problemas se utiliza estructuras selectivas dobles anidadas (en cascada}, dando una solucién muy complicada y confusa para analizar, es recomendable que cuando se tenga que evaluar varias alternativas se utiice estructuras selectiva maltiples por ser la més legible, eficiente y cil de interpretar. Estructura selectiva multiple Permite comparar un valor con diversas alternativas, sila comparacién tiene éxito se ejecuta el grupo de instruccién que contenga la alternativa selecclonada y luego sale de la estructura, ‘Muchas se pueden implementar en forma opcional una alternativa por defecto, es decir al comparar con todas las alternativas propuestas no se tiene éxito con ninguna, entonces se ejecuta la alterativa por efecto. a zn caso que sea ee Caso Valorl Instrucciones> caso Valor? macciones v. caso Valor3 ma Fin Caso [= a sees Sintaxis 10H switch () { case Valori: ; break; case Valor2: ; break; case Valor3: ; break; d ae En Caso que Sea nal caso valorl asi Valor 2} Caso Valor? il Tnetrucciones ae sme 14 Fin caso Instrucciones Sintaxis 2.c# switch () { case Valorl: ; break; Valox2: ; break; default: ; break; Estructura selectiva multiple usando rangos La estructura selectiva miltiple permite comparar un valor {igualdad}, pero cuando se requiere manejar rangos (>= Y <=, se puede usar una estructura selectiva miltiple similar a la estructura selectiva doble anidada. Si Entonces es SiNoSi Entonces on SiNoSi Entonces y sino F| [Gnstruceiones | Csesiesssses | Fin si Sintaxis CH if () { ; Jelse if () { ; Jelse if () ( ; Jelse( ; Problema 26 Enunciado: Al ingresar un ntimero entre 1 y 4 devolver la estacién del afio de acuerdo a la siguiente tabla, Numero Estacion, EN Verano 2 Otofio 3 Invierno 4 Primavera ‘Anélisis: Para la solucién de este problema, se requiere que el usuario ingrese un nimero entero y el sistema realice el proceso para devolver la estacién, Entrada Salida + Namero (n). + Estacién (e) Interfaz de Usuario Algoritmo. — nail //Nariables € : Cadena eee @ : Cadena /Tentrada <> Leer a v poker /1ez0c0s0 F vasa" En Caso que n Sea caso 1 ara fe ~ “VERANO” caso 2 e | erororor fe ~ SINVIERNO” caso 3 Ls }¥ e ~ “oroRo” 1 caso 4 le [ errwvrevor a + SAVER Fin Caso Pak 4 //satida fF [ecnPRIMAVERA™ ois oo Fin Codificacién: using systén; clase Problema26 ( static void Main(string[} args) { /(Mariables int nz string e ="; /fBntrada Console.Write(*Numero: “); n= int, Parse (Console.Readbine()) + / {Proceso switch (v { case 1 = “VERANO"; break; case 2: ‘© = “oTono”; break; case it @ = “INVIERNO”; break; case 4: © = "PRIMAVERA"; break; ) //salida - Console.Weitenine (""); Console, firiteline("Estacion: * + ¢); Console Readline(); Problema 27 Enunciado: Dado un numero entero de un digito (0 al 9), devolver el ndimero en letras. Analisis: Para la solucién de este problema, se requiere que el usuario ingrese un niimero entero y el sistema verifica y devuelve el nimero en letras. Entrada Salida + Nmero (a) | Presutado (a Disefo: Interfaz de Usuario Te Entere cadena 71 F 1PCERO" Ha F "ono" rz "pos" a LP TRES™ F [_a-*cuatao rsh ae"erNco" Algoritmo Inicio /Naxiables nt Entero 1: cadena /fentrada Leer n J [Proceso En Caso que n Sea caso 0 1 = “CERO” caso 1 1 ~ “UNO” caso 2 1. “pos” caso 3 1 4 “TRES” caso 4 1 *CUATRO” caso 5 1 ~ “cINco” cazo 6 1 - “SEIS” caso 7 1 = “SIETE” caso 8 1 = "ocHo” caso 7 1 = “NUEVE” Fin Caso //salida Escribir 1 Fin Codificacion: using Systems ~ Glass Eroblena2? a : static void Main(string[] args) A : /Nariables Gnton pi string is 2éBotrada Console.Write("Numexo? }7 = n= int Parse (Console. Readiine (})+ ~ /iProceso switch (n) ‘ case 0: 1 = “CERO”; Breaky a case 1: 1 = “UNO”; 1 = “cuaTRO”? break; a= “crNco”; break; case 6 ‘y's “szis"7, break; ease 7: 1 = “SrETE"; break; case 8 = “ocHo"; break; case 9: = “NUEVE"; break : i/salida = Console.weitebine|*”); Gonscle:MriteLine (tetra: * + 1); Console ReadLine(); Problema 28 Enunciado: Dado dos néimeros enteros y un operadar +, -, * y /, devolver la operacién de los dos ‘ntimeros segiin el operador ingresado, considere que sil segundo niimero es cero y el operador es /, no ~ _ esdivisible con el primer numero, entonces devolver como resultado 0. Analisis: Para la solucién de este problema, se requiere que el usuario ingrese un operador y dos ‘> hiimmeros y al sistema verifica que operacién debe realizar y devuelve el resultado de la operacién. Entrada Salida + Operador (op), Resultado (1). + Ndmero (ny n2)- Disefio: Boe Algoritmo: Diagrama de Flujo. Pseudocodigo as op + Garacter op : Caracter pi, n2, F + Entero nl, n2, r : Entero /fantrada Leer op, nl, n2 / [Proceso En Caso que op Sea caso ‘+ rent + nz caso ‘-/ ren -n2 caso '*" re—ni* n2 caso ‘/? Si n2 © 0 Entonces real +n2 sito r-0 Fin Sin Fin case J /Saiida Escribir r Fin ~ Codificacién: using systems class Problena2s i atatie void Main(stringl] eqs! /fMaxiables int nl, n2, r= 0; char op? /fsntrada Console.Write(“operacion: “); op = char-Parse (Conscle.Readbine()); Console.Write ("Numero 1: “); nl = int.Parse(Console.ReadLine()); Console.Write("Numero 2: “)z n2 = int.Parse (Console-ReadLine()); / {Proceso if (op == 4) t rn + n2; else if (op == *=') { real -n } else if (op very { r= nl * n2; ) else if top = 7) if (nz I= 0) r=ni / n2; else r= 0; ) /salida Console.Writenine(™”); Console. WriteLine (*Reaultad Console. Readiiine (); Sah Problema 29 Enunciado: Dado una letra determinar si en una vocal. Analisis: Para la solucién de este problema, se requiere que el usuario ingrese una letra I, luego el sistema analiza y determina si es una vocal. Entrada + Letra Salida + Resultado (r) Algoritmo Diagrama de Flujo es Tz Caracter x: Cadena Pseudocodigo Inicio /Waxiables 1 + Caracter cadena //antrada Leer 1 / Proceso Sil = ‘a 01 = ‘A Entonces r= ES VOCAL” SiNoSi 1 - ‘e’ O 1 = ‘EY Entonces r ~ “ES VOCAL" SiNOSi 1 = “17 01 r+ “ES VOCAL" BiNoSi 1 = ‘o" O11 r= ES VOCAL” SiNosi 1 = ‘ul O1- r= “ES VOCAL” siNo ry = “NO ES VOCAL” Fin Si MT Entonces Yo” Entonces Entonces / [Salida exibir x Fin ~ Codificacion: using system? class Problema29 static void Main(string[] args) ‘ /fvariables char 1; string =") /Panteada Console.Write(*Letra: “); 1 = char. Parse (Console Readtine()) + J/Proceso Led == [me AMY = “ES VOCAL"; else if (1 == ‘e" || lose Bt) x = “ES VOCAL"; else if (== Ni" [I x = SES VOCAL"; 5 else if (1 =o’ [1 1 = 0") x = “ES VOCAL"; else if (1 == ‘u’ |[ 2 == 10") x = “ES VOCAL"; else x = SNO ES VOCAL”; Salida Console.Writenine(*”); Console.WriteLine(*Resultado: * + r); Console. Readiiine (); Problema 30 Enunciado: Al ingresar el nimero de un mes, devolver la estacién del afio de acuerdo a la siguiente Mes Estacion 1,23 ‘verano 456 Otomo 7,89 Tnvierno 10,13,12 Primavera Anilisis: Para la solucin de este problema, se requiere que el usuario ingrese el nmera del mes, luego el sistema verifica y determine la estacién. Entrada Salida - + Mes (mn) + Estacion (e) : isefio: - Interfaz de Usuario ~ file: JDATOSILIB... PS) ES Algoritmo Diagrama de Flujo Pseudocodigo mY entero ©: Cadena /Iwariables . <=_>> //otcada i Lfa,2,3}% Teer a Sh /1coces0 Hrs 3} Caso 7,8,9 - f — © — SINVIERNO” P (emmer} $4] aca Escribir eo Fin ~Codificaciér A using System; ~ class Problema30 i - gtatic void Main(string(] args) 4 / {Variables dnt mj a string e = “”; A /fentrada Console.Write("Mes: “); m= int. Parse (Console-Readbine())7 / {Proceso rn guiceh (nm) © = “VERANO”: break; case 4t a case 5: case 6: a ‘e = “orono”; break; a '@ = “INVIERNO”; break; = case 10: case IL “ ease 12; ¢ = “PRIMAVERA”; m break; } U/salida a Console. friteLine(*”) + Console. friteLine(*Estacion: “ + 2); n Console Raadiine () + } Am ~ Problema 31 ~ Enunciado: Dado la nota promedio de un alumna, obtener la categorla, segtin la siguiente tabla, - Promedio. Categoria a Entre OY 5. Pésimo a Entre 6¥ 10) Malo) - Entre 11 ¥ 14 Regular ss Entre 15 17 Bueno es Entre 18 y 20 Excelente Anilisis: Para la solucién de este problema, se requiere que el usuario ingrese el promedio, luego et sistema verifique y devuelva la categoria, _ Entrada Salida + Promedio (p). = Categoria (0). Disefi Interfaz de Usuario Algoritmo ~ Diagrama de Flujo Pseudocodigo Inicio : pT caracter J Naxiables - S + Cadens. P : Entero . © : Cadena /fentrada ’ Leer p L ian / [Proceso sy Si p >= 0 ¥ p < 5 Entonces ¢ + “PESINO” G SiNoSi p >= 6 ¥ p <= 10 Entonces c ~ “MALO” SiNoSi p >= 11 ¥ p cc ~ “REGULAR” SiNOSi p >= 15 ¥ p © ~ “BUENO” SiNoSi p >= 18 ¥ p ¢ ~ “EXCELENTE” Fin Si 14 Entonces 17 Entonces - 20 Entonces //salida Escribir ¢ S"EXCELENTE” }— w Fin 2 ~ Codificacié: A using system; class Problena31 { static void Main(string{} args) a { /Nariables a int py a string c= ™ in jfinterada Console.Write(*Promedio: ™); a p = int:Parse(Conaole.ReadLine()); nq J {Proceso _ Af (p >= 0&5 p <= 5) ‘ = c = “BESINO"; ) ' else if (p >= 6 46 p < 10) ( a = “MALO”; A ) else if (p >= 11 && p <= 14) A ‘ ¢ = “REGUEAR”; A } oe else if (p >= 15 && p < 17) ( ~ © = “BUENO”; } 5 else if (p >= 18 && p <= 20) os i ¢ = EXCELENTE”; nm ) n (Salida Console.meitenine(*”); Console. friteLine(*categoria: * + c); A Console Readiine (); Problema 32 Enunciado: Al ingresar el dia y el niimero de un mes, devolver la estacién del afio de acuerdo a la sigulente tabla, Estacion Tiempo Verano Del 21 de Diciembre al 20 de Marzo Otofo Del 21 de Marzo al21 de Junio Invierno Del 22 de Junio al 22 de Septiembre Primavera Del 23 de Septiembre al 20 de Diciembre ‘Analisis: Para la solucion de este problema, se requiere que el usuario ingrese el dia y el mes, Iuego e! sistema verifica y devuelve la estacion. Entrada * Dia (A) = Mes (m). Disefio: Salida * Estacion (e). Interfaz de Usuario A Algoritmo Diagrama de Flujo Pseudocodigo om Inicio A a, ai Entero a 2+ cafena /{Nariables a, m : Entero A leer dm , es 2 aden zs /entrada 1,2,3 uw a pees Leer d, m lp [ecrveRano” i //Proceso n ety Sa En Caso que m Sea ss v7 caso 1, 2, 3 a Oro" e = “VERANO” i Si m= 3 ¥ d > 20 Entonces ? e ~ “orofio” {5,6 A ru Fin Si > [eranano” nee aes = e ~ *oT0Ro” Kit SI Sim= 6 Yd > 21 Entonces ie 2 @ = “INVIERNO” s 7 TV IER” win at A i caso 7, & 9 Lr83 fe ~ SINVIERNO” —_— Si m= 9 ¥ d > 22 Entonces rN P © - “PRIMAVERA” a Lae Fin Si = caso 10, 11, 12 e e@ . “PRIMAVERA” ze pe PRAYER Si m= 12 ¥ d > 20 Entonces 5 3 © ~ “VERANO” a poet Fin Si - jr [ewearwaven] ein ase i pea YB //saida - Escribir @ iv 3 "VERANO : = Fin Eseribix ©

You might also like