Publicado el 20 de Junio del 2019
515 visualizaciones desde el 20 de Junio del 2019
553,6 KB
30 paginas
Creado hace 8a (26/10/2015)
2. Tipos e instrucciones básicas
1/59
Nuestro segundo programa en C#
Problema: calcular el área de un triángulo dada su base y su
altura.
Especificación y análisis:
input: base y altura de un triángulo (base, altura ≥ 0)
output: área del triángulo, base ∗ altura/2
2/59
Jaime Sánchez. Sistemas Informáticos y Computación, UCMJaime Sánchez. Sistemas Informáticos y Computación, UCM Diseño del algoritmo
Algoritmo (muy sencillo):
• solicitar (por pantalla) al usuario y recoger de teclado los
datos base y altura
• calcular area = base ∗ altura/2
• escribir el resultado area en pantalla
3/59
Codificación del programa
using System;
class AreaTriangulo
{
static void Main ()
{
double baseT, alturaT, areaT;
string baseString, alturaString;
Console.Write ("Base del triángulo: ");
baseString = Console.ReadLine();
baseT = double.Parse(baseString);
Console.Write ("Altura del triángulo: ");
alturaString = Console.ReadLine();
alturaT = double.Parse(alturaString);
areaT = baseT*alturaT/2;
Console.WriteLine ("El área del triángulo es: " + areaT);
}
}
4/59
Jaime Sánchez. Sistemas Informáticos y Computación, UCMJaime Sánchez. Sistemas Informáticos y Computación, UCM Funcionará?
Damos al play:
Parece que sí. . .
5/59
Entendiendo el programa
El fragmento principal del programa es el bloque de código de
la función main:
double baseT, alturaT, areaT;
string baseString, alturaString;
Console.Write ("Base del triángulo: ");
baseString = Console.ReadLine();
baseT = double.Parse(baseString);
Console.Write ("Altura del triángulo: ");
alturaString = Console.ReadLine();
alturaT = double.Parse(alturaString);
areaT = baseT*alturaT/2;
Console.WriteLine ("El área del triángulo es: " + areaT);
Veamos paso a paso. . .
6/59
Jaime Sánchez. Sistemas Informáticos y Computación, UCMJaime Sánchez. Sistemas Informáticos y Computación, UCM
Entendiendo el programa
double baseT, alturaT, areaT;
Declara los identificadores baseT, alturaT y areaT como
variables de tipo double
Declarar es informar al compilador de la existencia de un
elemento (entidad) en nuestro programa.
Un identificador es un nombre inventado por el
programador para identificar (nombrar) a un “elemento”
(variable, función, clase, el propio programa. . . ) del
programa
Un tipo es un conjunto de valores (enteros, reales, cadenas
de texto, etc).
El tipo double es el tipo de los reales con doble precisión
en coma flotante. . . es un tipo que opermite almacenar
valores reales (3.45, 7.34927e12, etc)
• Para qué se utilizarán estas variables?
7/59
Entendiendo el programa
string baseString, alturaString;
• Declara los identificadores baseString y alturaString como
variables de tipo string: cadenas de texto.
• Estas variables se utilizarán para almacenar la base y la altura
del triángulo. . . pero como cadenas de texto en vez de números.
. . . pero por qué guardamos esos datos como cadenas de texto
(cuando en realidad queremos tratarlas como valores
numéricos)?
porque a priori el usuario puede introducir como entrada
cualquier secuencia de caracteres cuando se le pida la base o la
altura del triángulo. Leemos como cadena de texto y luego
convertimos al valor oportuno si tiene sentido (si no, error!)
8/59
Jaime Sánchez. Sistemas Informáticos y Computación, UCMJaime Sánchez. Sistemas Informáticos y Computación, UCM
Entendiendo el programa
Las tres instrucciones siguientes:
Console.Write ("Base del triángulo: ");
Escribe en pantalla Base del triángulo:
baseString = Console.ReadLine();
Lee de teclado una cadena de texto y la guarda en la variable
baseString (asignación de un valor a una variable)
baseT = double.Parse(baseString);
Parsea (analiza) esa cadena de texto, comprueba que
efectivamente representa un número (double) y guarda el valor
en la variable baseT (otra vez, asignación)
9/59
Entendiendo el programa
Console.Write ("Altura del triángulo: ");
alturaString = Console.ReadLine();
alturaT = double.Parse(alturaString);
Análogo al código anterior.
• En este momento tendremos en memoria dos variables baseT
y alturaT con dos números correspondientes a la base y la
altura del triángulo proporcionado por el usuario.
Ahora podemos hacer las cuentas. . .
10/59
Jaime Sánchez. Sistemas Informáticos y Computación, UCMJaime Sánchez. Sistemas Informáticos y Computación, UCM Entendiendo el programa
areaT = baseT*alturaT/2;
Esta instrucción
calcula el área del triángulo (utilizando la fórmula
conocida)
y almacena el valor resultante en la variable areaT
• Como las variables baseT y alturaT se han declarado de tipo
double, tiene sentido hacer esta operación con ellas. Y tiene
sentido guardar el resultado en areaT (también de tipo double)
11/59
Entendiendo el programa
Console.WriteLine ("El área del triángulo es: " + areaT);
En primer lugar se calcula un valor:
El resultado de concatenar la cadena de texto (string) "El
área del triángulo es:
"
con. . . el resultado de convertir el valor areaT de tipo
double a cadena de texto (string).
Por ejemplo, el número 45,27 se convierte en la cadena "45,27"
En este caso la conversión de tipo (casting) es implícita.
Es decir, se concatenan dos cadenas de texto y la cadena
resultante se escribe en pantalla.
12/59
Jaime Sánchez. Sistemas Informáticos y Computación, UCMJaime Sánchez. Sistemas Informáticos y Computación, UCM Entendiendo el programa
Algunas cosas más, para ir aprendiendo:
Las sentencias o instrucciones se separan con ;
Los bloques de código se encierran entre { y }
Toda variable tiene que haber sido declarada antes de ser
utilizada (si no, error)
Una variable puede almacenar valores del tipo con el que se
ha declarado. Si se intenta guardar un valor de otro tipo,
error
13/59
Entendiendo el programa
• Al declarar una variable de un tipo, C# reserva una zona de
memoria del tamaño adecuado para guardar valores de ese tipo.
(simplificando) C# tiene tipos para almacenar valores
booleanos (bool: true o false), numéricos enteros y reales,
caracteres simples (char) y cadenas de caracteres (string).
• Internamente asocia esa variable con la dirección de memoria
de esa zona reservada.
El compilador traduce los nombres de variable a direcciones
concretas de memoria.
Pero de cara al programador (nosotros) se puede asociar
nombre de variable con zona de memoria
Accedemos a los datos en memoria a través de variables.
• Informalmente: la ejecución de un programa en definitiva está jugando
(mediante un algoritmo) con los valores almacenados en memoria para
obtener un resultado: uno o varios valores almacenados en memoria (en
determinadas variables/direcciones).
14/59
Jaime Sánchez. Sistemas Informáticos y Computación, UCMJaime Sánchez. Sistemas Informáticos y Computación, UCM Entendiendo el programa
• Ya hemos visto la primera instrucción elemental: la asignación
variable = expresión;
expresión debe ser una expresión válida del mismo tipo que el
declarado para variable
El efecto de la asignación es:
evaluar el valor de expresión
almacenar ese valor en memoria, en la zona reservada para
variable, destruyendo el valor previo que hubiese en esa
zona de memoria.
Por eso a veces se habla de asignación destructiva el valor
destruido es irrecuperable (no hay vuelta atrás).
15/59
Entendiendo el programa. La memoria
Qué efecto tiene cada asignación del programa?
16/59
Jaime Sánchez. Sistemas Informáticos y Computación, UCMJaime Sánchez. Sistemas Informáticos y Computación, UCM
Y el resto de código en el programa? El envoltorio
using System;
• Indica al compilador que utilizaremos nombres del espacio de
nombres System.
using es una palabra reservada: no podemos utilizarla
como nombre de identificador en nuestro programa.
Un espacio de nombres es un contexto donde tienen sentido
algunos nombres concretos (y son únicos).
• El espacio de nombres System contiene la clase Console, que
tiene métodos para escribir en pantalla (Write, WriteLine) y
leer de teclado (ReadLine).
• Sirve para abreviar códido: si no incluimos esta línea
tendíamos que escribir
System.Console.Write (... y System.Console.Read (...
17/59
Entendiendo el programa
class AreaTriangulo
• Declara la clase AreaTriangulo.
Una clase es una plantilla para agrupar datos (atributos) y
código de programa (métodos) con un propósito específico.
En nuestro caso esta clase define un único método Main que
realizará todo el trabajo para resolver nuestro problema.
• En C# (y en cualquier lenguaje orientado a objetos):
Los programas se estructuran en clases.
Cada clase tiene un identificador (un nombre), que por
convención debe coincidir con el nombre del archivo que la
contiene (la clase AreaTriangulo se almacenaría en el archivo
AreaTriangulo.cs).
Por ahora, definimos una única clase y no profundizaremos en
clases, objetos, herencia, polimorfismo. . .
18/59
Jaime Sánchez. Sistemas Informáticos y Computación, UCMJaime Sánchez. Sistemas Informáticos y Computación, UCM
Entendiendo el programa
static void Main ()
• void Main (): prototipo del método (función) principal del
programa:
() indica que Main no lleva parámetros de entrada (input),
i.e., es una función sin argumentos.
Por ejemplo, la función matemática sin (seno) necesita un
argumento, la suma dos argumentos. . . pero π entendida
como función es una función constante, sin argumentos.
void indica que el método Main no devuelve nada (hace un
trabajo y termina sin devolver nada).
En general, los métodos devolverán valores de salida
(out
Comentarios de: 2. Tipos e instrucciones básicas (0)
No hay comentarios