You are on page 1of 17

UNIVERSIDAD DE EL SALVADOR

FACULTAD DE INGENIERIA Y ARQUITECTURA


ESCUELA DE INGENIERIA DE SISTEMAS INFORMATICOS

INTRODUCCION A LA INFORMATICA - CICLO I 2017


Unidad II. Estructuras Control

Objetivo de la Unidad II
- Conocer la estructura del programa, haciendo uso de sentencias de control secuenciales.
- Conocer las caractersticas y forma de trabajo de C# y .NET
- Explorar la forma de Programar en C# a travs de Consola.

Contenido de la Unidad:
1. Buenas prcticas de programacin.
2. Uso de maysculas y minsculas.
2.1 Estilo Pascal
2.2 Estilo Camel
2.3 Estilo todas maysculas
3. Entrada y salida por consola
4. Clculos. Operadores aritmticos
4.1 Precedencia de los operadores
4.2 Ejemplo en Visual Studio
5. Funciones en C#

1.0 Buenas Practicas de Programacin en C#

Aunque algunas de ellas no se ven completamente en detalle en estos primeros ejemplos, es necesario
que tenga una referencias de ellas para que dado el momento en tema que se estudian, sepa de el por
qu esa nomenclatura.

1. Utilizar tipos especficos de C# (alias) en lugar de los tipos definidos en el namespace System.

2. Para comparar dos strings se debe utilizar el String.Equal pasndole cmo parmetro el
StringComparison para evitar diferencias entre maysculas y minsculas, as como tambin las
diferentes culturas.

1
3. Utilizar String.Empty en lugar de .

4. Evitar mtodos y propiedades pblicas, a menos que sea estrictamente necesario accederlas
desde afuera de la clase. Utilizar el keyword internal (este tema ser tratado posteriormente, pero puede
verse una descripcin ms detallada en (Microsoft, 2014) ) si estos miembros deben ser accedidos
desde dentro del mismo assembly.

5. Utilizar el archive AssemblyInfo para completar informacin como Nmero de versin, Descripcin,
Compaa, Copyright, etc.

6. Al abrir conexiones a bases de datos, Sockets, Streams, etc. siempre cerrarlos en los bloques
finally. Esto asegurar que an ante la eventualidad de una excepcin, estos accesos sern cerrados.
Se puede usar el Using en caso de no tener que capturar una excepcin en particular dentro del catch.

7. La declaracin de las variables locales de un mtodo, deber realizarse en el bloque superior de


ste. Todas las variables deben estar declaradas en el mismo lugar y deben ser inicializadas para
limpiar su valor predeterminado.

8. Utilizar la clase StringBuilder en lugar de String cuando sea requerido manipular cadenas en loops
y en operaciones de concatenacin intensivas ya que ste reporta una mejor performance. En caso de
tratarse de concatenaciones simples, utilizar String.Concat.

9. Utilizar el largo de cadenas para determinar si stas son vacas, en lugar de realizar una
comparacin con una cadena vaca. Si la variable puede tener el valor null, es posible tambin utilizar
el mtodo String.IsNullOrEmpty para realizar esta verificacin:

if ( String.IsNullOrEmpty(customerName))

Los puntos 4,5 y 6 sern tratados posteriormente, pero puede buscar informacin sobre ellos si
as lo desea.

2 Convenciones del uso de Maysculas y Minsculas

Muchas convenciones de nomenclatura hacen uso de las maysculas y minsculas en sus


identificadores.

2
Entre las nomenclaturas ms utilizadas tenemos:

2.1 Estilo Pascal (PascalCase)

La primera letra del identificador y la primera letra de las siguientes palabras concatenadas
estn en maysculas. El estilo de maysculas y minsculas Pascal se puede utilizar en
identificadores de tres o ms caracteres, por ejemplo:

ImageSprite

2.2 Estilo camelCase

La primera letra del identificador est en minscula y la primera letra de las siguientes palabras
concatenadas en mayscula, por ejemplo:

imageSprite

Es un estilo de escritura que se aplica a frases o palabras compuestas. El nombre se debe a


que las maysculas a lo largo de una palabra en camelCase se asemejan a las jorobas de
un camello.

2.3 Estilo Maysculas (ALL_CAPS)

Todas las letras del identificador se encuentran en maysculas ejemplo

IO

En la tabla siguiente se resumen las reglas de uso de maysculas y se proporcionan ejemplos de los
diferentes tipos de identificadores.

Uso de maysculas
dentificador Ejemplo
o minsculas

