Apuntesparte 1
Apuntesparte 1
Apuntesparte 1
C#
Elementos del lenguaje
Elemento Ejemplos
literal 7 18 14
operador + - * / % =
puntuación ; { } ,
Palabras clave
abstract as base bool break
byte case catch char checked
class const continue decimal default
delegate do double else enum
event explicit extern false finally
fixed float for foreach goto
if implicit in int interface
internal is lock long namespace
new null object operator out
override params private protected public
readonly ref return sbyte sealed
short sizeof stackalloc static string
struct switch this throw true
try typeof uint ulong unchecked
unsafe ushort using virtual void
while
Literales
tipo literales
cadena "Hello"
nulo null
Operadores
categoría operadores
aritméticos + - * / %
lógicos && || ! ?:
asignación =
Identificadores
• Reglas para construirlos
– Pueden contener letras y números
– Deben empezar con una letra
– Diferencian minúsculas y mayúsculas
• Recomendaciones
– Utilizar nombres con sentido
– Evitar en lo posible las abreviaturas
– Seguir los convenios de mayus./minus.
• camelCase
• PascalCase
Identificadores (II)
Ejemplos
• nota1 es correcto
• 1nota no es correcto
• nota no es igual que Nota
• camelcase: notaFinal
• pascalcase: NotaFinal
• Preferible NotaFinal a NFin
Namespaces
• En aplicaciones grandes pueden existir conflictos
en la nomenclatura de los tipos
• Los tipos se agrupan en categorias o
Namespaces
• Los Namespaces deben de ser referenciados
para
utilizar los tipos incluidos en ellos
• Podemos incluir un namespace al principio del
programa con la sentencia „using‟
• Los Namespaces más utilizados son:
– System
– System.IO
– System.Windows.Forms
– System.Drawing
Namespaces (II)
class HolaMundo
{
static void Main( )
{
System.Console.WriteLine(“Hola Mundo”);
}
}
using System;
Hola Mundo
class HolaMundo
{ _
static void Main( )
{
Console.WriteLine(“Hola Mundo”);
}
}
Signos de puntuación
• En el código los espacios en blanco
y los saltos de línea se ignoran
• El código está formado por
sentencias
• Con punto y coma (;) indicamos el
final de una sentencia
• Varias sentencias pueden estar
agrupadas en un bloque delimitado
por llaves ({...})
Signos de puntuación (II)
using System;
class Notas 6
{ _
static void Main( )
{
int teoria = 4;
int practica = 2;
int final;
final = teoria + practica;
Console.WriteLine(final);
}
}
Declaraciones
• Las declaraciones introducen una variable en un
bloque
• Una variable tiene un identificador y un tipo
• Al declarar una variable podemos asignarle un
valor inicial
• En una sentencia podemos declarar varias
variables de un mismo tipo
• Ejemplos
– int nota;
– int nota = 5;
– int practica = 4, teoria = 2, nota;
– string nombre;
– string apellido1 = “Cuartas”, apellido2 =
“Hernandez”;
Expresiones
• Las expresiones generan un valor
• No podemos utilizar una variable en
una expresión a menos que antes
le asignemos un valor
• Ejemplo:
int a = 4, b = 2,
c; c = b * (a - 1);
• Ejemplo:
int a, b = 2, c;
c = b * ((a = 4) –
1);
Clase Console
• Se encuentra en el namespace System.
• Nos permite la entrada y salida de datos.
• Console.ReadLine( );
Lee un dato del teclado al pulsar intro.
Devuelve un string.
• Console.Write(string);
Escribe un string en la consola.
• Console.WriteLine(string);
Escribe un string en la consola y salta a la
siguiente linea.
• Tanto Write como WriteLine aceptan
también otros tipos además de string.
Clase Console (II)
Ejemplo de entrada y salida de datos
using System; Como te llamas ?
class Saludo Miguel
{ Hola, Miguel
static void _
Main( )
{
string nombre;
Console.WriteLine(“Como te llamas ?”);
nombre = Console.ReadLine( );
Console.Write(“Hola, ”);
Console.WriteLine(nombre);
Console.ReadLine( );
}
}
Tipos enteros
tipo System. Rango signo bits
Ejemplos
char inicial = „m‟; string nombre = “Alba”;
char letra; string apellido1,
char saltoLinea; apellido2;
Console.Write(“C:\temp\nC:\\temp”);
C:
emp C:\
temp
System.Char
• char es un alias para System.Char
• El tipo char almacena un carácter o una
secuencia de escape
• El tipo char se puede tratar también
como
entero (operaciones aritméticas)
• Métodos que devuelven true o false
(bool)
• char.IsDigit(c) Comprueba si el contenido de c es un
número
Ejemplos
int nota; bool blanco, botella = true, leche;
bool suspenso, aprobado, matricula;
blanco = true;
nota = 4;
suspenso = (nota < 5); leche = (blanco && botella);
aprobado = (nota >= 5);
matricula = (nota == 10);
Clase Convert
• Se encuentra en el namespace System.
• Nos permite la conversión de tipos.
• Convert.ToInt32(a);
Devuelve el valor de a convertido a int
• Convert.ToDouble(b);
Devuelve el valor de b convertido a double
• Convert.ToString(c);
Devuelve el valor de c convertido a string
Solución:
Convertir alguno de los operandos de la expresión en double.
int total = 5; 2,5
double mitad;
mitad = _
Convert.ToDo
uble(total) / 2;
// ó también:
mitad =
Otros operadores de asignación
Nos sirven para reducir código
Suma = Suma + 14 es igual que Suma +=
14
Suponiendo int a = 10;
-= a -= 6 a=a-6 a vale 4
*= a *= 4 a=a*4 a vale 40
/= a /= 2 a=a/2 a vale 5
%= a %= 3 a=a%3 a vale 1
Operadores de incremento y
decremento
• Operador incremento ( x++ )
– Añade 1 a una variable
– Es lo mismo que x = x + 1
• Operador decremento ( x--)
– Resta 1 a una variable
– Es lo mismo que x = x – 1
• PreIncremento y PostIncremento
– x++ ó x-- Primero ejecutan la acción y luego añaden
o restan uno a la variable.
– ++x ó -- x Primero añaden o restan uno a la variable y
luego ejecutan la acción.
Operadores de incremento y
decremento (II)
Operador Nombre Ejemplo
++ PreIncremento ++a
Incrementa a en 1, luego utiliza el nuevo valor de a en la expresión
++ PostIncremento a++
Usa el valor de a en la expresión y después lo incrementa en 1
-- PreDecremento --a
Decrementa a en 1, luego utiliza el nuevo valor en la expresión
-- PostDecremento a--
Usa el valor de a en la expresión y después lo decrementa en 1
Operadores de incremento y
decremento (III)
PostIncremento
int c = 5; 5
Console.WriteLine(c); 5
Console.WriteLine(c++); 6
_
Console.WriteLine(c);
PreIncremento
int c = 5; 5
6
Console.WriteLine(c);
6
Console.WriteLine(++c); _
Console.WriteLine(c);
Precedencia y Asociatividad
operadores Asociatividad Tipo
() izquierda a derecha parenteris
++ -- derecha a izquierda unario PostFijo
++ -- + - derecha a izquierda unario Prefijo
* / % izquierda a derecha multiplicación
+ - izquierda a derecha adición
< <= > >= izquierda a derecha relacional
== != izquierda a derecha igualdad
?: derecha a izquierda condicional
= += -= *= /= %= derecha a izquierda asignación
Comentarios
• Se utilizan para hacer aclaraciones sobre el código
• Los comentarios son ignorados por el compilador
• Comentarios en una linea //...
• Comentarios en múltiples lineas /*...*/
class HolaMundo
{
/* Este programa muestra por pantalla
la frase Hola mundo */
static void Main ( )
{
System.Console.WriteLine(“Hola
Mundo”);
}
} // Aquí finaliza el programa
Escribiendo código
c = a + b;
Console.WriteLine(c);
Diagramas de flujo
• Son una representación de la sucesión de
acciones en un programa
• Las acciones se representan con los
siguientes símbolos
– Un ovalo para indicar el principio o fin
– Un rectangulo para indicar una acción
– Un rombo para indicar una decisión
• Las acciones se unen entre si mediante
flechas que indican el posible flujo del
programa.
Diagramas de flujo (II)
Inicio
Pedir Nota
true false
Mostrar “Aprobado” Nota >= 5 Mostrar “Suspenso”
Fin
„ifs‟ anidados
Console.WriteLine(“Introduzca nota: “); Introduzca nota:
int Nota = Convert.ToInt32(Console.ReadLine());
4
if (Nota < 5)
{ Suspenso
Console.WriteLine(“Suspenso”); _
}
else
Introduzca nota:
{
if (Nota < 7) 5
{ Aprobado
Console.WriteLine(“Aprobado”); _
}
else
{ Introduzca nota:
if (Nota < 9) 8
{ Notable
Console.WriteLine(“Notable”);
}
_
else
{ Introduzca nota:
Console.WriteLine(“Sobresaliente 9
”);
}
Sobresaliente
} _
}
Inicio
„ifs‟ anidados (II)
Pedir Nota
true
Mostrar “Suspenso” Nota < 5
false
true
Mostrar “Aprobado” Nota < 7
false
true
Mostrar “Notable” Nota < 9
f
alse
Mostrar “Sobresaliente”
Fin
Operador condicional (?:)
(condicion ? ValorSiCierta : ValorSiFalsa)
•Si condicion es true devuelve un valor y si es
false devuelve el otro.
• También se pueden anidar una dentro de
otra.
Ejemplo: Introduzca nota:
7
Console.WriteLine(“Introduzca nota: “); Aprobado
int Nota = Convert.ToInt32( _
Console.ReadLine( ));
Introduzca nota:
Console.WriteLine(Nota >= 5 ? 4
“Aprobado” : Suspenso
“Suspenso”); _
while (condicion)
La estructura while {
...
}
true
Contador <= 10 Mostrar Contador Contador = Contador + 1
false
Fin
Algoritmos
Repetición controlada por un contador
• Problema
Pedir al usuario 10 notas y calcular la media
• Pseudocodigo
Hacer el total igual a 0
Hacer el contador igual a 0
true
Contador < 10 Pedir Nota
Fin
Algoritmos
Repetición controlada por un contador (III)
Código
int Contador = 0;
double Nota, Total = 0, Media;
Pedir Nota
Diagrama de Flujo
Pedir Nota
true
Nota != Centinela Total += Nota Contador += 1
false
true
Contador > 0 Media = Total / Contador
false
Mostrar Ninguna Nota Mostrar Media
Introducida
Fin
Algoritmos
Repetición controlada por un valor centinela (III)
int Contador = 0;
double Nota, Total = 0, Media;
// Continuación
if (Contador > 0)
{
Media = Total / Contador;
Console.WriteLine(“La media es “ + Media);
}
else
{
Console.WriteLine(
“No se ha introducido ninguna nota.”);
}
Algoritmos
Repetición con condicionales dentro
• Problema
Pedir varias notas y mostrar el número de
suspensos y aprobados
• Pseudocódigo
Hacer Suspensos y Aprobados igual a 0
Pedir la primera nota (puede ser el valor centinela)
Mientras que el usuario no introduzca el valor centinela
Si la Nota es menor de 5
Sumar uno a Suspensos
sino
Sumar uno a Aprobados
Pedir la siguiente nota
Mostrar Aprobados y
Suspensos
Inicio
Algoritmos
Suspensos = 0 Repetición con condicionales dentro (II)
Aprobados = 0
Diagrama de Flujo
Pedir Nota
Pedir Nota
true true
Nota != Centinela Nota < 5 Suspensos ++
Mostrar Aprobados
Mostrar Suspensos
Fin
Algoritmos
Repetición con condicionales dentro (III)
int Suspensos = 0, Aprobados = 0;
Console.Write(“Introduzca nota (-1 Fin): ”);
double Nota =
Convert.ToDouble(Console.ReadLine( )); while (Nota !=
-1)
{
if (Nota < 5)
{
Suspensos++;
}
else
{
Aprobados++;
}
Console.Write(“Introduzca nota (-1
Fin): ”); Nota =
Convert.ToDouble(Console.ReadLine());
}
Operadores lógicos
1
true
2
Contador <= 5
3
4
false 5
_
Fin
La estructura for for ( Exp1; Exp2; Exp3 )
{
...
}
true
a <= 5 Mostrar a a++
false
Fin
La estructura for (IV).
Bucles Anidados.
for ( int a = 1; a <= 5; a++ ) O
{ OO
for ( int b = 1; b <= 5; b++)
OOO
{
if ( b <= a ) OOOO
{ OOOOO
Console.Write(“O”); _
}
}
Console.Write(“\n”);
}
Console.ReadLine();
La estructura switch ( Expresion )
switch / {
•case
El tipo de la Expresion debe case Valor1:
de ser entero, string o char. ...
• En función del valor que break;
tenga Expresion ejecuta el case Valor2:
código que va a
continuación del case que ...
tiene ese valor. break;
• Después de incluir código ...
en un case deberemos
poner la sentencia break.
default:
• Podemos incluir
opcionalmente un default ...
que se ejecuta si no se break;
ejecutaron ninguno de los }
anteriores.
La estructura switch / case (II)
Console.WriteLine(“Introduzca día: ”); Introduzca día ?
string Dia = Console.ReadLine(); Lunes
Dia = Dia.ToUpper( ); Ir a clase
_
switch ( Dia )
{
Introduzca día ?
case “SABADO”:
Sabado
Console.WriteLine(“Salir de copas.”);
Salir de copas
break;
_
case “DOMINGO”:
Console.WriteLine(“Ir al cine.”);
break; Introduzca día ?
default: Domingo
Console.WriteLine(“Ir a clase”); Ir al cine
break; _
}
Inicio La estructura
switch / case (III)
Pedir Dia
Diagrama de Flujo
true
Dia es Sabado Mostrar “Salir de copas”
false
true
Dia es Domingo Mostrar “Ir al cine”
false
Mostrar “Ir a
clase”
Fin
Bucles. break y continue
• Bucle: sentencias que se repiten.
• break y continue alteran el orden normal
de ejecución de un bucle.
• break – Termina la ejecución del bucle
en ese momento de forma definitiva.
• continue – Finaliza la ejecución del ciclo
en ese momento y vuelve al principio del
bucle para repetirlo.
Bucles. break y continue (II)
a++
true false
a <= 5 a == 3 Mostrar a
Fin
Bucles. break y continue (IV)
Inicio
Diagrama de Flujo
int a = 1
continue
true true
a <= 5 a == 3 a++
continu
e
false false
Fin Mostrar a
Clase Random
• Se encuentra en el namespace System
• Nos permite generar números aleatorios.
• objetoRandom.Next()
Devuelve un número aleatorio entre 0 e int.MaxValue
(int.MaxValue = 2,147,483,647)
• objetoRandom.Next(x)
Devuelve un número aleatorio entre 0 y x (sin incluir
x).
• objetoRandom.Next(x, y)
Devuelve un número aleatorio entre x e y (sin incluir
y).
Clase Random (II)
EJEMPLO: Mostrar 20 números aleatorios del 1 al 6
colocando 5 en cada fila.