Está en la página 1de 146

Programación

.NET
Carlos Zepeda Chehaibar

Programación
.NET

Libro del Profesor
Autor:
Carlos Zepeda Chehaibar
Apoyo en Desarrollo y Actividades:
Luis Iván Contreras Álvarez

ISBN 978-607-7270-11-9
Primera Edición

Coordinación Editorial:
Alejandro Flores Ledesma
Diseño Editorial:
César Carranza Contreras
Corrección de Estilo:
Jennifer P. Castillo Ascencio DERECHOS RESERVADOS © 2014 MMXIII por Grupo Educare, S. A. de C. V.
Esta es una obra protegida por las leyes internacionales de derechos de autor. Prohibida la
Ilustración de Portada: reproducción total o parcial de esta obra y/o los recursos que la acompañan, por cualquier
medio, sin autorización escrita de Grupo Educare, S. A. de C. V.
Marco Antonio Solís
Grupo Educare, el logotipo de Grupo Educare, el logotipo del Programa de Informática y
Ilustración de Interiores: Tecnología, son propiedad de Grupo Educare, S. A. de C. V.
Judith Lourdes Sierra Pérez El diseño editorial y contenidos gráicos son propiedad exclusiva de Grupo Educare, S.A.
de C.V.
Miriam Tatiana Zamora Gutiérrez
César Carranza Contreras Todos los nombres de empresas, productos, direcciones y nombres propios contenidos en esta obra, forman parte de
ejemplos icticios, a menos que se indique lo contrario. Las citas, imágenes y videogramas utilizados en esta obra se
utilizan únicamente con ines didácticos y para la crítica e investigación cientíica o artística, por lo que el autor y Grupo
Editado por Grupo Educare, S.A. de C.V. Educare, S. A. de C. V. no asumen ninguna responsabilidad por el uso que se dé a esta información, ni infringen derecho
de marca alguno, en conformidad al Artículo 148 de la Ley Federal del Derecho de Autor.
Cerro de Mesontepec #83
Microsoft Ofice, MS DOS, MS Windows, Word, PowerPoint, Excel, FrontPage y Access y sus logotipos son marcas
Colonia Colinas del Cimatario comerciales de Microsoft Corporation. Microsoft y el logo de Microsoft Ofice son marcas registradas de Microsoft
Corporation en los Estados Unidos y/o en otros países. Microsoft no patrocina, endosa o aprueba esta obra. Flash,
Querétaro, Querétaro C.P. 76090 Illustrator, Fireworks, Freehand, Dreamweaver, Photoshop y sus logotipos son marcas registradas de Adobe Inc. Adobe
no patrocina o endosa esta obra.

Contenido

Programación
.NET

Propuesta Pedagógica I

Unidad 1 Lógica computacional 9
TEMA A Lógica computacional 10
Actividad 1-01 Secuencias lógicas 10
TEMA B Algoritmos 11
Actividad 1-02 Algoritmos 12
Prueba de escritorio 13
Actividad 1-03 Algoritmos 14
TEMA C Clasificación de algoritmos 16
Transcripción 16
Compilación y errores 16
Actividad 1-04 Identificando errores 17
TEMA D Variables 18
Actividad 1-05 Acerca de variables 18
Asignación de valores 19
Actividad 1-06 Asignación de variables 20
TEMA E Operadores 21
Actividad 1-07 Operadores 22
TEMA F Estructuras básicas 23
Primera estructura: Secuencia de acciones 23
Segunda estructura: Decisión de acción 23
Actividad 1-08 Escribiendo algoritmos 24
Tercera estructura: Ciclos de acciones 27
Actividad 1-09 Escribe algoritmos computacionales 28
TEMA G Diagramas de flujo 31
Actividad 1-10 Diagramas de flujo 33
Evaluación 01 36

Unidad 2 Pseudocódigo 37
TEMA A Pseudocódigo 38
TEMA B Diagramas de Nassi – Schneiderman (N-S) 39
Diagrama N-S de estructuras de decisión 40
Actividad 2-01 Diagramas N-S 41
TEMA C Pseudocódigos de la estructura Si-Entonces- Si no 44
Actividad 2-02 Decisiones simples 45

NET 72 Video 3-01 Instalando Visual C# Express 2010 72 TEMA B Entorno de programación 73 Hola mundo 75 Lámina 3-02 Consola y Buffer de entrada 75 Video 3-02 Mi primera aplicación 75 Proyecto 3-01 Mi primera aplicación 75 TEMA C Introducción a la programación en C# 78 Lámina 3-03 Otros elementos del programa 78 Palabras reservadas 79 Literales 80 Variables 82 . Contenido TEMA D Decisiones en secuencia 47 Actividad 2-03 Decisiones en secuencia 47 TEMA E Decisiones en cascada o anidadas 50 Actividad 2-04 Decisiones anidadas 51 TEMA F Ciclos 54 Lámina 2-01 Ciclos 54 Actividad 2-05 Ciclo Mientras 54 Actividad 2-06 Ciclo Para 56 Actividad 2-07 Ciclo Hacer Mientras 57 Actividad 2-08 Ciclo Hacer .Hasta 59 Actividad 2-09 Ciclos anidados 61 Actividad 2-10 Escribiendo pseudocódigos matemáticos 63 TEMA G Arreglos y matrices 64 Lámina 2-02 Arreglos y matrices 64 Actividad 2-11 Arreglos 64 Actividad 2-12 Matrices 67 Lámina 2-03 Glosario de conceptos algoritmos 69 Evaluación 02 70 Unidad 3 .NET 71 TEMA A Introducción 72 Entorno de desarrollo (IDE) 72 Lámina 3-01 Microsoft .

constantes y enumeraciones 86 Operadores 86 Video 3-04 Operadores Unarios 86 Constantes 87 Lámina 3-05 Operadores 87 Video 3-05 Operadores Binarios 87 Lámina 3-06 Variales de sólo lectura 88 Enumeración 88 Lámina 3-07 Enumeraciones 89 Proyecto 3-02 Cálculo de sueldo 91 TEMA E Sentencias de control 93 Condicionales 93 Video 3-06 Condicional IF 93 Video 3-07 Instrucción Switch 94 Ciclos 94 Video 3-08 Ciclo While 95 Video 3-09 Ciclo For 95 Lámina 3-08 Sentencias de control 96 Uso De Break Y Continue 96 Proyecto 3-03 Sentencias de control 97 TEMA F Métodos. Arreglos y Colecciones 99 Métodos 99 Lámina 3-09 Métodos externos 100 Parámetros 101 Namespace 102 Lámina 3-10 Otros parámetros 102 Lámina 3-11 Importación de Namespace 103 Proyecto 3-04 Errores 104 Arreglos 105 Video 3-10 Arreglos 105 Declaración de arreglos 106 Funciones mas comunes con arreglos 107 . Contenido Tipos de datos 83 Lámina 3-04 Otros tipos de variables 83 Video 3-03 Declaración de variables 85 TEMA D Operadores.

Contenido Búsqueda en arreglos 107 Lámina 3-12 Arreglos Multidimensionales 107 Proyecto 3-05 Arreglos 108 Listas 109 Pilas 110 Colas 111 Video 3-11 Pilas 111 Video 3-12 Colas 111 Video 3-13 Pilas y Colas 111 Proyecto 3-06 Pilas 111 Evaluación 03 116 Unidad 4 Programación orientada a objetos 117 TEMA A Clases y Objetos 118 Definición de clases 118 Video 4-01 Clases 118 Accesibilidad 120 Lámina 4-01 Operador New 120 Lámina 4-02 Anidación de tipos 120 Proyecto 4-01 Colas 121 TEMA B Interfaz 125 Ventana Propiedades 126 Ventana Eventos 126 Video 4-02 Interfaz gráfica 126 Lámina 4-03 Controles comunes 127 Proyecto 4-02 Botones 127 TEMA C Excepciones (Instrucción Try) 129 Lámina 4-04 Uso de Catch 130 Proyecto 4-03 Excepciones 131 TEMA D Archivos 133 Streams 133 Lámina 4-05 Archivos Complemento 133 Bufferedstream 134 Proyecto 4-04 Archivos externos 135 Evaluación 04 136 .

podemos afirmar que el PIE de Grupo Educare es la mejor manera de aprender haciendo. imágenes. Las explicaciones.Recursos Material Impreso Este material forma parte de un conjunto de recursos. Está organizado en bloques integrales que incluyen todo lo necesario para aprender. Adicionalmente encontrarás los archivos que se requieren para realizar las actividades. actividades. tablas. algunos documentos y aplicaciones útiles. Recursos Digitales Los recursos digitales que acompañan al material impreso. notas y tips. practicar y evaluar habilidades o competencias. No olvides que los recursos digitales son parte integral del programa. permiten integrar la experiencia de aprendizaje desde múltiples perspectivas. contienen videos que te ayudarán a comprender los conceptos y a poner en práctica las habilidades adquiridas. por lo que es muy importante que los conozcas y utilices en el curso. Así. apoyados con las láminas y tutoriales. . que conforman el Programa de Informática Educativa (PIE).

Proyecto Este icono nos indica un ejercicio que refuerza de manera práctica. T IP Tip Es una sugerencia que complementa un tema del material impreso. La representación en video de la parte teórica. NOTA Nota Las notas que verás dentro de tu texto. que complementa la teoría del material impreso. que sirve como refuerzo dinámico e interactivo a un tema denso. Evaluación Este icono indica un elemento fundamental del proceso educativo que sirve para valorar el proceso de aprendizaje. Explicación Iconográfica Actividad Este icono nos indica un ejercicio que refuerza la parte teórica de este material. Lámina de apoyo La lámina es un recurso del profesor. puntualizan la teoría o los aspectos más importantes de un tema. . Video Es el material digital de los recursos del programa. dando un panorama más amplio al alumno sobre cómo ejecutar una actividad de manera más sencilla y práctica.

adaptables a la forma personal de trabajo del maestro y necesidades específicas de cada clase maximizando así el empleo de los recursos disponibles.NET Autor: Carlos Zepeda Chehaibar .NET Unidad 04 Programación orientada a objetos Programación . P ropuesta Did áctica NIVEL: Básico DURACIÓN SUGERIDA: 24 SESIONES / 45-50 MINUTOS Este libro lo integran las siguientes Unidades: Unidad 01 Algoritmos Unidad 02 Pseudocódigo Unidad 03 . Las propuestas didácticas son flexibles.

Algoritmos Variables Asignación de valores variable Evaluar el valor de las Operadores variables en diferentes operaciones Primera estructura: Secuencia de acciones Segunda estructura: Manejar las estructuras Estructuras básicas Decisión de acción básicas de los algoritmos Tercera Estructura: Ciclos de acciones Técnicas para representar Conocer las técnicas para Diagramas de flujo algoritmos representar algoritmos II .Programación .NET Unidad Tema Subtema Objetivos Comprender cuales son las secuencias lógicas Lógica computacional que se utilizan en programación asó como su finalidad Prueba de escritorio Identificar el proceso Características del Algoritomos para la construcción de algoritmo algoritmos Transcripción Clasificar a los algoritmos Clasificación de Compilación y errores partiendo de los errores algoritmos en las secuencias Estimar el valor de una Unidad 01 .

algoritmos computacionales Representa en un diagrama Actividad 1-10 Diagramas de flujo algunos algoritmos de flujo III . cambiando Actividad 1-07 Operadores valores a las variables que se indican. Actividad 1-06 Asignación de resolviendo una prueba de valores escritorio. Escribe una operación algebráica. Diseña algoritmos Actividad 1-08 Escribiendo empleando la secuencia. algoritmos decisión y ciclos de Actividad 1-09 Escribe acciones. Propuesta Didáctica Actividades sugeridas para el Competencias Tutorial Sugerido Recursos alumno Describe detalladamente las Actividad 1-01 Secuencias secuencias lógicas dentro de lógicas la computación Contruye un algoritmo para Actividad 1-02 Algoritmos desarrollar algoritmos Actividad 1-03 Algoritmos Menciona ejemplos de Actividad 1-04 Identificando errores de sintaxis y errores errores lógicos Prepara un formato conb información completa sobre Actividad 1-05 Variables las variables y su asignación.

en secuencia o Decisiones en cascada o anidadas anidadas Ciclo Mientras (While) Ciclo Para (For) Ciclo Hacer-Mientras Elegir el tipo de ciclo Ciclos (Repeat While) adecuado en la creación Ciclo Haer-Hasta (Repeat de algoritmos Unidad 02 .Si Trabajar con algoritmos no identificando decisiones Decisiones Decisiones en secuencia simples.NET Unidad Tema Subtema Objetivos Introducción Reconocer pseudocódigos Identificar el Diagrama Diagramas de Nassi Diagrama N-S de (N-S) y su aplicación en Scheiderman (N-S) estructuras de decisión los algoritmos Pseudocódogos de las estructura Si-Entonces.Pseudocódigo Until) Ciclos Anidados Evaluar las funciones que Pseudocódogos con varias se pueden aplicar con estructuras los Pseudocódigos en diferentes estructuras Aplicar los Pseudocódigos Arreglos para la solución de problemas Resolver problemas Matrices matemáticos utilizando algoritmos IV .Programación .

en formato de Pseudocódigo. Actividad 2-12 Escribiendo pseudocódigos matemáticos Escribe con un Pseudocódigo un programa Actividad 2-13 Arreglos que de solución a diferentes ejercicios Planea un programa. Propuesta Didáctica Actividades sugeridas para el Competencias Tutorial Sugerido Recursos alumno Emplea algunos algoritmos Actividad 2-01 Diagramas en el diagrama N-S N-S Actividad 2-02 Decisiones simples Describe las diferencias Actividad 2-03 Decisiones en entre los diferentes tipos de secuencia Decisiones Actividad 2-04 Decisiones anidadas Actividad 2-05 Ciclo Mientras Actividad 2-06 Ciclo Para Actividad 2-07 Ciclo Hacer- Contruiye diferentes Mientras algoritmos utilizando las Actividad 2-08 Ciclo Hacer- cundiones de los ciclos Hasta Actividad 2-09 Ciclos anidados Actividad 2-10 Prueba de Crea un mapa conceptual escritorio con las estructuras de los Actividad 2-11 Repaso de Pseudocódigos realizando pseudocódigos una prueba de escritorio. Actividad 2-14 Matrices para ca ejercicio matemático V .

enumeraciones Condicionales Operar las sentencias de Sentencias de Control Ciclos control.Net Introducción Sistema de tipo común Framework. Entorno de Desarrollo (IDE) Descarga e Instalación Conocer el entorno de C# Entorno de Programación Interface de usuario y su instalación..Programación . también su kit (BCL) de desarrollo .NET Estructura de un programa Palabras reservadas Describir los elementos Literales que conforman un Variables Introducción a la programa.NET. Unidad 03 . conocerá Tipos de Datos programación en C# los diferentes tipos de Operadores datos y como hacer la Constantes y declaración de estos.NET Framwork Entorno de ejecución Identificar la plataforma Biblioteca de Clase Base .NET Unidad Tema Subtema Objetivos . Uso de Break y Continue VI . que le (CTS) permitirán desarrollar Especificación del aplicaciones simples o lenguaje común (CLS) complejas.

NET . Propuesta Didáctica Actividades sugeridas para el Competencias Tutorial Sugerido Recursos alumno Reconoce los principales elementos que componen Actividad 3-01 Video 3-01 Instalación el entorno de desarrollo en Características de .NET Actividad 3-02 Espacio de Identifica Visual C# como trabajo Video 3-02 Mi primera entorno de desarrollo Proyecto 3-01 Mi Primer aplicación aplicación Video 3-03 Declaración de variables Desarrolla aplicaciones Proyecto 3-02 Calculando Video 3-04 Operadores sencillas en modo consola sueldos Unarios Video 3-05 Operadores Binarios Video 3-04 Condicional IF Video 3-05 Ciclo For Utiliza las sentencias de Proyecto 3-03 IF Video 3-06 Instrucción control en sus aplicaciones Proyecto 3-04 Switch Switch Video 3-07 Ciclo While Video 3-08 Clases VII .

. su uso e Colecciones importancia Listas Pilas Colas Definición de clases Reconocer el concepto Accesibilidad de clase y el modo de Clases y Objetos acceso a estas en la programación con C#.Programación diferentes controles que orientada a objetos proporciona C# Conocer y manejar Excepciones excepciones en C# Nombrar los Streams Archivos requerimientos para el manejo de archivos en C# VIII . Arreglos y de método. Realizar interfaces graficas usando los Interfaces de Usuario Unidad 04 .Programación .NET Colecciones colecciones. arreglo y con arreglos Unidad 03 .NET Unidad Tema Subtema Objetivos Métodos Parámetros Namespace Arreglos Declaración Conocer las definiciones Funciones más comunes Continúa Métodos.

Proyecto 3-06 Arreglos Video 3-10 Pilas arreglos y colecciones de Proyecto 3-07 Colecciones Video 3-11 Colas objetos. Utiliza archivos externos en Proyecto 3-11 Archivos el desarrollo de aplicaciones IX . Propuesta Didáctica Actividades sugeridas para el Competencias Tutorial Sugerido Recursos alumno Desarrolla ampliamente la Proyecto 3-05 Errores Video 3-09 Arreglos aplicación de las matrices. Reconoce que un objeto contiene toda la información que permite definirlo e Proyecto 3-08 Colecciones identificarlo frente a otros objetos Elabora aplicaciones que se ejecutan desde un entorno Proyecto 3-09 Interfaz Video 3-12 Interfaz Gráfica gráfico Controla resultados inesperados en sus Proyecto 3-10 Excepciones aplicaciones mediante excepciones.

Esto no es una prueba. Identificar constantes. Definir el concepto de pseudocódigo. X . Reconocer la clasificación de los algoritmos. RIdentificar la estructura de ciclos. Reconocer el entorno gráfico de Visual C# 2010 Express.Diseño Vectorial Inkscape Inventario de habilidades Este inventario se emplea para medir las habilidades de los alumnos que inician el curso. Aplicar Excepciones en aplicaciones. Crear aplicaciones con interfaz gráfica. Definir el concepto de entorno de desarrollo. Estimar decisiones simples y anidadas. Identificar lenguajes de programación. Realizar pruebas de escritorio a algoritmos. Aplicar sentencias de control a un programa. dónde uno establece poco o nulo conocimiento del tema por parte del alumno y cinco que está completamente familiarizado con el mismo. Utilizar la linea de comandos de Windows. Identificar arreglos y matrices. Representar gráficamente algoritmos. Definir los conceptos pilas y colas. Identificar variables. es un indicador que va del 1 al 5. Asignar variables. Aplicación de condicionales en programas. Habilidad 1 2 3 4 5 Desarrollo de algoritmos.

C Clasificar los algoritmos y determinar posibles errores dentro de una secuencia. algoritmos y operaciones aplicándolas por completo en determinar funciones o para diseñar programas computacionales. con detalle. D Resolver pruebas de escritorio con valores numéricos al asignarle un valor a cada variable. Programación . Un id ad 01 Lóg ica co mputaciona l NIVEL: Intermedio DURACIÓN SUGERIDA: 5 SESIONES / 45-50 MINUTOS Durante el desarrollo de esta unidad aprenderás a: A Comprender la importancia de la lógica y las matemáticas dentro de la computación B Identificar el proceso para la elaboración de algoritmos. E Manejar las estructuras básicas de los algoritmos. F Conocer las técnicas para representar algoritmos.Utiliza los fundamentos de las matemáticas para realizar.NET Autor: Carlos Zepeda Chehaibar .

Escribir la palabra “calc”. 4. Presionar la tecla Enter. ¿Qué ocurre si con cualquiera de las formas. Dar clic en la opción Calculadora. ¿Hay formas alternativas para entrar a este programa? Describe una: 1. 4. ACTIVIDAD 1-01 Secuencias lógicas Como ejemplo. 2. 3. 12 . Seleccionar el menú Accesorios. 2. Aunque tal vez no te hayas dado cuenta. no sigues los pasos o los realizas en desorden? No podría abrir el programa ya que cada paso subsecuente requiere que el anterior esté completo. 3. En pocas palabras en la forma más obvia y más fácil de hacer algo. Dar clic en el botón Inicio.Programación . ya que determina la manera en que se puede resolver un problema. Dar clic en el menú Inicio. exacta y matemática. Seleccionar la opción Ejecutar. 3. ¿Cuáles son los pasos para entrar a la calculadora de Windows? 1. Seleccionar el menú Todos los programas. La computadora trabaja con una lógica especial. La lógica es muy importante. Se remonta a la época de Aristóteles en la que desarrolló reglas para establecer un razonamiento encadenado. La lógica es una rama del conocimiento que nos permite determinar que algo está aprobado por la razón como bien deducido o bien pensado.NET TEMA A Lógica computacional La lógica es la capacidad de pensar en soluciones alternativas. Es un nivel de abstracción sin el cual no es posible estructurar los pasos que generen lo que esperamos obtener. contesta detalladamente las siguientes cuestiones: 1. 2. todas las acciones que realizas en la computadora están haciendo uso de esta lógica en la forma de procedimientos o secuencias de pasos que hay que realizar para lograr lo que se quiere.

Lógica computacional TEMA B Algoritmos ¿Has pensado quién hizo los programas que conoces? y más aún ¿tienes idea de cómo los hicieron? La computadora permite solucionar una gran cantidad de problemas. no usarlo. Ejemplo: Objetivo. es por medio de un algoritmo. Tener claro el objetivo te va a permitir saber hacia dónde vas y a dónde quieres llegar. Al llegar al lugar hay que solicitar el programa. A ese camino lógico se le llama Algoritmo. Determinar qué software se desea adquirir 2. Asignándole un nombre al algoritmo lo generalizamos para cualquier adquisición de software. que después pueda implementarse en la computadora. Parece una cosa muy obvia. pero no todas. Queremos solamente adquirirlo: no instalarlo. Si lo tienen Comprar el software Terminar con el algoritmo Si no lo tienen Repetir desde el paso 2 Fin Observa el algoritmo anterior. Un algoritmo es un conjunto de pasos que permiten alcanzar un objetivo. Si lo tienen disponible. 13 . pero la mayoría de las personas que no pueden resolver un problema es porque no lo han identificado y comprendido. Algoritmo. Una vez identificado el problema es necesario diseñar una solución. en otras palabras. cuál es el objetivo. El algoritmo es genérico. Tenemos como objetivo adquirir el paquete de Microsoft® Office® 2010. lo compramos y si no lo tienen. realizando cada tarea indicada. Una forma sencilla de aproximarse a una solución. Preguntar si tienen el software requerido 4. ¤ Casi todas las líneas van enumeradas. Algoritmo para adquisición de software Inicio 1. es decir. ¤ Se debe cumplir con la orden de la línea 1 para continuar con el resto del algoritmo. simplemente es un texto. en un orden definido. nos dirigimos hacia otra tienda repitiendo el proceso. Ahora podemos organizar el algoritmo para que sea más estético y entendible. ¤ Si se siguen los pasos. Si explicamos el algoritmo así. Desplazarnos hacia la tienda de software 3. teniendo un inicio y un fin. Salimos del lugar donde nos encontremos y nos dirigimos hacia una tienda de software. siempre funciona. sin importar el software que se quiera adquirir ni el lugar donde se va a comprar. El primer paso que debes dar para la solución de un problema es tener muy claro cuál es el problema a resolver. deben ser ejecutados uno después de otro. Los pasos deben ser secuenciales y ordenados. El objetivo solamente es adquirirlo. Cuando el objetivo es lo suficientemente claro podemos vislumbrar un camino lógico para llegar hasta él.

Prender el horno 5. Algoritmo para encender un vehículo Inicio 1. Vaciar la mezcla en un molde para pastel 4. Desarrolla un algoritmo que te permita encender un vehículo. Mezclar los ingredientes 3. Comprar los ingredientes 2. Si el pastel está listo Sacar el pastel del horno Si no .NET ACTIVIDAD 1-02 Algoritmos A continuación escribirás algunos algoritmos. Desarrolla un algoritmo que te permita hacer un pastel. Si el horno está caliente Meter el pastel al horno Si no .regresar al paso 5 6. Entrar al vehículo 3. 1. Girar la llave Fin 2. Abrir la puerta del vehículo 2. Algoritmo para hacer un pastel Inicio 1.regresar al paso 6 Fin 14 .Programación . Insertar la llave en la ranura 5. No olvides ponerles un título e indicar claramente el principio y el fin. Si el vehículo es estándar Pisar el clutch Si no es estándar Veriicar que esté en Parking 4.