Class Pascal AppDomain

Tipo Enum Pascal ErrorLevel

Valores enum Pascal FatalError

3
Evento Pascal ValueChange

Clase de Pascal WebException


excepciones Nota Termina siempre con el sufijo
Exception.

Campo esttico de Pascal RedValue


slo lectura

Interfaz Pascal IDisposable


Nota Comienza siempre con el prefijo I.

Mtodo Pascal ToString

Espacio de Pascal System.Drawing


nombres

Parmetro Camel typeName

Propiedad Pascal BackColor

Campo de Camel redValue


instancia protegido Nota Se utiliza en contadas ocasiones. Es preferible
utilizar una propiedad, en vez de un campo de
instancia protegido.

Campo de Pascal RedValue


instancia pblico Nota Se utiliza en contadas ocasiones. Es preferible
utilizar una propiedad, en vez de un campo de
instancia pblico.

3 Instrucciones de Entrada/Salida por Consola

Los programas de consola de C# generalmente utilizan los servicios de entrada y salida proporcionados
por la clase Console de .NET Framework. La instruccin Console.WriteLine("Hello, World!"); utiliza el
mtodo WriteLine(). Muestra su parmetro de cadena en la ventana de lnea de comandos seguida de
una nueva lnea. Otros mtodos de Console se utilizan para otras operaciones de entrada y salida. La
clase Console es un miembro del espacio de nombres System. Si no se incluyera la instruccin using
System; al principio del programa, tendra que especificar las clases de System de la siguiente manera:

System.Console.WriteLine();

4
Escribe una nueva lnea en la consola, es como escribir una lnea y presionar enter. Por ejemplo,
podemos hacer:

Console.WriteLine(Lo que quiera q salga en la consola);

Tambin podremos imprimir las variables de nuestro programa, para esto hay dos formas, pero
veamos mejor dos ejemplos que son lo mismo:

//declaramos dos variables


string nombre = "Invitado";
int edad = 22;
//Imprimimos una linea en la consola de dos formas distintas
Console.WriteLine("Tu nombre es: "+nombre+" y tienes " + edad + " aos.");
//En C# se usa el operador + para concatenar cadenas
Console.WriteLine("Tu nombre es {0} y tienes {1} aos", nombre, edad);

System.Console.WriteLine("Hello World!");

El mtodo WriteLine es muy til y lo utilizar a menudo en estas aplicaciones de consola.

WriteLine puede mostrar cadenas de caracteres:

Console.WriteLine("Hello World!");

WriteLine tambin puede mostrar nmeros:

int x = 42;

Console.WriteLine(x);

Si necesita mostrar varios elementos, utilice {0} para representar el primer elemento, {1} para el
segundo elemento, y as sucesivamente, de la forma siguiente.

int year = 1066;


string battle = "Battle of Hastings";
Console.WriteLine("The {0} took place in {1}.", battle, year);

El resultado presentar la siguiente apariencia:


The Battle of Hastings took place in 1066.

Console.Write()

Hace casi lo mismo que Console.WriteLine() pero sin cambiar de lnea, o sea concatena el
texto que le pasemos al mtodo con lo que se haya escrito hasta ese momento en la consola.

5
Console.ReadLine()

Se usa para leer lo que el usuario escribi en la consola, y podemos guardarlo en una variable para
despus usarlo en nuestro programa. No hay que pasarle ningn parmetro y el programa solo
continuar cuando el usuario teclee alguna lnea y presione Enter. Podemos hacer algo como esto:

En el siguiente ejemplo veremos cmo leer una cadena de texto en una consola C# y mostrarla por
pantalla.

Console.WriteLine("Escriba su nombre");
string nombre = Console.ReadLine();

Importante: Si lo que queremos es recoger lo que el usuario escriba como un tipo en especfico, por
ejemplo, un entero, deberemos usar el mtodo esttico int.Parse, por ejemplo:

int x = int.Parse(Console.ReadLine());
ya que lo que devuelve Console.ReadLine() es un string.

Para ello, declararemos una variable de tipo String llamada texto. Posteriormente a travs del
mtodo ReadLine de la clase Console, leeremos el contenido tecleado por el usuario y lo
almacenaremos en dicha variable. Finalmente, a travs del mtodo WriteLine de la claseConsole,
mostraremos el contenido de la variable texto.

using System;

class Ejemplo
{
public static void Main(string[] args)
{
Console.WriteLine("Introduzca un texto");
String texto;
texto=Console.ReadLine();
Console.WriteLine("El texto introducido es: " + texto);
}
}

