14
Fundamentos de Programación Orientada a Objetos en C# .NET Ejemplos con aplicaciones visuales y de consola Ing. Bruno López Takeyas, M.C. http://www.itnuevolaredo.edu.mx/Takeyas 1 COMPILACIÓN CONDICIONAL 2 1 2

COMPILACIÓN CONDICIONAL · 2020-04-30 · En C y C++ es posible asignar un valor a unaconstanteatravésde #define Porejemplo: #define CantidadAlumnos 28 En C#ya no sepuedeasignarunvalor

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

Page 1: COMPILACIÓN CONDICIONAL · 2020-04-30 · En C y C++ es posible asignar un valor a unaconstanteatravésde #define Porejemplo: #define CantidadAlumnos 28 En C#ya no sepuedeasignarunvalor

Fundamentos de Programación Orientada a Objetos en C# .NETEjemplos con aplicaciones visuales y de consola

Ing. Bruno López Takeyas, M.C.http://www.itnuevolaredo.edu.mx/Takeyas 1

COMPILACIÓN CONDICIONAL

2

1

2

Page 2: COMPILACIÓN CONDICIONAL · 2020-04-30 · En C y C++ es posible asignar un valor a unaconstanteatravésde #define Porejemplo: #define CantidadAlumnos 28 En C#ya no sepuedeasignarunvalor

Fundamentos de Programación Orientada a Objetos en C# .NETEjemplos con aplicaciones visuales y de consola

Ing. Bruno López Takeyas, M.C.http://www.itnuevolaredo.edu.mx/Takeyas 2

3

Preguntas detonadoras

�¿Qué es y para qué sirve la compilacióncondicional?

�¿Cuándo se recomienda utilizarla?

�¿Qué son las directivas depreprocesamiento?

�¿Cuáles son las directivas deprepropcesamiento?

�¿Cómo se implementa la compilacióncondicional en un proyecto de C#?

Compilación condicional

� Se utiliza para incluir o excluir un segmentode código de un programa fuente.

� Utiliza las directivas de preprocesamiento� #if

� #else

� #endif

� #define

� #undef

� . . .

4

3

4

Page 3: COMPILACIÓN CONDICIONAL · 2020-04-30 · En C y C++ es posible asignar un valor a unaconstanteatravésde #define Porejemplo: #define CantidadAlumnos 28 En C#ya no sepuedeasignarunvalor

Fundamentos de Programación Orientada a Objetos en C# .NETEjemplos con aplicaciones visuales y de consola

Ing. Bruno López Takeyas, M.C.http://www.itnuevolaredo.edu.mx/Takeyas 3

Directivas de preprocesamiento

�Ofrecen la posibilidad de omitir seccionesde código de una aplicación.

�Se utilizan para notificar errores y/oadvertencias o simplemente ignorar algúnsegmento de código fuente durante laetapa del análisis léxico de la compilación

5

Directivas de preprocesamiento

6

Directiva Uso

#define, #undef Permiten definir o anular ladefinición de un identificador ouna macro.

#if, #else, #endif Permiten definir o anular seccionesde código fuente de una aplicaciónsegún la definición (o no) delidentificador.

5

6

Page 4: COMPILACIÓN CONDICIONAL · 2020-04-30 · En C y C++ es posible asignar un valor a unaconstanteatravésde #define Porejemplo: #define CantidadAlumnos 28 En C#ya no sepuedeasignarunvalor

Fundamentos de Programación Orientada a Objetos en C# .NETEjemplos con aplicaciones visuales y de consola

Ing. Bruno López Takeyas, M.C.http://www.itnuevolaredo.edu.mx/Takeyas 4

Recomendaciones de uso de compilación condicional

�Cuando se está probando una aplicación querequiere demasiados datos de entrada.

�Cuando se desea ejecutar algún método paravalidar cierta operación (en tiempo de diseñode la aplicación).

�Cuando una aplicación requiere datosadicionales a los de entrada durante sudiseño, pero no durante su ejecución.

7

La directiva #define

�Se utiliza para definir un identificador.

�Una vez definido el identificador, elcompilador lo utiliza en cada aparición en elcódigo fuente

�Puede contener una simple definición o unamacro

8

7

8

Page 5: COMPILACIÓN CONDICIONAL · 2020-04-30 · En C y C++ es posible asignar un valor a unaconstanteatravésde #define Porejemplo: #define CantidadAlumnos 28 En C#ya no sepuedeasignarunvalor

Fundamentos de Programación Orientada a Objetos en C# .NETEjemplos con aplicaciones visuales y de consola

Ing. Bruno López Takeyas, M.C.http://www.itnuevolaredo.edu.mx/Takeyas 5

Ejemplos de la directiva #define

�#define X�#define Datos�#define GenerarDatosAleatorios

�En C y C++ es posible asignar un valor auna constante a través de #define�Por ejemplo:� #define CantidadAlumnos 28

�En C# ya no se puede asignar un valor9

Las directivas #if, #else, #endif

� Se utilizan para controlar las secciones delcódigo fuente que se desea compilar.