regresar al paso 2 Fin Existen problemas que pueden resultar tan complejos que podríamos requerir de cientos o hasta miles de líneas para resolverlos. Indicar los pasos a seguir 4. sabemos que un problema se puede resolver de varias maneras diferentes. La forma de probarlo es siguiendo cada uno de los pasos que indica el algoritmo. el resultado será el mismo. Además. Elegir una posible solución al problema 3. No puede improvisar. Crea un algoritmo para crear algoritmos. Determinar el problema a resolver 2. Si la solución es satisfactoria Terminar algoritmo Si no . inventar o adivinar la información que necesita para poder realizar un proceso. ya que el desarrollo de cada paso debe seguir un orden lógico. Es más. De forma similar la computadora realiza internamente secuencias de pasos para realizar las tareas que nos son útiles. Prueba de escritorio Todo algoritmo debe ser probado antes de ser ejecutado. Si la prueba marca errores Corregir las fallas y regresar al paso 4 6. Características del algoritmo Un algoritmo debe tener al menos las siguientes características: ¤ Ser preciso. Lógica computacional 3. El análisis de algoritmos busca que las soluciones sean lo más sencillas posibles. Esto quiere decir que siempre que se ejecute con los mismos datos. simplemente porque esta decisión requiere también del pensamiento lógico. La manera en que buscamos esta solución óptima está fundamentada en la lógica. En la prueba de escritorio. aún para problemas muy complejos. 15 . sin la lógica no podríamos decidir entre cuál de dos soluciones es más sencilla. Algoritmo para crear algoritmos Inicio 1. Realizar una prueba del algoritmo 5. un algoritmo bien hecho siempre debe funcionar. Las actividades o pasos del algoritmo deben desarrollarse en orden estricto. ¤ Ser definido. A esto es a lo que llamaremos prueba de escritorio. para tener la certeza de que lograremos el objetivo.

en un diagrama de flujo o en diagramas de Nassi/Schneiderman. El algoritmo debe ser entendible para cualquier persona. ¤ Presentación. Esto indica que el número de pasos de un algoritmo debe ser limitado. a. tal vez tengas que hacer algunas modificaciones hasta lograr el objetivo esperado. Ingresar número a evaluar 2. es decir. Pide a un compañero que realice a tu algoritmo tres pruebas de escritorio utilizando tres diferentes números enteros. Desarrolla un algoritmo que te permita determinar si un número es par o impar. no sólo para la persona que lo diseñó. NOTA Al poner en marcha los pasos del algoritmo para determinar si logrará o no el objetivo.Programación . entre otras. Utiliza este espacio para las pruebas. como por ejemplo en pseudocódigo. número 60 número/2 = 30 residuo = 0 Es par 16 . Si el residuo del número/2 = 0 es par Si no es impar Fin 2. ACTIVIDAD 1-03 Algoritmos 1. los pasos a seguir deben de tener un fin. Más adelante veremos otras formas de presentar un algoritmo. Inicio 1. El algoritmo debe ser lo suficientemente detallado para que no exista duda alguna al ejecutarse.NET ¤ Ser finito.

Si el número sólo es divisible por sí mismo y la unidad Es primo Si no No es primo Fin 4.33 es primo Número = 11 11/1 = 11 11/4 = 2. Lógica computacional b.5 11/5 = 2. número 15 número/2 = 7 residuo = 1 Es impar c. Dividir el número por todos los números entre 1 y número/2 4. número 2 número/2 = 1 residuo = 0 Es par 3.66 es primo 17 . Utiliza este espacio para las pruebas. Si número < 0 Terminar algoritmo 3. Inicio 1.2 11/3 = 3. Número = 0 el número es menor o igual a 0 no es primo Número = 4 4/1 = 4 4/2 = 2 no es primo Número = 7 7/1 = 7 7/2 = 3. y 11. Ingresar número a evaluar 2. 4. Pide a un compañero que realice a tu algoritmo cinco pruebas de escritorio utilizando los números 0.75 11/2 = 5. Desarrolla un algoritmo que te permita saber si un número es primo. 7.5 7/3 = 2.

El compilador es el encargado de hacer esta revisión y te ayuda a detectar los errores de sintaxis y de precaución. Los algoritmos computacionales son los que se crean para que una computadora sea quien ejecute los pasos y obtener el resultado esperado. al regresar a casa. 18 . entre otros. Compilación y errores Una vez que has identificado el objetivo a cumplir. Algunas veces se requiere utilizar paréntesis. comas. al cocinar. sino se diseñan para ser ejecutados por el ser humano. La compilación es el proceso mediante el cual la computadora revisa que el programa que has escrito cumpla con las reglas sintácticas del lenguaje de programación que estés utilizando. Estas instrucciones deben ajustarse a las reglas sintácticas de un lenguaje de programación. el programa no puede funcionar. Se aprovecha la velocidad de procesamiento del ordenador para darnos un resultado mucho más confiable. has realizado un algoritmo que te permita obtener el resultado deseado y lo has transcrito en un lenguaje de programación. Errores de sintaxis. necesitas hacer una compilación. restricciones y reglas de un lenguaje de programación. pues hay un error de sintaxis y la computadora no puede adivinar que en realidad querías escribir “print”. el programa no funcionará. Los errores de compilación son los más fáciles de detectar y corregir. puntos o corchetes. Las reglas sintácticas de un lenguaje de programación son las restricciones técnicas sobre las cuales está construido el lenguaje. un programa computacional es un algoritmo escrito con las instrucciones. Transcripción Los algoritmos computacionales no pueden ser ejecutados directamente. Por ejemplo. Así. Si no se cumple con esas reglas de lenguaje. si en algún lenguaje hay una instrucción “print” y por error tú escribes “prant”.NET TEMA C Clasificación de algoritmos Hay dos clasificaciones para los algoritmos: ¤ Algoritmos informales ¤ Algoritmos computacionales Los algoritmos informales son aquellos que no se realizan para una computadora. La transcripción es el proceso a través del cual convertimos un algoritmo en un listado de instrucciones entendibles para la computadora.Programación . Todos los días ejecutas algoritmos informales en todas tus actividades: al prepararte para tus clases. Es como un error ortográfico en el lenguaje que estés programando. al vestirte. Son errores representados en la omisión de alguna o algunas reglas sintácticas del lenguaje de programación.

Unos minutos de trabajo previo en papel. Estos errores son los más difíciles de corregir y se pueden evitar si se diseña y analiza correctamente el problema antes de comenzar a programar en la computadora. El compilador no detecta ningún error en la fórmula. Cada lenguaje de programación cuenta con su propio compilador que te ayudará a escribir tu programa correctamente y a detectar estos errores. cometería un error lógico. pero el resultado está mal. Errores lógicos. Ocurren cuando el programa se compila perfectamente. Algunos compiladores hacen sugerencias para el mejoramiento o aseguramiento del programa. sin embargo no hace lo que se supone que debería hacer. Lógica computacional Errores de precaución. no tiene errores de sintaxis. te pueden ahorrar muchas horas de trabajo en la computadora. Estos errores los tenemos que detectar nosotros mismos al hacer las pruebas de escritorio. Por ejemplo. el programa funciona. Da un ejemplo (diferente a los de este libro) de un error lógico. 19 . ya que ahí es donde determinamos si el algoritmo logrará o no el objetivo esperado. si escribo un programa para calcular el área de un triángulo y utilizo la fórmula Área=(base*altura)/3. Este tipo de errores no pueden ser detectados por el compilador. Escribir una instrucción “Si no” sin haber escrito antes la instrucción “Sí” 2. Da un ejemplo (diferente a los de este libro) de un error de sintaxis. Si quiero obtener el promedio de dos números A y B y escribo promedio = A+B/2 el resultado sería incorrecto. ACTIVIDAD 1-04 Identificando errores 1.

Tipo real. el área cambiará también su valor. las fórmulas son para casos generales. ¿Qué significa la palabra variable? y en álgebra ¿qué es una incógnita o variable? Que puede cambiar (un valor. Existen diferentes tipos de datos que una variable puede almacenar. a continuación se describen: Tipo entero. 20 .Programación . ¿Qué es lo opuesto de una variable? Una constante que no puede cambiar su valor. ya que operan con un juego de reglas llamado Aritmética Entera. A esto se le conoce como declaración de variables. Así se pueden obtener los valores correctos para cualquier caso especíico que exista. una propiedad.NET TEMA D Variables En programación. 2. Una literal de la cual se desconoce su valor o una literal que puede cambiar su valor. 3. 4. Para poder utilizar variables en un programa deberás especificar primero qué tipo de información va a almacenar. si yo cambio los valores de la base o la altura. por lo tanto sus operaciones jamás van a generar valores decimales. un atributo. la cual puede cambiar en cualquier momento. una variable es un campo de memoria que almacena información. ya que opera con un juego de reglas llamado Aritmética Real. En la fórmula para calcular el área de un rectángulo (Área=base x altura) ¿cuáles son las variables? ¿Cómo las puedes identificar? Las tres. ¿Todas las fórmulas matemáticas tienen variables? ¿Por qué? Sí. entre otros). Ésta puede almacenar números que tienen punto decimal y en sus operaciones puede generar decimales. ACTIVIDAD 1-05 Acerca de variables Reflexión previa: 1. Una variable de tipo entero solamente puede almacenar valores numéricos sin punto decimal.

ésta cambiaría el valor 8 por el nuevo valor asignado. se pierde el valor anterior. B=A Indica que almacenará el contenido de la variable A en la variable B. Asignación de valores Para asignar un valor a una variable (cargar una variable). Una variable de tipo caracter puede almacenar valores equivalentes del código ASCII (American Standar Code for Infomation Interchange). La variable B que valía 15 se resta en 10 y el resultado se almacena B=B-10 25 5 20 en B. Observa cómo las variables van adquiriendo nuevos valores conforme se ejecutan las operaciones: Valor después de cada instrucción A B C A= 10 10 Se asigna el valor 10 a la variable A. B= 15 10 15 Se asigna el valor 15 a la variable B y A mantiene su valor. ASCII es un código internacional de equivalencias internas en el sistema binario. Ejemplos de asignación de variables. Es muy útil ya que puedes verificar qué valores adquieren las variables durante la ejecución de un algoritmo o programa. C=A+B Indica que almacenará en la variable C. cambiando su valor de 15 por 5. que indica a la computadora que va a almacenar el valor que se encuentre a la derecha del símbolo. Una variable sólo puede guardar un valor a la vez: si volviéramos a asignarle otro valor a la variable A. A y B mantienen su valor. ¤ Del lado derecho del signo puede haber una constante. C=20 10 15 20 Se asigna el valor 20 a la variable C. Por ejemplo: A=8 Indica que almacenará el número 8 en la variable A. dentro de la variable que se encuentre a la izquierda. La variable A que valía 10 se suma con la variable B con valor a 15 A=A+B 25 15 20 y el resultado ahora se asigna a la variable A. ¤ Cada vez que se asigna un nuevo valor a una variable. En este ejercicio se ejemplifica claramente lo que es una prueba de escritorio. Entonces concluimos que: ¤ Sólo puede haber una variable del lado izquierdo del signo igual. Las variables A y C mantienen su valor. cambiando su valor de 10 por 25. una expresión u otra variable. la expresión que resulte de la suma de los valores que contengan las variables A y B. en la mayoría de los lenguajes de programación se utiliza el signo = (igual a). Lógica computacional Tipo caracter. Las variables B y C mantienen su valor. 21 . por lo que una variable caracter puede almacenar cualquier cadena de caracteres que hayan sido tecleados.

a b c a=10 10 . a b c a=1 1 . Anota el valor de las tres variables después de ejecutar cada línea o instrucción. . - b=2 1 2 . 1. a b c 2. b=5 5 5 - c=3 1 2 3 c =5 5 5 5 a=a+b 3 2 3 a=a+a 10 5 5 b = a -b 3 1 3 b=b+b 10 10 5 c=a*b 3 1 3 c =c +c 10 10 10 a = a /b 3 1 3 a=a+b+c 30 10 10 b=a+b 3 4 3 b=a+b+c 30 50 10 c=a*b 3 4 12 c =a+b+c 30 50 90 5. - b=10 10 10 - c= 1 0 10 10 10 a = a+5 15 10 10 b = a+3 15 18 10 c= a+2 15 18 17 a = b+4 22 18 17 b = b+5 22 23 17 c= c+8 22 23 25 22 . a b c a=3 3 ? ? a=10 10 .Programación . a=5 5 .NET ACTIVIDAD 1-06 Asignación de variables Realiza una prueba de escritorio para cada uno de los siguientes programas. a b c 4. - b=8 3 8 ? b=1 10 1 - c=1 3 8 1 c =4 10 1 4 a=5 5 8 1 a=a+c 14 1 4 b=9 5 9 1 b=a+c 14 18 4 c=7 5 9 7 c =a+c 14 18 18 a=a+1 6 9 7 a=c +5 23 18 18 b = b -2 6 7 7 b=c +b 23 36 18 c = c+ 3 6 7 10 c =a+b+c 23 36 77 3.