6
Console.ReadKey()

Este mtodo resulta importante algunas veces, sobre todo cuando queremos darle varias opciones al
usuario (a, b, c, d). Aunque se puede utilizar Console.ReadLine(). En este caso, este mtodo lo que
devuelve es un objeto de tipo ConsoleKeyInfo, y se puede utilizar de la siguiente forma, por ejemplo:

Console.WriteLine("Presiona una tecla");


ConsoleKeyInfo c = Console.ReadKey();
Console.WriteLine("Presionaste la tecla "+ c.KeyChar);

4. Clculos: operadores aritmticos

Operadores

Un operador en C# es un smbolo formado por uno o ms caracteres que permite realizar una
determinada operacin entre uno o ms datos y produce un resultado.

A continuacin se describen cules son los operadores incluidos en el lenguaje clasificados


segn el tipo de operaciones que permiten realizar, aunque hay que tener en cuenta que C#
permite la redefinicin del significado de la mayora de los operadores segn el tipo de dato
sobre el que se apliquen, por lo que lo que aqu se cuenta, se corresponde con los usos ms
comunes de los mismos:

Operaciones aritmticas: Los operadores aritmticos incluidos en C# son los tpicos de suma
(+), resta (-), producto (*), divisin (/) y mdulo (%).

Los operadores aritmticos son signos que nos indican un clculo, como suma o multiplicacin,
entre otros; a continuacin se presentan los que utilizaremos en esta asignatura, su
representacin puede variar, de acuerdo al lenguaje de programacin que se utilice. La
simbologa utilizada en los siguientes ejemplos est basada en la sintaxis del Lenguaje de
Programacin C#:

Operacin Smbolo Tipo de resultado Ejemplo


Cambio de Signo - Entero o real -(-2)
(Negativo)
Multiplicacin * Entero o real 3*A

7
Divisin / real A/B
Suma + Entero o real A+3
Resta - Entero o real B2
Residuo de divisin % Entero 15 % 2
(Divisin residual)

7 2

Residuo 1 3 Cociente

Est claro que el smbolo de la suma ser un +, y podemos esperar cual ser el de la resta,
pero alguna de las operaciones matemticas habituales tienen smbolos menos intuitivos.

Cuando se trabaja con operadores debemos tener en cuenta el orden de los operadores que para C#
sera lo siguiente:

En primer lugar se realizarn las operaciones indicadas entre parntesis.


Luego la negacin.
Despus las multiplicaciones, divisiones y el resto de la divisin.
Finalmente, las sumas y las restas.
En caso de tener igual prioridad, se analizan de izquierda a derecha.

4.1 Precedencia de los operadores matemticos en C#

Asociatividad de Operadores

Todos los operadores binarios, salvo los de asignacin, son asociativos por la izquierda.

Los operadores de asignacin y el operador condicional (?) son asociativos por la derecha.

4.2 Ejemplos en Visual Studio

En el siguiente Ejemplo se declaran las variables a y b con sus valores asignados directamente en el
cdigo, luego las variables para cada operacin aritmtica bsica suma, resta, producto, divisin y
modulo.

8
Cdigo Ejemplo de Operadores en Visual C#
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace clase2_operadores_estructuras_arreglos

{
class operadores

{
static void Main(string[] args)
{

//Declaro las variables necesarias


int a,b;
double suma, resta, producto, div, modulo;

//Asignando valores a las variables


a = 45;
b = 100;

//Realizando las operaciones aritmticas


suma = a + b;

/*Bloque de codigo para mostrar resultados */


Console.WriteLine("*** OPERACIONES MATEMATICAS ***\n");
Console.WriteLine("Suma = {0}", suma);
Console.WriteLine("Operaciones realizada con xito");

Console.ReadKey();

}
}
}
Observaciones

Observe que para ver los valores de las variables se debe utilizar un ndice dentro de llaves, por ejemplo
mostramos la suma usando:

Console.WriteLine("Suma = {0}", suma);

9
SALIDA EN CONSOLA

Modificacin del programa:

Que podemos hacer para no definir un valor constante de variables dentro del cdigo, consideremos
que se quiere ingresar los valores. Para capturar la variable utilizamos.

variable = System.Console.ReadLine();

Para convertir una variable numrica ingresada.

Numero = System.Convert.ToInt32( System.Console.ReadLine() );

Por ejemplo si queremos capturar el valor de a y b

System.Console.WriteLine("Introduce el primer nmero");


