Este documento presenta un resumen del temario de la clase 1 sobre el lenguaje C# y el framework .NET. Explica brevemente los componentes principales de .NET como el CLR y la biblioteca de clases, y describe el ambiente de desarrollo SharpDevelop que se utilizará para realizar los ejercicios. Luego resume la estructura básica de un programa en C#, los diferentes tipos de datos, y conceptos como la declaración de variables y constantes.
2. Temario
• Framework .NET
• Ambiente de desarrollo SharpDevelop
• Lenguaje C#
• Estructura de un programa escrito en C#
• Tipos básicos
• Estructuras de control
3. Framework .NET
• Un framework es un marco de trabajo para el desarrollo
de aplicaciones
• Está compuesto por:
• Librerías
• Documentación
• Ayuda
• Ejemplos
• Tutoriales
• etc.
4. Framework .NET
• .NET fue desarrollado por Microsoft para el desarrollo de
software que sea independiente del hardware en el cual
se ejecuta
http://www.microsoft.com/NET
• Es una plataforma multilenguaje: C#, C++, VB.NET, F#,
J#, Pascal, Python, Ruby, Fortran, Cobol, Prolog, entre
otros
5. Framework .NET
• Este framework constituye las bases para la construcción
y ejecución de aplicaciones y servicios.
• Permite el desarrollo de todo tipo de funcionalidades:
• Programas de consola
• Servicios Windows
• Aplicaciones para dispositivos móviles
• Desarrollos de escritorio o para Internet
• Aplicaciones distribuidas
• Aplicaciones concurrentes/paralelas
• Etc.
6. Framework .NET
• Los principales componentes del framework .NET son:
• El conjunto de lenguajes de programación
• La biblioteca de clases (BCL – Base Class Library)
• El entorno común de ejecución (CLR – Common Languaje
Runtime)
7. Framework .NET
• El CLR es el motor de ejecución del framework .NET
• Ofrece servicios automáticos tales como:
• Administración de la memoria
• Seguridad del código
• Administra la conversión de tipos
• Inicialización de variables
• Control de overflows
• Permite que convivan diferentes versiones de una misma dll, sin
que se generen conflictos
8. Framework .NET
• El CLR define un entorno de ejecución virtual
independiente en el que trabajan las aplicaciones escritas
con cualquier lenguaje .NET.
• En teoría cualquier aplicación escrita para .NET puede
ejecutarse en cualquier tipo de arquitectura de hardware.
• Microsoft dispone de implementación de .NET para
Windows de 32 bits, Windows de 64 bits e incluso para
Windows Mobile.
9. Framework .NET
• Cuando se compila una aplicación escrita en un lenguaje
.NET (VB, C# u otro de los soportados), el compilador
genera un código intermedio llamado CIL (Common
Intermediate Languaje).
• CIL (antes llamado MSIL) es un lenguaje parecido al
código ensamblador pero de más alto nivel. El código
generado no está atado a una arquitectura determinada.
10. Framework .NET
• El código CIL se convierte en código nativo justo antes
de ejecutarse.
• Para convertir MSIL a código nativo, se utilizan
compiladores llamados “Just In Time” (JIT).
• El JIT es un compilador bajo demanda. De manera
transparente el código escrito en lenguaje intermedio se
traduce al lenguaje nativo del procesador físico que va a
ejecutar el código.
11. Framework .NET
CLR
JIT
Código fuente Código byte Código nativo
C#
VB.NET
Otro
lenguaje
.NET
Compilador C#
Compilador VB
Otro compilador
Código MSIL Código nativo
Tiempo de compilación Tiempo de ejecución
12. SharpDevelop
Es un entorno o ambiente de desarrollo de código abierto
para .NET.
En la asignatura lo utilizaremos para realizar los
diferentes ejercicios de las prácticas:
• En windows: SharpDevelop (http://www.icsharpcode.net/)
• En linux: MonoDevelop (http://www.monodevelop.com/)
• Ambas son alternativas al IDE de Microsoft VisualStudio
(https://www.visualstudio.com/)
13. Alternativas de compilación
• Se puede escribir código fuente en cualquier editor de
texto y compilarlo por línea de comando:
csc hola.cs
• El comando csc está en el directorio de instalación del
Framework .NET
25. Organizando los ejercicios de la práctica
Una buena forma de organizar el
trabajo es crear una solución llamada
Practica y dentro de ella crear un
proyecto para cada ejercicio
26. Organizando los ejercicios de la práctica
El archivo Program.cs es donde
escribiremos el código.
Haciendo doble click sobre este
elemento abre el código.
El archivo Program.cs es donde
escribiremos el código.
Haciendo doble click sobre este
elemento abre el código para ser
editado.
27. Agregando proyectos a unasolución
Click derecho sobre la solución.
Luego ir al menú Add -> New project
30. Agregando proyectos a unasolución
Se recomienda guardar el proyecto en el mismo directorio de la solución.
SharpDevelop creará dentro de este directorio un subdirectorio con el
mismo nombre del proyecto.
Con esta modalidad se garantiza tener todos los ejercicios en un mismo
directorio lo que facilita el traslado de los proyectos de una PC a otra.
31. Ejecutando un programa
Para ejecutar un programa se
presiona este botón o la tecla F5.
Esto ejecutará el proyecto activo
32. Ejecutando un programa
Para ejecutar un proyecto en
particular, botón derecho
sobre el proyecto y luego la
opción "Run Project"
33. Ejecutando un programa
Para setear un proyecto como
"activo" y luego poder ejecutarlo
con la tecla F5 hay que hacer click
derecho sobre el proyecto y elegir la
opción "Set as StartUp Project"
34. El lenguaje C#
• Estructura de un programa
• Tipos de datos
• Conversiones
• Operadores aritméticos y lógicos
• Sentencias
• Estructuras de control
35. C# -Estructura de un programa
using System;
namespace Ejercicio1
{
class Program
{
public static void Main(string[] args)
{
Más adelante veremos que significa todo el código que
aparece por defecto.
Por ahora solo escribiremos nuestro código en este
espacio.
}
}
}
36. C# - Primerprograma
using System;
namespace Ejercicio1
{
class Program
{
public static void Main(string[] args)
{
Console.WriteLine("Hola mundo");
Console.ReadKey(true);
}
}
}
38. C# - Primerprograma
using System;
namespace Ejercicio1
{
class Program
{
public static void Main(string[] args)
{
Console.WriteLine("Hola mundo");
Console.ReadKey(true);
}
}
}
La instrucción
Console.WriteLine escribe en
la consola
39. C# - Primerprograma
using System;
namespace Ejercicio1
{
class Program
{
public static void Main(string[] args)
{
Console.WriteLine("Hola mundo");
Console.ReadKey(true);
}
}
}
¿Qué hace la instrucción
Console.ReadKey(true)?
Pruebe de ejecutar el programa
eliminando esta instrucción
¿Qué sucedió?
40. C# - Primerprograma
• La instrucción Console.ReadKey(true) se queda
esperando a que el usuario presione una tecla.
• Para poder ver el resultado de una ejecución siempre
utilizaremos Console.ReadKey(true) como última
instrucción.
41. C# - Tipos dedatos
C# tiene, entre otros, los siguientes tipos de datos
• bool 1 byte true..false
• byte 1 byte 0..255
• short 2 bytes –32.768...32.767
• int 4 bytes –2.147.483.648...2.147.483.647
• long 8 bytes –9.223.372.036.854.775.808…
...9.223.372.036.854.775.807
• float 4 bytes 1,5 × 10−45 a 3,4 × 1038,
con precisión de 7 dígitos
• double 8 bytes 5,0 × 10−324 a 1,7 × 10308,
con precisión de 15 dígitos
• decimal 16 bytes 1,0 × 10−28 a 7,9 × 1028,
con precisión de 28 dígitos
• char 2 bytes cualquier caracter
• string (2n+20) bytes cualquier secuencia de n caracteres
42. C# - Declaración devariables
• En C# todas las variables deben ser declaradas antes de
poder ser usadas.
• Al declarar una variable se debe indicar que tipo de datos
almacenará.
int var1;
char var2;
• Una variable NO puede almacenar datos distintos a su tipo.
• En C# toda sentencia debe finalizar con un ;
43. C# - Declaración devariables
Ejecute este código. ¿Qué líneas producen errores? ¿Por qué?
public static void Main(string[] args)
{
int var1;
char var2;
var1 = 3;
var2 = true;
var2 = '3';
int var4, var5, var6;
var4 = var1;
var5 = var6;
char vocal1 = 'a', vocal2 = 'b';
int var4;
int VAR4 = var4;
}
44. C# - Declaración devariables
int var1;
char var2;
var1 = 3;
var2 = true;
var2 = '3';
int var4, var5, var6;
var4 = var1;
var5 = var6;
char vocal1 = 'a', vocal2 = 'b';
int var4;
int VAR4 = var4;
Errores
La variable var2 es de tipo
char. No puede almacenar
otro tipo de datos que no sea
un caracter
45. C# - Declaración devariables
Errores
int var1;
char var2;
var1 = 3;
var2 = true;
var2 = '3';
int var4, var5, var6;
var4 = var1;
var5 = var6;
char vocal1 = 'a', vocal2 = 'b';
int var4;
int VAR4 = var4;
Esta sentencia produce error
porque la variable var6 no
tiene un valor asignado
46. C# - Declaración devariables
Errores
int var1;
char var2;
var1 = 3;
var2 = true;
var2 = '3';
int var4, var5, var6;
var4 = var1;
var5 = var6;
char vocal1 = 'a', vocal2 = 'b';
int var4;
int VAR4 = var4;
La variable var4 ya está
declarada, esta línea produce
error.
47. C# - Declaración devariables
Particularidades en la declaración de variables
int var1;
char var2;
var1 = 3;
var2 = true;
var2 = '3';
int var4, var5, var6;
var4 = var1;
var5 = var6;
char vocal1 = 'a', vocal2 = 'b';
int var4;
int VAR4 = var4;
En una misma línea se
pueden declarar varias
variables del mismo tipo
48. C# - Declaración devariables
Particularidades en la declaración de variables
int var1;
char var2;
var1 = 3;
var2 = true;
var2 = '3';
int var4, var5, var6;
var4 = var1;
var5 = var6;
char vocal1 = 'a', vocal2 = 'b';
int var4;
int VAR4 = var4;
Al momento de la declaración
se puede asignar un valor
inicial
49. C# - Declaración devariables
Particularidades en la declaración de variables
int var1;
char var2;
var1 = 3;
var2 = true;
var2 = '3';
int var4, var5, var6;
var4 = var1;
var5 = var6;
char vocal1 = 'a', vocal2 = 'b';
int var4;
int VAR4 = var4;
C# es sensible a mayúsculas
y minúsculas. VAR4 es una
variable distinta a var4
50. C# - Declaración deconstantes
• Una constante es una variable a la que no se le
puede cambiar su valor.
• Son útiles porque impiden que se produzcan errores al
impedir cambiar su valor durante la ejecución.
• Se declaran con la palabra clave const.
• Al declarar una constante se debe indicar que tipo de
datos almacenará y el valor o dato propiamente dicho.
const int lados_cuadrado = 4;
const char primera_letra = 'A';
const double pi = 3.14159;
51. Conversiones de tipo numéricas implícitas
Una variable de
tipo puede ser asignada a otra de tipo
sbyte short, int, long, float, double, decimal
byte short, ushort, int, uint, long, ulong, float, double, decimal
short int, long, float, double, decimal
ushort int, uint, long, ulong, float, double, decimal
int long, float, double, decimal
uint long, ulong, float, double, decimal
long float, double, decimal
ulong float, double, decimal
char ushort, int, uint, long, ulong, float, double, decimal
float Double
52. Conversiones de tipo numéricas implícitas
Ejemplo. Pruebe el siguiente código.
byte b = 10;
int i = b;
Console.WriteLine(i);
i = 100000016;
float f = i;
Console.WriteLine(f.ToString("#.00"));
53. Conversiones de tipo numéricas implícitas
Ejemplo. Pruebe el siguiente código.
byte b = 10;
int i = b;
Console.WriteLine(i);
i = 100000016;
float f = i;
Console.WriteLine(f.ToString("#.00"));
Conversión implícita de
byte a int
54. Conversiones de tipo numéricas implícitas
Ejemplo. Pruebe el siguiente código.
byte b = 10;
int i = b;
Console.WriteLine(i);
i = 100000016;
float f = i;
Console.WriteLine(f.ToString("#.00"));
Conversión implícita de
int a float.
Se pierde precisión,
pero no magnitud
55. Conversiones de tipo numéricas explícitas
Ejemplo. Pruebe el siguiente código.
int i = 100;
short s = i;
double d = 13.78;
i = d;
56. Producen errores
de compilación
Conversiones de tipo numéricas explícitas
Ejemplo. Pruebe el siguiente código.
int i = 100;
short s = i;
double d = 13.78;
i = d;
Producen errores de
compilación.
Puede haber pérdida
de información o
incluso excepciones.
57. • Solución: se utiliza el operador de cast.
• La operación de casting consiste en anteponer entre
paréntesis el tipo al cual queremos convertir el resultado
de una variable o expresión.
• Con una operación de cast le estamos diciendo al
compilador que estamos seguros que queremos hacer la
conversión y aceptamos una eventual pérdida de
información.
int i = 100;
short s = (short) i;
double d = 13.78;
i = (int) d;
Conversiones de tipo numéricas explícitas
¿Con qué valor se
queda la variable i?
59. Operadores de asignación
Operador Operación
++ Incremento
-- Decremento
= Asignación
*= Multiplicación seguida de asignación
/= División seguida de asignación
%= Resto seguido de asignación
+= Suma seguido de asignación
-= Resta seguido de asignación
int a = 100, b = 4, c = 3;
c+= (a-b);
//
//
Equivalente a:
c = c + (a-b);
b*= a; // b = b * a;
a++; // a = a + 1;
60. C# - Bloque desentencias
• Un bloque es una lista de cero o más sentencias
encerradas entre llaves “{“ “}”
• El alcance de una variable declarada en el bloque es el
propio bloque.
{
{
int i=1;
Console.WriteLine(i);
}
Console.WriteLine(i);
}
61. C# - Bloque desentencias
• Un bloque es una lista de cero o más sentencias
encerradas entre llaves “{“ “}”
• El alcance de una variable declarada en el bloque es el
propio bloque.
{
{
int i=1;
Console.WriteLine(i);
}
Console.WriteLine(i);
La variable i
solo puede
ser utilizada
dentro del
bloque qu}e
fue declarada
62. C# - Bloque desentencias
• Un bloque es una lista de cero o más sentencias
encerradas entre llaves “{“ “}”
• El alcance de una variable declarada en el bloque es el
propio bloque.
{
{
int i=1;
Console.WriteLine(i);
}
Console.WriteLine(i);
}
Esta instrucción
produce error
porque la variable i
no está definida en
este ámbito
63. Estructuras de control -IF
• La condición siempre va entre paréntesis.
• Los bloques verdadero o falso pueden tener más de
una instrucción, por eso cada uno debe tener sus
propias llaves de apertura y cierre
if ( <test> )
{
<Código si test es verdadero>;
}
else
{
<Código si test es falso>;
}
64. Estructuras de control -IF
Ejemplos
int a = 3;
if ( a > 0 )
{
Console.WriteLine("El valor es positivo");
a = 1;
}
else
{
Console.WriteLine("El valor es negativo");
a = -1;
}
65. Estructuras de control -IF
Si solo hay una instrucción en el bloque, se
pueden omitir las llaves.
int a = 3;
if ( a > 0 )
Console.WriteLine("El valor es positivo");
else
Console.WriteLine("El valor es negativo");
a = 0;
66. Estructuras de control -IF
El bloque else es opcional.
int a = 3;
if ( a > 0 )
Console.WriteLine("El valor es positivo");
a = 0;
67. Estructuras de control -IF
El bloque else es opcional.
int a = 3;
if ( a > 0 )
Console.WriteLine("El valor es positivo");
a = 0;
¿Cuándo se ejecuta
esta instrucción?
68. Estructuras de control -IF
El bloque else es opcional.
int a = 3;
if ( a > 0 )
Console.WriteLine("El valor es positivo");
a = 0;
SIEMPRE. Al no tener llaves
la única instrucción del
bloque verdadero es el
Console.WriteLine().
En C# no se maneja el
concepto de identación.
69. Estructuras de control -IF
El bloque else es opcional.
int a = 3;
if ( a > 0 )
Console.WriteLine("El valor es positivo");
a = 0;
¿Qué hay que hacer
para que se ejecute solo
en el caso de que a > 0?
70. Estructuras de control -IF
El bloque else es opcional.
int a = 3;
if ( a > 0 ) {
Console.WriteLine("El valor es positivo");
a = 0;
}
Crear el bloque
correspondiente.
71. Estructuras de control -IF
Los IFs pueden estar anidados
¿Qué imprime si a vale 3?
int a = 3;
if ( a > 0 ) {
Console.WriteLine("El valor es positivo…");
if ( a > 1000 )
Console.WriteLine("…y muy grande");
else
Console.WriteLine("…pero chico");
}
else {
Console.WriteLine("El valor es negativo…");
if ( a < -1000 )
Console.WriteLine("…y muy grande");
else
Console.WriteLine("…pero chico");
}
72. Estructuras de control -IF
Los IFs pueden estar anidados
¿Qué imprime si a vale -3000?
int a = -3000;
if ( a > 0 ) {
Console.WriteLine("El valor es positivo…");
if ( a > 1000 )
Console.WriteLine("…y muy grande");
else
Console.WriteLine("…pero chico");
}
else {
Console.WriteLine("El valor es negativo…");
if ( a < -1000 )
Console.WriteLine("…y muy grande");
else
Console.WriteLine("…pero chico");
}
73. Estructuras de control -IF
Los IFs pueden estar anidados
int a = -1;
if(a>0)
if(a>1)
Console.WriteLine(">1");
else
Console.WriteLine("a es negativo");
¿Qué imprime si a vale -1?
74. Estructuras de control -IF
Los IFs pueden ser anidados
int a = -1;
if(a>0)
if(a>1)
Console.WriteLine(">1");
else
Console.WriteLine("a es negativo");
Recordar que en C# no existe el concepto
de identación. Si no se usan bloques de
llaves, el ELSE se asocia al último IF
75. Bloque: lo usamos
para determinar a
qué IF corresponde el
ELSE
Estructuras de control -IF
Los IFs pueden ser anidados
int a = -1;
if(a>0) {
if(a>1)
Console.WriteLine(">1");
}
else
Console.WriteLine("a es negativo");
76. Estructuras de control -WHILE
• La condición siempre va entre paréntesis.
• El bloque del while puede tener más de una
instrucción, por eso debe tener sus propias llaves
de apertura y cierre.
while ( <test> )
{
<Código mientras test sea verdadero>;
}
77. Estructuras de control -WHILE
Ejemplo
int a = 1;
while ( a <= 5 )
{
Console.WriteLine(a++);
}
78. Estructuras de control -WHILE
Ejemplo
int a = 1;
while ( a <= 5 )
Console.WriteLine(a++);
Al igual que el IF, si el
WHILE solo tiene una
instrucción, se pueden
obviar las llaves
79. Estructuras de control -WHILE
Ejemplo
int a = 1;
while ( a <= 5 )
Console.WriteLine(a++);
¿Qué imprime?
80. Estructuras de control -WHILE
Ejemplo
int a = 1;
while ( a <= 5 )
Console.WriteLine(++a);
¿Y ahora, qué imprime?
81. Estructuras de control -WHILE
int a = 1;
while ( a <= 5 );
Console.WriteLine(++a);
Ejemplo
¿Y si ponemos un ; al
final del while?
¿Qué sucede?
82. Estructuras de control -WHILE
Ejemplo
int a = 1;
while ( a <= 5 );
Console.WriteLine(++a);
Al poner un ; estamos diciendo que el while
NO tiene cuerpo.
En este caso el bucle while nunca finaliza.
En un error muy común de cometer.
83. Estructuras de control -WHILE
Ejemplo
int a = 1;
while ( a++ <= 5 );
Console.WriteLine(a);
¿Qué imprime?
84. Estructuras de control -WHILE
Ejemplo
int a = 1;
while ( ++a <= 5 );
Console.WriteLine(a);
¿Y ahora?
85. Estructuras de control -FOR
• El FOR tiene tres partes separadas por ";" :
• Valor inicial de la variable iteradora
• Condición de fin
• Modificación de la variable iteradora
• El bloque del for puede tener más de una instrucción,
por eso debe tener sus propias llaves de apertura y
cierre.
for ( <inicialización> ; <condición> ; <modificación> )
{
<Código mientras condición sea verdadera>;
}
86. Estructuras de control -FOR
Ejemplo
int i;
for (i = 1; i <= 10; i++)
{
Console.WriteLine(i);
}
87. Estructuras de control -FOR
Ejemplo
int i;
for (i = 1; i <= 10; i++)
{
Console.WriteLine(i);
}
Valor inicial de la variable
iteradora. Tiene que estar
declarada como cualquier
otra variable.
88. Estructuras de control -FOR
Ejemplo
int i;
for (i = 1; i <= 10; i++)
{
Console.WriteLine(i);
}
El FOR se ejecutará
mientras esta condición
sea verdadera.
89. Estructuras de control -FOR
Ejemplo
int i;
for (i = 1; i <= 10; i++)
{
Console.WriteLine(i);
}
Después de cada ejecución
del for se modifica la
variable iteradora.
90. Estructuras de control -FOR
Ejecución
int i;
for (i = 1; i <= 10; i++)
{
Console.WriteLine(i);
}
Pasos de ejecución
1. Se evalúa la condición
2. Se ejecuta el cuerpo
3. Se modifica la variable
91. Estructuras de control -FOR
Ejecución
int i;
for (i = 1; i <= 10; i++)
{
Console.WriteLine(i);
}
Pasos de ejecución
1. Se evalúa la condición
2. Se ejecuta el cuerpo
3. Se modifica la variable
92. Estructuras de control -FOR
Ejecución
int i;
for (i = 1; i <= 10; i++)
{
Console.WriteLine(i);
}
Pasos de ejecución
1. Se evalúa la condición
2. Se ejecuta el cuerpo
3. Se modifica la variable
93. Estructuras de control -FOR
Curiosidades del FOR. El siguiente for:
int i;
for (i = 1; i <= 10; i++) {
Console.WriteLine(i);
}
es equivalente a:
int i = 1;
while (i <= 10) {
Console.WriteLine(i);
i++;
}
94. Estructuras de control -FOR
Curiosidades del FOR. El siguiente for:
int i;
for (i = 1; i <= 10; i++) {
Console.WriteLine(i);
}
es equivalente a:
for (int i = 1; i <= 10; ) {
Console.WriteLine(i++);
}
La variable puede ser
declarada dentro del for.
Su alcance es solo en el
bloque del for.
La modificación de la
variable iteradora puede
estar vacío.
En este ejemplo el
s
in
ec
rrd
ee
m
ce
la
n
rta
odd
aedies
n
e
tro
hace
dendtreolf
d
o
e
r
.
lcuerpo
Su alcance es solo
95. Estructuras de control -FOR
Ejemplos
for (i = 10; i >= 0; i--)
Console.WriteLine(i);
for (i = 1; i <= 10; i+= 2)
Console.WriteLine(i);
for (i = 100; i > 0; i/= 2)
Console.WriteLine(i);
De 10 a 0,
decrementando en uno
De 1 a 10,
incrementando de a dos
De 100 a 1, dividiendo
por dos.
96. Operadores booleanos
Operador Operación
< Menor que
> Mayor que
<= Menor o igual que
>= Mayor o igual que
!= Distinto de
== Igual a
if (a >= b) { …. }
if (a != b) { …. }
if (a == b) { …. }
97. Operadores lógicos
Operador Operación
& And
| Or
! NOT
^ XOR
&& And en cortocircuito
|| Or en cortocircuito
if ((a >= b) & (b < 0)) { …. }
if ((a != 3) | (a != 4)) { …. }
if ( ! (a == b) && (b > 9)) { …. }
98. Operadores lógicos
Operador Operación
& And
| Or
! NOT
^ XOR
&& And en cortocircuito
|| Or en cortocircuito
if ((a >= b) & (b < 0)) { …. }
if ((a != 3) | (a != 4)) { …. }
if ( ! (a == b) && (b > 9)) { …. }
And de circuito largo, las
dos condiciones son
evaluadas
99. Operadores lógicos
Operador Operación
& And
| Or
! NOT
^ XOR
&& And en cortocircuito
|| Or en cortocircuito
if ((a >= b) & (b < 0)) { …. }
if ((a != 3) | (a != 4)) { …. }
if ( ! (a == b) && (b > 9)) { …. }
And de circuito corto, si
la primer condición es
falsa, la segunda
condición NO se evalúa
(El resultado del And ya
se sabe que es false)
100. Estructuras de control – DOWHILE
• Es una estructura de repetición condicional como
el WHILE.
• La condición siempre va entre paréntesis.
• A diferencia del WHILE, el DO WHILE ejecuta el
código de su bloque al menos una vez.
do {
<Código hasta que test sea falso>;
}
while ( <test> );
101. Estructuras de control – DOWHILE
Ejemplo
int a = 1;
do {
Console.WriteLine("Hola");
}
while ( a++ != 1 );
¿Qué imprime?
¿Y si se hubiera usado el
WHILE?
102. Estructuras de control –SWITCH
• Es una estructura condicional que simplifica el uso de IFs
anidados.
• La condición NO es booleana. Debe ser una variable o el
resultado de una operación
switch (<testVar>) {
case <valor1>:
<código si <testVar> == <valor1> >
break;
...
case <valorN>:
<código si <testVar> == <valorN> >
break;
default:
<código si no entró por ningún case>
break;
}
103. Estructuras de control –SWITCH
Ejemplo
int a = 3;
switch (a) {
case 1:
Console.WriteLine("uno");
break;
case 2:
Console.WriteLine("dos");
break;
default:
Console.WriteLine("otro");
break;
}
104. Puede haber
Estructuras de control –SWITCH
Ejemplo
int a = 3;
switch (a) {
case 1:
Console.WriteLine("uno");
break;
case 2:
Console.WriteLine("dos");
break;
default:
Console.WriteLine("otro");
break;
}
Pueden haber tantas
sentencias CASE como
se necesiten.
105. Ejemplo
int a = 3;
switch (a) {
case 1:
Console.WriteLine("uno");
break;
case 2:
Console.WriteLine("dos");
break;
default:
Console.WriteLine("otro");
break;
}
Estructuras de control –SWITCH
El uso de la condición
default es opcional
106. Ejemplo
int a = 3;
switch (a) {
case 1:
case 2:
case 3:
Console.WriteLine("uno, dos o tres");
break;
case 4:
Console.WriteLine("cuatro");
break;
}
Estructuras de control –SWITCH
107. Ejemplo
int a = 3;
switch (a) {
case 1:
case 2:
case 3:
Console.WriteLine("uno, dos o tres");
break;
case 4:
Console.WriteLine("cuatro");
break;
}
Estructuras de control –SWITCH
Si a vale 1, 2 o 3 se
ejecuta el mismo bloque
de código
108. switch (a) {
case 1:
case 2:
case 3:
Console.WriteLine("uno, dos o tres");
break;
case 4:
Console.WriteLine("cuatro");
break;
}
Estructuras de control –SWITCH
Ejemplo
int a = 3;
No hay una cláusula default
Si a toma un valor distinto de
1, 2, 3 o 4 NO hace nada
109. Interrupción de bucles
• Interrupción de bucles. Pueden ser utilizados para
cualquier estructura de bucle: FOR, WHILE y DO WHILE.
• break – El bucle termina inmediatamente
• continue – Termina el ciclo corriente inmediatamente (la ejecución
continua con el próximo ciclo)
• goto – Permite saltar fuera del bucle (no recomiendada)
• return – Salta fuera del loop y de la función que lo contiene
110. Interrupción de bucles. Ejemplo:
int i;
for(i=1; i<=10; i++) {
if (i==5)
break;
if (i % 2 == 0)
continue ;
Console.WriteLine(i);
}
¿Qué imprime?
Interrupción de bucles
111. Ámbito de lasvariables
No se puede ocultar un nombre de un ámbito local
redefiniendo el identificador en otro más interno.
int i = 0;
if (true) {
int i = 1;
}
if (true) {
int j = 0;
}
if (true) {
int j = 1;
}
El compilador marca un
error, ya que se está
"redefiniendo" la variable i
112. Ámbito de lasvariables
No se puede ocultar un nombre de un ámbito local
redefiniendo el identificador en otro más interno.
int i = 0;
if (true) {
int i = 1;
}
if (true) {
int j = 0;
}
if (true) {
int j = 1;
}
LLaass
v
v
aari
rai
ab
b
le
le
ss
jj
ee
s
st
át
án
n
d
d
e
e
f
i
f
n
i
n
i
d
i
d
a
a
s
s
c
c
a
a
d
d
a
a
u
u
n
n
a
a
e
e
n
n
s
u
supprrooppioiob
b
l
o
l
o
q
q
u
u
e
e
.
.
NNoohhaayyeerrror
.r
.
114. Ejercicio 1
Solicitar al usuario que ingrese por teclado su nombre y
saludarlo de manera personalizada.
115. Ejercicio 1
namespace Ejercicio1
{
class Program
{
public static void Main(string[] args)
{
Console.WriteLine("Ingrese su nombre");
string nombre = Console.ReadLine();
Console.WriteLine("Hola " + nombre + " ¿qué tal?");
}
}
}
116. Ejercicio 1
namespace Ejercicio1
{
class Program
{
public static void Main(string[] args)
{
Console.WriteLine("Ingrese su nombre");
string nombre = Console.ReadLine();
Console.WriteLine("Hola " + nombre + " ¿qué tal?");
}
}
}
Las cadenas de caracteres
se escriben encerradas con
comillas dobles
117. Ejercicio 1
namespace Ejercicio1
{
class Program
{
public static void Main(string[] args)
{
Console.WriteLine("Ingrese su nombre");
string nombre = Console.ReadLine();
Console.WriteLine("Hola " + nombre + " ¿qué tal?");
}
}
}
Console.ReadLine permite
ingresar datos por teclado.
Lee todos los caracteres
hasta que el usuario presiona
la tecla Enter
118. Ejercicio 1
namespace Ejercicio1
{
class Program
{
public static void Main(string[] args)
{
Console.WriteLine("Ingrese su nombre");
string nombre = Console.ReadLine();
Console.WriteLine("Hola " + nombre + " ¿qué tal?");
}
}
}
El signo + es utilizado para la
concatenación de dos strings.
119. Ejercicio 2
Dados dos enteros ingresados por el usuario determinar
cuál es el mayor de ellos.
120. Ejercicio 2
Console.WriteLine("Ingrese un número");
int num1 = int.Parse(Console.ReadLine());
Console.WriteLine("Ingrese otro número");
int num2 = int.Parse(Console.ReadLine());
Console.WriteLine("El número más grande es");
if(num1 > num2)
Console.WriteLine(num1);
else
Console.WriteLine(num2);
121. Ejercicio 2
Console.WriteLine("Ingrese un número");
int num1 = int.Parse(Console.ReadLine());
Console.WriteLine("Ingrese otro número");
int num2 = int.Parse(Console.ReadLine());
Console.WriteLine("El número más grande es");
if(num1 > num2)
Console.WriteLine(num1);
else
Console.WriteLine(num2);
Console.ReadLine devuelve
siempre un dato de tipo
string.
122. Ejercicio 2
Console.WriteLine("Ingrese un número");
int num1 = int.Parse(Console.ReadLine());
Console.WriteLine("Ingrese otro número");
int num2 = int.Parse(Console.ReadLine());
Console.WriteLine("El número más grande es");
if(num1 > num2)
Console.WriteLine(num1);
else
Console.WriteLine(num2);
Int.Parse convierte un string a
número
(siempre que se pueda)
123. Ejercicio 3
Solicitar al usuario que ingrese por teclado un número n y
calcular la sumatoria desde 1 hasta n.
124. Ejercicio 3
Console.WriteLine("Ingrese un número");
int n = int.Parse(Console.ReadLine());
int suma = 0;
for(int i = 1; i <= n; i++)
suma += i;
Console.WriteLine("El resultado es " + suma);
125. Ejercicio 4
Solicitar al usuario que ingrese una frase palabra por
palabra en distintas líneas (termina al ingresar una palabra
en blanco).
Luego mostrar la frase completa en una sola línea.
126. Ejercicio 4
Console.WriteLine("Ingrese una palabra o blanco
para terminar");
string palabra = Console.ReadLine();
string frase = "";
while(palabra != ""){
frase += palabra + " ";
Console.WriteLine("Ingrese otra palabra o
blanco para terminar");
palabra = Console.ReadLine();
}
Console.WriteLine("La frase entera es: " + frase);
127. Ejercicio 4
string palabra = Console.ReadLine();
string frase = "";
while(palabra != ""){
frase += palabra + " ";
Console.WriteLine("Ingrese otra palabra o
blanco para terminar");
palabra = Console.ReadLine();
}
Console.WriteLine("La frase entera es: " + frase);
El string vacío o nulo se
escribe con doble
comilla sin nada entre
medio.
Console.WriteLine("Ingreseunapalabraounblanco
128. Ejercicio 4
string palabra = Console.ReadLine();
string frase = "";
while(palabra != ""){
frase += palabra + " ";
Console.WriteLine("Ingrese otra palabra o
blanco para terminar");
palabra = Console.ReadLine();
}
Console.WriteLine("La frase entera es: " + frase);
No es el string vacío,
este carácter es el
espacio en blanco
Console.WriteLine("Ingreseunapalabraounblancoq
129. Ejercicio 4
Console.WriteLine("Ingreseunapalabraounblanco”)
string palabra = Console.ReadLine();
string frase = "";
while(palabra != ""){
frase += palabra + " ";
Console.WriteLine("Ingrese otra palabra o
blanco para terminar");
palabra = Console.ReadLine();
}
Console.WriteLine("La frase entera es: " + frase);
El operador + aquí significa
que a frase se le concatena la
palabra