1) El valor que tomará x es 10/3 ó 3.333333. Ejemplo 2: x = (a + b) / (c + d) Asignemos algunos valores: a=2. c=4 y d=3 x = (2 + 8)/(4 . Cuando utilizamos paréntesis se altera la jerarquía de los operadores. Lógica computacional TEMA E Operadores Los operadores son signos que expresan relaciones entre variables y/o constantes de las cuales se obtiene un resultado. c=4 y d=3 x = 2 + 8/4 + 3 El valor que tomará x es 7. ¤ Después se calculan las multiplicaciones y divisiones ¤ Por último se realizan las sumas y restas. Ejemplo 1: x = a + b / c + d Primero se ejecutaría la división (b/c). Dentro de los paréntesis se respeta la jerarquía de los operadores. posteriormente la suma del resultado de la división con a y el resultado se sumaría con d. 23 . las acciones se ejecutan de acuerdo a una jerarquía: ¤ La computadora evalúa y realiza las potencias. b=8. dando prioridad de derecha a izquierda. b=8. Los operadores más conocidos son: ¤ Para expresar una suma: + ¤ Para expresar una resta: - ¤ Para expresar una potencia: ^ ¤ Para expresar una multiplicación: * ¤ Para expresar una división: / Si más de un operador se usa en una expresión. ya que la computadora realiza primero las operaciones de los paréntesis más internos. La acción que realice un operador depende mucho del lenguaje de programación que estemos utilizando. Asignemos algunos valores: a=2.

Programación
.NET

ACTIVIDAD

1-07 Operadores

Evalúa las siguientes expresiones. Escribe en una sola línea la expresión algebraica, tal y como
se debe escribir en la computadora, usando paréntesis y los operadores adecuados. Después
evalúa cada expresión obteniendo el valor final de x, suponiendo en todos los casos que:

a=3
b=4
c=2
d=1

1. a + bc Expresión: x=(a+b/c) / (a/b+c)
x= a
b+c x= x=(3+4/2) / (3/4+2)= 20/11

2. a+ b Expresión: x=(a+b/(a+b+b/c))/(a+b/(c+a))
a + b + bc
x= b
a+ c+ x= (3+4/(3+4+4/2))/(3+4/(2+3))= 155/171
a

3. a + b + d *c a Expresión: x=(a+b+c/d*a)/(a+b*c/d)
x=
a + b * dc
x= (3+4+2/1*3)/(3+4*2/1)= 23/33

4. a+b Expresión: x=(a/b+b/c)/(a/b - b/c)
x = ab bc
b- c x= (3/4+4/2)/(3/4 - 4/2)= -11/5

5. a + ac +
+b Expresión: x=a+(a+(a+b)/(c+d))/(a+a/b)
x = a+ d
a+ b a
x= 3+(3+(3+4)/(2+1))/(3+3/4)= 199/45

24

Lógica computacional

TEMA F Estructuras básicas
Una estructura se define como un esquema que nos permite representar una idea de manera
más simplificada, además de restringir un poco la lógica algorítmica. Por ejemplo, cada persona
puede tener su propia manera de hacer un pastel, por esta razón es que una estructura puede
restringir a que sólo se realice de ciertas formas convenientes. Existen tres estructuras básicas
del razonamiento en las que nos basamos para realizar una acción o varias acciones:

Primera estructura: Secuencia de acciones
Todos los días mientras realizamos nuestras actividades planeamos, consciente o
inconscientemente, lo que vamos a hacer y decidimos un orden para que se realicen las
actividades. Para preparar un pastel, por ejemplo, tenemos que hacerlo paso por paso siguiendo
la secuencia de la receta para prepararlo. En otras palabras la secuencia nos indica el orden
de ejecución.

Para escribir una secuencia de acciones lo único que tienes que hacer es escribir una instrucción
después de otra, de manera que se entienda la secuencia y el orden de ejecución. Por ejemplo,
si deseáramos hacer una secuencia que nos permita observar a través de una ventana abierta,
el algoritmo sería:

Algoritmo para observar a través de una ventana abierta.

Inicio
1. Ubicar la ventana por la que deseamos observar.
2. Dirigirnos hacia la ventana que escogimos.
3. Acercarnos lo suficiente para observar a través de ella.
4. Observar a través de la ventana abierta.
Fin

Notarás que para utilizar una estructura de secuencia sólo tenemos que indicar en qué orden
se ejecutará cada paso y lo que se tiene que hacer.

Segunda estructura: Decisión de acción
Durante la ejecución de una secuencia a menudo se tienen que tomar decisiones, ya sea para
escoger la mejor alternativa o simplemente porque tenemos que escoger entre dos caminos
lógicos dependiendo de alguna variable. La vida cotidiana está llena de decisiones: tendremos
que escoger si el pastel será de chocolate o preferimos que sea de vainilla, o hay que elegir
ropa diferente si está lloviendo o si hace calor.

Siempre que se debe tomar una decisión, ésta depende de una condición. La condición es una
expresión lógica que nos permite decidir cuál es el camino a tomar. Vamos a complementar el
ejemplo de la estructura anterior:

25

Programación
.NET

Algoritmo para observar a través de una ventana.

Inicio
1. Ubicar la ventana por la que deseamos observar
2. Si nos encontramos sentados
Levantarnos del lugar donde nos encontremos
Si no estamos sentados
Nos orientamos hacia la ventana
3. Dirigirnos hacia la ventana que escogimos
3. Acercarnos lo suficiente para observar a través de ella.
4. Si está cerrada
Abrir la ventana
5. Observar a través de la ventana abierta.
Fin

Conforme utilizas las estructuras de secuencias junto con las estructuras de decisiones, el
algoritmo se aproxima más a la realidad. Observa que en las estructuras de decisión siempre se
debe indicar el camino que se debe tomar cuando se cumpla la condición, pero no forzosamente
tienes que indicar qué acción tomar en caso de no cumplir la condición.

ACTIVIDAD

1-08 Escribiendo algoritmos
Para cada uno de los siguientes problemas, escribe un algoritmo que lo solucione. Después pide
a un compañero que ejecute una prueba de escritorio a tu algoritmo para asegurarse de que, sin
importar los datos que se usen, el algoritmo no falla.

1. Algoritmo para elegir la ropa adecuada para salir a cualquier tipo de restaurante.

Inicio
1. Decidir qué tipo de restaurante es
2. Si el restaurante es elegante
3. Si es para hombre
Elegir traje
Si no
Elegir vestido
4. Si el restaurante es casual
5. Si es para hombre
Elegir pantalón de vestir
Elegir camisa
Si no
Elegir blusa

26

Mostrar un color al cliente 3. Inicio 1. Asignar a los trabajadores para el trabajo 8. Llevar a los trabajadores y la pintura al lugar de trabajo Fin Prueba de escritorio: Color azul ¿Es de su agrado? = no Color blanco ¿Es de su agrado? = sí costo = $1000 ¿Es de su agrado? = sí Fin 27 . antes de presentarse con el cliente a realizar el trabajo. Lógica computacional Elegir pantalón o falda de vestir 6. Si al cliente no le agrada la cotización regresar al paso 2 7.Calcular la pintura necesaria 5. Reunirse con el cliente 2. Algoritmo que requiere hacer una empresa que se dedica a pintar casas. Si el restaurante es informal Elegir jeans Elegir T-shirt Fin Prueba de escritorio: restaurante = casual ¿El restaurante es elegante? = no ¿El restaurante es casual? = sí ¿Es para hombre? = sí Elegir pantalón de vestir Elegir camisa ¿El restaurante es informal? =no Fin 2. Si al cliente no le gusta regresar al paso 2 4. Cotizar el trabajo 6.

Programación . Una tienda hace un descuento de $10 si el total de la compra está entre $100 y $200 y hace un descuento de $20 si el total de la compra es mayor de $200. variable total = 0 2. basado en el valor de la compra. El algoritmo debe calcular el precio a pagar. Imprimir “El total es $” total Fin 28 . Si es el último artículo Si total > 500 total = total . total = total + precio del artículo 3. El algoritmo debe calcular el precio a pagar. Inicio 1.10 200 250 total = 500 450 60 510 4.10 Si no regresar al paso 2 Fin Prueba de escritorio: total artículo ¿total es mayor a 500? 0 150 si 150 50 total = 510 . si total > 100 y total < 200 total = total -10 5. no hay descuento. Sumar el precio del artículo al total 3. Variable total = 0 2.NET 3. Si la compra es menor de $100. si total > 200 total = total -20 6. Inicio 1. si hay más artículos regresar al paso 2 4. Una tienda hace un descuento de $10 si el total de la compra es mayor a $500. basado en el valor de la compra.

El resto del tiempo debes permanecer en tu lugar de trabajo y sólo cada hora levantarte y observar a través de la ventana. . Estructuras .Para ¤ El uso de sangrías te ayuda a identificar mejor Cíclicas . Vamos a suponer que eres un supervisor y cada hora.Dobles . .Mientras Que cada una de las condiciones y los ciclos. Lógica computacional Tercera estructura: Ciclos de acciones Un ciclo es una estructura que nos permite repetir una o varias acciones.Simples ¤ El ciclo debe tener algún tipo de finalizador que Algorítmicas Condicionales .Asignación .Salida repite un conjunto de acciones.Múltiples detenga la repetición de acciones. durante tu jornada de trabajo. tienes que vigilar a través de una ventana. 29 . ¿Recuerdas el algoritmo para crear un pastel? Tal vez queremos hacer varios pasteles y tendremos que repetir el mismo procedimiento cierto número de veces. Algoritmo para vigilar desde una ventana Inicio Llegar puntual a la jornada laboral Ubicarse en el lugar de trabajo Mientras no termine la jornada de trabajo Ubicar la ventana por la que nos queremos asomar Si estamos sentados Levantarnos del lugar en donde estemos sentados Orientarnos hacia la ventana Si no Orientarnos hacia la ventana Fin Si Dirigirnos hacia la ventana Si está cerrada Abrirla Fin Si Observar por la ventana Regresar al lugar de trabajo Mientras no haya pasado una hora Permanecer en el lugar de trabajo Fin Mientras Fin Mientras Fin Analiza con detalle los cambios en nuestro algoritmo: ¤ La palabra Mientras establece una condición Secuenciales .Entrada que determina el número de veces que se .Repita Hasta Cada bloque de instrucciones dentro de una condición o un ciclo debe indicar el inicio y fin.

escribe un algoritmo que lo solucione. Un vendedor de arena tiene que despachar 2 kg. de producto a un cliente. Escribe el algoritmo más adecuado que puedas pensar para despachar la cantidad exacta de arena. Mientras la báscula no pase de 2 kg.Programación . 1. sin importar los datos que se usen. Después pide a un compañero que ejecute una prueba de escritorio a tu algoritmo para asegurarse de que. Debes cuidar que haya siempre un inicio y un fin.Si la báscula pasa de 2 kg. Agregar un puño de arena Fin mientras 2. tanto para todo el algoritmo como para cada bloque de instrucciones en condiciones o ciclos. Inicio 1. el algoritmo no falla.NET ACTIVIDAD 1-09 Escribe algoritmos computacionales Para cada uno de los siguientes problemas. Quitar un poco de arena Fin mientras Fin si Fin Prueba de escritorio Problema 1: báscula puño 0 200 g 200 g 300 g 500 g 250 g 750 g 400 g 1150 g 350 g 1500 g 300 g 1800 g 300 g 2100 g -50 g 2050 g -50 g 2000 g 30 . Para pesar el producto el vendedor tiene una báscula. Mientras la báscula no baje de 2 kg.

No se sabe cuántos espectadores asistirán al evento. b. Sólo podrán entrar quienes tengan boleto azul. Si es azul Aceptar 4. Si no Rechazar 5. Mientras la ila no se acabe 2. X = 10 Mientras X>0. Recorrer ila Fin Mientras Fin Prueba de escritorio Problema 2: Personas en la ila Boleto ¿Aceptar? 5 4 Azul Sí 3 Rojo No 2 Azul Sí 1 Azul Sí 0 Rojo No 3. El guardia de un estadio tiene que verificar los boletos de los espectadores. Repetir: Mostrar el valor actual de X X = X-1 Fin Mientras a. Escribe el algoritmo que debe seguir el guardia para cumplir con las reglas. Lógica computacional 2. Inicio 1. ¿Qué es lo que hace este programa? Muestra los números del 10 al 1 utilizando a x como variable. Revisar boleto del primer espectador 3. ¿Cuántas veces se repite el ciclo? 10 31 . Analiza el siguiente algoritmo y contesta las preguntas.

Pedir el valor de X. Prueba de escritorio Repetición X Y Salida de pantalla 0 16 10 1 11 2 12 3 13 4 14 5 15 6 16 16 32 . donde X > Y. Realiza una prueba de escritorio y anota el valor de x en cada repetición. Realiza una prueba de escritorio asignando valores a X y Y. Prueba de escritorio: Repetición X Salida de pantalla 1 10 2 9 3 8 4 7 5 6 6 5 7 4 8 3 9 2 10 1 4. ¿Qué es lo que hace este programa? Si X es mayor a Y va a aumentar el valor de Y hasta que sea igual a X y lo muestra en pantalla. b. Analiza el siguiente algoritmo y contesta las preguntas. Repetir: Y = Y+1 Fin del ciclo Mostrar el valor actual de Y a.NET c. y pedir el valor de Y Mientras X>Y.Programación .

en otras palabras. En el interior del rombo se escribe la condición que hay que evaluar. 33 . ¿Recuerdas el algoritmo para vigilar a través de una ventana? Observa cómo se ve mucho más claro en un diagrama de flujo. En su interior se debe escribir el nombre de la variable en la que queremos que se almacene el dato tecleado. Estos símbolos se conocen como conectores. como por ejemplo la asignación de un valor a una variable. indica un proceso donde se recibe o donde se entrega información. mientras que el pentágono hace referencia hacia la continuación de un diagrama en otra página. por ejemplo en una impresora. El paralelogramo indica un proceso de entrada o salida. Normalmente el flujo de información entra por arriba y sale por un lado si la condición se cumple o por el lado opuesto si la condición no se cumple. Lógica computacional TEMA G Diagramas de flujo Un diagrama de flujo es la forma de representar algoritmos de forma gráfica. El diagrama permite que la secuencia a seguir sea más entendible. Este símbolo representa una salida de datos pero sólo en el monitor. Las flechas representan la forma de conexión entre los demás símbolos. Todas las acciones a realizarse en el algoritmo se encuentran entre el inicio y fin del diagrama de flujo. especialmente cuando hay condiciones y ciclos. Este símbolo representa una entrada de datos utilizando el teclado y describe la asignación de un valor a una variable. La dirección de la flecha determina el flujo de ejecución. Este símbolo representa una salida de datos en un dispositivo electrónico. El uso del rectángulo representa un proceso o acción a realizarse. El rombo se utiliza para representar una condición o decisión. El óvalo representa el inicio o el fin de un algoritmo. El círculo hace referencia a la continuación de un diagrama dentro de la misma hoja. Se les llaman diagramas de flujo por que los símbolos se conectan por medio de flechas para indicar la secuencia de una operación. Representan la continuación de un diagrama cuando éste no cabe en una sola hoja. Se basa en la utilización de diversos símbolos universales que representan operaciones específicas. A continuación se describen algunos símbolos utilizados para hacer diagramas de flujo.

ya que todos utilizamos nuestra propia lógica.Programación . Probablemente tú tengas en mente otro proceso para lograr el objetivo de vigilar por una ventana.NET Inicio Llegar puntual a la jornada laboral Ubicarnos en nuestro lugar de trabajo 1 ¿Estamos Falso sentados? Verdadero Levantarnos del lugar donde Orientarnos hacia estamos sentados la ventana Orientarnos hacia la ventana Dirigirnos hacia la ventana ¿Está cerrada? Verdadero Falso Abrirla Observar por la ventana Regresar a nuestro lugar de trabajo Falso ¿Ha pasado una hora? Verdadero ¿Ha terminado la jornada Falso 1 laboral? Verdadero Fin Recuerda que para cada problema puede haber una gran variedad de algoritmos. Lo importante es que se logre el objetivo de la mejor manera posible. 34 .

Lógica computacional ACTIVIDAD 1-10 Diagramas de flujo Representa en diagrama de flujo los siguientes algoritmos. Inicio Abrir la puerta del vehículo Entrar al vehículo Es vehículo Falso estándar Verdadero Veriicar que esté en parking Pisar el clutch Insertar la llave en la ranura Girar la llave Fin 35 . La calidad de los diagramas es importante. 1. por lo que debes utilizar reglas o plantillas para que los diagramas se vean ordenados y limpios. Utiliza el algoritmo para encender un vehículo que realizaste anteriormente y dibuja el diagrama de flujo.

Programación .NET 2. Inicio Determinar el problema Elegir una posible solución Indicar los pasos a seguir Realizar una prueba del algoritmo La prueba encontró errores Falso Verdadero Corregir los errores Falso La solución fue satisfactoria Verdadero Fin 36 . Utiliza el algoritmo para determinar si un número entero X es par o impar y dibuja el diagrama de flujo.

Inicio A Bandera = 0 Falso Bandera = 0 Verdadero número El número El número es primo no es primo número < 1 Fin Verdadero Falso Verdadero número = 2 A Falso i=2 Bandera = o e Falso i < numero/2 A Verdadero número MOD i = 0 Falso Verdadero Bandera = 1 i=i+1 37 . Lógica computacional 3. Dibuja un diagrama de flujo del algoritmo que te permita saber si un número entero X es primo.

¿Qué es una incógnita? Una literal de la cual se desconoce su valor. la cual puede cambiar en cualquier momento. Describe qué es compilación: Es el proceso mediante el cual la computadora revisa que el programa que has escrito cumpla con las reglas sintácticas del lenguaje de programación que estés utilizando 38 . TEMA B: A definir un algoritmo como un conjunto de pasos que permiten alcanzar un objetivo. decisión y ciclos de acciones. 3. ¿Qué es una variable? Es un campo de memoria que almacena información. TEMA D: A diferenciar las características entre los términos variable. TEMA G: A representar en un diagrama de flujo algunos algoritmos. 2.Programación . TEMA E: A expresar relaciones entre variables y/o constantes por medio de operadores para obtiener un resultado. EVALUACIÓN 01 1. TEMA C: Mencionar ejemplos de errores de sintaxis y errores lógicospara tener la certeza de que logra su objetivo. TEMA F: A diseña algoritmos empleando la secuencia. incognita y constante.NET ¿Qué aprendiste? TEMA A: Describe detalladamente las secuencias lógicas dentro de la computación.

B Identificar el Diagrama (N-S) y su aplicación en los algoritmos. utilizando decisiones simples. G Aplicar las herramientas Arreglos y Matrices para generar la solución de problemas. también llamado programación falsa. utilizando decisiones de cascada o anidadas. F Construye diferentes algoritmos utilizando las funciones de los ciclos (mientras. E Organiza algoritmos en diversos ejercicios. Un id ad 02 Pseudocód igo NIVEL: Intermedio DURACIÓN SUGERIDA: 8 SESIONES / 45-50 MINUTOS Durante el desarrollo de esta unidad aprenderás a: A Reconocer pseudocódigos. hacer-mientras. C Realizar algunos algoritmos en diversos ejercicios. es una guía que sirve para que el programador sepa los pasos a seguir para lograr un resultado y así adecuarlo al lenguaje de programación de su preferencia.NET Autor: Carlos Zepeda Chehaibar . hacer-hasta. y ciclos anidados). utilizando decisiones en secuencia.El pseudocódigo. Programación . D Programar algoritmos en diversos ejercicios. para.

Para escribir pseudocódigos hay que cumplir algunos requisitos que facilitarán la posterior transcripción del algoritmo a un lenguaje de computadora: ¤ Asignar un nombre.Programación . veamos un ejemplo simple que sólo utiliza una secuencia de instrucciones. pero te permite concentrarte en las estructuras y acciones. ¤ Declarar variables. Puedes declarar dos o más variables del mismo tipo. ¤ Identificar mensajes. Por ejemplo: edad = 14 estatura = 1. luego el signo de igualdad (=) y después el valor que se va a asignar a la variable. en vez de en palabras comunes.NET TEMA A Pseudocódigo El pseudocódigo es un lenguaje de especificación de algoritmos. por ejemplo: Entero: edad Real: estatura. Todas las estructuras deben delimitarse entre un Inicio y un Fin. nom Fin 40 . Programa Identificar usuario Inicio Cadena: nom Escribir “Bienvenido. separando sus nombres con comas. en vez de preocuparte por la sintaxis del lenguaje en el que se va a programar. ¤ Delimitar estructuras. seguido del nombre de la variable. dirección Para asignar un valor a una variable primero se escribe el nombre de la variable. Es necesario especificar los nombres de las variables y el tipo de dato que van a almacenar. Se debe poner un título al algoritmo que haga referencia a su contenido o función. Para separar el tipo de dato del nombre de la variable se utilizan dos puntos (:). Los mensajes que deseas que se muestren al usuario deberán escribirse entre comillas. Cuando un algoritmo se escribe en pseudocódigo. su traducción a cualquier lenguaje de programación será muy sencilla. Declarar una variable consiste en escribir el tipo de dato que puede guardar. peso. sueldo Cadena: nombre.76 sueldo = 750.80 nombre = “Alejandra” Antes de analizar a detalle la forma correcta de escribir las estructuras en forma de pseudocódigo. de uso fácil y sintaxis similar al lenguaje de programación. ¿Puedes comprender su funcionamiento? Realiza una prueba de escritorio. Teclea tu nombre” Leer nom Escribir “Hola”. Es un paso más cercano a los lenguajes de computadora.

Algoritmo para calcular el área y perímetro de un rectángulo. Repetir. Lógico. Para. Calcular el área con la fórmula A=b*h 4. Carácter. Incrementar. Escribir. Pseudocódigo TEMA B Diagramas de Nassi – Schneiderman (N-S) El diagrama N-S. Cadena.h A= b * h P= 2* (b+h) A. Calcular el perímetro con la fórmula P= 2*(b+h) 5. Hasta. como se muestra a continuación: Inicio b . Retornar. por lo que se apoya en expresiones del lenguaje natural utilizando un conjunto de palabras reservadas. es una técnica que combina la descripción textual del pseudocódigo. Leer. también conocido como diagrama de Chapin. El usuario debe proporcionar los valores de la base y la altura. Las palabras reservadas más utilizadas son: Inicio. Veamos como ejemplo un algoritmo que sirve para calcular el área y perímetro de cualquier rectángulo. Pedir al usuario el valor de la altura (h) 3. Mientras. Fin. Hacer Función. Mostrar al usuario los valores de A y P Fin Este simple algoritmo se puede representar con un diagrama de flujo. Cuenta con un conjunto limitado de símbolos para representar los pasos del algoritmo. Inicio 1. Entero Real. Decrementar. Pedir al usuario el valor de la base (b) 2. P Fin 41 . con la representación gráfica del diagrama de flujo.

absnum positivo o negativo) Leer num Datos de salida: absnum (valor absoluto de num) Proceso: absnum = num * (-1) Recuerda que num<0 Si No este proceso sólo se realiza si num es menor absnum=num*(-1) absnum=num que cero. para que la traducción posterior a un lenguaje de programación sea más sencilla. A.NET También sabemos que. P = 2 * (b + h) Diagrama N-S: Inicio Entero: b. Escribir” valor absoluto”. Empezarás a notar cambios cuando tengas que representar Escribir “El perímetro es:”. h N-S no tiene diferencia alguna con el A=b*h pseudocódigo. Fin Diagrama N-S de estructuras de decisión Considera ahora el siguiente caso. Inicio Entero: b. basta cambiar el signo para encontrar el valor absoluto.Programación . h. P estructuras. Recuerda que para los enteros positivos el valor absoluto es el mismo número. A recuadro con filas. con la excepción de P = 2 * (b + h) que está dentro de una especie de Escribir “El área es:”. por ejemplo así: Pseudocódigo para calcular el área y perímetro de un rectángulo. absnum Diagrama N-S: Fin del algoritmo 42 . es conveniente escribirlo en forma de pseudocódigo. A. Inicio Datos de entrada: num (cualquier número entero Entero:num. P Pedir b Pedir h A = b*h P=2*(b+h) Mostrar A Mostrar P Fin Para realizar el diagrama N-S tenemos que hacer el siguiente análisis. P Hasta este punto parece que el diagrama Leer b. Datos de entrada: b y h (base y altura) Datos de salida: A y P (área y perímetro) Procesos: A = b * h . mientras que para los negativos. h. Queremos diseñar un programa para encontrar el valor absoluto de un número entero.

1.”Mayor” Escribir Escribir n2. n2 n1 = n2 Si No Si n1 > n2 No Escribir Escribir Escribir “Números iguales” n1. Datos de entrada: num1. Algoritmo que te permita encender un vehículo. Recuerda que la claridad es importante. Inicio Abrir la puerta del vehículo Entrar al vehículo Es estándar Si No Veriicar que esté Pisar el clutch en parking Insertar la llave en la ranura Girar la llave Fin del algoritmo 43 . num2 Datos salida: mayor.”Mayor” n2. n2 Leer n1. menor Proceso: comparación Diseño de la solución Inicio Entero: n1. por lo que debes utilizar regla para tener una máxima limpieza.”Menor” Fin del algoritmo ACTIVIDAD 2-01 Diagramas N-S Representa en diagrama N-S (diagrama de Chapin) los siguientes algoritmos. considera un algoritmo para identificar el mayor y menor de dos números enteros dados. Pseudocódigo Para ejemplificar un algoritmo de decisión múltiple.”Menor” n1.

Inicio Entero: n Entrar al vehículo Si n MOD2 = 0 No Mostrar: Mostrar: “Es par” “Es impar” Fin del algoritmo 44 .Programación . Algoritmo que te permita determinar si un número es par o impar. Inicio Comprar los ingredientes Mezclar los ingredientes Vaciar la mezcla en un molde para pastel Prender el horno Esperar unos minutos Abrir el horno El horno está caliente Meter el pastel al horno Esperar unos minutos Abrir el horno El pastel está listo Sacar el pastel del horno Fin del algoritmo 3.NET 2. Algoritmo que te permita hacer un pastel.

Pseudocódigo 4. Algoritmo que te permita desarrollar algoritmos. Inicio Determinar el problema Elegir una posible solución Indicar los pasos a seguir ¿Hay posibles errores? Corregir fallas Realizar prueba del algoritmo ¿La solución fue satisfactoria? Fin del algoritmo 5. Algoritmo que te permita saber si un número es primo. Inicio Bandera = 0 Si No Entero: bandera. i = 0 Mostrar: Mostrar: Leer número “El número “El número número > 1 es primo” no es primo” número = 2 o número = 1 Fin del algoritmo Si No i=2 bandera = 0 e i < número/2 número MODi= 0 Si No bandera = 1 i=i+1 45 . número.

la o las instrucciones que formen parte de la estructura sólo se ejecutan si se cumple una condición. Adicionalmente se pueden incluir una o varias instrucciones que se ejecuten sólo en caso de que no se cumpla la condición. En la toma de decisiones que dependen de una condición. Ya has escrito varios algoritmos utilizando esta estructura de decisión. Se debe leer un número y determinar si éste es negativo o positivo.Si no Ya hemos estudiado que cuando en un algoritmo hay que tomar una decisión. se utiliza el condicional Si. Un ejemplo en nuestro propio lenguaje sería algo así: Si hace frío entonces usar un abrigo ir al cine Si no usar ropa fresca ir a la playa Fin_Si Su estructura general es la siguiente: Si (Condición) entonces Instrucciones a ejecutar en caso de que la condición sea Verdadera Si no Instrucciones a ejecutar en caso de que la condición sea Falsa Fin_Si Veamos un algoritmo de ejemplo.NET TEMA C Pseudocódigos de la estructura Si-Entonces.Programación . Programa Decisiones en Secuencia Inicio Entero: num Escribir “Digite un número entero” Leer num Si num < 0 Escribir “El número digitado es negativo” Si no Escribir “El número digitado es positivo” Fin _ Si Fin 46 . Ahora verás la forma correcta de escribir esta estructura en forma de pseudocódigo.

Realiza un algoritmo para determinar si una persona es mayor de edad. Pseudocódigo ACTIVIDAD 2-02 Decisiones simples Realiza un algoritmo para cada uno de los ejercicios. Inicio Entero: total = 0. Determinar si un alumno aprueba o reprueba una materia. Escríbelo en pseudocódigo. Escríbelo en pseudocódigo. 1. Inicio Entero: Edad = 0 Leer Edad Si Edad > 18 Mostrar “Mayor de edad” Si no Mostrar “Menor de edad” Fin si Fin 3. i = 0. basado en el promedio de 5 calificaciones. Escríbelo en pseudocódigo. caliicacion = 0 Mientras i < 5 Leer caliicacion total = total + caliicacion i=i+1 Fin mientras Si total /5 > 5 Mostrar “Aprobado” Si no Mostrar “Reprobado” Fin si Fin 2. Leer un número y determinar si es un número primo. utilizando decisiones simples. Inicio Entero: bandera = numero = i = 0 Repetir Leer numero Hasta que numero > 1 Si numero <> 2 i=2 47 .

Escríbelo en pseudocódigo. Leer un número y determinar si es número impar. Inicio Entero numero Leer numero Si numero MOD 2 <> Mostrar “Es impar” Fin si Fin 48 .NET Mientras bandera = 0 e i < numero/2 Si numero MOD 2 = 0 Bandera = 1 Fin si i=i+1 Fin mientras Fin si Si bandera = 0 Mostrar “Es primo” Si no Mostrar “No es primo” Fin si Fin 4. Inicio Entero: numero Leer numero Si numero MOD 2 = 0 Mostrar “El número es par” Fin si Fin 5.Programación . Escríbelo en pseudocódigo. Leer un número y determinar si es número par.

Inicio Entero: numero Escribir “Digite un número” Leer numero Si numero =0 Llamar a recepción Si numero =1 Llamar a vigilancia Si numero =2 Llamar a mantenimiento Si numero >2 Mensaje “Error. 1. Escríbelo como pseudocódigo. Inicio Entero: numero Mostrar “Elija una opción” Leer numero Si numero = 0 Escuchar mensajes nuevos 49 . Pseudocódigo TEMA D Decisiones en secuencia Este tipo de estructura se utiliza cuando se deben realizar varias preguntas (condiciones) en las que no es importante el “Si no” de cada decisión. número invalido” Fin ACTIVIDAD 2-03 Decisiones en secuencia Realiza un algoritmo para cada uno de los ejercicios. Realiza un algoritmo para un buzón de voz de al menos 4 opciones. Su esquema general es el siguiente: Si condición1 Instrucciones a ejecutar en caso de que la condición1 sea Verdadera Si condición2 Instrucciones a ejecutar en caso de que la condición2 sea Verdadera Si condición3 Instrucciones a ejecutar en caso de que la condición3 sea Verdadera Si condición4 Instrucciones a ejecutar en caso de que la condición4 sea Verdadera Realiza una prueba de escritorio del siguiente ejemplo. utilizando decisiones en secuencia.

Inicio Entero: caliicacion Si caliicacion < 5 Mostrar “Deiciente” Si caliicacion = 6 o caliicacion = 7 Mostrar “Regular” Si caliicacion = 8 Mostrar “Bien” Si caliicacion = 9 Mostrar “Muy bien” Si caliicacion = 10 Mostrar “Excelente” Fin 3. Muy bien o Excelente.Programación .NET Si numero = 1 Escuchar mensajes antiguos Si numero = 2 Borrar mensaje Si numero = 3 Mandar un mensaje a otro usuario Si numero > 3 Mostrar “Opción no válida” Fin 2. Bien. Inicio Entero: mes Leer mes Si mes < 0 o mes > 12 Mostrar “Número no válido” Si mes = 1 Mostrar “Enero” Si mes = 2 Mostrar “Febrero” 50 . Leer una calificación numérica y determinar si es Deficiente. Regular. Realizar un algoritmo que indique. Escríbelo como pseudocódigo. Escríbelo como pseudocódigo. el nombre del mes. según el número.

a3 Si a1=a2 y a1=a3 y a2=a3 Mostrar “Triángulo equilátero” Si (a1=a2 y a3<> a1) o (a1=a3 y a2<> a1) o (a2=a3 y a1<> a2) Mostrar “Triángulo isóceles” Si a1=90 o a2=90 o a3=90 Mostrar “Triángulo rectángulo” Si a1>90 o a2>90 o a3>90 Mostrar “Triángulo obtusángulo” Si a1<90 o a2<90 o a3<90 Mostrar “Triángulo acutángulo” Fin 51 . a3 Leer a1. dependiendo de las medidas de sus tres ángulos. Realizar un algoritmo que indique el tipo de un triángulo. a2. a3 Mientras a1+a2+a3 <> 180 Leer a1. Pseudocódigo Si mes = 3 Mostrar “Marzo” Si mes = 4 Mostrar “Abril” Si mes = 5 Mostrar “Mayo” Si mes = 6 Mostrar “Junio” Si mes = 7 Mostrar “Julio” Si mes = 8 Mostrar “Agosto” Si mes = 9 Mostrar “Septiembre” Si mes = 10 Mostrar “Octubre” Si mes = 11 Mostrar “Noviembre” Si mes = 12 Mostrar “Diciembre” Fin 4. Inicio Entero: a1. a2. a2.

Programación . El esquema general es el siguiente. todo el segundo condicional es ignorado. Además hay que verificar que el número no sea negativo. 52 . un nuevo condicional completo se coloca dentro de la opción Si o de la opción Si no de otro condicional. A veces es muy conveniente utilizar esta estructura porque permite optimizar el programa y escribir menos instrucciones. dos. Por ejemplo. se pueden anidar dos. tres. analiza este caso: Si llueve entonces no salir de casa Si no Si hace frío usar abrigo ir al cine Si no usar ropa fresca ir a la playa Fin_Si Fin_Si Observa que el grupo de instrucciones en letra cursiva (el condicional interno) sólo se ejecuta en el caso de que la primera condición sea falsa. Si la primera condición es verdadera (si llueve).NET TEMA E Decisiones en cascada o anidadas En este tipo de decisiones. Si condición1 entonces Instrucciones a ejecutar en caso de que la condición1 sea Verdadera Si no Si condición2 entonces Instrucciones a ejecutar en caso de que la condición2 sea Verdadera Si no Instrucciones a ejecutar en caso de que la condición2 sea Falsa Fin _ si Fin _ si También es posible tener un esquema como éste: Si condición1 entonces Si condición2 entonces Instrucciones a ejecutar en caso de que la condición2 sea Verdadera Si no Instrucciones a ejecutar en caso de que la condición2 sea Falsa Fin_si Si no Instrucciones a ejecutar en caso de que la condición1 sea Falsa Fin_si De acuerdo a las necesidades de cada algoritmo. Realiza una prueba de escritorio de este ejemplo: se debe leer un número entero y determinar si es de uno. cuatro o más dígitos. tres o más decisiones.

digite un número entero” Leer num Si num < 0 num = num * (-1) Fin _ si Si num > = 1 y num < = 9 entonces Escriba “El número tiene 1 dígito” Si no Si num > = 10 y num < 99 entonces Escriba “El número tiene 2 dígitos” Si no Si num > = 100 y num < 999 entonces Escriba “El número tiene 3 dígitos” Si no Si num > 1000 y num < = 9999 entonces Escriba “El número tiene 4 dígitos” Si no Escriba “El número tiene más de 4 dígitos” Fin _ si Fin _ si Fin _ si Fin _ si ACTIVIDAD 2-04 Decisiones anidadas Realiza un algoritmo para cada uno de los siguientes ejercicios. utilizando decisiones anidadas o en cascada. aux1. Pseudocódigo Programa Decisión en Cascada Inicio Entero:num Escribir “Por favor. aux2 Leer num Mientras num<10 o num >99 Leer num aux1= num/10 aux2= num MOD 10 Si aux1< aux2 Si aux2 MOD aux1 = 0 53 . Leer un número entero de dos dígitos y determinar si un dígito es múltiplo del otro. 1. Inicio Entero: num.

y si la diferencia entre los números leídos termina en 4 mostrar en pantalla la diferencia.Programación . Si la diferencia entre los dos números es par mostrar en pantalla la suma de los dos números. Leer dos números enteros. 54 .cont cont = cont . Inicio Entero: num1. num2.1 Fin mientras Fin si Fin 3.NET Mostrar “El segundo dígito es múltiplo del primero” Fin si Si no Si aux1 MOD aux2 = 0 Mostrar “El primer dígito es múltiplo del segundo” Fin si Fin si Fin 2. Leer dos números enteros de 2 dígitos. si dicha diferencia es un número menor que 10 entonces mostrar en pantalla el producto de los dos números. entonces mostrar en pantalla todos los enteros comprendidos entre el menor y el mayor de los números leídos. aux Leer num1. num2 Si num1< num2 aux=num1 num1=num2 num2=aux Fin si cont=num1-num2 Si cont < 10 Mientras cont > 0 Mostrar num1 . Si la diferencia entre los dos es menor o igual a 10. cont.

Si el número termina en 1 mostrar en pantalla su primer dígito. si termina en 2 mostrar en pantalla la suma de sus dígitos y si termina en 3 mostrar en pantalla el producto de sus dos dígitos. Leer un número entero de 2 dígitos. num2. Pseudocódigo Inicio Entero: num1. aux Leer num1 Mientras num1<10 y num1 >99 Leer num1 Leer num2 Mientras num2<10 y num2 >99 Leer num2 Si num2 > num1 aux=num1 num1=num2 num2=aux Fin si aux=num1-num2 Si aux MOD 2 = 0 Mostrar num1+num2 Si aux < 10 Mostrar num1*num2 Si aux MOD 10 = 4 Mostrar aux Fin 4. Inicio Entero: num Leer num Mientras num<10 y num>99 Leer num Fin mientras Si num MOD 10 = 1 Mostrar num/10 Si num MOD 10 = 2 Mostrar num MOD 10 + num/10 Si num MOD 10 = 3 Mostrar num MOD 10 * num/10 Fin 55 .

NET TEMA F Ciclos Un ciclo es una estructura que permite repetir o iterar un conjunto de acciones la cantidad de veces que determine una condición.Programación . Para facilitar la escritura de algoritmos se utilizan tres formas de ciclos. 1. utilizando la estructura del ciclo Mientras. Leer un número entero y mostrar todos los pares comprendidos entre 1 y el número leído. El ciclo siempre debe tener un inicio y un final. Inicio Entero num. 2-01 LÁMINA Ciclos ACTIVIDAD 2-05 Ciclo Mientras Realiza un algoritmo para cada uno de los siguientes problemas. cont = 2 Leer num Mientras num < 1 Leer num Fin mientras Mientras cont < num Mostrar cont cont =cont + 2 Fin mientras Fin 2. siempre hay alguno que resulta más conveniente o que permite escribir menos instrucciones. Escríbe el pseudocódigo. Mostrar en pantalla todos los enteros impares comprendidos entre 20 y 150. Aunque siempre que necesites repetir instrucciones puedes usar cualquiera de los tres ciclos. 56 .

Inicio Entero: bandera = i = 0. o diagrama de flujo. Inicio Inicio Entero num. Pseudocódigo Inicio Entero cont = 21 Mientras cont < 150 Mostrar cont cont =cont + 2 Fin mientras Fin 3. Leer cualquier número entero y mostrar en pantalla su tabla de multiplicar. Escribe el pseudocódigo y dibuja un diagrama N-S. i = 1 Leer num Leer num Mientras i < 12 Mostrar num “*” i i < 12 i++ Mostrar num “*” i Fin mientras Fin i++ Fin 57 . numero Leer numero Mientras numero < 0 Leer numero Si numero <> 0 y numero <> 1 i=2 Mientras bandera = 0 e i < numero/2 Si numero MOD i = 0 Bandera = 1 i=i+1 Fin si Fin mientras Fin si Si bandera = 0 Mostrar “Es primo” Fin si Fin 4. i = 1 Entero: num. Leer un número entero y determinar si es un número primo.

Mostrar en pantalla los primeros 20 múltiplos de 4. Inicio Entero: num Para num = 1 hasta 20 Mostrar 4* num Fin para Fin 4. Generar en orden los números del 1 al 10. utilizando la estructura del ciclo Para. utilizando un ciclo que vaya de 10 a 1 Inicio Entero: i Para i = 10 hasta 1 Mostrar 11 . 1.NET ACTIVIDAD 2-06 Ciclo Para Realiza un algoritmo para cada uno de los ejercicios. Sumar los números primos comprendidos entre el 1 y el 22. num Para num = 1 hasta 22 Si num es primo total = total + num 58 .i Fin para Fin 3.Programación . Mostrar en pantalla todos los enteros comprendidos entre 1 y 15 Inicio Entero: i Para i = 1 hasta 15 Mostrar i Fin para Fin 2. Inicio Entero: total = 0.

Mostrar en pantalla los números pares comprendidos entre el 20 y el 30. 1. Inicio Entero: i Para i = 20 hasta 30 Mostrar i i=i+1 Fin para Fin ACTIVIDAD 2-07 Ciclo Hacer Mientras Realiza un algoritmo para cada uno de los ejercicios. Pseudocódigo Fin si Fin para Mostrar total Fin 5. fact = 1 Leer num Mientras num < 1 Leer num Hacer fact* = prod prod + = 1 Mientras prod < num Mostrar fact Fin 2. 1. Mostrar en pantalla todos los impares comprendidos entre 1 y 100. Inicio Entero: num. prod = 1. utilizando la estructura del ciclo Hacer- Mientras. Inicio Entero: num = 1 59 . Leer un número y calcular su factorial.

Leer dos números enteros y sumar todos los valores enteros que haya entre el menor y el mayor.Programación . b Si b > a aux = a a=b b = aux Fin si Mientras a MOD 4 <> 0 y a < b a+=1 Fin mientras Hacer Mostrar a a=a+4 Mientras a < b Fin 4. aux Leer a. b. suma.NET Hacer Mostrar num num + = 2 Mientras num < 99 Fin 3. Inicio Entero: a. aux Leer a. Inicio Entero: a. Leer dos números enteros y mostrar todos los múltiplos de 4 comprendidos entre el menor y el mayor. i = 1. b Si b < a aux = a a=b Fin si Hacer suma + = a a+=1 Mientras a < b Fin 60 . b.

Pseudocódigo 5. i = 2 Leer num Si num > i Hacer Mostrar i i+=2 Hasta i < num Fin si Fin 61 . Al final debe mostrarse la suma. Sumar números leídos uno a uno. Leer un número entero y mostrar todos los pares comprendidos entre 1 y el número leído. Escribe el pseudocódigo y dibuja el diagrama de flujo.Hasta Realiza un algoritmo para cada uno de los ejercicios. num Hacer Entero = suma. Inicio Entero: num. utilizando la estructura del ciclo Hacer- Hasta. num Leer num suma + = num num Mientras num <> 9 Mostrar suma Fin suma + = num num <>a Verdadero Falso suma Fin ACTIVIDAD 2-08 Ciclo Hacer . 1. hasta que el usuario ingrese un 9. Inicio Inicio Entero: suma.

Leer dos números enteros y sumar los valores enteros que estén entre el menor y el mayor. b Si b > a aux = a a=b b = aux Fin si Hacer 62 . Inicio Entero: a.b Si b > a aux = a a=b b = aux Fin si Mientras a MOD 4 <> 0 y a < b a+=1 Fin mientras Hacer Si a < b Mostrar a a+=4 Hasta a > b Fin 4.NET 2. Leer dos números enteros y mostrar todos los múltiplos de 4 comprendidos entre el menor y el mayor. Inicio Entero: a. suma Leer a. b. Mostrar en pantalla todos los pares comprendidos entre 20 y 100.Programación . Inicio Entero: num = 20 Hacer Mostrar num num + = 2 Hasta num > 100 Fin 3. aux Leer a. b. aux.

Utilizando ciclos anidados. hasta que el usuario ingrese un 9. y Para x = 2 hasta 5 2 0 Para y = 0 hasta 1 2 1 Si x = 5 y y = 1 Terminar algoritmo 3 0 Si no 3 1 Mostrar x Mostrar y 4 0 Fin si 4 1 Fin para Fin para 5 0 Fin 63 . escribe el algoritmo para generar las siguientes parejas de enteros. Sumar números leídos uno a uno. suma Hacer Leer num suma + = num Hasta num = 9 Mostrar suma Fin ACTIVIDAD 2-09 Ciclos anidados 1. Inicio x y Entero x. Escribe el pseudocódigo y dibuja el diagrama de flujo. Inicio Entero: num. Pseudocódigo suma + = a a++ Hasta a > b Fin 5. Al final debe mostrarse la suma.

Programación . y. Utilizando ciclos anidados generar las siguientes parejas de números. y. y = 1 4 1 Para x = 4 hasta 6 Para aux = 1 hasta 3 4 2 Mostrar x 4 3 Mostrar y y+=1 5 4 Fin para 5 5 Fin para 5 6 Fin 6 7 6 8 6 9 3. Utilizando tres ciclos anidados generar las siguientes ternas de números Inicio x y z Entero: x. z 1 1 1 Para x = 1 hasta 2 Para y = 1 hasta 2 1 1 2 Para z = 1 hasta 3 1 1 3 Mostrar x. z Fin para 1 2 1 Fin para 1 2 2 Fin para Fin 1 2 3 2 1 1 2 1 2 2 1 3 2 2 1 2 2 2 2 2 3 64 . Puedes usar una variable auxiliar para llevar la cuenta de las repeticiones en el ciclo interno. aux. Inicio x y Entero x.NET 2.

Pseudocódigo ACTIVIDAD 2-10 Escribiendo pseudocódigos matemáticos 1.. Inicio Entero: N1. N2 es el numerador de la segunda fracción y D2 es el denominador de la segunda fracción. D1. donde el N1 es el numerador de la primera fracción. D1 es el denominador de la primera fracción. N2. D2 Leer N1. escribe el pseudocódigo para obtener el numerador (N3) y el denominador (D3) de la fracción que resultaría de multiplicar las dos primeras fracciones. Cuatro números dados por el usuario representan dos fracciones.. N2 Hacer Leer D1 Hasta que D1 <> 0 Hacer Leer D2 Hasta que D2 <> 0 Mostrar “El producto de las fracciones es” N1* N2 “sobre” D1* D2 Fin 65 . en la pantalla debe verse: 7X1=7 7 X 2 = 14 7 X 3 = 21. es decir. Dados estos cuatro números. etcétera Inicio Entero: num. Usando un ciclo escribe el pseudocódigo de un programa que muestre en pantalla la tabla de multiplicar que pida el usuario. si el usuario teclea un 7. i Leer num Para i = 1 hasta 12 Mostrar num “*” i “=” num * i Fin para Fin 2.

1. Inicio Entero: edad [7]. escribe con pseudocódigo un programa que dé solución a lo que se pide. almacenarlas en un arreglo y determinar cuántas de esas personas son mayores de edad.NET TEMA G Arreglos y matrices 2-02 LÁMINA Arreglos y matrices ACTIVIDAD 2-11 Arreglos Para cada uno de los ejercicios.Programación . i Para i = 1 hasta 7 Leer edad [i] Fin para Para i = 1 hasta 7 Mostrar “Persona número” edad[i] “es” Si edad [i] < 18 Mostrar “Menor de edad” Si no Mostrar “Mayor de edad” Fin si Fin para Fin 66 . Además del pseudocódigo realiza la prueba de escritorio. Leer las edades de 7 personas (números enteros).

Además escribir cuál es el número mayor del arreglo.6.3. Inicio Entero: mayor [8].4.3. Pseudocódigo Edad 1 2 3 4 5 6 7 8 10 14 18 21 25 17 i: 1.6.4.7. aux. almacenarlos en un arreglo y determinar en qué posición del arreglo está el mayor número leído.5.2.7 Persona número 1 es menor de edad Persona número 2 es menor de edad Persona número 3 es menor de edad Persona número 4 es mayor de edad Persona número 5 es mayor de edad Persona número 6 es mayor de edad Persona número 7 es menor de edad 2.1.2. Leer 8 enteros.5. i Para i = 1 hasta 8 Leer mayor [i] Fin para aux = 1 M = mayor[i] > M Para i = 2 hasta 8 Si mayor[i] > M aux = i M = mayor [i] Fin_si Fin para Mostrar “El número mayor es” Mostrar M Mostrar “Que se encuentra en la posición” Mostrar aux Fin 67 . M.

cont cont = .Programación . i. Inicio Entero: R[15]. Luego mostrarlos en pantalla. almacenarlos en un arreglo y determinar si existe al menos un número repetido. i. j. i = 150 Mientras cont < 10 e i < 320 Si i es numero primo primos [cont] = i i ++ cont ++ Fin si Fin mientras Para i = 1 hasta contador -1 Mostrar primos [i] Fin para Fin 4. Leer 15 números enteros. Almacenar en un arreglo de 10 posiciones los 10 primeros números primos comprendidos entre 150 y 320.NET 3. n = 0 Para i = 1 hasta 15 Leer R [i] Fin para Para i = 1 hasta 14 Para j = i + 1 hasta 15 Si R [i] = R[j] n=1 Fin si Fin para Fin para Si n = 1 Mostrar “Existen repeticiones” Fin si Fin 68 . Inicio Entero: primos[10].

j]= 0 Fin si Fin para Fin para Fin 2.4]. Se debe crear la siguiente matriz y asignar en cada posición los valores que se muestran.4]. j]= i * j 3 6 9 12 Fin para Fin para 4 8 12 16 Fin 69 . j. i. N Para i = 1 hasta 4 2 4 6 8 Para j = 1 hasta 4 A[i. Utiliza ciclos. Pseudocódigo ACTIVIDAD 2-12 Matrices Escribe un programa. para cada uno de los siguientes problemas: 1. j Para i = 1 hasta 4 0 1 0 0 Para j = 1 hasta 4 Si i = j 0 0 1 0 A[i. i. Se debe crear la siguiente matriz y asignar en cada posición los valores que se muestran. j]=1 Si no 0 0 0 1 A [i. 1 2 3 4 Inicio Entero A[4. en formato de pseudocódigo. Utiliza ciclos. 1 0 0 0 Inicio Entero A[4.

j]= N Fin para 5 6 7 8 Fin para Fin 4. en la que se han almacenado 16 datos de tipo entero. j. n] m=i n=j Fin si Fin para Fin para Mostrar “El número mayor se encuentra en” Mostrar i “.” j Mostrar “Y tiene un valor de” Mostrar A [i. m. Se debe crear la siguiente matriz y asignar en cada posición los valores que se muestran. N Para i = 1 hasta 4 3 4 5 6 N=i+1 Para j = 1 hasta 4 4 5 6 7 A[i.4]. j. n m = 1. j] Fin 70 .4]. Inicio Entero: A[4.NET 3. Utiliza ciclos. j] > A [m. n = 1 Para i = 1 hasta 4 Para j = 1 hasta 4 Si A [i. Se tiene una matriz de 4 filas por 4 columnas. 2 3 4 5 Inicio Entero A[4. Debes determinar en qué fila y en qué columna se encuentra el número mayor.Programación . i. i.

j.4]. Se tiene una matriz de 4 filas por 3 columnas.3]. Utiliza algún ciclo. Pseudocódigo 5. en la que se han almacenado 12 datos de tipo entero. j]= N N++ 13 14 15 16 Fin para Fin para Fin 6. i] Fin para Para i = 1 hasta 3 s2 + = A [2. i] Fin para Para i = 1 hasta 3 s4 + = A [4. Se debe crear la siguiente matriz y asignar en cada posición los valores que se muestran. i. Inicio Entero: A[4. j. i] Fin para Para i = 1 hasta 3 s3 + = A [3. s1 = s2 = s3 = s4 = 0 Para i = 1 hasta 4 Para j = 1 hasta 3 Fin para Fin para Leer A [i. Debes leer cada dato y calcular la suma de los elementos de cada fila. Utiliza ciclos. j] Para i = 1 hasta 3 s1 + = A [1. 1 2 3 4 Inicio Entero A[4. i] Fin para Fin 2-03 LÁMINA Glosario de conceptos algoritmos 71 . i. N N=1 5 6 7 8 Para i = 1 hasta 4 Para j = 1 hasta 4 9 10 11 12 A[i.

EVALUACIÓN 02 1. 2. en formato de pseudocódigo. Describe qué es compilación: Es el proceso mediante el cual la computadora revisa que el programa que has escrito cumpla con las reglas sintácticas del lenguaje de programación que estés utilizando 72 . TEMA E: Diferencía las decisiones en cascada y las decisiones anidadas en una programación. las decisiones en secuencia correspondientes. TEMA C: A estimar las decisiones simples al trabajar con algoritmos en el pseudocódigo de la estructura. ¿Qué es una incógnita? Una literal de la cual se desconoce su valor.NET ¿Qué aprendiste? TEMA A: A crea un mapa conceptual con las estructuras de los pseudocódigos realizando una prueba de escritorio. TEMA G: A desarrollar un programa. la cual puede cambiar en cualquier momento. TEMA D: A utilizar dentro de la ejecución de algoritmos. ¿Qué es una variable? Es un campo de memoria que almacena información. TEMA B: A emplear algunos algoritmos en el diagrama N-S. para cada ejercicio matemático. 3.Programación . TEMA F: A elegir el tipo de ciclo adecuado en la creación de algoritmos.

Un id ad 03 . B Conocer el entorno de C# y su instalación. C++. Visual Basic .NET soporta más de 20 lenguajes de programación. también su kit de desarrollo .NET. F Conocer las definiciones de método. E Operar las sentencias de control. .arreglo y colecciones. C Describir los elementos que conforman un programa.Net Framework. que le permitirán desarrollar aplicaciones simples o complejas. Fortran.N ET NIVEL: Intermedio DURACIÓN SUGERIDA: 7 SESIONES / 45-50 MINUTOS Durante el desarrollo de esta unidad aprenderás a: A Identificar la plataforma . J#. Prolog. D Evaluar el valor de las variables en diferentes operaciones. Delphi (Object Pascal). Cobol y PowerBuilder.NET Autor: Carlos Zepeda Chehaibar .NET. entre los cuales se encuentran: C#. su uso e importancia. Python. Perl. conocerá los diferentes tipos de datos ó como hacer la declaración de estos. Programación . F#.

por otra parte Visual Studio. etc. y a los servicios antes comentados se les denomina servicios Web.Programación .). son exclusivas de Visual C#. Microsoft ha publicado el denominado kit de desarrollo de software conocido como .NET Framework. C# es simple. poderoso. Visual C# es parte de la familia Visual Studio. con seguridad de tipos y Orientado a Objetos. Ésta es la llamada plataforma . Para crear aplicaciones para la plataforma . y otras.NET permite realizar las mismas tareas a través de un entorno gráfico basado en ventanas.NET es el conjunto de nuevas tecnologías en las que Microsoft ha estado trabajando durante los últimos años con el objetivo de obtener una plataforma sencilla y potente para distribuir el software en forma de servicios que puedan ser suministrados remotamente y que puedan comunicarse y combinarse unos con otros de manera totalmente independiente de la plataforma. servicios de Windows NT. lenguaje de programación y modelo de componentes con los que hayan sido desarrollados. como el compilador de C#. tanto servicios Web como aplicaciones tradicionales (aplicaciones de consola. 3-01 LÁMINA Microsoft . Algunas de las herramientas se comparten con otros lenguajes de Visual Studio.NET. aplicaciones de ventanas. distribución y ejecución. En este tema se proporcionan vínculos a las herramientas de Visual C# más importantes.NET Entorno de desarrollo (IDE) El entorno de desarrollo integrado (IDE) de Visual C# es un conjunto de herramientas de desarrollo expuestas a través de una interfaz de usuario común.NET TEMA A Introducción Microsoft. Visual C# (pronunciado como c Sharp) esta diseñado para la construcción de una gran variedad de aplicaciones que se ejecutan en .NET Framework SDK que incluye las herramientas necesarias tanto para su desarrollo. un conjunto de herramientas de que los desarrolladores en cualquier nivel se puede utilizar para crear aplicaciones personalizadas utilizando la configuración básica.NET. 3-01 VIDEO Instalando Visual C# Express 2010 74 .

NET TEMA B Entorno de programación Como en la mayoría de los programas de Microsoft. serán programados bajo la opción Aplicación de consola. . Para generar un proyecto nuevo de consola selecciona Nuevo proyecto/Plantillas instaladas/Visual C#/Aplicación de consola. Imagen 3-1: Página Principal La mayoría de los proyetos que desarrollaras a lo largo de este curso. Imagen 3-2: Nuevo proyecto 75 . luego haz clic en Aceptar. al ejecutar un programa te da la bienvenida. en la página principal puedes crear un nuevo proyecto o abrir uno creado con anterioridad.

Explorardor de soluciones: Permite ver elementos y realizar tareas de administración de elementos en un proyecto. al hacer clic en un símbolo. A demás cuenta con las barras de menú comunes.NET Esto hace que el programa prepare nuestra área de trabajo que queda como lo muestra a continuación. haz clic en menú Vista/Cuadro de herramientas. 5 1 2 3 4 6 Imagen 3-3: Espacio de trabajo de Visual C# 2010 Express 1. Además. Para abrir el Cuadro de herramientas. advertencias y mensajes que se generan cuando edita y compila código.Programación . 6. Lista de errores: Ayuda a acelerar el desarrollo de aplicaciones. 76 . el área de trabajo contiene el Editor de código. debido a que en ella se muestran los errores. cuadro de herramientas. Cuadro de Herramientas: Muestra iconos para los controles y otros elementos que se pueden agregar a los proyectos. Propiedades: Muestra las opciones que se pueden configurar del objeto activo. Editor de Código: En el se escribe o modifica el código fuente de una aplicación. Barra de menús: Integrada por un conjunto de menús desplegables que aloja comandos. 5. 3. Explorador de soluciones y propiedades. que se le pueden aplicar o configurar al documento o programa. Es posible acercar el texto presionando la tecla <CTRL> y gira la rueda del ratón. 4. herramientas u opciones. 2. todas las instancias de ese símbolo se resaltan automáticamente.

la consola es la ventana de DOS). Cada uno de estos ficheros no es más que un fichero de texto plano escrito usando caracteres Unicode y siguiendo la sintaxis propia de C#. ojo no debe de haber espacios intermedios entre los nombres.NET Hola mundo Básicamente una aplicación en C# puede verse como un conjunto de uno o más ficheros de código fuente con las instrucciones necesarias para que la aplicación funcione como se desea y que son pasados al compilador para que genere un ejecutable. De entrada. namespace HolaMundo { /// <summary> /// Summary description for Class1.NET nos ha escrito casi todo el código. 3-02 VIDEO Mi primera aplicación PROYECTO 3-01 Mi primera aplicación El programa que vamos a desarrollar mostrará sencillamente el texto “Hola Mundo” en la consola (a partir de ahora. 3-02 LÁMINA Consola y Buffer de entrada T IP Cuando se crea un nuevo proyecto es recomendable poner el nombre a nuestro proyecto en el ejemplo de hola mundo el nombre debe ser HolaMundo. /// </summary> 77 . Es el que sigue: using System. Visual Studio . .

te suena mucho. una clase llamada Class1 con un método Main que es static. o bien pulsa la tecla F5. que es el método por el que empezará la ejecución del programa. que ya sabes dónde hay que escribir el código de nuestra aplicación “Hola Mundo”: en el método Main.NET class Class1 { static void Main(string[] args) { // // TO DO: Add code to start application here // } } } Siempre que crees una aplicación de Consola en C#. Escribe esto: Console. pero es mejor la segunda. ejecutar paso a paso y cosas así. seguramente. con lo que hemos visto hasta ahora. Se ha abierto una ventana de línea de comandos y se ha cerrado rápidamente. Vamos a probarla. es cierto. pero cuando hagamos programas más grandes 78 . Te lo traduzco: “Para hacer: Añade aquí el código para que empiece la aplicación”. vas a elegir la primera de ellas (ejecutar sin depuración). Escribe la siguiente línea a continuación de la que escribimos antes: string a = Console. O sea. como poner puntos de interrupción.Programación . se agregará este código. La librería using System nos permitirá usar miembros de este espacio de nombres sin poner la palabra System delante. que sirve para que puedas poner ahí lo que quieras (un resumen de lo que hace el programa). ¿Y por qué es mejor hacerlo así que ejecutar sin depuración?. ahora la ventana de línea de comandos se queda abierta hasta que pulses Enter. No pasa nada.WriteLine(“Hola Mundo”). Por último. Todo está bien. o añadir una línea de código más para que espere a que se pulse Enter antes de cerrar la ventana. no podremos usar las herramientas de depuración. o bien haz clic en el botón que tiene un triángulo verde apuntando hacia la derecha. Esas tres líneas que hay dentro del método contienen un comentario. Para evitar que se cierre inmediatamente después de ejecutarse tienes dos opciones: ejecutar la aplicación sin opciones de depuración (menú Depurar_Iniciar sin depurar” o bien pulsar Control+F5). a ver qué tal funciona. Porque si ejecutamos sin depuración. Haz clic en el menú “Depurar_Iniciar”. Luego está el espacio de comentarios. obviamente. que se llama igual que la misma (HolaMundo). En esta aplicación no tendría mucho sentido. Seguro que. Ahora vuelve a ejecutar como hicimos la primera vez. Como ves. Luego hay definido un espacio de nombres para la aplicación.ReadLine(). Yo sé que.

todo en líneas separadas. Escribe el código del programa: 79 . dirección y teléfono. o bien el botón con varios discos dibujados. } } } Ya hemos terminado. Ahora realiza un programa que muestre el mensaje “Estoy realizando mi segundo programa”.ReadLine(). . string a = Console.WriteLine(“Hola Mundo”). No te olvides de guardarlo antes de salir. también que imprima tu nombre completo. /// </summary> class Class1 { static void Main(string[] args) { // // TODO: Add code to start application here // Console. todo el código de nuestro programa terminado es este: using System.NET podremos comprobar que todas estas herramientas son verdaderamente útiles. Por lo tanto. namespace HolaMundo { /// <summary> /// Summary description for Class1. o bien la combinación de teclas <Ctrl+Mayús+S>. Con Archivo/Guardar Todo.

las cuales trabajan para permitir que el programa se ejecute. El nombre que le coloques a la clase. y lo más seguro es que estos últimos de alguna manera dependan de una o más clases. pero no se puede perder de vista que en la práctica el programa necesita otros componentes de software para poder ejecutarse. 3-03 LÁMINA Otros elementos del programa Una estructura básica de un sencillo programa que se ejecutará en una consola de comandos. lo importante es considerar la siguiente regla: “Los nombres de los elementos deben iniciar con una letra o por un guión bajo” Todo programa desarrollado en C# debe incluir un método Main().Programación . Cuando se ejecuta el programa. El término public le informa al sistema que dicha clase y sus componentes están disponibles para ser vistos desde afuera del componente de software que la contiene. un componente de software basado en ese molde) de esta clase e interpreta las ordenes contenidas en ella. es una cadena de texto tomada arbitrariamente e indiferente a como se escriba. o al menos la parte que debe construir el programador. La clase es el concepto fundamental de esta metodología de programación y es quién identifica a los componentes que constituyen un programa. es una clase.NET TEMA C Introducción a la programación en C# C# es un lenguaje de programación orientada a objetos y todo en él son clases. observe. pero permite visualizar con detalle los elementos esenciales que soportan a cualquier aplicación de software. . el sistema operativo a través de la plataforma de ejecución. sin importar el entorno donde vaya a ejecutarse. crea una instancia (para comenzar entiéndase. public class PrimerPrograma { static void Main() { // Instrucciones } } La clase es algo así como la estructura o molde de un componente de software. el cual le informa al compilador 80 . está constituido por más de una clase. y se define con la palabra clave class. en este caso el propio programa. Todo programa en C# por más sencillo que éste sea.NET. Esto se da sin importar que el programador tan solo deba escribir una de ellas. El programa en sí.

typeof. struct. ¤ lock. in. ¤ bool. sealed. try. Esto debe ser así por que en el momentos de iniciar la ejecución de un programa. como las aplicaciones tipo Windows. ¤ params. implicit. is. as. break. public. La palabra clave void. y no para programas que manejan un sistema gráfico de ventanas. o también incluir argumentos de tipo cadena de texto. sin necesidad de instanciar un objeto de ella. unsafe. do. void. sizeof. . ¤ sbyte. long. base. ¤ catch. fixed. float. ¤ goto. ¤ if. return. los siguientes nombres no son válidos como identificadores ya que tienen un significado especial en el lenguaje: ¤ abstract. stackalloc. extern. le dice al sistema que la función que viene en seguida no retornará ningún valor y que por lo tanto no espere nada. for. explicit. ushort. Este método o función siempre se define antecedida de la palabra clave static. true. null. byte. while 81 . int. ¤ object. aún no se ha montado en el sistema todos los componentes necesarias para manejar objetos y por lo tanto el procesador no sabe que hacer con ellos. continue.protected. switch. const. Dichos argumentos se identifican por un arreglo o vector del tipo string (cadena de texto). ¤ virtual. ¤ else. operator. default. unchecked. que antecede a Main. short. finally. delegate. override. ¤ readonly. double. case. En C#. falta todavía por dar una. ¤ false. private. Palabras reservadas Aunque antes se han dado una serie de restricciones sobre cuáles son los nombres válidos que se pueden dar en C# a los identificadores.NET por donde debe iniciar y también terminar un programa. interface. throw. ¤ decimal. event. foreach. ¤ namespace. como en la siguiente forma: static void Main(string[] argumentos) { // Instrucciones } En apariencia. ¤ this. enum. ¤ uint. class. ulong. char. using. checked. string. los argumentos de inicio de ejecución solo son válidos para programas de consola. static. internal. esta función también se puede definir como int. la cual permite utilizar la clase directamente. new. La función Main() puede ir como se mostró en el primer programa. ref. out.

‘ ‘ (carácter de espacio). 5. etc. Ejemplos de literales enteros son 0. A-F) con el prefijo 0x.Programación . usándose para indicar el exponente los caracteres e ó E. aunque si no se pone nada se considerará que es positivo. a-f.0.02e-2. En el primer caso basta escribir los dígitos decimales (0-9) del número unos tras otros.8E+1.02e10. ¤ Literales reales: Los números reales se escriben de forma similar a los enteros. si en futuras implementaciones del lenguaje se decidiese incluir nuevas palabras reservadas. Por ejemplo. Al igual que ocurría con los literales enteros.1. Literales Un literal es la representación explícita de los valores que pueden tomar los tipos básicos del lenguaje. que han de representarse con secuencias de escape que indiquen su valor como código Unicode o mediante un formato especial tal y como se indica a continuación: 82 . 0x1A. En ambos casos es posible preceder el número de los operadores + ó – para indicar si es positivo o negativo.1. +15. mientras que en el segundo hay que preceder los dígitos hexadecimales (0-9. ¤ Literales de carácter: Prácticamente cualquier carácter se puede representar encerrándolo entre comillas simples. ‘?’ (símbolo de interrogación). -5. 3. -23. +15.NET Aparte de estas palabras reservadas. Microsoft dice que dichas palabras habrían de incluir al menos dos símbolos de subrayado consecutivos (__) Por tanto. A continuación se explica cuál es la sintaxis con que se escriben los literales en C# desglosándolos según el tipo de valores que representan: ¤ Literales enteros: Un número entero se puede representar en C# tanto en formato decimal como hexadecimal. etc.21. -0x1a. etc En realidad.) También es posible representar los reales en formato científico. Las únicas excepciones a esto son los caracteres que se muestran en la Tabla. los literales reales también pueden incluir sufijos que indiquen el tipo de dato real al que pertenecen. ‘a’ (letra a). 5. Ejemplos de literales reales son 0. aunque sólo se pueden escribir en forma decimal y para separar la parte entera de la real usan el tradicional punto decimal (carácter . que respectivamente representan los valores lógicos cierto y falso. la sintaxis completa para la escritura de literales enteros también puede incluir un sufijo que indique el tipo de dato entero al que ha de pertenecer el literal. 98. ¤ Literales lógicos: Los únicos literales lógicos válidos son true y false. 2. para evitar posibles conflictos futuros no se recomienda dar a nuestros identificadores nombres que contengan dicha secuencia de símbolos.

‘\x0008’. etc. etc. otros ejemplos de literales de carácter válidos serán ‘\?’. De este modo. Este formato consiste en preceder el código de \x en vez de \u. 83 . ‘\u0008’. Hay que tener en cuenta que este formato abreviado sólo es válido en los literales de carácter. aunque si incluye comillas dobles éstas han de escribirse usando secuencias de escape porque si no el compilador las interpretaría como el final de la cadena. Por tanto. Junto al formato de representación de códigos de escape Unicode ya visto. ‘\u0000’. ¤ Literales de cadena: Una cadena no es más que una secuencia de caracteres encerrados entre comillas dobles. Por ejemplo ?Hola. ?camión?. . C# incluye un formato abreviado para representar estos códigos en los literales de carácter si necesidad de escribir siempre cuatro dígitos aún cuando el código a representar tenga muchos ceros en su parte izquierda. los literales de carácter ‘\U00000008’.NET Código de Código de Carácter escape Unicode escape especial Comilla simple \u0027 \' Comilla doble \u0022 \" Carácter nulo \u0000 \0 Alarma \u0007 \a Retroceso \u0008 \b Salto de página \u000C \f Nueva línea \u000A \n Retorno de carro \u000D \r Tabulación horizontal \u0009 \t Tabulación vertical \u000B \v Barra invertida \u005C \\ En realidad. ‘\x008’. y no a la hora de dar nombres a los identificadores. El texto contenido dentro estos literales puede estar formado por cualquier número de literales de carácter concatenados y sin las comillas simples. ‘\x08’ y ‘\x8’ son todos equivalentes. ‘\\’. también es posible usar los códigos de escape Unicode para representar cualquier código Unicode. de la tabla anterior hay que matizar que el carácter de comilla doble también puede aparecer dentro de un literal de cadena directamente. ‘\’’. mundo?. lo que suele usarse para representar literales de caracteres no incluidos en los teclados estándares. sin necesidad de usar secuencias de escape. ‘?’. ‘\f’. Aparte de representar los caracteres de la tabla anterior.

El siguiente ejemplo muestra como definir variables de todos estos casos: class A { int x. Como se muestra en el ejemplo. void F(string a. a la variables locales no les da ningún valor inicial. El compilador dará un valor por defecto a los campos para los que no se indique explícitamente ningún valor según se explica en el siguiente apartado. Por tanto. Con la sintaxis de definición de variables anteriormente dada simplemente definimos variables pero no almacenamos ningún objeto inicial en ellas. Ya hemos visto que para crear objetos se utiliza el operador new. string b) { Persona p.). También puede definirse como un variable local a un método. int y. una forma de asignar un valor a la variable p del ejemplo anterior sería así: 84 .NET Variables Una variable puede verse simplemente como un hueco en el que se puede almacenar un objeto de un determinado tipo al que se le da un cierto nombre. al igual que las variables locales. pero detecta cualquier intento de leerlas antes de darles valor y produce errores de compilación en esos casos. Una variable puede ser definida dentro de una definición de clase. que son variables que almacenan los valores de llamada al método y que. Para poderla utilizar sólo hay que definirla indicando cual será su nombre y cual será el tipo de datos que podrá almacenar. Sin embargo. lo que se hace siguiendo la siguiente sintaxis: <tipoVariable> <nombreVariable>. en cuyo caso se correspondería con el tipo de miembro que hasta ahora hemos denominado campo. z. que es una variable definida dentro del código del método a la que sólo puede accederse desde dentro de dicho código.Programación . z e y son campos de tipo int. si un método toma varios parámetros las definiciones de éstos se separan mediante comas (carácter . Otra posibilidad es definirla como parámetro de un método. mientras que p es una variable local de tipo Persona y a y b son parámetros de tipo string. sólo puede ser accedidas desde código ubicado dentro del método. } } En este ejemplo las variables x. y si queremos definir varios campos o variables locales (no válido para parámetros) de un mismo tipo podemos incluirlos en una misma definición incluyendo en sus nombres separados por comas.

. “76543876-A”). 22. “76543876-A”). la anterior asignación de valor a la variable p podría rescribirse de esta otra forma más compacta: Persona p = new Persona(“José”. 22.Int32. 22. “87654212-S”).Int32 definido en la BCL. 21. 3-04 LÁMINA Otros tipos de variables Tipos de datos Son ciertos tipos de datos tan comúnmente utilizados en la escritura de aplicaciones que en C# se ha incluido una sintaxis especial para tratarlos. p2 = new Persona(“Juan”. C# también proporciona una sintaxis más sencilla con la que podremos asignar un objeto a una variable en el mismo momento se define. p = new Persona(“José”. las siguientes definiciones son válidas: Persona p1 = new Persona(“José”. no se utiliza el operador new para crear objeto System. Así por ejemplo. Por ejemplo.Int32 a = 2. sino que directamente se indica el literal que representa el valor a crear. 22. Y son tratadas por el compilador de forma completamente equivalentes a haberlas declarado como: Persona p1 = new Persona(“José”. con lo que la sintaxis necesaria para crear entero de este tipo se reduce considerablemente. aunque a la hora de crear un objeto “a” de este tipo que represente el valor 2 se usa la siguiente sintaxis: System. Sin embargo. Por ejemplo. “87654212-S”). Persona p2 = new Persona(“Juan”. Como se ve. “76543876-A”). dado lo frecuente que es el uso de 85 . 21. para representar números enteros de 32 bits con signo se utiliza el tipo de dato System. Es más. La especificación de un valor inicial también combinarse con la definición de múltiples variables separadas por comas en una misma línea.NET Persona p. “76543876-A”). Para ello se la ha de definir usando esta otra notación: <tipoVariable> <nombreVariable> = <valorInicial>.

