Introducción
Las aplicaciones de consola son el remanente de los antiguos sistemas operativos, para servidores
y las computadoras personales, la cual fungía como medio de comunicación entre el ordenador y
el usuario. Actualmente las aplicaciones de consola se siguen utilizando principalmente en
aplicaciones de segundo plano, archivos de procesos por lotes, configuraciones del sistema etc.
Por lo que a manera didáctica las aplicaciones de consola son la mejor forma de empezar a
aprender un lenguaje de programación.
Antes de empezar a programar el primer programa en visual c# es necesario conocer el entorno de
programación:
Dado como dato el sueldo de un trabajador, se requiere calcular el sueldo nuevo que tendrá
después de un aumento, considerando las siguientes características:
a) Si el sueldo original es mayor o igual a 10,000, el aumento será del 10%
b) Si el sueldo original es menor a 10,000, el aumento será del 12%
Se requiere que se imprima el salario nuevo al finalizar el cálculo
¿Cuál será el dato de entrada que deberá ser ingresado por el usuario?
Seleccione una:
El sueldo nuevo
El sueldo original (Con base en este dato se realizará el proceso y es la variable del proceso)
Nombre del empleado
Porcentaje de aumento
Su respuesta es correcta.
Pregunta 2
Selecciona la opción que representaría una forma en la que podemos expresar con pseudocódigo
la asignación del porcentaje de aumento al sueldo
Seleccione una:
aumentoSueldo = SueldoOriginal * PorcentajeAumento
sueldoNuevo = SueldoOriginal + PorcentajeAumento
SI sueldoNuevo ES MAYOR O IGUAL A 10000 ENTONCES
IMPRIME sueldoNuevo
SI sueldoNuevo ES MENOR A 10000 ENTONCES
IMPRIME sueldoOriginal
SI sueldoOriginal ES MAYOR O IGUAL A 10000 ENTONCES
PorcentajeAumento = 10%
SI sueldoOriginal ES MENOR A 10000 ENTONCES
PorcentajeAumento = 12%
Esta es una forma en pseudocódigo de representar la asignación
SI sueldoOriginal ES MAYOR O IGUAL A 15000 ENTONCES
PorcentajeAumento = 7%
SI sueldoOriginal ES MENOR A 15000 ENTONCES
PorcentajeAumento = 5%
Su respuesta es correcta.
Pregunta 3
De las siguientes opciones, ¿cuál sería la representación en un diagrama de flujo con la que se
representaría la decisión de cuál porcentaje de aumento a aplicar de acuerdo a la variable
sueldoOriginal?
Pregunta 4
De acuerdo al planteamiento del problema y al análisis del mismo, ¿cuál es la salida esperada?
Seleccione una:
El porcentaje de aumento
El sueldo nuevo
De acuerdo al planteamiento, esta es la variable de salida
El sueldo original
El aumento respecto al sueldo anterior
Su respuesta es correcta.
Principio del formulario
Introducción P2
En el diseño de soluciones básicas, utilizando el lenguaje de programación C, es muy importante
conocer los operadores aritméticos para realizar cálculos, los relacionales para poder tomar
decisiones y las sentencias de impresión de caracteres para solicitar los datos y mostrar los
resultados obtenidos.
Operadores aritméticos
Se utilizan para realizar los cálculos básicos con los datos que se tienen. Los operadores básicos en
la mayoría de los lenguajes de programación actuales son:
Estos son unos ejemplos de operaciones básicas:
A = 8 + 6; //El resultado será 14 y se almacena en la variable A
B = A – 3; //B tomará el valor de 11, que es el resultado de la resta
C = B / 2; //C tomará el resultado de la división 5.5
D = B % 4; //El valor de D será 3, puesto que 11 entre 4 es igual a 2 enteros y sobran 3
//La operación módulo (%) calcula lo que sobra de la división
Operadores relacionales
Se usan para realizar comparaciones entre valores y poder tomar un camino si dicha comparación
es verdadera, o bien otro camino si resulta falsa. Los operadores relacionales son:
Considerando los valores calculados para A, B, C y D, anteriormente, las siguientes expresiones
relacionales darían estos resultados:
A < B El resultado de la expresión sería falso, porque 14 no es menor que 11
B > C Sería verdadero porque 11 es mayor que 5.5
D <= C Es verdadero porque 3 es menor que 5.5 (Aunque no sea igual, y si fuera igual
también sería verdadero, aunque no sea menor).
A >= B + D Es verdadero porque 14 (Valor de A) es igual a 14 (Suma de B y D), aunque
no sea mayor.
A == 5 * D Sería falso porque 14 no es igual a 15.
D != C Es verdadero porque 3 es diferente a 5.5
Como pudiste observar, el operador <= evalúa si los valores implicados son iguales o bien si el
primero es menor que el segundo, y con cualquiera de estas dos comparaciones que resulte cierta,
el valor de la expresión será verdadero; pasa lo mismo con >=
Este tipo de expresiones se usan con la condicional if, la cual evalúa la expresión que se le
proporcione, y si resulta verdadera se ejecuta el bloque de instrucciones que siguen a la sentencia
if, pero si la expresión resulta falsa, se ejecuta el bloque que sigue a la sentencia else, en caso de
haberlo.
Retomando los valores de las variables A, B, C y D, te mostramos estos ejemplos de if:
if(A>B)
{ [Link](“A es mayor que B”); //Este bloque se ejecuta porque 14 es
[Link](“Iniciando proceso de caso verdadero”); // mayor que 11
}
else
{ [Link](“A no es mayor que B”); //En este caso, este bloque no se ejecuta
[Link](“Iniciando proceso de caso falso”);
}
if(B % 2 == 0)
{ [Link](“B es un número par”); //Este bloque no se ejecuta porque lo que
[Link](“Iniciando proceso de caso verdadero”); // sobra de dividir 11
} // entre 2 es 1 (11 / 2 es igual a 5 y sobra 1), y 1 no es igual a 0
else
{ [Link](“B es un número impar ”); //Se ejecuta este bloque porque la
[Link](“Iniciando proceso de caso falso”); //expresión es falsa
}
Secuencias de escape
Son un par de caracteres especiales que permiten dar un formato especial a la salida de
información en la consola.
Siempre que utilices estas secuencias de escape, asegúrate de usar la diagonal invertida \ y no la
normal /
Ejemplo del uso de secuencias de escape:
[Link](“Ejemplo del uso de secuencias de escape\r”);
[Link](“Encimado\n**********\n”);
[Link](“Recuerden usar \\ y no / \n”);
[Link](“Mi nombre es\t \”Secuencia de escape\”);
La salida en consola de este código sería la siguiente:
La primer línea se imprime en consola y se realiza un retroceso del cursor al inicio de la misma,
quedando justo debajo de la letra E de la palabra Ejemplo, por lo que la palabra Encimado
sobrescribe la palabra Ejemplo y el espacio que le sigue; después hay un salto de línea que hace
que los 10 asteriscos se impriman en la siguiente línea sin sobrescribir nada; en la siguiente línea
vemos como se muestra la diagonal invertida, y en la última hacemos un avance de tabulación (8
espacios) antes de mostrar el nombre entre comillas.
Se requiere elaborar un programa en C#, que solicite un número entero X al usuario; si dicho
número es par, se mostrará en consola un triángulo formado por asteriscos; pero si el valor es
impar, se mostrará un rectángulo; por último, después de imprimir la figura, se mostrará un
mensaje que indique si el número es positivo, negativo o nulo.
Con base en lo anterior, ¿Cuál será la sentencia que permita determinar si el valor de X es un
número par?
Seleccione una:
if (X/2 >=1)
if (X/2 != 0)
if (X%2 > 0)
if (X%2 == 0) (Es correcto, si el residuo de la división entre 2 es 0, el número es par)
Su respuesta es correcta.
Pregunta 2
Para mostrar en consola el triángulo formado por asteriscos ¿Cuál es la instrucción correcta?
Seleccione una:
[Link](“****\t***\t**\t*”);
[Link](“*/r**/r***/r****”);
[Link](“*\n**\n***\n****”);
[Link](“*/n**/n***/n****”);
Su respuesta es correcta.
Pregunta 3
¿Qué instrucción nos permitirá saber si el número X es positivo?
Seleccione una:
if (X > 0) (Correcto, los números mayores que 0 son positivos)
if (X < 0)
if (X == 0)
if (X = 0)
Su respuesta es correcta.
Pregunta 4
¿Cómo se le conoce a la operación que obtiene lo que sobra al realizar una división?
Seleccione una:
Redondeo
Módulo (Correcto, así se llama la operación que obtiene el residuo)
Ajuste
Porcentaje
Su respuesta es correcta.
Pregunta 5
Para saber si el número X es nulo ¿Cuál sería la sentencia correcta?
Seleccione una:
if (X = 0) (Incorrecto, realiza una asignación y no comparación)
if (X == 0)
if (X%2 == 0)
if (X%2 != 0)
Su respuesta es incorrecta.
Introducción P3
Por lo general, las instrucciones en una aplicación se ejecutan una después de la otra, en el orden
en que se escribieron. A este proceso se le conoce como ejecución secuencial. Varias instrucciones
de C# le permiten especificar que la siguiente instrucción a ejecutar no es necesariamente la
siguiente en la secuencia. A esto se le conoce como transferencia de control. Una de las
instrucciones de transferencia de control más utilizadas es la instrucción if que realiza una acción si
una condición es verdadera, o ignora la acción si la condición es falsa. La instrucción if … else
realiza una acción si una condición es verdadera o realiza una acción distinta si la condición es
falsa. La instrucción switch realiza una de varias acciones distintas, dependiendo del valor de una
expresión.
A la instrucción if se le llama instrucción de selección simple debido a que selecciona o ignora una
acción individual (o, como pronto veremos, un grupo individual de acciones). A la instrucción if ..
else se le llama instrucción de selección doble debido a que selecciona una de dos acciones
distintas (o grupo de acciones). A la instrucción switch se le llama instrucción de selección múltiple
debido a que selecciona una de varias acciones distintas (o grupos de acciones).
Operador condicional (?:)
C# cuenta con el operador condicional (?:) que puede utilizarse en lugar de una instrucción if …
else. Éste es el único operador ternario en C#; es decir utiliza tres operandos. Es conjunto, los
operandos y los símbolos ¿: forman una expresión condicional. El primer operando (a la izquierda
del?) es una expresión booleana; es decir, una expresión que se evalúa como un valor tipo
booleano: true (verdadero) o false (falso). El segundo operando (entre el ? y el :) es el valor de la
expresión condicional si la expresión booleana es true y el tercer operando (a la derecha del :) es
el valor de la expresión condicional si la expresión booleana es false. Por ejemplo, la instrucción:
[Link] (Calif >= 60 ? “suficiente” : “no suficiente”);
Imprime “suficiente” si la expresión booleana calif >=60 es verdadera y “no suficiente” si es falsa.
¿Que imprime la siguiente sentencia cuando el valor de calif es igual que 60?
[Link](calif >=60 ? “Aprobado” : “Reprobado” );
Seleccione una:
Nada
Reprobado
Error
Aprobado (Es correcta por la definición del operador ?, basado en el libro de “Como
programar en C#”, de Deitel y Deitel, página 120)
Su respuesta es correcta.
Pregunta 2
El operador ?: realiza en esencia la misma función que la instrucción if … else. En ocasiones, el
operador ?: suele usarse cuando las instrucciones if .. else no se puede ocupar.
Considere la sentencia en C# analizada en el problema padre (primera pregunta) ¿Que imprime la
siguiente sentencia cuando el valor de calif es menor que 60?
Seleccione una:
Nada
Error
Reprobado (Es correcta por la definición del operador ?, basado en el libro de “Como
programar en C#”, de Deitel y Deitel, página 120)
Aprobado
Su respuesta es correcta.
Pregunta 3
Completada
Recordemos que el operador ?: evalúa una condición y con base a eso se decide que opción a
tomar. El primer operando (a la izquierda del ?) es una expresión booleana; es decir, una expresión
que se evalúa como un valor tipo booleano: true (verdadero) o false (falso). El segundo operando
(entre el ? y el :) es el valor de la expresión condicional si la expresión booleana es true y el tercer
operando (a la derecha del :) es el valor de la expresión condicional si la expresión booleana es
false
Considere la sentencia en C# analizada en el problema padre (primera pregunta) ¿Que imprime la
siguiente sentencia cuando el valor de calif es 80?
Seleccione una:
Reprobado
Error
Nada
Aprobado (Es correcta por la definición del operador?, basado en el libro de “Como
programar en C#”, de Deitel y Deitel, página 120)
Su respuesta es correcta.
Instrucción P4
Lee el siguiente problema, genera una solución aplicando los conceptos de la programación
estructurada y los temas relacionados a las estructuras de control.
Una empresa de consulta rápida desea obtener el promedio de resultados de una encuesta de
satisfacción a un producto determinado en un centro comercial.
Las posibles respuestas de evaluación de un producto son 1) Excelente 2) Bueno 3) Malo
La empresa requiere de un software que capture los resultados de esta encuesta de salida de una
cantidad indeterminada de personas y que al decidir que la encuesta se cierra indique en pantalla
los promedios de respuesta de las tres opciones indicadas.
Se deberá de indicar en pantalla el número de personas encuestadas así como el porcentaje de
cada una de las opciones.
Con base a lo anterior ¿Que sentencia de control de programa es la más adecuada para capturar la
respuesta de un número indeterminado de personas a encuestar?
Seleccione una:
For – IF
If
For
While(Correcto, pues en una estructura infinita controlada por una condición de salida, en
este caso si se desea capturar un registro nuevo)
Su respuesta es correcta.
Pregunta 2
¿Cuál es el medio para que el flujo del programa determine que debe de terminar y mostrar los
resultados finales?
Seleccione una:
Mediante la modificación a la condición del while
Determinando el número de ciclos
Indicando los resultados finales después de cada respuesta
Con una condición que cierre la llave del ciclo (Incorrecto, pues sería un error de sintaxis del
lenguaje)
Su respuesta es incorrecta.
Pregunta 3
¿Cuál es la manera más óptima de determinar el número de personas que han contestado la
encuesta?
Seleccione una:
Preguntando al termino del programa el número de encuestados
Mediante el incremento de una variable contador (Correcto, pues con el incremento en uno
tantas veces como se ejecute el contenido del ciclo while se determina el número de personas)
Mediante un contador tiempo
Incrementando en uno las variables de cada respuesta
Su respuesta es correcta.
Pregunta 4
¿Tipo de dato de las variables a almacenar los promedios de cada opción?
Seleccione una:
Int (Incorrecto, solo se consideraran las partes enteras del resultado de la operación)
Char
Float
String
Su respuesta es incorrecta.
Pregunta 5
¿Estructura ideal para comparar las posibles respuestas del usuario?
Seleccione una:
Dos If secuenciales (Incorrecto, debido a que solo se podrían comparar dos de las tres
opciones)
For
Switch
If-else
Su respuesta es incorrecta.
Introducción P5
a los Arreglos
Uno de los problemas más comunes en los diversos sistemas de información es el tratamiento o
procesamiento de un gran volumen de datos o de información.
Las variables usadas hasta ahora reciben propiamente el nombre de variables escalares, porque
solo permiten almacenar o procesar un dato a la vez.
Por ejemplo si se quiere almacenar nombre y edad de 15 personas con el método tradicional se
ocuparan 30 variables y solo es nombre y edad de 15 personas, agreguen más datos y más
personas y ya es tiempo de empezar a analizar otro tipo de variables.
Se ocupan entonces variables que sean capaces de almacenar y manipular conjuntos de datos a la
vez.
Variables de tipo arreglo si permiten almacenar y procesar conjuntos de datos del mismo tipo a la
vez.
Cada dato dentro del arreglo se le conoce como elemento del arreglo y se simboliza y procesa
(captura, operación, despliegue) usando el nombre del arreglo respectivo y un subíndice indicando
la posición relativa del elemento con respecto a los demás elementos del arreglo, solo recordar
que en C # la primera posición, elemento o renglón es el 0 (cero), ej.
NOMBRES
Juan →nombres(0)
Pedro → nombres(1)
Rosa → nombres(2)
Jose → nombres(3)
En C# sin embargo sus problemas son similares a los de variables normales es decir hay que
declararlos, capturarlos, hacer operaciones con ellos, desplegarlos, compararlos, etc.
Veamos el siguiente ejemplo de manejo de arreglos en C#
En el programa anterior el tipo de arreglo que se maneja es:
Seleccione una:
Arreglos bidimensionales
Arreglos unidimensionales (Es correcto, se trabaja con un arreglo unidimensional)
Arreglos tridimensionales
Arreglo de cadenas
Su respuesta es correcta.
Pregunta 2
Con base en la siguiente declaración, ¿Cuántos elementos tiene el arreglo?
int[] numero = new int[5];
Seleccione una:
6
5 (Correcto, Se define un arreglo de cinco elementos)
La declaración está mal definida
4
Su respuesta es correcta.
Pregunta 3
¿Qué función realiza el siguiente fragmento de código?
for (i=0; i<=4; i
{
[Link]("Introduce el dato numero {0}: ", i+1);
numero[i] = Convert.ToInt32([Link]());
}
Seleccione una:
Llenado del arreglo (Correcto. Se ingresan los valores para el arreglo declarado)
Suma de los elementos del arreglo
Impresión del arreglo
Almacenamiento del arreglo
Su respuesta es correcta.
Pregunta 4
Si se introducen los siguientes valores en el programa 1, 2, 3, 4, 5
¿Qué se imprime a la salida?
Seleccione una:
0
120
1, 2, 3, 4, 5
15 (Correcto, es la suma de los elementos introducidos)
Su respuesta es correcta.
Pregunta 5
¿Cuál es la variable con la cual se lleva el control del índice dentro del programa?
Seleccione una:
numero
i (Correcto, con esta variable se hace el manejo del arreglo)
new
suma
Su respuesta es correcta.