Teoría 1
Teoría 1
PROGRAMACIÓN
Clase 1
Lenguaje C#
• Lenguaje C#
• Tipos básicos
• Estructuras de control
Framework .NET
• Un framework es un marco de trabajo para el desarrollo
de aplicaciones
Runtime)
Framework .NET
• El CLR es el motor de ejecución del framework .NET
Compilador C#
C#
Compilador VB CLR
VB.NET Código MSIL Código nativo
JIT
Otro Otro compilador
lenguaje
.NET
(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
Estructura del
proyecto. Podemos
organizar todo el
código en
diferentes archivos
SharpDevelop
Acceso cómodo y
rápido a todas las
funciones
implementadas
SharpDevelop
El compilador nos
avisará de cualquier
error en este
espacio
Creando un nuevo proyecto
DDeenntrtrooddeelalacategoría
"cW
atin
e d
g owría sA"W ppinlidcoawtiosns"
elegir
App"lC icoantisoonlse"Aeplepgliciration"
"Console Applica
Creando un nuevo proyecto
Click en Create
Organizando los ejercicios de la práctica
Asegurarse de seleccionar
Console Application
Agregando proyectos a una solución
}
}
}
C# - Primer programa
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# - Primer programa
using System;
namespace Ejercicio1
{ La instrucción
class Program Console.WriteLine escribe en
{ la consola
public static void Main(string[] args)
{
Console.WriteLine("Hola mundo");
Console.ReadKey(true);
}
}
}
C# - Primer programa
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# - Primer programa
• La instrucción Console.ReadKey(true) se queda
int var1;
char var2;
int var1;
char var2;
var1 = 3; Esta sentencia produce error
var2 = true; porque la variable var6 no
var2 = '3'; tiene un valor asignado
int var4, var5, var6;
var4 = var1;
var5 = var6;
char vocal1 = 'a', vocal2 = 'b';
int var4;
int VAR4 = var4;
C# - Declaración de variables
Errores
int var1;
char var2;
var1 = 3;
var2 = true;
var2 = '3';
int var4, var5, var6;
var4 = var1;
var5 = var6; La variable var4 ya está
char vocal1 = 'a', vocal2 = 'b'; declarada, esta línea produce
error.
int var4;
int VAR4 = var4;
C# - Declaración de variables
Particularidades en la declaración de variables
int var1;
En una misma línea se
char var2; pueden declarar varias
var1 = 3; variables del mismo tipo
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 de variables
Particularidades en la declaración de variables
int var1;
char var2;
var1 = 3;
var2 = true;
var2 = '3'; Al momento de la declaración
se puede asignar un valor
int var4, var5, var6; inicial
var4 = var1;
var5 = var6;
char vocal1 = 'a', vocal2 = 'b';
int var4;
int VAR4 = var4;
C# - Declaración de variables
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'; C# es sensible a mayúsculas
int var4; y minúsculas. VAR4 es una
int VAR4 = var4; variable distinta a var4
C# - Declaración de constantes
• Una constante es una variable a la que no se puede
cambiar su valor.
• Son útiles porque impiden que se produzcan errores al
impedir cambiar su valor durante la ejecución.
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; Conversión implícita de
byte a int
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.
int i = 100;
short s = i;
double d = 13.78;
i = d;
Conversiones de tipo numéricas explícitas
Ejemplo. Pruebe el siguiente código.
int i = 100;
short s = i; Producen errores de
Producen errores
compilación.
double d = 13.78; de compilación
Puede haber pérdida
i = d; de información o
incluso excepciones.
Conversiones de tipo numéricas explícitas
• 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; ¿Con qué valor se
queda la variable i?
Operadores aritméticos
Operador Operación
+ Suma
- Resta
* Multiplicación
/ División
% Resto
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;
int a = 3;
if ( a > 0 )
Console.WriteLine("El valor es positivo");
a = 0;
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");
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 Al igual que el IF, si el
WHILE solo tiene una
int a = 1;
instrucción, se pueden
while ( a <= 5 ) obviar las llaves
Console.WriteLine(a++);
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);
Console.WriteLine(++a);
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 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; Pasos de ejecución
for (i = 1; i <= 10; i++) 1. Se evalúa la condición
{ 2. Se ejecuta el cuerpo
Console.WriteLine(i); 3. Se modifica la variable
}
Estructuras de control - FOR
Ejecución
int i; Pasos de ejecución
for (i = 1; i <= 10; i++) 1. Se evalúa la condición
{ 2. Se ejecuta el cuerpo
Console.WriteLine(i); 3. Se modifica la variable
}
Estructuras de control - FOR
Ejecución
int i; Pasos de ejecución
for (i = 1; i <= 10; i++) 1. Se evalúa la condición
{ 2. Se ejecuta el cuerpo
Console.WriteLine(i); 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: La modificación de la
variable iteradora puede
for (int i = 1; i <= 10; ) { estar vacío.
Console.WriteLine(i++); En este ejemplo el
incremento de i se hace
} dendtreol fdoer.l cuerpo
La variable puede ser
declarada dentro del for.
Su alcance es solo en el
bloque del for.
Estructuras de control - FOR
Ejemplos
De 10 a 0,
for (i = 10; i >= 0; i--) decrementando en uno
Console.WriteLine(i);
De 1 a 10,
for (i = 1; i <= 10; i+= 2) incrementando de a dos
Console.WriteLine(i);
De 100 a 1, dividiendo
for (i = 100; i > 0; i/= 2) por dos.
Console.WriteLine(i);
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
do {
<Código hasta que test sea falso>;
}
while ( <test> );
Estructuras de control – DO WHILE
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;
}
Estructuras de control – SWITCH
Ejemplo Puede haber
Puede haber tantas
int a = 3; tantas sentencias
sencteansceiacsomcaose
secomo
switch (a) { se
case 1: nencecseitesinten
Console.WriteLine("uno");
break;
case 2:
Console.WriteLine("dos");
break;
default:
Console.WriteLine("otro");
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;
} El uso de la condición
default es opcional
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
Ejemplo
int a = 3; Si a vale 1, 2 o 3 se
switch (a) { ejecuta el mismo bloque
de código
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
switch (a) { Si a toma un valor distinto de
case 1: 1, 2, 3 o 4 NO hace nada
case 2:
case 3:
Console.WriteLine("uno, dos o tres");
break;
case 4:
Console.WriteLine("cuatro");
break;
}
Estructuras de control
• Interrupción de bucles. Pueden ser utilizados para
cualquier estructura de bucle: FOR, WHILE y DO WHILE.
• break – El bucle termina inmediatamente
if (true) {
int j = 1;
}
Ejercicio 1
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("Ingrese un número");
int num1 = int.Parse(Console.ReadLine());
Console.WriteLine("Ingrese otro número");
int num2 = int.Parse(Console.ReadLine());
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("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
Console.WriteLine("InAglriegusaquuneacopnalolas bnúrameorobs
operador l+= es equivalente a
el parafratseerle=a
mnco
friansaer+")p; alabra
+ " ";
string palabra = Console.ReadLine();
string frase = "";
while(palabra != ""){
Console.WriteLine("Ingrese
frase += palabra + " "; otra palabra o
blanco para terminar");
palabra = Console.ReadLine();
}
Console.WriteLine("La frase entera es: " + frase);