a = System.Convert.ToInt32(System.Console.ReadLine());
System.Console.WriteLine("Introduce el segundo nmero");
b = System.Convert.ToInt32(System.Console.ReadLine());

Sugerencia de prctica,
Modifique el programa para lograr que muestre la siguiente salida.

10
Modifique el programa para que presente los resultados en ventanas de dialogo.

Modifique el programa para que reciba los dos valores y no sea necesario dejarlos fijos en el
cdigo.

1. Funciones en C#
Para utilizar en el diseo de una solucin en C#, las funciones trigonomtricas, logartmicas y otras
funciones matemticas comunes hay que agregar using System.Math

Sintaxis
public static class Math

Mtodos

Descripcin

Devuelve el valor absoluto de un nmero Decimal.


Abs(Decimal)

Abs(Double) Devuelve el valor absoluto de un nmero de punto


flotante de precisin doble.

Abs(Int16) Devuelve el valor absoluto de un entero de 16 bits con


signo.

Abs(Int32) Devuelve el valor absoluto de un entero de 32 bits con


signo.

Abs(Int64) Devuelve el valor absoluto de un entero de 64 bits con


signo.

Abs(SByte) Devuelve el valor absoluto de un entero de 8 bits con


signo.

Abs(Single) Devuelve el valor absoluto de un nmero de punto


flotante de precisin sencilla.

Acos(Double) Devuelve el ngulo cuyo coseno es el nmero


especificado.

Asin(Double) Devuelve el ngulo cuyo seno es el nmero


especificado.

11
Atan(Double) Devuelve el ngulo cuya tangente corresponde al
nmero especificado.

Atan2(Double, Double) Devuelve el ngulo cuya tangente es el cociente de dos


nmeros especificados.

BigMul(Int32, Int32) Calcula el producto completo de dos nmeros de 32


bits.

Ceiling(Decimal) Devuelve el valor integral ms pequeo que es mayor o


igual que el nmero decimal especificado.

Ceiling(Double) Devuelve el valor integral ms pequeo que es mayor o


igual que el nmero de punto flotante de precisin doble
especificado.

Cos(Double) Devuelve el coseno del ngulo especificado.

Cosh(Double) Devuelve el coseno hiperblico del ngulo especificado.

DivRem(Int32, Int32, Int32) Calcula el cociente de dos nmeros enteros de 32 bits


con signo y devuelve tambin el resto de la divisin
como parmetro de salida.

DivRem(Int64, Int64, Int64) Calcula el cociente de dos nmeros enteros de 64 bits


con signo y devuelve tambin el resto de la divisin
como parmetro de salida.

Exp(Double) Devuelve e elevado a la potencia especificada.

Floor(Decimal) Devuelve el nmero entero ms grande menor o igual


que el nmero decimal especificado.

Floor(Double) Devuelve el nmero entero ms grande menor o igual


que el nmero de punto flotante de precisin doble
especificado.

IEEERemainder(Double, Double) Devuelve el resto de la divisin de dos nmeros


especificados.

Log(Double) Devuelve el logaritmo natural (en base e) de un nmero


especificado.

Log(Double, Double) Devuelve el logaritmo de un nmero especificado en


una base determinada.

12
Log10(Double) Devuelve el logaritmo en base 10 de un nmero
especificado.

Max(Byte, Byte) Devuelve el mayor de dos enteros de 8 bits sin signo.

Max(Decimal, Decimal) Devuelve el mayor de dos nmeros decimales.

Max(Double, Double) Devuelve el mayor de dos nmeros de punto flotante de


precisin doble.

Max(Int16, Int16) Devuelve el mayor de dos enteros de 16 bits con signo.

Max(Int32, Int32) Devuelve el mayor de dos enteros de 32 bits con signo.

Max(Int64, Int64) Devuelve el mayor de dos enteros de 64 bits con signo.

Max(SByte, SByte) Devuelve el mayor de dos enteros de 8 bits con signo.

Max(Single, Single) Devuelve el mayor de dos nmeros de punto flotante de


precisin sencilla.

Max(UInt16, UInt16) Devuelve el mayor de dos enteros de 16 bits sin signo.

Max(UInt32, UInt32) Devuelve el mayor de dos enteros de 32 bits sin signo.

Max(UInt64, UInt64) Devuelve el mayor de dos enteros de 64 bits sin signo.

Min(Byte, Byte) Devuelve el menor de dos enteros de 8 bits sin signo.