372.036.854.294.767 signo Enteros de 2 bytes sin System.535 signo Enteros de 4 bytes con Desde -2.147.NET este tipo también se ha predefinido en C# el alias int para el mismo.SByte sbyte Byte con signo Desde -128 hasta 127 System.551.483.5E-45 hasta 3.446.223.Char char Desde 0 hasta 65.648 hasta System.Int16 short Desde -32.807 Enteros de 8 bytes sin Desde 0 .647 Enteros de 4 bytes sin System.UInt32 uint Desde 0 hasta 4.147. En el espacio de nombres System se han incluido todos estos: Tipo CTS Alias C# Descripción Valores que acepta Clase base de todos los System.Int32 no es el único tipo de dato básico incluido en C#.Object object Cualquier objeto tipos del CTS System.Int32 int signo 2.709.744.Int64 long signo hasta 9.295 signo Enteros de 8 bytes con Desde -9.4E+38 4 bytes Valor de coma flotante de System. por lo que la definición de variable anterior queda así de compacta: int a = 2.UInt64 ulong signo 18.768 hasta 32.223.036.967.7E+308 8 bytes System.535 bytes Valor de coma flotante de System.Byte byte Byte sin signo Desde 0 hasta 255 Enteros de 2 bytes con System.808 System.Double double Desde 5E-324 hasta 1.String string Cadenas de caracteres Cualquier cadena System.Programación .615 Caracteres Unicode de 2 System.Single float Desde 1.372. hasta System.483. System.UInt16 ushort Desde 0 hasta 65.073.Boolean bool Verdadero/falso true ó false Valor de coma flotante System.9E+28 dígitos de precisión) 86 .775.775.854.Decimal decimal de 16 bytes (tiene 28-29 Desde 1E-28 hasta 7.

