SlideShare una empresa de Scribd logo
1 de 129
Descargar para leer sin conexión
ALGORITMOS Y
PROGRAMACIÓN
Clase 1
Lenguaje C#
Año 2019 – 2do Cuatrimestre
Temario
• Framework .NET
• Ambiente de desarrollo SharpDevelop
• Lenguaje C#
• Estructura de un programa escrito en C#
• Tipos básicos
• Estructuras de control
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.
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
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.
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)
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
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.
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.
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.
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
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/)
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
En SharpDevelop:
Aquí escribiremos
nuestro código
En SharpDevelop:
Estructura del
proyecto.
Podemos organizar
todo el código en
diferentes archivos
En SharpDevelop:
Acceso cómodo y
rápido a todas las
funciones
implementadas
En SharpDevelop:
El compilador nos
avisará de cualquier
error en este
espacio
En SharpDevelop:
Creando un nuevoproyecto
Menú File -> New -> Solution
Creando un nuevoproyecto
DDeenntrtrooddeelalacategoría
"
c
Wa
t
i
n
e
d
g
o
w
r
í
a
s
A
"
Wp
p
i
n
l
i
d
c
o
a
w
t
i
o
s
n
s
"elegir
App"lCicoantisoonlse"Aeplepgliciration"
"ConsoleApplication"
Creando un nuevoproyecto
Ingresar un nombre para el
proyecto
Creando un nuevoproyecto
Elegir el directorio donde
guardar el proyecto
Creando un nuevoproyecto
Elegir un nombre para la
solución (grupo de proyectos)
Creando un nuevoproyecto
Click en Create
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
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.
Agregando proyectos a unasolución
Click derecho sobre la solución.
Luego ir al menú Add -> New project
Agregando proyectos a unasolución
Asegurarse de seleccionar
ConsoleApplication
Agregando proyectos a unasolución
Elegir un nombre para el
proyecto
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.
Ejecutando un programa
Para ejecutar un programa se
presiona este botón o la tecla F5.
Esto ejecutará el proyecto activo
Ejecutando un programa
Para ejecutar un proyecto en
particular, botón derecho
sobre el proyecto y luego la
opción "Run Project"
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"
El lenguaje C#
• Estructura de un programa
• Tipos de datos
• Conversiones
• Operadores aritméticos y lógicos
• Sentencias
• Estructuras de control
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.
}
}
}
C# - Primerprograma
using System;
namespace Ejercicio1
{
class Program
{
public static void Main(string[] args)
{
Console.WriteLine("Hola mundo");
Console.ReadKey(true);
}
}
}
Salida obtenida
Al ejecutar el programa obtenemos la siguiente salida por
consola
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
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ó?
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.
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
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 ;
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;
}
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
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
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.
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
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
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
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;
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
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"));
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
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
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
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.
• 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?
Operadores aritméticos
Operador Operación
+ Suma
- Resta
* Multiplicación
/ División
% Resto
int a = 100, b = 4, c=3;
double d = 13.78;
double r = (a+b) / (c*d);
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;
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);
}
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
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
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>;
}
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;
}
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;
Estructuras de control -IF
El bloque else es opcional.
int a = 3;
if ( a > 0 )
Console.WriteLine("El valor es positivo");
a = 0;
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?
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.
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?
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.
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");
}
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");
}
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?
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
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");
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>;
}
Estructuras de control -WHILE
Ejemplo
int a = 1;
while ( a <= 5 )
{
Console.WriteLine(a++);
}
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
Estructuras de control -WHILE
Ejemplo
int a = 1;
while ( a <= 5 )
Console.WriteLine(a++);
¿Qué imprime?
Estructuras de control -WHILE
Ejemplo
int a = 1;
while ( a <= 5 )
Console.WriteLine(++a);
¿Y ahora, qué imprime?
Estructuras de control -WHILE
int a = 1;
while ( a <= 5 );
Console.WriteLine(++a);
Ejemplo
¿Y si ponemos un ; al
final del while?
¿Qué sucede?
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.
Estructuras de control -WHILE
Ejemplo
int a = 1;
while ( a++ <= 5 );
Console.WriteLine(a);
¿Qué imprime?
Estructuras de control -WHILE
Ejemplo
int a = 1;
while ( ++a <= 5 );
Console.WriteLine(a);
¿Y ahora?
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>;
}
Estructuras de control -FOR
Ejemplo
int i;
for (i = 1; i <= 10; i++)
{
Console.WriteLine(i);
}
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.
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.
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.
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
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
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
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++;
}
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
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.
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) { …. }
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)) { …. }
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
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)
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> );
Estructuras de control – DOWHILE
Ejemplo
int a = 1;
do {
Console.WriteLine("Hola");
}
while ( a++ != 1 );
¿Qué imprime?
¿Y si se hubiera usado el
WHILE?
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;
}
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;
}
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.
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
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
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
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
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
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
Á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
Á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
.
EJERCITACIÓN - C#
Ejercicio 1
Solicitar al usuario que ingrese por teclado su nombre y
saludarlo de manera personalizada.
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?");
}
}
}
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
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
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.
Ejercicio 2
Dados dos enteros ingresados por el usuario determinar
cuál es el mayor de ellos.
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);
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.
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)
Ejercicio 3
Solicitar al usuario que ingrese por teclado un número n y
calcular la sumatoria desde 1 hasta n.
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);
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.
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);
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
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
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