� Funciona de manera semejante al if-else

� La directiva #if define el inicio de una secciónde código y #endif indica el cierre.

�Deben coincidir las directivas #if y #endif

10

9

10

Page 6: COMPILACIÓN CONDICIONAL · 2020-04-30 · En C y C++ es posible asignar un valor a unaconstanteatravésde #define Porejemplo: #define CantidadAlumnos 28 En C#ya no sepuedeasignarunvalor

Fundamentos de Programación Orientada a Objetos en C# .NETEjemplos con aplicaciones visuales y de consola

Ing. Bruno López Takeyas, M.C.http://www.itnuevolaredo.edu.mx/Takeyas 6

11

¿Dónde se coloca la directiva #define en aplicaciones de consola?

#define Bandera

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;

namespace Circunferencia{

class Program{

static void Main(string[] args){

12

Ejemplostatic void Main(string[] args){

double dblRadio;

#if BanderadblRadio = 6.18;

#elseConsole.WriteLine(“Radio de la circunferencia?");dblRadio = double.Parse(Console.ReadLine());

#endif

double dblArea = Math.PI * Math.Pow(dblRadio, 2);

Console.WriteLine("Área = "+dblArea);Console.ReadKey();

}

11

12

Page 7: COMPILACIÓN CONDICIONAL · 2020-04-30 · En C y C++ es posible asignar un valor a unaconstanteatravésde #define Porejemplo: #define CantidadAlumnos 28 En C#ya no sepuedeasignarunvalor

Fundamentos de Programación Orientada a Objetos en C# .NETEjemplos con aplicaciones visuales y de consola

Ing. Bruno López Takeyas, M.C.http://www.itnuevolaredo.edu.mx/Takeyas 7

� Si la Bandera está definida (#define Bandera) entonces se ejecuta la inicialización directa del valor de la variable dblRadio y se omite la captura desde el teclado

#if Bandera

dblRadio = 6.18; // Cuando Bandera está activa

#else

Console.WriteLine(“Radio de la circunferencia?");

dblRadio = double.Parse(Console.ReadLine());

#endif

13

Ejemplo (cont.)

Nótese que el código de la directiva #else aparece deshabilitado

� Si se elimina la definición de Bandera (#defineBandera) entonces se omite la inicialización directa del valor de la variable dblRadio y se captura desde el teclado

#if Bandera

dblRadio = 6.18; // Cuando Bandera está activa

#else

Console.WriteLine(“Radio de la circunferencia?");

dblRadio = double.Parse(Console.ReadLine());

#endif

14

Ejemplo (cont.)

Nótese que el código de la directiva #if aparece deshabilitado

13

14

Page 8: COMPILACIÓN CONDICIONAL · 2020-04-30 · En C y C++ es posible asignar un valor a unaconstanteatravésde #define Porejemplo: #define CantidadAlumnos 28 En C#ya no sepuedeasignarunvalor

Fundamentos de Programación Orientada a Objetos en C# .NETEjemplos con aplicaciones visuales y de consola

Ing. Bruno López Takeyas, M.C.http://www.itnuevolaredo.edu.mx/Takeyas 8

Generar números aleatorios

�Utilizar la clase Random (ubicada en el namespace System)

Random Numero = new Random();

int x = Numero.Next();

�El método Next( ) genera un númeroaleatorio entre 0 y la constanteInt32.MaxValue ( 2, 147, 483, 647)

15

Generar números aleatorios�Para generar números entre 0 y 5

Random Numero = new Random();

int valor = Numero.Next(6);

�Para generar números entre 1 y 6

Random Numero = new Random();

int valor = Numero.Next(1,7);

16

15

16

Page 9: COMPILACIÓN CONDICIONAL · 2020-04-30 · En C y C++ es posible asignar un valor a unaconstanteatravésde #define Porejemplo: #define CantidadAlumnos 28 En C#ya no sepuedeasignarunvalor

Fundamentos de Programación Orientada a Objetos en C# .NETEjemplos con aplicaciones visuales y de consola

Ing. Bruno López Takeyas, M.C.http://www.itnuevolaredo.edu.mx/Takeyas 9

Generar cadenas aleatorias

string cadena = Guid.NewGuid().ToString().Substring(0,Longitud);

17

La variable Longitudrepresenta

el tamaño de la cadena

Ejercicio�Se desean capturar

los datos de 50 empleados� Número: int

� Nombre: string

� Sueldo: double

�Y mostrar los datosdel empleado con el sueldo mayor

18

17

18

Page 10: COMPILACIÓN CONDICIONAL · 2020-04-30 · En C y C++ es posible asignar un valor a unaconstanteatravésde #define Porejemplo: #define CantidadAlumnos 28 En C#ya no sepuedeasignarunvalor

Fundamentos de Programación Orientada a Objetos en C# .NETEjemplos con aplicaciones visuales y de consola

Ing. Bruno López Takeyas, M.C.http://www.itnuevolaredo.edu.mx/Takeyas 10

Diseño de la forma

19

Uso de la compilación condicional

�Para evitar capturar los datos de 50empleados, se define una constantemediante la directive #define

�#define GenerarEmpleadosAleatorios

�para generar sus datos de maneraaleatoria

20

19

20

Page 11: COMPILACIÓN CONDICIONAL · 2020-04-30 · En C y C++ es posible asignar un valor a unaconstanteatravésde #define Porejemplo: #define CantidadAlumnos 28 En C#ya no sepuedeasignarunvalor

Fundamentos de Programación Orientada a Objetos en C# .NETEjemplos con aplicaciones visuales y de consola

Ing. Bruno López Takeyas, M.C.http://www.itnuevolaredo.edu.mx/Takeyas 11

#define GenerarEmpleadosAleatorios

21

#define GenerarEmpleadosAleatorios

using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Windows.Forms;

namespace CompilacionCondicional{

public partial class Form1 : Form{

. . .

Definir las propiedades del dataGridView en el Form_Load( )

22

private void Form1_Load(object sender, EventArgs e){// Crear las columnas del dataGridViewdgEmpleados.Columns.Add("Número", "Número");dgEmpleados.Columns.Add("Nombre", "Nombre");dgEmpleados.Columns.Add("Sueldo", "Sueldo");

// Definir el estilo moneda (currency) a la columna del sueldodgEmpleados.Columns["Sueldo"].DefaultCellStyle.Format = "C";

// Definir las propiedades del dataGridViewdgEmpleados.ReadOnly = true;dgEmpleados.AllowUserToAddRows = false;dgEmpleados.AllowUserToDeleteRows = false;dgEmpleados.AutoSizeColumnsMode =

DataGridViewAutoSizeColumnsMode.Fill;dgEmpleados.SelectionMode = DataGridViewSelectionMode.FullRowSelect;dgEmpleados.MultiSelect = false;

21

22

Page 12: COMPILACIÓN CONDICIONAL · 2020-04-30 · En C y C++ es posible asignar un valor a unaconstanteatravésde #define Porejemplo: #define CantidadAlumnos 28 En C#ya no sepuedeasignarunvalor

Fundamentos de Programación Orientada a Objetos en C# .NETEjemplos con aplicaciones visuales y de consola

Ing. Bruno López Takeyas, M.C.http://www.itnuevolaredo.edu.mx/Takeyas 12

Generar los datos aleatorios en el Form_Load( )

23

#if GenerarEmpleadosAleatorios

// Declaración y creación de un objeto para números aleatoriosRandom rndNumeroAleatorio=new Random();

// Definir una constante para la cantidad de empleadosconst int intCantidadEmpleados = 50;

// Definir una constante para la longitud del nombre del empleadoconst int intLongitudNombre = 25;

// Definir una constante para el sueldo máximo de un empleadoconst int intSueldoMaximo = 100000;. . .

Generar los datos aleatorios en el Form_Load( ) (cont.)

24

for(int i=0; i<intCantidadEmpleados; i++){

// Declaración y creación de un objeto local para cada empleadoEmpleado miEmpleado = new Empleado();

// Generar de manera aleatoria los datos del empleadomiEmpleado.Numero =

rndNumeroAleatorio.Next(intCantidadEmpleados);miEmpleado.Nombre= Guid.NewGuid().ToString().Substring(0,

intLongitudNombre);miEmpleado.Sueldo =

rndNumeroAleatorio.NextDouble()*intSueldoMaximo;

// Mostrar los datos del empleado en el dataGridViewdgEmpleados.Rows.Add(miEmpleado.Numero, miEmpleado.Nombre,

miEmpleado.Sueldo);}#endif

23

24

Page 13: COMPILACIÓN CONDICIONAL · 2020-04-30 · En C y C++ es posible asignar un valor a unaconstanteatravésde #define Porejemplo: #define CantidadAlumnos 28 En C#ya no sepuedeasignarunvalor

Fundamentos de Programación Orientada a Objetos en C# .NETEjemplos con aplicaciones visuales y de consola

Ing. Bruno López Takeyas, M.C.http://www.itnuevolaredo.edu.mx/Takeyas 13

Funcionamiento�Si está definida la banderaGenerarEmpleadosAleatorios se llenael dataGridView

�#define GenerarEmpleadosAleatorios

25

Funcionamiento�Si se elimina la banderaGenerarEmpleadosAleatorios, secapturan manualmente los datos

//#define GenerarEmpleadosAleatorios

26

25

26

Page 14: COMPILACIÓN CONDICIONAL · 2020-04-30 · En C y C++ es posible asignar un valor a unaconstanteatravésde #define Porejemplo: #define CantidadAlumnos 28 En C#ya no sepuedeasignarunvalor

Fundamentos de Programación Orientada a Objetos en C# .NETEjemplos con aplicaciones visuales y de consola

Ing. Bruno López Takeyas, M.C.http://www.itnuevolaredo.edu.mx/Takeyas 14

Otros títulos del autor

http://www.itnuevolaredo.edu.mx/Takeyas/Libro

Bruno López [email protected]

27