Min(Decimal, Decimal) Devuelve el menor de dos nmeros decimales.

Min(Double, Double) Devuelve el menor de dos nmeros de punto flotante de


precisin doble.

Min(Int16, Int16) Devuelve el menor de dos enteros de 16 bits con signo.

Min(Int32, Int32) Devuelve el menor de dos enteros de 32 bits con signo.

Min(Int64, Int64) Devuelve el menor de dos enteros de 64 bits con signo.

Min(SByte, SByte) Devuelve el menor de dos enteros de 8 bits con signo.

Min(Single, Single) Devuelve el menor de dos nmeros de punto flotante de


precisin sencilla.

13
Min(UInt16, UInt16) Devuelve el menor de dos enteros de 16 bits sin signo.

Min(UInt32, UInt32) Devuelve el menor de dos enteros de 32 bits sin signo.

Min(UInt64, UInt64) Devuelve el menor de dos enteros de 64 bits sin signo.

Pow(Double, Double) Devuelve un nmero especificado elevado a la potencia


especificada.

Round(Decimal) Redondea un valor decimal al valor integral ms


prximo.

Round(Decimal, Int32) Redondea un valor decimal al nmero especificado de


dgitos fraccionarios.

Round(Decimal, Int32, MidpointRounding) Redondea un valor decimal al nmero especificado de


dgitos fraccionarios.Un parmetro especifica el
redondeo del valor si est a la mitad del intervalo entre
dos nmeros.

Round(Decimal, MidpointRounding) Redondea un valor decimal al entero ms prximo.Un


parmetro especifica el redondeo del valor si est a la
mitad del intervalo entre dos nmeros.

Round(Double) Redondea un valor de punto flotante de precisin doble


al valor integral ms cercano.

Round(Double, Int32) Redondea un valor de punto flotante de precisin doble


al nmero especificado de dgitos fraccionarios.

Round(Double, Int32, MidpointRounding) Redondea un valor de punto flotante de precisin doble


al nmero especificado de dgitos fraccionarios.Un
parmetro especifica el redondeo del valor si est a la
mitad del intervalo entre dos nmeros.

Round(Double, MidpointRounding) Redondea un valor de punto flotante de precisin doble


al entero ms cercano.Un parmetro especifica el
redondeo del valor si est a la mitad del intervalo entre
dos nmeros.

Sign(Decimal) Devuelve un valor que indica el signo de un nmero


decimal.

Sign(Double) Devuelve un valor que indica el signo de un nmero de


punto flotante de precisin doble.

14
Sign(Int16) Devuelve un valor que indica el signo de un entero de
16 bits con signo.

Sign(Int32) Devuelve un valor que indica el signo de un entero de


32 bits con signo.

Sign(Int64) Devuelve un valor que indica el signo de un entero de


64 bits con signo.

Sign(SByte) Devuelve un valor que indica el signo de un entero de 8


bits con signo.

Sign(Single) Devuelve un valor que indica el signo de un nmero de


punto flotante de precisin sencilla.

Sin(Double) Devuelve el seno del ngulo especificado.

Sinh(Double) Devuelve el seno hiperblico del ngulo especificado.

Sqrt(Double) Devuelve la raz cuadrada de un nmero especificado.

Tan(Double) Devuelve la tangente del ngulo especificado.

Tanh(Double) Devuelve la tangente hiperblica del ngulo


especificado.

Truncate(Decimal) Calcula la parte entera de un nmero decimal


especificado.

Truncate(Double) Calcula la parte entera de un nmero de punto flotante


de precisin doble especificado.

Campos
Nombre Descripcin
E Representa la base logartmica natural, especificada por la constante, e.
PI Representa la relacin entre la longitud de la circunferencia de un crculo y su
dimetro, especificada por la constante .
Ejemplo:
Disee una solucin que mediante la utilizacin de la funcin predefinida de raz cuadrada (sqrt), calcule
la raz cuadra de un nmero entero.
Solucin:

15
Las lneas de:
Console.WriteLine("La raiz cuadrada de "+x+" es "+xR2);

Console.WriteLine("La raiz cuadrada de {0} es {1} ", x,xR2);

Console.WriteLine("La raiz cuadrada de {0} es {1} ", x.ToString("00.00",


CultureInfo.InvariantCulture),xR2.ToString("00.00", CultureInfo.InvariantCulture) );

Son formatos de salida

16
2. Conversin de expresiones matemticas a expresiones aritmticas

Construccin de Expresiones aritmticas en Programacin

17

You might also like