Más contenido relacionado

Similar a Clase 1.pdf (20)

Unidad 3
Unidad 3Unidad 3
Unidad 3
 
Introduccion net
Introduccion netIntroduccion net
Introduccion net
 
Tutorial de- c. ++
Tutorial de- c. ++ Tutorial de- c. ++
Tutorial de- c. ++
 
Tutorial de-c ++
Tutorial de-c ++Tutorial de-c ++
Tutorial de-c ++
 
Tutorial de-c ++
Tutorial de-c ++Tutorial de-c ++
Tutorial de-c ++
 
Republica bolivariana de venezuela 2
Republica bolivariana de venezuela 2Republica bolivariana de venezuela 2
Republica bolivariana de venezuela 2
 
Introducción a Java
Introducción a JavaIntroducción a Java
Introducción a Java
 
Desarrollo de Aplicaciones Metro en Windows 8
Desarrollo de Aplicaciones Metro en Windows 8Desarrollo de Aplicaciones Metro en Windows 8
Desarrollo de Aplicaciones Metro en Windows 8
 
Presentacion c
Presentacion cPresentacion c
Presentacion c
 
Algoritmos - Curso UNE
Algoritmos - Curso UNEAlgoritmos - Curso UNE
Algoritmos - Curso UNE
 
Presentacion c
Presentacion cPresentacion c
Presentacion c
 
Presentacion
PresentacionPresentacion
Presentacion
 
Tutorial de-c
Tutorial de-cTutorial de-c
Tutorial de-c
 
Tutorial de-c
Tutorial de-cTutorial de-c
Tutorial de-c
 
3 Conceptos progamacion-tema3
3 Conceptos progamacion-tema33 Conceptos progamacion-tema3
3 Conceptos progamacion-tema3
 
1. introducción a c#
1.  introducción a c#1.  introducción a c#
1. introducción a c#
 
Programacion C#.NET
Programacion C#.NETProgramacion C#.NET
Programacion C#.NET
 
2do parcial c
2do parcial c2do parcial c
2do parcial c
 
Introducción al curso de C.docx
Introducción al curso de C.docxIntroducción al curso de C.docx
Introducción al curso de C.docx
 
Lenguaje C
Lenguaje CLenguaje C
Lenguaje C
 

Último