ul.. uint UL. ulong Uóu Primero de: int. uint. en principio se considera que el tipo de un literal entero es el correspondiente al primero de estos tipos básicos que permitan almacenarlo: int. uL. D ó d double Móm decimal 3-03 VIDEO Declaración de variables 87 . Sufijo Tipo del literal entero Posibles sufijos válidos: ninguno Primero de: int. heredan de System. El valor que por defecto se da a los campos de tipos básicos consiste en poner a cero toda el área de memoria que ocupen. long. ulong L ó l[9] Primero de: long.. Por ejemplo.. ¿a cuál de los métodos se llamara? Pues bien.Object. los de tipo char con ‘\u0000’.NET Pese a su sintaxis especial. Esto se traduce en que los campos de tipos básicos numéricos se inicializan por defecto con el valor 0. Es decir. los de tipo bool lo hacen con false. lo que es muy útil para el diseño de rutinas genéricas que admitan parámetros de cualquier tipo y es una ventaja importante de C# frente a lenguajes similares como Java donde los tipos básicos no son considerados objetos. Ahora que sabemos cuáles son los tipos básicos. y los de tipo string y object con null. uint. por lo que en el caso anterior se llamaría al primer F() Para llamar al otro podría añadirse el sufijo L al literal y hacer la llamada con F(100L).} Ante una llamada como F(100). si tenemos en una clase los métodos: public static void F(int x) {. ulong. . LU. lU ó lu ulong Sufijos que admiten los literales reales: Fóf float ninguno.Object y pueden ser tratados como objetos de dicha clase por cualquier método que espere un System. Lu. en C# los tipos básicos son tipos del mismo nivel que cualquier otro tipo del lenguaje. Ul. es el momento de comentar cuáles son los sufijos que admiten los literales numéricos para indicar al compilador cuál es el tipo que se ha de considerar que tiene.. long.} public static void F(long x) .

resta (-). aunque hay que tener en cuenta que C# permite la redefinición del significado de la mayoría de los operadores según el tipo de dato sobre el que se apliquen. 88 .Programación . constantes y enumeraciones Operadores Un operador en C# es un símbolo formado por uno o más caracteres que permite realizar una determinada operación entre uno o más datos y produce un resultado. en caso de que haya desbordamiento cada uno actúa de una forma distinta: checked provoca un error de compilación si <expresiónAritmética> es una expresión constante y una excepción System. “not” (!) y “xor” (^). ¤ Operaciones lógicas: Se incluyen operadores que permiten realizar las operaciones lógicas típicas: “and” (&& y &). mientras que unchecked devuelve el resultado de la expresión aritmética truncado para que quepa en el tamaño esperado. división (/) y módulo (%) También se incluyen operadores de “menos unario” (–) y “más unario” (+). 3-04 VIDEO Operadores Unarios A continuación se describen cuáles son los operadores incluidos en el lenguaje clasificados según el tipo de operaciones que permiten realizar.OverflowException si no lo es. Por defecto.NET TEMA D Operadores. por lo que lo que aquí se cuenta se corresponde con los usos más comunes de los mismos: ¤ Operaciones aritméticas: Los operadores aritméticos incluidos en C# son los típicos de suma (+). en ausencia de los operadores checked y unchecked lo que se hace es evaluar las operaciones aritméticas entre datos constantes como si se les aplicase checked y las operaciones entre datos no constantes como si se les hubiese aplicado unchecked. Estos operadores se usan así: checked(<expresiónAritmética>) unchecked(<expresiónAritmética>) Ambos operadores calculan el resultado de <expresiónAritmética> y lo devuelven si durante el cálculo no se produce ningún desbordamiento. producto (*). Sin embargo. “or” (|| y |). Relacionados con las operaciones aritméticas se encuentran un par de operadores llamados checked y unchecked que permiten controlar si se desea detectar los desbordamientos que puedan producirse si al realizar este tipo de operaciones el resultado es superior a la capacidad del tipo de datos de sus operandos.

NET Los operadores && y || se diferencia de & y | en que los primeros realizan evaluación perezosa y los segundos no. Así. sin evaluar el otro. mientras que la evaluación no perezosa consiste en evaluar siempre ambos operandos. “menor que” (<). desigualdad (!=). “mayor o igual que” (>=) y “menor o igual que” (<=). O sea. const int b = a + 125. Las constantes se definen como variables normales pero precediendo el nombre de su tipo del modificador const y dándoles siempre un valor inicial al declararlas. ejemplos de definición de constantes es el siguiente: const int a = 123. 89 . Es decir. ¤ Operaciones relacionales: Se han incluido los tradicionales operadores de igualdad (==). Para que esto sea posible se ha de cumplir que el valor de una constante no pueda cambiar durante la ejecución. y si el primer operando de una || es cierto se devuelve true directamente. lo que hará el compilador será sustituir en el código generado todas las referencias a las constantes a y b por los valores 123 y 248 respectivamente. sin evaluar el segundo. por lo que el compilador informará con un error de todo intento de modificar el valor inicial de una constante. si el primer operando de una operación && es falso se devuelve false directamente. con esta sintaxis: const <tipoConstante> <nombreConstante> = <valor>. “mayor que” (>). . entonces no se evalúa el segundo y se devuelve dicho resultado directamente. La evaluación perezosa consiste en que si el resultado de evaluar el primer operando permite deducir el resultado de la operación. Dadas estas definiciones de constantes. 3-05 LÁMINA Operadores 3-05 VIDEO Operadores Binarios Constantes Una constante es una variable cuyo valor puede determinar el compilador durante la compilación y puede aplicar optimizaciones derivadas de ello.

al ser este un valor fijo. Grande } 90 . Por ejemplo. para leer su valor desde códigos externos a la definición de la clase donde esté definida la constante. hay que tener en cuenta que una variable sólo puede ser definida como constante si es una variable local o un campo.Programación . La única excepción a esta regla son los tipos enumerados. Nótese que puede hacer esto porque en el código se indica explícitamente cual es el valor que siempre tendrá a y. Debido a la necesidad de que el valor dado a una constante sea precisamente constante. De hecho. el siguiente código no es válido en tanto que el valor de x no es constante: // x es una variable normal. no tiene mucho sentido crear constantes de tipos de datos no básicos.<nombreConstante> típica de los campos static. puede deducir cuál será el valor que siempre tendrá b. 3-06 LÁMINA Variales de sólo lectura Enumeración Una enumeración o tipo enumerado es un tipo especial de estructura en la que los literales de los valores que pueden tomar sus objetos se indican explícitamente al definirla. habrá que usar la sintaxis <nombreClase>. pues a no ser que valgan null sus valores no se pueden determinar durante la compilación sino únicamente tras la ejecución de su constructor. Mediano. no una constante int x = 123. // Error: x no tiene porqué tener valor constante (aunque aquí lo tenga) const int y = x +123. Por ejemplo.NET por lo que el código generado será más eficiente ya que no incluirá el acceso y cálculo de los valores de a y b. pero no si es un parámetro. Para que el compilador pueda hacer estos cálculos se ha de cumplir que el valor que se asigne a las constantes en su declaración sea una expresión constante. Todas las constantes son implícitamente estáticas. por lo se considera erróneo incluir el modificador static en su definición al no tener sentido hacerlo. Mediano o Grande se definiría así: enum Tamaño { Pequeño. cuyos valores se pueden determinar al compilar. Por último. una enumeración de nombre Tamaño cuyos objetos pudiesen tomar los valores literales Pequeño.

estos literales no sólo facilitan la escritura y lectura del código sino que también pueden ser usados por herramientas de documentación. según cuando se detecte la incoherencia.MuestraTexto(2). usar enumeraciones también facilita el mantenimiento del código. una primera posibilidad sería dotarlo de un parámetro de algún tipo entero que indique el tamaño con el que se desea mostrar el texto. Sin embargo. si se hubiesen usado números mágicos del mismo tipo en vez de enumeraciones no se habría detectado nada. Sin embargo. // (2) Además. un error en compilación o una excepción en ejecución. Véase así como la llamada (2) del ejemplo que sigue es mucho más legible que la (1): obj. si un método espera un objeto Tamaño y se le pasa uno de otro tipo enumerado. cuando se quisiese incluir un nuevo tamaño intermedio entre pequeño y mediano habría que darle un valor superior a 3 o inferior a 1 ya que los demás estarían cogidos. A estos números que los métodos interpretan con significados específicos se les suele denominar números mágicos. y su utilización tiene los inconvenientes de que dificulta la legibilidad del código (hay que recordar qué significa para el método cada valor del número) y su escritura (hay que recordar qué número ha de pasársele al método para que funcione de una cierta forma). usando una enumeración no importaría mantener el orden relativo y bastaría añadirle un nuevo literal.Mediano). si el método (1) anterior se hubiese definido de forma que 1 significase tamaño pequeño. Así. Otra ventaja de usar enumeraciones frente a números mágicos es que éstas participan en el mecanismo de comprobación de tipos de C# y el CLR. lo que rompería el orden de menor a mayor entre números y tamaños asociados. depuradores u otras aplicaciones para sustituir números mágicos y mostrar textos muchos más legibles.NET Para entender bien la principal utilidad de las enumeraciones vamos a ver antes un problema muy típico en programación: si queremos definir un método que pueda imprimir por pantalla un cierto texto con diferentes tamaños. pues en ambos casos para el compilador y el CLR serían simples números sin ningún significado especial asociado. 3-07 LÁMINA Enumeraciones 91 . // (1) obj. Una alternativa mejor para el método anterior consiste en definirlo de modo que tome un parámetro de tipo Tamaño para que así el programador usuario no tenga que recordar la correspondencia entre tamaños y números. Por otro lado.MuestraTexto(Tamaño. 2 mediano y 3 grande. se producirá. . Por ejemplo.

