0% encontró este documento útil (0 votos)
30 vistas127 páginas

Teoría 1

Este documento introduce el framework .NET y el lenguaje C#. Explica los componentes principales de .NET como el CLR y la biblioteca de clases. También presenta el ambiente de desarrollo SharpDevelop y muestra la estructura básica de un programa en C#.

Cargado por

upperozy-3251
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PPTX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
30 vistas127 páginas

Teoría 1

Este documento introduce el framework .NET y el lenguaje C#. Explica los componentes principales de .NET como el CLR y la biblioteca de clases. También presenta el ambiente de desarrollo SharpDevelop y muestra la estructura básica de un programa en C#.

Cargado por

upperozy-3251
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PPTX, PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 127

ALGORITMOS Y

PROGRAMACIÓN
Clase 1
Lenguaje C#

Dr. Lic. Waldo Hasperué


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 convierten 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
Código fuente Código byte Código nativo

Compilador C#
C#

Compilador VB CLR
VB.NET Código MSIL Código nativo
JIT
Otro Otro compilador
lenguaje
.NET

Tiempo de compilación Tiempo de ejecución


SharpDevelop
• Cómo ambiente de desarrollo para realizar los diferentes

ejercicios de las prácticas usaremos:


• 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
SharpDevelop
SharpDevelop Aquí escribiremos
nuestro código
SharpDevelop

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

Menú File -> New -> Solution


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

Ingresar un nombre para el


proyecto
Creando un nuevo proyecto

Elegir el directorio donde


guardar el proyecto
Creando un nuevo proyecto

Elegir un nombre para la


solución (grupo de proyectos)
Creando un nuevo proyecto

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


El archivo Program.cs es donde
escribiremos el código.
escribiremos
Haciendo el código.
doble click sobre este
Haciendo doble click sobre este
elemento abre el código para ser
elemento abre el código.
editado.
Agregando proyectos a una solución

Click derecho sobre la solución.


Luego ir al menú Add -> New project
Agregando proyectos a una solución

Asegurarse de seleccionar
Console Application
Agregando proyectos a una solución

Elegir un nombre para el


proyecto
Agregando proyectos a una solució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"
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# - 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

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 de datos
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 de variables
• 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 de variables
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'; var6;
int var4, var5,
var4 = var1;
var5 = var6; 'a', vocal2 = 'b';
char
int vocal1 =
var4;
int VAR4 = var4;
}
C# - Declaración de variables
Errores
La variable var2 es de tipo
char. No puede almacenar
int var1; otro tipo de datos que no sea
char var2; un caracter
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 de variables
Errores

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.

• Se declaran con la palabra clave const.


• Al declarar una variable se debe indicar que tipo de datos
almacenará y el 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; 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.

byte b = 10; Conversión implícita de


int i = b; int a float.
Console.WriteLine(i); Se pierde precisión,
pero no magnitud
i = 100000016;
float f = i;
Console.WriteLine(f.ToString("#.00"));
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;
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

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; // Equivalente a:


c+= (a-b); // c = c + (a-b);
b*= a; // b = b * a;
a++; // a = a + 1;
C# - Bloque de sentencias
• 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 de sentencias
• 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;
La variable i Console.WriteLine(i);
solo puede }
ser utilizada
dentro del Console.WriteLine(i);
bloque qu}e
fue declarada
C# - Bloque de sentencias
• 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); Esta instrucción
produce error
} porque la variable i
Console.WriteLine(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; ¿Qué imprime si a vale -1?


if(a>0)
if(a>1)
Console.WriteLine(">1");
else
Console.WriteLine("a es negativo");
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
Estructuras de control - IF
Los IFs pueden ser anidados
bloque
Udseatnedrmo
ilnlaavmeossdqeubeloque
int a = -1; asociealmEoLsSeEl ELSE
al
if(a>0) {
correpsrpimonedreI
if(a>1) Fal
Console.WriteLine(">1"); primer IF
}
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 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);

¿Y ahora, qué imprime?


Estructuras de control - WHILE
Ejemplo
¿Y si ponemos un ; al
int a = 1; final del while?
while ( a <= 5 ); ¿Qué sucede?

Console.WriteLine(++a);
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; 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

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)) { …. } And de circuito largo, las


if ((a != 3) | (a != 4)) { …. } dos condiciones son
if ( ! (a == b) && (b > 9)) { …. } evaluadas
Operadores lógicos
Operador Operación
& And
| Or
! NOT
^ XOR
&& And en cortocircuito
|| Or en cortocircuito

And de circuito corto, si


la primer condición es
if ((a >= b) & (b < 0)) { …. }
falsa, la segunda
if ((a != 3) | (a != 4)) { …. }
condición NO se evalúa
if ( ! (a == b) && (b > 9)) { …. }
(El resultado del And ya
se sabe que es false)
Estructuras de control – DO WHILE
• 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 – 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

• 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


Estructuras de control
Interrupción de bucles. Ejemplo:

int i; ¿Qué imprime?


for(i=1; i<=10; i++) {
if (i==5)
break;
if (i % 2 == 0)
continue ;
Console.WriteLine(i);
}
Ámbito de las variables
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;
} El compilador marca un
if (true) { error, ya que se está
"redefiniendo" la variable i
int j = 0;
}
if (true) {
int j = 1;
}
Ámbito de las variables
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;
} LLaassvvaariraiabblelessj jeess
if (true) { tátánn
efifnpin
ddesu rro
pididoapapsio
sbcb loalo
ca dqdq
auauueunnaa
int j = 0; io NNooheh eana .y.eerrro
neysu
} r.r.

if (true) {
int j = 1;
}
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
Las cadenas de caracteres
namespace Ejercicio1 se escriben encerradas con
{ comillas dobles
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 Console.ReadLine permite
ingresar datos por teclado.
namespace Ejercicio1 Lee todos los caracteres
{ hasta que el usuario presiona
class Program la tecla Enter
{
public static void Main(string[] args)
{
Console.WriteLine("Ingrese su nombre");
string nombre = Console.ReadLine();
Console.WriteLine("Hola " + nombre + " ¿qué tal?");
}
}
}
Ejercicio 1
El signo + es utilizado para la
namespace Ejercicio1 concatenación de dos strings.
{
class Program
{
public static void Main(string[] args)
{
Console.WriteLine("Ingrese su nombre");
string nombre = Console.ReadLine();
Console.WriteLine("Hola " + nombre + " ¿qué tal?");
}
}
}
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.ReadLine devuelve
Console.WriteLine(num1); siempre un dato de tipo
string.
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) Int.Parse convierte un string a
Console.WriteLine(num1); número
(siempre que se pueda)
else
Console.WriteLine(num2);
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
El string vacío o nulo se
e sc r ibe c d o s do b le
Console.WriteLine("Ingrcomillas
e se u n p a la b r a blanco
sin nada entre
on para s
a o
termimneadri"o);
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
No es el string vacío, es
Console.WriteLine("Ingruenssetriungna
que tie ne u n
p a la br a blanco
carácter: el espacio en
o para termibnlaanrc"o);
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

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);

También podría gustarte