c3.hu3.p1.p3.El ser humano como ser histórico.pptx
c3.hu3.p1.p3.El ser humano como ser histórico.pptxc3.hu3.p1.p3.El ser humano como ser histórico.pptx
c3.hu3.p1.p3.El ser humano como ser histórico.pptxMartín Ramírez
 
Plan Año Escolar Año Escolar 2023-2024. MPPE
Plan Año Escolar Año Escolar 2023-2024. MPPEPlan Año Escolar Año Escolar 2023-2024. MPPE
Plan Año Escolar Año Escolar 2023-2024. MPPELaura Chacón
 
La Función tecnológica del tutor.pptx
La  Función  tecnológica  del tutor.pptxLa  Función  tecnológica  del tutor.pptx
La Función tecnológica del tutor.pptxJunkotantik
 
PLANIFICACION ANUAL 2024 - INICIAL UNIDOCENTE.docx
PLANIFICACION ANUAL 2024 - INICIAL UNIDOCENTE.docxPLANIFICACION ANUAL 2024 - INICIAL UNIDOCENTE.docx
PLANIFICACION ANUAL 2024 - INICIAL UNIDOCENTE.docxJUANSIMONPACHIN
 
Procesos Didácticos en Educación Inicial .pptx
Procesos Didácticos en Educación Inicial .pptxProcesos Didácticos en Educación Inicial .pptx
Procesos Didácticos en Educación Inicial .pptxMapyMerma1
 
5° SEM29 CRONOGRAMA PLANEACIÓN DOCENTE DARUKEL 23-24.pdf
5° SEM29 CRONOGRAMA PLANEACIÓN DOCENTE DARUKEL 23-24.pdf5° SEM29 CRONOGRAMA PLANEACIÓN DOCENTE DARUKEL 23-24.pdf
5° SEM29 CRONOGRAMA PLANEACIÓN DOCENTE DARUKEL 23-24.pdfOswaldoGonzalezCruz
 
Análisis de la Implementación de los Servicios Locales de Educación Pública p...
Análisis de la Implementación de los Servicios Locales de Educación Pública p...Análisis de la Implementación de los Servicios Locales de Educación Pública p...
Análisis de la Implementación de los Servicios Locales de Educación Pública p...Baker Publishing Company
 
FICHA DE MONITOREO Y ACOMPAÑAMIENTO 2024 MINEDU
FICHA DE MONITOREO Y ACOMPAÑAMIENTO  2024 MINEDUFICHA DE MONITOREO Y ACOMPAÑAMIENTO  2024 MINEDU
FICHA DE MONITOREO Y ACOMPAÑAMIENTO 2024 MINEDUgustavorojas179704
 
SINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptx
SINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptxSINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptx
SINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptxlclcarmen
 
Día de la Madre Tierra-1.pdf día mundial
Día de la Madre Tierra-1.pdf día mundialDía de la Madre Tierra-1.pdf día mundial
Día de la Madre Tierra-1.pdf día mundialpatriciaines1993
 
Clasificaciones, modalidades y tendencias de investigación educativa.
Clasificaciones, modalidades y tendencias de investigación educativa.Clasificaciones, modalidades y tendencias de investigación educativa.
Clasificaciones, modalidades y tendencias de investigación educativa.José Luis Palma
 
DECÁGOLO DEL GENERAL ELOY ALFARO DELGADO
DECÁGOLO DEL GENERAL ELOY ALFARO DELGADODECÁGOLO DEL GENERAL ELOY ALFARO DELGADO
DECÁGOLO DEL GENERAL ELOY ALFARO DELGADOJosé Luis Palma
 
TUTORIA II - CIRCULO DORADO UNIVERSIDAD CESAR VALLEJO
TUTORIA II - CIRCULO DORADO UNIVERSIDAD CESAR VALLEJOTUTORIA II - CIRCULO DORADO UNIVERSIDAD CESAR VALLEJO
TUTORIA II - CIRCULO DORADO UNIVERSIDAD CESAR VALLEJOweislaco
 
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptx
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptxOLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptx
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptxjosetrinidadchavez
 