Programación
.NET

Definición de enumeración: Ya hemos visto un ejemplo de cómo definir una enumeración. Sin
embargo, la sintaxis completa que se puede usar para definirlas es:

enum <nombreEnumeración> : <tipoBase>
{
<literales>
}

En realidad una enumeración es un tipo especial de estructura (luego System.ValueType
será tipo padre de ella) que sólo puede tener como miembros campos públicos constantes y
estáticos. Esos campos se indican en , y como sus modificadores son siempre los mismos no
hay que especificarlos (de hecho, es erróneo hacerlo).

El tipo por defecto de las constantes que forman una enumeración es int, aunque puede dárseles
cualquier otro tipo básico entero (byte, sbyte, short, ushort, uint, int, long o ulong) indicándolo
en <tipoBase>. Cuando se haga esto hay que tener muy presente que el compilador de C#
sólo admite que se indiquen así los alias de estos tipos básicos, pero no sus nombres reales
(System.Byte, System.SByte, etc.)

Si no se especifica valor inicial para cada constante, el compilador les dará por defecto valores
que empiecen desde 0 y se incrementen en una unidad para cada constante según su orden
de aparición en la definición de la enumeración. Así, el ejemplo del principio del tema es
equivalente a:
enum Tamaño:int
{
Pequeño = 0,
Mediano = 1,
Grande = 2
}
Es posible alterar los valores iniciales de cada constante indicándolos explícitamente como
en el código recién mostrado. Otra posibilidad es alterar el valor base a partir del cual se va
calculando el valor de las siguientes constantes como en este otro ejemplo:
enum Tamaño
{
Pequeño,
Mediano = 5,
Grande
}
En este último ejemplo el valor asociado a Pequeño será 0, el asociado a Mediano será 5, y el
asociado a Grande será 6 ya que como no se le indica explícitamente ningún otro se considera
que este valor es el de la constante anterior más 1.

Obviamente, el nombre que se de a cada constante ha de ser diferente al de las demás de
su misma enumeración y el valor que se de a cada una ha de estar incluido en el rango de
valores admitidos por su tipo base. Sin embargo, nada obliga a que el valor que se de a cada

92

.NET

constante tenga que ser diferente al de las demás, y de hecho puede especificarse el valor de
una constante en función del valor de otra como muestra este ejemplo:
enum Tamaño
{
Pequeño,
Mediano = Pequeño,
Grande = Pequeño + Mediano
}
En realidad, lo único que importa es que el valor que se dé a cada literal, si es que se le da
alguno explícitamente, sea una expresión constante cuyo resultado se encuentre en el rango
admitido por el tipo base de la enumeración y no provoque definiciones circulares.

Por ejemplo, la siguiente definición de enumeración es incorrecta ya que en ella los literales
Pequeño y Mediano se han definido circularmente:
enum TamañoMal
{
Pequeño = Mediano,
Mediano = Pequeño,
Grande
}
Nótese que también la siguiente definición de enumeración también sería incorrecta ya que en
ella el valor de B depende del de A implícitamente (sería el de A más 1):
enum EnumMal
{
A = B,
B
}

PROYECTO

3-02 Cálculo de sueldo
Realiza un programa para calcular el sueldo de una persona, conociendo la cantidad de horas
trabajadas y el costo de la hora:

1. Crear un nuevo proyecto llamado CalculoSueldo.

a. Define las siguientes variables:
¤ int horasTrabajadas;
¤ float costoHora;
¤ float sueldo;
¤ string linea;

93

Programación
.NET

b. Escribe un mensaje en la pantalla solicitando “Ingrese las horas trabajadas:”
c. Almacena en la variable línea lo que se introduzca con el teclado.
d. Almacena en horas trabajadas el parseo a entero de la variable línea (int.Parse (linea)).
e. Solicita que se ingrese el pago por hora.
f. Almacena en línea la cantidad ingresada por el usuario.
g. Almacena en costoHora el paseo a flotante de la variable línea(float.Parse (línea)).
h. En la variable sueldo haz la multiplicación de las horas por el costo.
i. Muestra en pantalla el resultado .
j. Haz una pausa para que no se cierre la pantalla inmediatamente.

2. Escribe a continuación el código fuente del programa:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace CalculoSueldo
{
class Program
{
static void Main(string[] args)
{
int horasTrabajadas;
loat costoHora;
loat sueldo;
string linea;
Console.Write(“Ingrese Horas trabajadas:”);
linea = Console.ReadLine();
horasTrabajadas = int.Parse(linea);
Console.Write(“Ingrese el pago por hora:”);
linea = Console.ReadLine();
costoHora = loat.Parse(linea);
sueldo = horasTrabajadas * costoHora;
Console.Write(“El sueldo total del operario es:”);
Console.Write(sueldo);
Console.ReadLine();
}
}
}

94

.NET

TEMA E Sentencias de control
Condicionales
Las instrucciones condicionales son instrucciones que permiten ejecutar bloques de
instrucciones sólo si se da una determinada condición. En los siguientes apartados de esta
unidad se describen cuáles son las instrucciones condicionales disponibles en C#.

¤ Instrucción IF: Permite ejecutar ciertas instrucciones sólo si de da una determinada
condición. Su sintaxis de uso es la sintaxis:
if (<condición>){
<instruccionesIf>}
else{
<instruccionesElse>}

El significado de esta instrucción es el siguiente: se evalúa la expresión <condición>, que ha
de devolver un valor lógico. Si es cierta (devuelve true) se ejecutan las <instruccionesIf>,
y si es falsa (false) se ejecutan las <instruccionesElse> La rama else es opcional, y si
se omite y la condición es falsa se seguiría ejecutando a partir de la instrucción siguiente al if.
En realidad, tanto <instruccionesIf> como <instruccionesElse> pueden ser una
única instrucción o un bloque de instrucciones. Ejemplo:
Si (te portas bien)
{
te compro un helado;
te dejo ver la tele;
} de lo contrario
{
te castigo en tu cuarto;
te quedas sin cenar;
}

3-06
VIDEO Condicional IF

¤ Instrucción Switch: Permite ejecutar unos u otros bloques de instrucciones según el valor de
una cierta expresión. Su estructura es:
switch (<expresión>)
{
case <valor1>: <bloque1>
<siguienteAcción>
case <valor2>: <bloque2>
<siguienteAcción>
...
default: <bloqueDefault>
<siguienteAcción>
}

95

Programación
.NET

El significado de esta instrucción es el siguiente: se evalúa. Si su valor es se ejecuta el, si es se
ejecuta , y así para el resto de valores especificados. Si no es igual a ninguno de esos valores y
se incluye la rama default, se ejecuta el ; pero si no se incluye se pasa directamente a ejecutar
la instrucción siguiente al switch.
Los valores indicados en cada rama del switch han de ser expresiones constantes que produzcan
valores de algún tipo básico entero, de una enumeración, de tipo char o de tipo string. Además,
no puede haber más de una rama con el mismo valor.

En realidad, aunque todas las ramas de un switch son opcionales siempre se ha de incluir al
menos una. Además, la rama default no tiene porqué aparecer la última si se usa, aunque es
recomendable que lo haga para facilitar la legibilidad del código.
Ejemplo:
comprobemos (opcion)
{
en caso de 1:
te descuento un 10%;
Nada más;
en caso de 2:
te descuento un 5%;
Nada más;
en caso de 3:
te descuento un 2%;
Nada más;
en otro caso:
no te descuento nada;
Nada más;
}

3-07
VIDEO Instrucción Switch

Ciclos
Son instrucciones que permiten ejecutar repetidas veces una instrucción o un bloque de
instrucciones mientras se cumpla una condición. Es decir, permiten definir bucles donde ciertas
instrucciones se ejecuten varias veces. A continuación se describen cuáles son las instrucciones
de este tipo incluidas en C#.

¤ Ciclo While: Permite ejecutar un bloque de instrucciones mientras se de una cierta
instrucción. Su sintaxis de uso es:
while (<condición>)
{
<instrucciones>
}

96

y si es falsa se continúa ejecutando por la instrucción siguiente al for. . Su sintaxis es: for (<inicialización>. Como en el resto de instrucciones hasta ahora vistas. En caso de ser varias se han de separar mediante comas (. <modificación>){ <instrucciones> } El significado de esta instrucción es el siguiente: se ejecutan las instrucciones de <inicialización>.) habitualmente usado para estos menesteres se usa en el for para separar los bloques de <inicialización>. en <instrucciones> puede ser tanto una única instrucción como un bloque de instrucciones. aunque lo anterior sea su uso más habitual. Además. Cuando sea falsa (false) se pasará a ejecutar la instrucción siguiente al while. que suelen usarse para definir e inicializar variables que luego se usarán en <instrucciones>. En realidad <instrucciones> puede ser una única instrucción o un bloque de instrucciones. 3-08 VIDEO Ciclo While ¤ Ciclo For: Es una variante de while que permite reducir el código necesario para escribir los tipos de bucles más comúnmente usados en programación. 3-09 VIDEO Ciclo For 97 . ya que puede incluirse código que nada tenga que ver con modificaciones pero en este caso no se pueden incluir definiciones de variables. En <inicialización> puede en realidad incluirse cualquier número de instrucciones que no tienen porqué ser relativas a inicializar variables o modificarlas. <condición> y <modificación> Además.y luego se reevalúa <condición> repitiéndose el proceso hasta que ésta última deje de ser cierta. las variables que se definan en <inicialización> serán visibles sólo dentro de esas <instrucciones>. Luego se evalúa <condición>. que ha de producir un valor lógico. ya que el carácter de punto y coma (. Con <modificación> pasa algo similar. mientras que si es cierta se ejecutan las <instrucciones> indicadas. Si es cierta (valor lógico true) se ejecutan las <instrucciones> y se repite el proceso de evaluación de <condición> y ejecución de <instrucciones> hasta que deje de serlo. <condición>. luego se ejecutan las instrucciones de <modificación> -que como su nombre indica suelen usarse para modificar los valores de variables que se usen en <instrucciones> .NET Su significado es el siguiente: Se evalúa la <condición> indicada. la instrucción nula no se puede usar en este caso y tampoco pueden combinarse definiciones de variables con instrucciones de otros tipos.).