Presentación de Estrategias de Enseñanza-Aprendizaje Virtual.pptx
Presentación de Estrategias de Enseñanza-Aprendizaje Virtual.pptxPresentación de Estrategias de Enseñanza-Aprendizaje Virtual.pptx
Presentación de Estrategias de Enseñanza-Aprendizaje Virtual.pptxYeseniaRivera50
 
el CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyz
el CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyzel CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyz
el CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyzprofefilete
 
BIOLOGIA_banco de preguntas_editorial icfes examen de estado .pdf
BIOLOGIA_banco de preguntas_editorial icfes examen de estado .pdfBIOLOGIA_banco de preguntas_editorial icfes examen de estado .pdf
BIOLOGIA_banco de preguntas_editorial icfes examen de estado .pdfCESARMALAGA4
 

Último (20)

c3.hu3.p1.p3.El ser humano como ser histórico.pptx
c3.hu3.p1.p3.El ser humano como ser histórico.pptxc3.hu3.p1.p3.El ser humano como ser histórico.pptx
c3.hu3.p1.p3.El ser humano como ser histórico.pptx
 
Repaso Pruebas CRECE PR 2024. Ciencia General
Repaso Pruebas CRECE PR 2024. Ciencia GeneralRepaso Pruebas CRECE PR 2024. Ciencia General
Repaso Pruebas CRECE PR 2024. Ciencia General
 
Plan Año Escolar Año Escolar 2023-2024. MPPE
Plan Año Escolar Año Escolar 2023-2024. MPPEPlan Año Escolar Año Escolar 2023-2024. MPPE
Plan Año Escolar Año Escolar 2023-2024. MPPE
 
La Función tecnológica del tutor.pptx
La  Función  tecnológica  del tutor.pptxLa  Función  tecnológica  del tutor.pptx
La Función tecnológica del tutor.pptx
 
PLANIFICACION ANUAL 2024 - INICIAL UNIDOCENTE.docx
PLANIFICACION ANUAL 2024 - INICIAL UNIDOCENTE.docxPLANIFICACION ANUAL 2024 - INICIAL UNIDOCENTE.docx
PLANIFICACION ANUAL 2024 - INICIAL UNIDOCENTE.docx
 
Tema 7.- E-COMMERCE SISTEMAS DE INFORMACION.pdf
Tema 7.- E-COMMERCE SISTEMAS DE INFORMACION.pdfTema 7.- E-COMMERCE SISTEMAS DE INFORMACION.pdf
Tema 7.- E-COMMERCE SISTEMAS DE INFORMACION.pdf
 
Procesos Didácticos en Educación Inicial .pptx
Procesos Didácticos en Educación Inicial .pptxProcesos Didácticos en Educación Inicial .pptx
Procesos Didácticos en Educación Inicial .pptx
 
5° SEM29 CRONOGRAMA PLANEACIÓN DOCENTE DARUKEL 23-24.pdf
5° SEM29 CRONOGRAMA PLANEACIÓN DOCENTE DARUKEL 23-24.pdf5° SEM29 CRONOGRAMA PLANEACIÓN DOCENTE DARUKEL 23-24.pdf
5° SEM29 CRONOGRAMA PLANEACIÓN DOCENTE DARUKEL 23-24.pdf
 
Análisis de la Implementación de los Servicios Locales de Educación Pública p...
Análisis de la Implementación de los Servicios Locales de Educación Pública p...Análisis de la Implementación de los Servicios Locales de Educación Pública p...
Análisis de la Implementación de los Servicios Locales de Educación Pública p...
 
FICHA DE MONITOREO Y ACOMPAÑAMIENTO 2024 MINEDU
FICHA DE MONITOREO Y ACOMPAÑAMIENTO  2024 MINEDUFICHA DE MONITOREO Y ACOMPAÑAMIENTO  2024 MINEDU
FICHA DE MONITOREO Y ACOMPAÑAMIENTO 2024 MINEDU
 
SINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptx
SINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptxSINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptx
SINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptx
 
DIA INTERNACIONAL DAS FLORESTAS .
DIA INTERNACIONAL DAS FLORESTAS         .DIA INTERNACIONAL DAS FLORESTAS         .
DIA INTERNACIONAL DAS FLORESTAS .
 
Día de la Madre Tierra-1.pdf día mundial
Día de la Madre Tierra-1.pdf día mundialDía de la Madre Tierra-1.pdf día mundial
Día de la Madre Tierra-1.pdf día mundial
 
Clasificaciones, modalidades y tendencias de investigación educativa.
Clasificaciones, modalidades y tendencias de investigación educativa.Clasificaciones, modalidades y tendencias de investigación educativa.
Clasificaciones, modalidades y tendencias de investigación educativa.
 
DECÁGOLO DEL GENERAL ELOY ALFARO DELGADO
DECÁGOLO DEL GENERAL ELOY ALFARO DELGADODECÁGOLO DEL GENERAL ELOY ALFARO DELGADO
DECÁGOLO DEL GENERAL ELOY ALFARO DELGADO
 
TUTORIA II - CIRCULO DORADO UNIVERSIDAD CESAR VALLEJO
TUTORIA II - CIRCULO DORADO UNIVERSIDAD CESAR VALLEJOTUTORIA II - CIRCULO DORADO UNIVERSIDAD CESAR VALLEJO
TUTORIA II - CIRCULO DORADO UNIVERSIDAD CESAR VALLEJO
 
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptx
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptxOLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptx
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptx
 
Presentación de Estrategias de Enseñanza-Aprendizaje Virtual.pptx
Presentación de Estrategias de Enseñanza-Aprendizaje Virtual.pptxPresentación de Estrategias de Enseñanza-Aprendizaje Virtual.pptx
Presentación de Estrategias de Enseñanza-Aprendizaje Virtual.pptx
 
el CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyz
el CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyzel CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyz
el CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyz
 
BIOLOGIA_banco de preguntas_editorial icfes examen de estado .pdf
BIOLOGIA_banco de preguntas_editorial icfes examen de estado .pdfBIOLOGIA_banco de preguntas_editorial icfes examen de estado .pdf
BIOLOGIA_banco de preguntas_editorial icfes examen de estado .pdf
 

Clase 1.pdf

  • 1. ALGORITMOS Y PROGRAMACIÓN Clase 1 Lenguaje C# Año 2019 – 2do Cuatrimestre
  • 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
  • 16. Estructura del proyecto. Podemos organizar todo el código en diferentes archivos En SharpDevelop:
  • 17. Acceso cómodo y rápido a todas las funciones implementadas En SharpDevelop:
  • 18. El compilador nos avisará de cualquier error en este espacio En SharpDevelop:
  • 19. Creando un nuevoproyecto Menú File -> New -> Solution
  • 21. Creando un nuevoproyecto Ingresar un nombre para el proyecto
  • 22. Creando un nuevoproyecto Elegir el directorio donde guardar el proyecto
  • 23. Creando un nuevoproyecto Elegir un nombre para la solución (grupo de proyectos)
  • 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
  • 28. Agregando proyectos a unasolución Asegurarse de seleccionar ConsoleApplication
  • 29. Agregando proyectos a unasolución Elegir un nombre para el proyecto
  • 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); } } }
  • 37. Salida obtenida Al ejecutar el programa obtenemos la siguiente salida por consola
  • 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?
  • 58. Operadores aritméticos Operador Operación + Suma - Resta * Multiplicación / División % Resto int a = 100, b = 4, c=3; double d = 13.78; double r = (a+b) / (c*d);
  • 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