Otro uso es forzar la terminación inmediate de un ciclo. el siguiente programa visualizará sólo los números pares: main() { int x. cuando alcanza el valor 10 se cumple la condición de la sentencia if. Cuando se encuentra la sentencia break en un bucle. la computadora termina inmediatamente el ciclo y el control del programa pasa a la siguiente sentecia del ciclo. Por ejemplo: main() { int t. } } 3-08 LÁMINA Sentencias de control 98 . t). saltando la prueba condicional del ciclo. printf(“%d “. if (t==10) break. for(t=0. continue fuerza la siguiente iteración. en vez de forzar la salida. t++) { printf(“%d “. } } Este programa muestra en pantalla los números del 0 al 10. x++) { if (x%2) continue. Por ejemplo.NET Uso De Break Y Continue Como se comento uno de los usos de la sentencia break es terminar un case en la sentencia switch. por lo que salta el código que falta para llegar a probar la condición. for( x=0. se ejecuta la sentencia break y sale del ciclo.Programación . x<100.x). La sentencia continue funciona de manera similar a la sentencia break. Sin embargo. t<100.

escribe el comando cd (change directory). Presiona la tecla <F5>.} else{ Console. crea un nuevo proyecto de consola y escribe el siguiente código: using System. en este caso ConsoleAplication1. haz clic con el botón derecho del ratón. ¿Qué función realliza este programa? 5.Length > 0){ Console.Si no vez la ventana de resultados haz clic en menú Depurar/Ventanas/Resultados. Guarda el programa en la ubicación que indique tu profesor. Ejecuta la consola de Windows®. ¿Qué función realliza ahora este programa? 6. En la Ventana resultados aparecerá la ruta dónde se ejecuta la aplicación y su nombre.WriteLine(“Hola mundo!”). localiza y copia el texto. args[0]). selecciona pegar del menú contextual y presiona <Enter>. . 3.WriteLine(“Hola {0}!”. notarás que aparece una ventana de Consola que se abre y cierra. seguido de tu nombre “Tu nombre”.exe”.NET PROYECTO 3-03 Sentencias de control 1.exe. Escribe el nombre del programa. Es similar a esta: “C:\Users\Administrador\AppData\Local\Temporary Projects\ ConsoleApplication1\bin\Debug\ConsoleApplication1. class HolaMundoIf { public static void Main(String[] args) { if (args. NOTAS: 99 . En Visual C# 2010 Express.} } } 2. 4.

WriteLine(“Hola {0}”.NET 7.WriteLine(“Hola Paco. ¿Qué función realliza? 12. Ejecuta el programa agregando el texto José. Ejecuta el programa. Me alegro de verte”). case “Paco”: Console. Guarda el programa en la ubicación que indique tu profesor. Crea otro proyecto de consola nuevo y escribe el siguiente código: using System.WriteLine(“Hola Mundo”). Ejecuta el programa agregando cualquier texto. } else Console. class HolaMundoSwitch { public static void Main(String[] args) { if (args.WriteLine(“Hola José. break.Programación . Buenos días”). default: Console. ¿Qué función realliza? 11. ¿Qué función realliza este programa? 9.Length > 0) switch(args[0]) { case “José”: Console. break. args[0]). 100 . pero ahora escribe Paco. } } 8. De manera similar a la anterior busca la ruta del programa y ejecútalo desde la Consola de Windows®. break. ¿Qué función realliza? 10.

Al conjunto formado por el nombre de un método y el número y tipo de sus parámetros se le conoce como signatura del método. Como nombre del método se puede poner en <nombreMétodo> cualquier identificador válido. pero por ahora podemos considerar que siempre será un identificador. si un método los toma se ha de indicar en <parámetros> cuál es el nombre y tipo de cada uno.NET TEMA F Métodos. Aunque es posible escribir métodos que no tomen parámetros. 101 . Arreglos y Colecciones Métodos Un método es un conjunto de instrucciones a las que se les da un determinado nombre de tal manera que sea posible ejecutarlas en cualquier momento sin tenerlas que rescribir sino usando sólo su nombre. separándolos con comas si son más de uno y siguiendo la sintaxis que más adelante se explica. de modo que es posible definir en un mismo tipo varios métodos con idéntico nombre siempre y cuando tengan distintos parámetros. pero si el método retorna algún tipo de objeto entonces ha de incluir al menos una instrucción return que indique cuál objeto. La ejecución de las instrucciones de un método puede producir como resultado un objeto de cualquier tipo. Cuando esto ocurre se dice que el método que tiene ese nombre está sobrecargado. de manera que en función del valor que se dé a estas variables en cada llamada la ejecución del método se pueda realizar de una u otra forma y podrá producir uno u otro valor de retorno. Esto se indica definiéndolo así: <tipoRetorno> <nombreMétodo>(<parámetros>) { <cuerpo> } En <tipoRetorno> se indica cuál es el tipo de dato del objeto que el método devuelve. Como se verá más adelante en Interfaces. La ejecución de las instrucciones de un método puede depender del valor de unas variables especiales denominadas parámetros del método. cuál es el tipo de objeto que puede devolver y cuáles son los parámetros que puede tomar. . y a su ejecución a través de su nombre se le denomina llamada al método. A estas instrucciones se les denomina cuerpo del método. pudiéndose escribir métodos que no devuelvan ninguno. A este objeto se le llama valor de retorno del método y es completamente opcional. ¤ Definición De Método: Para definir un método hay que indicar tanto cuáles son las instrucciones que forman su cuerpo como cuál es el nombre que se le dará. también es posible incluir en <nombreMétodo> información de explicitación de implementación de interfaz. El <cuerpo> del método también es opcional. y si no devuelve ninguno se ha de escribir void en su lugar. La signatura de un método es lo que verdaderamente lo identifica.

Programación .<nombreMétodo> (<valoresParámetros>) El <objeto> indicado puede ser directamente una variable del tipo de datos al que pertenezca el método o puede ser una expresión que produzca como resultado una variable de ese tipo (recordemos que. En caso de que sea un método de tipo (método estático). entonces se ha de dar el valor this a <objeto>. pero si desde código de algún método de un objeto se desea llamar a otro método de ese mismo objeto. Como ya se vio en el Tema Clases. return 1. 102 . debido a la herencia. Sin embargo.WriteLine(“Hola Mundo”). entones se ha de usar: <tipo>. el tipo del <objeto> puede ser un subtipo del tipo donde realmente se haya definido el método). Si es un método de objeto (método no estático) se ha de usar la notación: <objeto>. } 3-09 LÁMINA Métodos externos ¤ Llamada A Métodos: La forma en que se puede llamar a un método depende del tipo de método del que se trate. si el método pertenece al mismo tipo que el código que lo llama entonces se puede usar la notación abreviada: <nombreMétodo> (<valoresParámetros>) El formato en que se pasen los valores a cada parámetro en <valoresParámetros> a aquellos métodos que tomen parámetros depende del tipo de parámetro que sea.<nombreMétodo> (<valoresParámetros>) Ahora en <tipo> ha de indicarse el tipo donde se haya definido el método o algún subtipo suyo.) Más adelante en este tema veremos que eso es también lo que se hace para definir métodos externos.NET La sintaxis anteriormente vista no es la que se usa para definir métodos abstractos. A continuación se muestra un ejemplo de cómo definir un método de nombre Saluda cuyo cuerpo consista en escribir en la consola el mensaje “Hola Mundo” y que devuelva un objeto int de valor 1: int Saluda() { Console. en esos casos lo que se hace es sustituir el cuerpo del método y las llaves que lo encierran por un simple punto y coma (.

pues se garantiza que en el método se inicializarán antes de leerlas. para llamar al método anterior con los valores 2 y 5 se haría <objeto>. si el objeto es de un tipo valor se le pasará una copia del objeto y cualquier modificación que se haga al parámetro dentro del cuerpo del método no afectará al objeto original sino a su copia. parámetros por referencia y parámetros de número indefinido. es la suma de los valores pasados a sus parámetros par1 y par2 al llamarlo. Por ejemplo. parámetros de salida.5). En las llamadas a métodos se expresan los valores que se deseen dar a este tipo de parámetros indicando simplemente el valor deseado. Si esto no se hiciese así el compilador lo detectaría e informaría de ello con un error. lo que devolvería el valor 7.NET Parámetros La forma en que se define cada parámetro de un método depende del tipo de parámetro del que se trate. Para ello se sigue la siguiente sintaxis: <tipoParámetro> <nombreParámetro> Por ejemplo. Esto se debe a que lo que a estos parámetros se les pasa es siempre una referencia al valor que almacenaría una variable del tipo del objeto que se les pase. } Como se ve. Cualquier parámetro de salida de un método siempre ha de modificarse dentro del cuerpo del método y además dicha modificación ha de hacerse antes que cualquier lectura de su valor. ¤ Parámetros De Salida: Un parámetro de salida se diferencia de uno de entrada en que todo cambio que se le realice en el código del método al que pertenece afectará al objeto que se le pase al llamar dicho método tanto si éste es de un tipo por valor como si es de un tipo referencia. . el siguiente código define un método llamado Suma que toma dos parámetros de entrada de tipo int llamados par1 y par2 y devuelve un int con su suma: int Suma(int par1. ¤ Parámetros De Entrada: Un parámetro de entrada recibe una copia del valor que almacenaría una variable del tipo del objeto que se le pase. Este valor es el resultado de ejecutar la expresión par1+par2. Por tanto. mientras que si el objeto es de un tipo referencia entonces se le pasará una copia de la referencia al mismo y cualquier modificación que se haga al parámetro dentro del método también afectará al objeto original ya que en realidad el parámetro referencia a ese mismo objeto original. Además. tras la llamada 103 . Por esta razón es posible pasar parámetros de salida que sean variables no inicializadas. Para definir un parámetro de entrada basta indicar cuál el nombre que se le desea dar y el cuál es tipo de dato que podrá almacenar. int par2) { return par1+par2. es decir. En C# se admiten cuatro tipos de parámetros: parámetros de entrada. se usa la instrucción return para indicar cuál es el valor que ha de devolver el método.Suma(2.

Los parámetros de salida se definen de forma parecida a los parámetros de entrada pero se les ha de añadir la palabra reservada out.f(x. Una utilidad de esto es facilitar la legibilidad de las llamadas a métodos. las de acceso a bases de datos en System. la verdadera utilidad de forzar a explicitar en las llamadas el tipo de paso de cada parámetro es que permite evitar errores derivados de que un programador pase una variable a un método y no sepa que el método la puede modificar.Data. los namespace también permiten poder usar en un mismo programa varias clases con igual nombre si pertenecen a espacios diferentes. también se puede deducir que el valor de z cambiará tras la llamada. así es como se halla organizada la BCL.NET a un método se considera que las variables que se le pasaron como parámetros de salida ya estarán inicializadas. Por ejemplo. dada una llamada de la forma: a. 104 . pues dentro del método seguro que se las inicializa. se definen así: out <tipoParámetro> <nombreParámetro> Al llamar a un método que tome parámetros de este tipo también se ha preceder el valor especificado para estos parámetros del modificador out. Por otro lado. Sin embargo. etc. out z) Es fácil determinar que lo que se hace es llamar al método f() del objeto a pasándole x como parámetro de entrada y z como parámetro de salida. de modo que todas las clases más comúnmente usadas en cualquier aplicación se hallan en el namespace llamado System. Nótese que este tipo de parámetros permiten diseñar métodos que devuelvan múltiples objetos: un objeto se devolvería como valor de retorno y los demás se devolverían escribiéndolos en los parámetros de salida. por un lado. Además.Programación .IO. las de realización de operaciones de entrada/salida en System. La idea es que cada fabricante defina sus tipos dentro de un namespace propio para que así no haya conflictos si varios fabricantes definen clases con el mismo nombre y se quieren usar a la vez en un mismo programa. esto permite tenerlos más organizados facilitando su localización. 3-10 LÁMINA Otros parámetros Namespace Del mismo modo que los ficheros se organizan en directorios. los tipos de datos se organizan en namespace. De hecho. O sea.

también es posible incluir como miembros de un namespace a otros namespace. el verdadero nombre de la clase ClaseEjemplo antes definida es EspacioEjemplo. es el nombre que le demos al declararla prefijado por la concatenación de todos los namespace a los que pertenece ordenados del más externo al más interno y seguido cada uno de ellos por un punto (carácter). . o su nombre de dominio en Internet. A continuación se muestra un ejemplo en el que definimos una clase de nombre ClaseEjemplo perteneciente a un namespace llamado EspacioEjemplo: namespace EspacioEjemplo { class ClaseEjemplo {} } El verdadero nombre de una clase.Aparte de definiciones de tipo.se considera que ésta pertenece al llamado namespace global y su nombre completamente calificado coincidirá con el identificador que tras la palabra reservada class le demos en su definición (nombre simple). Por ejemplo. Es decir. estructuras. Si no definimos una clase dentro de una definición de namespace -como se ha hecho en los ejemplos de temas previos.ClaseEjemplo. como se muestra el siguiente ejemplo es posible anidar namespace: namespace EspacioEjemplo { namespace EspacioEjemplo2 { class ClaseEjemplo {} } } 105 .NET Obviamente para que esto funcione no han de coincidir los namespace de cada fabricante. Aparte de clases. al que se denomina nombre completamente calificado. tipos enumerados y delegados. etc. 3-11 LÁMINA Importación de Namespace ¤ Definicion de namespace: Para definir un namespace se utiliza la siguiente sintaxis: namespace <nombreEspacio> { <tipos> } Los así definidos pasarán a considerase miembros del namespace llamado. y una forma de conseguirlo es dándoles el nombre de la empresa fabricante. estos tipos pueden ser también interfaces.

En realidad es posible compactar las definiciones de namespace anidados usando esta sintaxis de calificación completa para dar el namespace de nombres a definir.a++.WriteLine(“{0}. En Visual C# 2010 Express. el último ejemplo es equivalente a: namespace EspacioEjemplo. crea un nuevo proyecto de consola y escribe el siguiente código: using System.a). obj2. ParámetrosEntrada obj2 = new ParámetrosEntrada(). pertenece al espacio EspacioEjemplo.Programación .. Console. a su vez. G(obj1). ¿Qué tarea realliza este programa? 106 . } } 2. Es decir. PROYECTO 3-04 Errores 1.EspacioEjemplo2.NET Ahora ClaseEjemplo tendrá EspacioEjemplo. public static void F(ParametrosEntrada p) { p. } public static void Main() { int obj1 = 0. F(obj2). {1}”.ClaseEjemplo como nombre completamente calificado. class ParámetrosEntrada { public int a = 1. } public static void G(int p) { p++.EspacioEjemplo2 { class ClaseEjemplo {} } En ambos casos lo que se ha definido es una clase ClaseEjemplo perteneciente al namespcae EspacioEjemplo2 que. obj1.

3-10 VIDEO Arreglos 107 . o incluso algunos tipos complejos como las clases. 7. 1. Archivo: Este es un ejemplo de un archivo de texto. Este arreglo en total Registro: 30 agtosto 3. Bat. del tipo base. agosto. Al emplear ese nombre. Un archivo de texto se caracteriza por estar compuesto de caracteres ASCII solamente. se hace referencia a un elemento particular. 3. combinado con índices. etc.NET 3. 11 los elementos que constituyen el arreglo empleando Constante_numérica índices. Estructuras. 5. Cuando se utiliza el nombre del arreglo en forma indexada.1416 almacena n+1 elementos. con todos sus elementos.C Los arreglos. El valor de n. la posición 1 el valor de 21. al igual que el resto de las variables se identifican con un nombre. dentro de la estructura compleja. El tipo base de un arreglo puede ser cualquiera de los tipos básicos de C#. es decir. 9. Generalmente tienen la documento extensión: txt. llamado el tipo base del arreglo. El lenguaje interpreta dicho nombre como un puntero. Un arreglo puede considerarse como ejemplo de una variable compuesta capaz de almacenar uno o más datos al mismo tiempo.1416. 3. Esto es posible pues los elementos del arreglo Variable 30 Factor_de_crecimiento están numerados en forma jerárquica y consecutiva. es decir. se hace referencia a la estructura de datos como un todo. Datos y Variables Significado Información La sintaxis del lenguaje permite referirse a cada uno de Datos: 30. . ¿Cuál fue el error que marcó? Arreglos Los arreglos son estructuras de datos complejos (en el sentido de que no son atómicas) que agrupan datos de un mismo tipo en particular. . Resultado_nota empezando en 0 en cada dimensión. cuya posición 0 almacena el valor Numeros_serie Infracciones 10. depende de la Datos_alumno 3 5 7 9 11 13 memoria que pueda tener el computador y el tipo de Datos_lluvia Datos_tiempo elementos que se almacenen en el arreglo. Careta En un archivo de texto se puede editar Transparencia programas en C. Un arreglo es también ejemplo de un modelo. Modelos de datos Arreglo: 3 5 7 9 11 13 La siguiente imagen muestra un ejemplo de un arreglo Impares llamado numeros.

se dimensiona el arreglo con una cantidad determinada de elementos. en una sola declaración: <tipo-base>[] <identificador> = {valor1.. lo que se verá más adelante). Declaración de arreglos Los arreglos. dimensionar. e inicializar un arreglo con todos sus elementos. También es factible declarar. <identificador> = new <tipo-base> [<NumElementos>] En esta declaración. al igual que las demás variables deben declararse antes de poder utilizarlas. valorN}. La sintaxis de la declaración de un arreglo unidimensional es la siguiente: <tipo-base>[] <identificador>.Programación . es un arreglo (lista de elementos del tipo base). como se muestra a continuación.. y cumplen con las mismas reglas de alcance y vida.. en una sola declaración. ¤ En esta declaración NO se define el tamaño que tendrá el arreglo (aunque se puede determinar las dimensiones. pero sólo indicando un subconjunto de los valores que el arreglo puede guardar: 108 . Es posible hacer la declaración del arreglo y su dimensionamiento en una misma sentencia: <tipo-base>[] <identificador> = new <tipo-base>[<NumElementos>] Adicionalmente es factible declarar. Los arreglos de una sola dimensión reciben también el nombre de vectores. valor2. El tamaño del arreglo se determina en una segunda declaración. . todos correspondientes a tipo-base. del tipo- base indicado. dimensionar.NET El lenguaje C# no controla la validez de los índices que se emplean para referenciar un arreglo. Más adelante se presenta un ejemplo en este sentido. Esta última declaración implícitamente dimensiona el arreglo para almacenar los N elementos descritos. que puede ir en la siguiente línea. Esto quiere decir que es posible cometer errores graves y difíciles de detectar en este sentido. ¤ Los valores deben ser del <tipo-base> del arreglo. ¤ El <identificador> es el nombre que distinguirá el arreglo. Observaciones: ¤ El <tipo-base> puede ser cualquiera de los tipos básicos del lenguaje. e inicializar un arreglo con todos sus elementos. por lo que no se requiere dimensionarlo aparte. Es decir: ¤ Con los valores indicados entre llaves {} se inicializarán los elementos del arreglo. ¤ Los corchetes [] son obligatorios y denotan que el identificador descrito. o incluso algunos complejos como estructuras.

Donde M<N. 3-12 LÁMINA Arreglos Multidimensionales Funciones mas comunes con arreglos En C#.3.2.1. el real dimensionamiento del arreglo se regirá por M.).NET <tipo-base>[] <identificador> = new <tipo-base>[N] {valor1.2. etc. .6 } Array. todos del mismo tipo. y por ello cuentan con sus propios atributos y métodos específicos. los arreglos se representan con un tipo específico. Es factible hacer una declaración donde M>N. Foreach depende de la definición previa de un arreglo de elementos del mismo tipo.5.2.6 } Console.6 En el mismo caso en que se pueda ordenar un arreglo. // 6.4.5. Ejemplo: int [] numeros = { 1.5. La sintaxis de uso es: foreach ( <tipo> <variable> in <arreglo> ) { <instrucciones> } 109 .3.4. especialmente diseñada para este tipo de estructuras. float.3. ¤ Ordenar y revertir el orden de un arreglo: En el caso de los arreglos que sean de uno de los tipos predefinidos (int. . Esta sentencia de control de flujo. en cuyo caso..WriteLine(“Largo: {0}”.4.Length). // 1. el tamaño o cantidad de elementos se obtiene con la propiedad Length. Por ejemplo.3.5. char. aprovechando el método básico Reverse() de la clase Array: int [] numeros = { 1.1 Búsqueda en arreglos Para realizar las búsquedas en arreglos se usa la instrucción Foreach. para obtener el largo (la cantidad de elementos dimensionados) de un arreglo.4.2. como por ejemplo 10. los cuales puede recorrer individualmente sin conocer el tamaño explícitamente (como se requiere en otras instrucciones. aprovechando el método básico Sort() de la clase Array: int [] numeros = { 4.6 } Array.2. ¤ Largo de un arreglo: En el caso de los arreglos unidimensionales.3. valorM}. se puede reordenar exactamente al revés de como está.. numeros. y N debe ser una expresión constante. por ejemplo en el for)..Reverse(numeros).5. es factible ordenarlos en forma creciente. o para ordenarlo. donde se manejan listas de elementos.Sort(numeros).

3. using System. using System.WriteLine(). i). crea un nuevo proyecto de consola y escribe el siguiente código: using System. 4 }. } } class MainApp { static void Main() { int[] numeros = { 2.WriteLine(“Arreglo ordenado”).WriteLine(“Arreglo original”). Program a = new Program(numeros). 110 . 6. ¤ <variable> es un identificador de una variable local del foreach() que se usará para ver un elemento del arreglo en cada iteración.Imprimir().Write(“{0} “. Console.Reverse(numeros). 5. En Visual C# 2010 Express. PROYECTO 3-05 Arreglos 1. Console.Length]. } public void Imprimir() { foreach (int i in numeros) Console. 1.Length.Ordenar(). Console.NET Donde: ¤ <tipo> es el tipo básico de los elementos contenidos en el arreglo. a.Programación . namespace UsoArreglo { class Program { int[] numeros.Text.Sort(numeros).Collections.Linq.WriteLine(“Arreglo invertido”). a. i++) numeros[i] = arreglo[i]. } public void Ordenar() { Array.Imprimir(). public Program(int[] arreglo) { numeros = new int[arreglo. for (int i = 0. a. Console. i < numeros. ¤ <arreglo> es el arreglo de elementos a revisar. using System. } public void Reordenar() { Array.Generic.

111 . Si insertamos un nodo en la lista quedaría luego: Si insertamos otro nodo al principio con el valor 9 tenemos: Igualmente podemos borrar nodos de cualquier parte de la lista. Esto nos trae a la mente el primer problema planteado: el desarrollo del procesador de texto. Podríamos utilizar una lista que inicialmente estuviera vacía e introdujéramos un nuevo nodo con cada línea que escribe el operador. Guarda el programa en la ubicación que indique tu profesor. La dirección al siguiente nodo es un puntero. a. una lista es una secuencia de nodos (en este caso cuatro nodos).raiz es otro puntero externo a la lista que contiene la dirección del primer nodo. } } } 2. El estado de una lista varía durante la ejecución del programa: De esta forma representamos gráficamente una lista vacía. . ¿Qué función realliza este programa? 3. cada uno de los cuales tiene dos campos: uno de información y un apuntador al siguiente nodo de la lista. estructura de datos o inclusive uno o más objetos. Con esta estructura haremos un uso muy eficiente de la memoria. La información de los nodos en este caso es un entero y siempre contiene un puntero que guarda la dirección del siguiente nodo.Imprimir(). Representación gráfica de un nodo: La información puede ser cualquier tipo de dato simple.NET a. Además un apuntador externo señala el primer nodo de la lista. Console. Representación gráfica de una lista: Como decíamos. Listas Una lista es un conjunto de nodos.Reordenar().ReadLine().

Pilas Una lista se comporta como una pila si las inserciones y extracciones las hacemos por un mismo lado de la lista. borrar uno del fondo o uno interior.último en entrar primero en salir). Ahora qué sucede si extraemos un nodo de la pila.Programación . float. También se las llama listas FIFO (First In First Out . Inicialmente la PILA está vacía y decimos que el puntero raíz apunta a null (Si apunta a null decimos que no tiene una dirección de memoria): Insertamos un valor entero en la pila: insertar(10). en otro momento al final.primero en entrar primero en salir). El puntero del nodo apunta a null ya que no hay otro nodo después de este.último en entrar primero en salir) Una lista se comporta como una cola si las inserciones las hacemos al final y las extracciones las hacemos por el frente de la lista.NET Tipos de listas Según el mecanismo de inserción y extracción de nodos en la lista tenemos los siguientes tipos: ¤ Listas tipo pila. ¤ Listas genéricas. raiz apunta a dicho nodo. etc). Insertamos luego el valor 4: insertar(4). Ahora el primer nodo de la pila es el que almacena el valor cuatro. Una pila al ser una lista puede almacenar en el campo de información cualquier tipo de valor (int. etc. vector de caracteres. char. Una lista se comporta como genérica cuando las inserciones y extracciones se realizan en cualquier parte de la lista. Podemos en algún momento insertar un nodo en medio de la lista. borrar uno del frente. Una lista se comporta como una pila si las inserciones y extracciones las hacemos por un mismo lado de la lista. También se las llama listas LIFO (Last In First Out . Para estudiar el mecanismo de utilización de una pila supondremos que en el campo de información almacena un entero (para una fácil interpretación y codificación). un objeto. Recordemos que raiz es el puntero externo a la lista que almacena la dirección del primer nodo. ¿Cuál se extrae? 112 . Luego de realizar la inserción la lista tipo pila queda de esta manera: un nodo con el valor 10 y raiz apunta a dicho nodo. ¤ Listas tipo cola. También se las llama listas LIFO (Last In First Out . El nodo que acabamos de insertar en el campo puntero guarda la dirección del nodo que almacena el valor 10.

Linq. Al extraer de la pila tenemos: extraer(). En Visual C# 2010 Express.Text. También se las llama listas FIFO (First In First Out . 3-11 VIDEO Pilas Colas Una lista se comporta como una cola si las inserciones las hacemos al final y las extracciones las hacemos por el frente de la lista. using System. La pila ha quedado con un nodo.Generic. using System. crea un nuevo proyecto de consola y escribe el siguiente código: using System. namespace PilasArray { 113 . 3-12 VIDEO Colas 3-13 LÁMINA Pilas y Colas PROYECTO 3-06 Pilas 1.primero en entrar primero en salir).Collections.NET Como sabemos. using System. en una pila se extrae el último en entrar. . Hay que tener cuidado que si se extrae un nuevo nodo la pila quedará vacía y no se podrá extraer otros valores (avisar que la pila está vacía).

//Usar método de agregar elemento } break.Write(“Escriba el dato a ingresar a la pila:”). imposible agregar nuevo valor \n”). switch (x) { case “1”: Console.//Usa método para imprimir el contenido de la pila } break.Empty. string Elemento = string.Write(“\n\nMenú \n 1)Meter elemento a la pila \n 2)Muestra pila \n 3)Obtiene elemento de la cima \n 4) Suprime elemento de la cima \n 0)Salir \n\n”). string x = string. Elemento = Console. if (esVacia(pilaArreglo)) { Console.Write(“INGRESAR VALORES A LA PILA \n”). x = Console. Elemento = Console.Empty.Write(“Ingrese un valor válido a la pila:”).NET class Program { static void Main(string[] args) { //Tamaño de pila int Max = 5. } else { Meter(pilaArreglo.Write(“MOSTRAR PILA \n”). //Menú de inicio usando un switch case do { Console.IsNullOrEmpty(Elemento)) { Console. // Espera entrada de teclado while (string. Console.Programación .Write(“La pila está vacia \n”). } else { Mostrar(pilaArreglo).ReadLine(). } if (estaLlena(pilaArreglo)) { Console. //Creando arreglo de pila string[] pilaArreglo = new string[Max].ReadLine().ReadLine(). case “2”: Console.Write(“La pila está llena. case “3”: 114 . Elemento).

default: Console. int count = 0.1. } else { Elemento = Cima(pilaArreglo). i >= 0. i--) { if ( _ pilaArreglo[i] != null) { fl = false. break.Length . } } return fl. i--) 115 .1.Equals(“0”)). . break. } break.Write(“El elemento de la cima es: {0} \n”.Write(“SUPRIME ELEMENTO DE LA PILA \n”).Write(“La pila está vacia \n”). i >= 0. } //Método que valida si la pila esta vacia static public bool esVacia(string[] _ pilaArreglo) { bool fl = true.Length .Write(“OBTIENE ELEMENTO DE LA CIMA \n”). } else { Suprime(pilaArreglo). Elemento). if (esVacia(pilaArreglo)) { Console.Write(“El elemento de la cima suprimido”). } break.//Usa método para obtener el ultimo valor que se agrego Console.NET Console. if (esVacia(pilaArreglo)) { Console. for (int i = _ pilaArreglo. } } while (!x.Write(“Opción no válida”). for (int i = _ pilaArreglo. case “4”: Console.Write(“La pila está vacia \n”). } //Método que valida si la pila esta llena static public bool estaLlena(string[] _ pilaArreglo) { bool fl = false.//Usa método para eliminar el ultimo valor que se agrego Console.

i >= 0.Empty.Length . fl = true. i--) { if ( _ pilaArreglo[i] != null) { _ pilaArreglo[i] = null. i--) { if ( _ pilaArreglo[i] != null) { _ pilaArreglo[i + 1] = _ elemento. } //Método que verifica cual es el elemento que esta arriba de la pila static public string Cima(string[] _ pilaArreglo) { string elemento = string. i--) { if ( _ pilaArreglo[i] != null) { elemento = _ pilaArreglo[i].1.Length) { fl = true. } } return fl.Programación .Length . string _ elemento) { bool fl = false. for (int i = _ pilaArreglo. for (int i = _ pilaArreglo. fl = true. } } if (count == _ pilaArreglo. } return fl. fl = true. i >= 0. } //Método que agrega un elemento a la pila static public bool Meter(string[] _ pilaArreglo. } //Método que elimina un elemento de la pila static public bool Suprime(string[] _ pilaArreglo) { bool fl = false. for (int i = _ pilaArreglo. } } return elemento. 116 .1. } else if ( _ pilaArreglo[i] == null && i == 0) { _ pilaArreglo[i] = _ elemento.NET { if ( _ pilaArreglo[i] != null) { count += 1. break. break.1.Length . break. . i >= 0.

las denominamos listas FIFO (First In First Out . ¿Qué función realliza este programa? 3. cada uno de los cuales tiene dos campos: uno de información y un apuntador al siguiente nodo de la lista. ¿Qué es una lista? Una lista es un conjunto de nodos. i >= 0. b.Write( _ pilaArreglo[i] + “\n”).Length . 4. Responde correctamente: a. 117 . ¿Qué es una lista LIFO? Es una lista que se comporta como una pila.NET break. } } return fl. Guarda el programa en la ubicación que indique tu profesor. .1. ¿Qué es una lista FIFO? Cuando una lista se comporta como una cola. i--) { if ( _ pilaArreglo[i] != null) { Console.primero en entrar primero en salir). Si las inserciones y extraccio- nes las hacemos por un mismo lado de la lista recibe el nombre delistas LIFO (Last In First Out . las inserciones las hace- mos al inal y las extracciones las hacemos por el frente de la lista. } } } } } 2. c. } //Método que muestra el contenido de la pila static public void Mostrar(string[] _ pilaArreglo) { for (int i = _ pilaArreglo.último en entrar primero en salir).

cambiando valores a las variables que se indican. ¿Para qué sirven los ciclos? Son instrucciones que permiten ejecutar repetidas veces una instrucción o un bloque de instrucciones mientras se cumpla una condición. Una enumeración o tipo enumerado es un tipo especial de estructura en la que los literales de los valores que pueden tomar sus objetos se indican explícitamente al deinirla.NET ¿Qué aprendiste? TEMA A: A reconocer los principales elementos que componen el entorno de desarrollo en . TEMA C: A desarrollar aplicaciones sencillas en modo consola. ¿Qué es un método? Un método es un conjunto de instrucciones a las que se les da un determinado nombre de tal manera que sea posible ejecutarlas en cualquier momento sin tenerlas que rescribir sino usando sólo su nombre. TEMA E: A utilizar las sentencias de control en sus aplicaciones. ¿Para qué sirven las instrucciones condicionantes? Las instrucciones condicionales son instrucciones que permiten ejecutar bloques de instrucciones sólo si se da una determinada condición. 2.Programación . 4. TEMA D: A escribir una operación algebráica. arreglos y colecciones de objetos. TEMA F: A desarrollar ampliamente la aplicación de las matrices. Define enumeración. 3. EVALUACIÓN 03 1.NET TEMA B: A identificar Visual C# como entorno de desarrollo. 118 .

NET Autor: Carlos Zepeda Chehaibar . D Nombrar los requerimientos para el manejo de archivos en C#. B Realizar interfaces graficas usando los diferentes controles que proporciona C#. P rogra mación Un id ad 04 or ientad a a objeto s NIVEL: Intermedio DURACIÓN SUGERIDA: 4 SESIONES / 45-50 MINUTOS Durante el desarrollo de esta unidad aprenderás a: A Reconocer el concepto de clase y el modo de acceso a estas en la programación con C#. comportamiento e identidad. Programación . C Conocer y manejar excepciones en C#. que son: estado.Los objetos son entidades con valores bien diferenciados en sus atributos.

Una clase es la definición de las características concretas de un determinado tipo de objetos. y un programa en C# no es más que un conjunto de objetos que interaccionan unos con otros a través de sus métodos. Aunque en C# hay muchos tipos de miembros distintos.Programación . de cuáles son los datos y los métodos de los que van a disponer todos los objetos de ese tipo. Es decir. El nombre que demos al campo puede ser cualquier identificador que queramos siempre y cuando siga las reglas descritas en Aspectos Léxicos para la escritura de identificadores y no coincida con el nombre de ningún otro miembro previamente definido en la definición de clase.NET TEMA A Clases y Objetos C# es un lenguaje orientado a objetos puro. 120 . 4-01 VIDEO Clases Definición de clases La sintaxis básica para definir una clase es la que a continuación se muestra: class <nombreClase> { <miembros> } De este modo se definiría una clase de nombre <nombreClase> cuyos miembros son los definidos en <miembros> Los miembros de una clase son los datos y métodos de los que van a disponer todos los objetos de la misma. lo que significa que todo con lo que vamos a trabajar en este lenguaje son objetos. Un objeto es un agregado de datos y de métodos que permiten manipular dichos datos. Para definir cuáles son los campos de los que una clase dispone se usa la siguiente sintaxis dentro de la zona señalada como <miembros> en la definición de la misma: <tipoCampo> <nombreCampo>. por ahora vamos a considerar que estos únicamente pueden ser campos o métodos y vamos a hablar un poco acerca de ellos y de cómo se definen: ¤ Campos: Un campo es un dato común a todos los objetos de una determinada clase. Un ejemplo de cómo declarar una clase de nombre A que no tenga ningún miembro es la siguiente: class A {} Una clase así declarada no dispondrá de ningún miembro a excepción de los implícitamente definidos de manera común para todos los objetos que creemos en C#. se suele decir que el tipo de dato de un objeto es la clase que define las características del mismo. Por esta razón.

// Campo de cada objeto Persona que almacena su NIF } Según esta definición. En realidad lo marcado como <objeto> no tiene porqué ser necesariamente el nombre de algún objeto.647 (32 bits). ¤ Métodos: Un método es un conjunto de instrucciones a las que se les asocia un nombre de modo que si se desea ejecutarlas basta referenciarlas a través de dicho nombre en vez de tener que escribirlas. y el tipo de dato al que pertenece este objeto es lo que se indica en 121 . los métodos permiten manipular los datos almacenados en los objetos. // Campo de cada objeto Persona que almacena su nombre int Edad. Dentro de estas instrucciones es posible acceder con total libertad a la información almacenada en los campos pertenecientes a la clase dentro de la que el método se ha definido.483.Edad = 20.147. y en <tipoCampo> hemos de indicar cuál es el tipo de dato del objeto que vamos a crear. Programación orientada a objetos Los campos de un objeto son a su vez objetos. La sintaxis que se usa en C# para definir los métodos es la siguiente: <tipoDevuelto> <nombreMétodo> (<parametros>) { <instrucciones> } Todo método puede devolver un objeto como resultado de la ejecución de las instrucciones que lo forman. todos los objetos de clase Persona incorporarán campos que almacenarán cuál es el nombre de la persona que cada objeto representa.483.648 y 2.<campo> Por ejemplo. por lo que como al principio del tema se indicó. mientras que string es un tipo predefinido que permite almacenar cadenas de texto que sigan el formato de los literales de cadena. sino que puede ser cualquier expresión que produzca como resultado una referencia no nula a un objeto (si produjese null se lanzaría una excepción del tipo predefinido System.147. para acceder al campo Edad de un objeto Persona llamado p y cambiar su valor por 20 se haría: p. Para acceder a un campo de un determinado objeto se usa la sintaxis: <objeto>. Éste tipo puede corresponderse con cualquiera que los predefinidos en la BCL o con cualquier otro que nosotros hallamos definido siguiendo la sintaxis arriba mostrada. El tipo int incluido en la definición del campo Edad es un tipo predefinido en la BCL cuyos objetos son capaces de almacenar números enteros con signo comprendidos entre -2. A continuación se muestra un ejemplo de definición de una clase de nombre Persona que dispone de tres campos: class Persona { string Nombre. cuál es su edad y cuál es su NIF.NullPointerException). // Campo de cada objeto Persona que almacena su edad string NIF.

¤ protected: Acceso limitado a la clase contenedora o a los tipos derivados de esta clase. ¤ private: Acceso limitado al tipo contenedor. Es el más restrictivos de todos los modificadores de accesibilidad. Si no devuelve nada se indica void. Este es modificador de accesibilidad con mayor “cobertura”. y si devuelve algo es obligatorio finalizar la ejecución de sus instrucciones con alguna instrucción return <objeto>. delegados. Dependiendo de la accesibilidad declarada tendremos distintos tipos de accesos a esos elementos. Este modificador solamente se usa con clases que se deriven de otras. Aunque. propiedades y campos. métodos. Una mezcla de los dos modificadores anteriores. 4-02 LÁMINA Anidación de tipos Accesibilidad de Variables Las variables declaradas dentro de un procedimiento solo son accesibles dentro de ese procedimiento. enumeraciones. interfaces. 4-01 LÁMINA Operador New Accesibilidad La accesibilidad es la característica que podemos aplicar a cualquiera de los elementos que definamos en nuestro código. ¤ internal: Acceso limitado al proyecto actual (o ensamblado). eventos. en este caso solo se puede aplicar el ámbito privado. estructuras. podemos acceder a cualquier miembro público desde cualquier parte de nuestro código.NET <tipoDevuelto>. que indique qué objeto ha de devolverse. este acceso no restringido puede verse reducido dependiendo de dónde lo usemos. Los modificadores de accesibilidad que podemos aplicar a los tipos y elementos definidos en nuestro código pueden ser cualquiera de los mostrados en la siguiente lista: ¤ public: Acceso no restringido. Aunque no serán aplicables en espacios de nombres (Namespace) ni en los miembros de las interfaces y enumeraciones.Programación . ¤ protected internal: Acceso limitado al proyecto actual o a los tipos derivados de la clase contenedora. aunque no podremos usar 122 . como veremos. Estos modificadores de accesibilidad los podemos usar tanto en clases.

mientras que en las estructuras no podremos declarar ningún miembro como protected o protected internal. pero admitirán cualquiera de los modificadores. //Menú do { Console. las clases y estructuras definidas a nivel de un espacio de nombres solo pueden ser declaradas como public o internal. //Tamaño del arreglo string[] ColaArreglo = new string[T].Generic.Empty. Los miembros de las clases y estructuras serán privados de forma predeterminada. variable o procedimiento en la que no hemos indicado el modificador de accesibilidad dependerá del sitio en el que lo hemos declarado. interfaz o enumeración está definida dentro de otro tipo. //Frente int NE = 0. crea un nuevo proyecto de consola y escribe el siguiente código: using System. Por otro lado.Collections. salvo las interfaces y enumeraciones que no pueden ser protected.//Número de elementos en la cola string x = string.Linq. ya que una estructura no puede usarse como base de otro tipo de datos. using System. por defecto serán internal. los miembros de esos tipos también permiten diferentes niveles de accesibilidad. PROYECTO 4-01 Colas 1. en esos miembros podemos indicar cualquiera de los cinco niveles de accesibilidad. using System.Empty. En Visual C# 2010 Express. namespace ColasCirculares { class Program { static void Main(string[] args) { int T = 5. y si no llevan un modificador de accesibilidad. aunque no se permite el uso de esa instrucción. en el caso de las clases. las interfaces y enumeraciones por defecto serán públicas. Por otro lado. siempre serán públicos. es decir serán visibles en todo el proyecto actual. //Dato int Frente = -1. Cuando la clase.Write(“\n\nMenú \n 1)Meter elemento a la cola \n 2)Sacar elemento de la cola \n 3)Muestra cola \n 0)Salir \n\n”).Text. using System. Por ejemplo. Programación orientada a objetos la instrucción private. en el caso de las interfaces y enumeraciones. 123 . //cola string Elemento = string. sino declararlas de la forma habitual. estructura. la accesibilidad predeterminada será private. La accesibilidad de un tipo.

ColaArreglo).Write(“Ingrese un valor válido a la cola:”).Write(“MOSTRAR COLA \n”). default: Console. Elemento = Console. } break. } if (!estaLlena(NE. string[] _ arregloCola.Write(“El elemento que se saco de la cola es {0}”.ReadLine().Write(“SACAR ELEMENTO DE LA COLA \n”). if (!estaVacia(NE)) { Elemento = Sacar(ref Frente. } else { Console. } break.Write(“Opción no válida”).ReadLine().Write(“La cola está vacia \n”). Elemento).ReadLine().Programación .IsNullOrEmpty(Elemento)) { Console. T. ColaArreglo. Elemento = Console. //Switch que espera la opción switch (x) { case “1”: Console. if (!estaVacia(NE)) { MuestraCola(Frente.Write(“INGRESAR VALORES A LA COLA \n”).NET x = Console. while (string. ColaArreglo). break.Write(“La cola está llena”). int _ tamañoCola. T)) { Meter(ref Frente. } break. ref NE. ref NE.Equals(“0”)). } //Método que agrega elementos a la cola public static void Meter(ref int _ frente.// Llama al método de agregar elemento a la cola } else { Console. T.//Llama al método para mostrar el contenido de la cola } else { Console. case “3”: Console.// Llama al método que elimina un elmento de la cola Console. Console. } } while (!x. ref int _ numeroElementosCola. case “2”: Console. Elemento).Write(“La cola está vacia \n”).Write(“Escriba el dato a ingresar a la cola:”). string _ elemento) 124 .

Length.1) { _ arregloCola[i] = _ arregloCola[i + 1]. //Mueve los índices para evitar desperdiciar un registro for (int i = 0. if ( _ frente != -1) { i = ( _ frente + _ numeroElementosCola). i++) { if (i < _ arregloCola. Programación orientada a objetos { int i. _ arregloCola[ _ frente] = null. ref int _ numeroElementosCola. _ numeroElementosCola += 1. _ elemento = _ arregloCola[ _ frente]. } return fl. _ frente = i. _ numeroElementosCola -= 1. } _ arregloCola[i] = _ elemento. } } _ frente = 0. i < _ arregloCola. } //Método que elimina un elemento de la cola public static string Sacar(ref int _ frente.Length . int _ tamañoCola. int _ tamañoCola) { bool fl = false. //Si es igual a cero la cola está vacia if ( _ numeroElementosCola == 0) { fl = true. _ arregloCola[i + 1] = null. return _ elemento. } //Método que verifica que la cola no este vacia public static bool estaVacia(int _ numeroElementosCola) { bool fl = false. string[] _ arregloCola) 125 . } return fl. } //Método que muestra el contenido de la cola private static void MuestraCola(int _ frente. string[] _ arregloCola) { string _ elemento. } //Método que verifica que la cola no este llena public static bool estaLlena(int _ numeroElementosCola. } else { i = 0. //Si ambos son iguales la cola está llena if ( _ numeroElementosCola == _ tamañoCola) { fl = true.

Write(“\n”). ¿Que es un objeto en C#? Un objeto es un agregado de datos y de métodos que permiten manipular dichos datos. 4. 6. 126 . Guarda el programa en la ubicación que indique tu profesor.Write(“[Frente] “ + _ arregloCola[i]).Length. } Console.Programación . y un programa en C# no es más que un conjunto de objetos que interaccionan unos con otros a través de sus métodos. 5. i++) { if ( _ frente == i) { Console. } } } } 2. ¿Qué es accesibilidad? La accesibilidad es la característica que podemos aplicar a cualquiera de los elementos que deinamos en nuestro código.Write(“[“ + i + “ ] “ + _ arregloCola[i]).NET { for (int i = 0. ¿Qué sucede con el método MuestraCola? 3. i < _ arregloCola. ¿Qué es una clase? Una clase es la deinición de las características concretas de un determinado tipo de objetos. } else { Console.

cs y Form1. Si vemos la ventana Explorador de soluciones tenemos tres archivos generados en forma automática: Program. Imagen 4-1: Cuadro de diálogo: Nuevo proyecto c.Net seleccionamos la opción: Archivo/ Nuevo proyecto. b.cs.Designer.net: Imagen 4-3: Control “Button” 127 .. Seleccionamos la plantilla “Aplicación de Windows Forms”. Form1. Para crear una aplicación que utilice esta librería debemos crear un proyecto. Ahora podemos seleccionar un control visual de la ventana Cuadro de herramientas (seleccionemos el control Button) y seguidamente presionemos el botón izquierdo del mouse dentro del formulario que se encuentra en la parte central del Visual Studio . La realidad es que es muy común la necesidad de hacer la entrada y salida de datos mediante una interfaz más amigable con el usuario. Utilizaremos las Windows Forms. En C# existen varias librerías de clase para implementar interfaces visuales. Programación orientada a objetos TEMA B Interfaz Hasta ahora hemos resuelto todos los algoritmos haciendo las salidas a través de una consola en modo texto. Los pasos son los siguientes: a. Desde el menú de opciones del Visual Studio . Ahora ya tenemos un esqueleto para desarrollar nuestra aplicación..cs: Imagen 4-2: Ventana: Explorador de soluciones d.

).Programación . MonthCalendar. Ahora podemos analizar la ventana Propiedades que nos muestra las propiedades del objeto seleccionado del formulario. Por último vamos a ver los contenidos de los archivos generados automáticamente por el programa Imagen 4-5: Programa en ejecución 4-02 VIDEO Interfaz gráfica Ventana Propiedades Esta ventana permite inicializar los valores de las propiedades del objeto que se encuentra seleccionado en el formulario (Button. TextBox etc. Por ejemplo. A medida que seleccionamos un objeto en la ventana de “Diseño” podemos ver como se actualiza la ventana Propiedades. Podemos observar la lista de eventos que puede reaccionar el objeto seleccionado en ese momento.NET e. Cuando ejecutamos la aplicación el resultado podemos ver que es muy distinto a la interfaz en modo texto vista hasta el momento: g. si tenemos seleccionado un objeto de la clase Button el evento más 128 . Ventana Eventos La ventana de eventos coincide con la ventana de propiedades. la propiedad Text de la clase Button permite fijar la etiqueta que muestra el botón. Podemos por ejemplo. Por ejemplo si disponemos dos objetos de la clase Button y seleccionamos uno de ellos podremos editar las propiedades del mismo en ell. Por ejemplo. Para activar la lista de eventos disponibles para un objeto debemos presionar el botón . si tenemos seleccionado el botón cambiar la propiedad text (la misma cambia la etiqueta que muestra el botón): Imagen 4-4: Ventana Propiedades f.

Text = “”. using System.Drawing. Para disponer el código para dicho evento debemos hacer doble clic sobre dicho evento (esto hace que se active la ventana del editor y genere automáticamente el método asociado a dicho evento): private void button1 _ Click(object sender. 3. 2. 129 . Cuida el aspecto de tu formulario. using System. Programación orientada a objetos común que deberemos implementar es el Click (este evento se dispara cuando en tiempo de ejecución del programa se presiona el botón). using System. ¤ Un control Label ¤ A cada botón asignale un día de la semana.ComponentModel. using System. sea atractivo visualemente. Escribe el código fuente de tu programa: using System. using System. elabora un formulario debe contener: ¤ Siete botones. para que al presionar un boton el control label muestre el día seleccionado.Linq.Generic.Data. conservando el orden de los días y utiliza las opciones del la ventana propiedades para que el texto del control Label. using System. Abre Visual C# 2010 Express.Collections. En un proyecto nuevo con la plantilla Aplicación de Windows Forms.Text. ¤ Utiliza la instrucción label1. EventArgs e) { } 4-03 LÁMINA Controles comunes PROYECTO 4-02 Botones 1. ¤ Cada botón debe responder al evento Click.

Text = “Miercoles”. namespace WindowsFormsApplication6 { public partial class Form1 : Form { public Form1() { InitializeComponent(). Guarda el programa en la ubicación que indique tu profesor. } private void button1_Click(object sender. } private void button2_Click(object sender. EventArgs e) { label1. } private void button6_Click(object sender. EventArgs e) { label1.Text = “Sábado”.NET using System. } private void button3_Click(object sender.Programación . EventArgs e) { label1. } } } 4.Forms.Windows. 130 .Text = “Lunes”. EventArgs e) { label1. EventArgs e) { label1.Text = “Martes”.Text = “Viernes”. EventArgs e) { label1. EventArgs e) { label1.Text = “Domingo”. } private void button5_Click(object sender. } private void button4_Click(object sender.Text = “Jueves”. } private void button7_Click(object sender.

Programación orientada a objetos TEMA C Excepciones (Instrucción Try) Una vez lanzada una excepción es posible escribir código que es encargue de tratarla. Si al compilar el fuente hubiésemos utilizado la opción /debug.Main() Como se ve.G() in E:\c#\Ej\ej. at PruebaExcepciones.F() in E:\c#\Ej\ej. si este código no se escribe la excepción provoca que la aplicación aborte mostrando un mensaje de error en el que se describe la excepción producida (información de su propiedad Message) y dónde se ha producido (información de su propiedad StackTrace) Así.cs:line 16 at PruebaExcepciones. at A. class PruebaExcepciones { static void Main() { A obj1 = new A().cs:line 22 at A. } } class A { public void F() { G().pdb con información extra sobre las instrucciones del ejecutable generado que permitiría que al ejecutarlo se mostrase un mensaje mucho más detallado con información sobre la instrucción exacta que provocó la excepción. el compilador habría creado un fichero .DivideByZeroException: Attempted to divide by zero. int d = 2/c. al ejecutarlo se intentará dividir por cero en esa instrucción y ello provocará que aborte la aplicación mostrando el siguiente mensaje: Unhandled Exception: System. } } Al compilarlo no se detectará ningún error ya que al compilador no le merece la pena calcular el valor de c en tanto que es una variable.F(). dado el siguiente código fuente de ejemplo: using System. Sin embargo.cs:line 8 131 . } static public void G() { int c = 0.DivideByZeroException: Attempted to divide by zero.Main() in E:\c#\Ej\ej. por lo que no detectará que dividir 2/c no es válido. obj1. la cadena de llamadas a métodos que llevaron a su ejecución y el número de línea que cada una ocupa en el fuente: Unhandled Exception: System. en este mensaje se indica que no se ha tratado una excepción de división por cero (tipo DivideByZeroException) dentro del código del método Main() del tipo PruebaExcepciones. Por defecto.

en los catchs se busca siempre orden de aparación textual. Así. entonces se buscaría en el código desde el que se llamó al método que produjo la excepción. 4-04 LÁMINA Uso de Catch Si así se termina llegando al método que inició el hilo donde se produjo la excepción y tampoco allí se encuentra un tratamiento apropiado se aborta dicho hilo. } } Para simplificar tanto el compilador como el código generado y favorecer la legibilidad del fuente. 132 .. por lo que para evitar catchs absurdos no se permite definir catchs que puedan capturar e xcepciones capturables por catchs posteriores a ellos en su misma instrucción try.NET Si se desea tratar la excepción hay que encerrar la división dentro de una instrucción try con la siguiente sintaxis: try <instrucciones> catch (<excepción1>) <tratamiento1> catch (<excepción2>) <tratamiento2> . finally <instruccionesFinally> El significado de try es el siguiente: si durante la ejecución de las <instrucciones> se lanza una excepción de tipo <excepción1> (o alguna subclase suya) se ejecutan las instrucciones <tratamiento1>. } catch (DivideByZeroException) { d=0. si fuese de tipo <excepción2> se ejecutaría <tratamiento2>.. y si ese hilo es el principal (el que contiene el punto de entrada) se aborta el programa y se muestra el mensaje de error con información sobre la excepción lanzada ya visto. para tratar la excepción del ejemplo anterior de modo que una división por cero provoque que a d se le asigne el valor 0. Si no se encontrase ninguna y la instrucción try estuviese anidada dentro de otra.Programación . y así hasta que se encuentre una cláusula catch que pueda tratar la excepción producida. int d = 2/c. se miraría en los catch de su try padre y se repetiría el proceso. se podría reescribir G() de esta otra forma: static public void G() { try { int c = 0. Si al final se recorren todos los trys padres y no se encuentra ningún catch compatible.

El bloque finally es opcional.WriteLine(“En el catch de Main()”). toda instrucción try ha de incluir al menos un bloque catch o un bloque finally. Console. } 133 .WriteLine(“finally de Main()”). mientras que en el primero lo harán después de tratar la excepción pero antes de seguirse ejecutando por la instrucción siguiente al try que la trató. de algún try padre suyo o de alguno de los métodos que provocaron la llamada al que produjo la excepción. En un proyecto nuevo de consola escribe el siguiente código: using System.se seguirá ejecutando a partir de las instrucciones siguientes a ese try. Dicha excepción sería propagada al try padre o al método llamante padre del try que contuviese el finally. Las <instruccionesFinally> de este bloque se ejecutarán tanto si se producen excepciones en <instrucciones> como si no. y si se incluye ha de hacerlo tras todas los bloques catch.WriteLine(“Al final del try de Main()”). Abre Visual C# 2010 Express. } catch (MiException) { Console. PROYECTO 4-03 Excepciones 1. Aunque los bloques catch y finally son opcionales. antes de pasar a buscar en su try padre o en su método llamante padre se ejecutarán las <instruccionesFinally>. class MiException:Exception {} class Excepciones { public static void Main() { try { Console. Sólo si dentro de un bloque finally se lanzase una excepción se aborta la ejecución del mismo.WriteLine(“En el try de Main()”). Si en un try no se encuentra un catch compatible. Programación orientada a objetos También hay que señalar que cuando en <instrucciones> se lance una excepción que sea tratada por un catch de algún try -ya sea de la que contiene las <instrucciones>. } finally { Console. En el segundo caso sus instrucciones se ejecutarán tras las <instrucciones>. Método().

} catch (OverflowException) { Console. 134 .WriteLine(“En el catch de Método()”).WriteLine(“finally de Método()”).WriteLine(“En el try de Método()”). } } public static void Método2() { try { Console.WriteLine(“finally de Método2()”).WriteLine(“Al final del try de Método()”).NET } public static void Método() { try { Console.WriteLine(“Al final del try de Método2()”).WriteLine(“En el try de Método2()”). Console. Qué función realliza este programa? 3. } finally { Console. Guarda el programa en la ubicación que indique tu profesor. } finally { Console. Recuerda ejecutar la aplicación desde la consola de Windows® para revisar su función. } } } 2. } catch (DivideByZeroException) { Console.WriteLine(“En el catch de Método2()”).Programación . throw new MiException(). Método2(). Console.

CD. Estos datos pueden ser transferidos en dos posibles direcciones: ¤ Si los datos son transferidos desde una fuente externa al programa. etc. En cualquiera de estos medios. Object Marshal By Ref Object Binary Reader Binary Writer Stream Text Reader Text Writer Buffered Stream String Reader String Writer Memory Stream Stream Reader Stream Writer File Stream Un stream es como se denomina a un objeto utilizado para transferir datos. discos duros. entonces se habla de “leer desde el stream”.NET se puede encontrar muchas clases que representan este concepto que trabaja con archivos o con datos de memoria. 4-05 LÁMINA Archivos Complemento Streams La lectura y escritura a un archivo son hechas usando un concepto genérico llamado stream. entonces se habla de “escribir al stream”. como un flujo de datos. la unidad de almacenamiento de información se denomina archivo. En el ambiente . cuando los datos son pensados como una transferencia de un punto a otro. 135 . La idea detrás del stream existe hace tiempo. Programación orientada a objetos TEMA D Archivos La manera de almacenar y recuperar información que perdure en el tiempo se basa en el uso de “memoria secundaria”. ¤ Si los datos son transferidos desde el programa a alguna fuente externa.) y ocasionalmente cintas. es decir. DVD. System. compuesta esencialmente por discos (diskettes.

Las clases más relacionadas con la escritura y lectura de archivos (File Input/Output o File I/O) son: ¤ FileStream: Cuyo propósito es lectura y escritura de datos binarios (no de texto legible).NET Frecuentemente. a cualquier archivo de tipo binario. por lo que el concepto es utilizado ampliamente con fuentes de información externas de diversos tipos. pero eso no necesariamente es el caso. ¤ La Consola ¤ La Impresora ¤ Otros .. Usualmente. Esta declaración evita la interpretación de los dos caracteres ‘\’ como símbolos especiales y el string queda correctamente inicializado. inclusive los de texto. Puede ser utilizado por cualquier clase de stream. donde el buffering está ya incluido. ¤ Lectura o escritura a un área de memoria. Algunas clases que C# provee para resolver este acceso a fuentes diversas incluyen las clases de tipo: Reader y Writer. Algunas otras posibilidades fuera de los archivos incluyen: ¤ Leer o escribir datos a una red utilizando algún protocolo de red.cs”). se utiliza una sintaxis particular.El uso de streams para la lectura y escritura de archivo es directa pero lenta. Estas clases se asumen como de un nivel más alto que FileStream. que en C# se utiliza como caracter de control para símbolos especiales (como el cambio de línea: ‘\n’). la fuente externa será un archivo.Programación . Bufferedstream Esta clase se utiliza para leer y para escribir a otro stream.txt”. entendiendo que no es el mismo sentido el que se le quiere dar en la interpretación de rutas de archivos (por ej: “C:\Mis documentos\Programas\ejemplo. anteponiendo el símbolo ‘@’ antes del string con la ruta del archivo. ¤ StreamReader y StreamWriter: Las cuales están diseñadas para lectura y escritura de archivos de texto. Para operaciones de archivo es posible utilizar FileStream. Por esta razón la clase BufferedStream existe y es más eficiente. Sin embargo. Es decir: string rutaarchivo = @”C:\Temp\archivo.. 136 . Una observación acerca de la declaración de nombres/rutas de archivos en C#. la ruta de un archivo contiene el carácter ‘\’. donde la intención es que estos datos sean recibidos o enviados por otro computador. aunque se puede utilizar para acceder a cualquier tipo de archivo.

ReadLine()). /// Permite leer un archivo /// <param name=”sFileName”>Nombre del archivo</param> Private void ReadFile(string sFileName) { string sPath = “c:\\folder\\”. using System. using System. FileMode. FileAccess.ReadToEnd(). //verifico que exista el archivo if (File. En un proyecto nuevo de consola escribe el siguiente código: using System. } } static void Main(string[] args) { string sPath = “c:\\folder\\”.IO. while (reader.Open.Close().IO.Read). FileStream stream = new FileStream(fileName. Response.Read. //Leo toda la información del archivo string sContent = sr.ReadWrite).Close(). sr.Write(“Contenido = “ + sContent).Exists(sFileName)) { FileStream fs = new FileStream(sFileName.FileMode. Programación orientada a objetos PROYECTO 4-04 Archivos externos 1. Guarda el programa en la ubicación que indique tu profesor. string sFileName = sPath + “archivo.Close().txt”. FileAccess. ¿Qué función realliza este programa? 3.txt”. reader. string sFileName = sPath + “archivo. } 2. Abre Visual C# 2010 Express.txt”.WriteLine(reader. 137 .Peek() > -1) Console. ReadFile(sFileName). StreamReader reader = new StreamReader(stream). static void Main(string[] args) { string fileName = “temp. FileShare. } using System. //cierro los objetos fs.Open. StreamReader sr = new StreamReader(fs).

138 Powered by TCPDF (www. y si se incluye ha de hacerlo tras todas los bloques catch 4. CD.org) . 3. ¿En dónde se coloca el bloque finally? El bloque inally es opcional.) y ocasionalmente cintas 5. compuesta esencialmente por discos (diskettes. Programación . 1. ¿Qué es un stream? Un stream es como se denomina a un objeto utilizado para transferir datos.tcpdf. ¿Para que sirve el cuadro de herramientas de Visual C# 2010 Express? El cuadro de herramientas contiene todas las componentes visuales que nos permiten elaborar nuestro formulario. TEMA B: A elaborar aplicaciones que se ejecutan desde un entorno gráfico. discos duros. ¿Qué es una clase? Una clase es la deinición de las características concretas de un determinado tipo de objetos. TEMA D: A utilizar archivos externos en el desarrollo de aplicaciones. 2. EVALUACIÓN 04 1. ¿Qué es la memoria secundaria? La manera de almacenar y recuperar información que perdure en el tiem- po se basa en el uso de “memoria secundaria”. TEMA C: A controlar resultados inesperados en sus aplicaciones mediante excepciones. etc.NET ¿Qué aprendiste? TEMA A: A reconocer que un objeto contiene toda la información que permite definirlo e identificarlo frente a otros objetos. DVD.