if else


if else

The instruction if else is used to choose between two blocks of code. This instruction allows executing one block of code or other block of code depending on certain conditions. In the code shown below, if the input value is greater than 10, the instruction sequence A will be executed, otherwise the instruction sequence B will be executed. Under no circumstances both instruction sequences will be executed.
La instrucción if else es usada para escoger entre dos bloques de código. La instrucción permite ejecutar un bloque de código u otro bloque de código dependiendo en ciertas condiciones. En el código mostrado debajo, si la entrada es mayor a 10, la secuencia de instrucciones A será ejecutada, de otro modo la secuencia de instrucciones B será ejecutada. Bajo ninguna circunstancia se ejecutaran ambas secuencias de instrucciones.

Program.cpp
void Program::Window_Open(Win::Event& e)
{
     const int input = tbxInput .IntValue;
     if (input > 10)
     {
          //_______ Instruction Sequence A
          ...
     }
     else
     {
          //_______ Instruction Sequence B
          ...
     }
}


Problem 1
Create a project called BasicIf using Wintempla and write the code shown below.
Cree un proyecto llamado BasicIf usando Wintempla y escriba el código mostrado debajo.

CondicionalBlockDiagram1

Tip
In the previous code, the user inputs a value of 1.7, which is neither greater than 10 nor equal to 10. Thus, the value of z is set to 222.2. On the other hand, in the case presented below the user inputs a value of 98, and the value of z is set to 15.
En el código previo, el usuario proporciona un valor de 1.7, el cual no es mayor que 10 ni igual a 10. Así, el valor de z es fijado en 222.2. Por otro lado, en el caso presentado abajo el usuario proporcionar un valor de 98, y el valor de z es fijado en 15.

CondicionalBlockDiagram2

Problem 2
Compute the output of the following code.
Calcule la salida del código siguiente.

Program.cpp
void Programa::Window_Open(Win::Event& e)
{
     int n =15;

     if (n>5)
     {
          this->MessageBox(L"Martes", L"A", MB_OK);
     }
     else
     {
          this->MessageBox(L"Lunes", L"B", MB_OK);
     }
     this->MessageBox(L"Jueves", L"C", MB_OK);
}


Tip
The instruction if else has two blocks. Each block may have one or more instructions. However, when there is more than one instruction in any of the blocks the curly brackets are necessary. Thus, the codes A, B, C and D are equivalent.
La instrucción if else tiene dos bloques. Cada bloque puede tener una o más instrucciones. Sin embargo, cuando hay más de una instrucción en cualquiera de los bloques las llaves son necesarias. Así, los códigos A, B, C y D son equivalentes.

Program.cpp
//___________________________ Code A
if (x>5)
{
     z = z+2;
}
else
{
     z--;
}
//___________________________ Code B
if (x>5)
     z = z+2;
else
     z--;
//___________________________ Code C
if (x>5) z = z+2;
else z--;
//___________________________ Code D
if (x>5) z = z+2; else z--;


Tip
The codes W, X, Y and Z are equivalent.
Los códigos W, X, Y y Z son equivalentes.

Program.cpp
//___________________________ Code W
int x = 22;
double y = 11.1;
double z = 18.5;

if (x > 10) y = 23;
else y = 22;
z = 55; // it always executes
//___________________________ Code X
int x = 22;
double y = 11.1;
double z = 18.5;

if (x > 10)
     y = 23;
else
     y = 22;
z = 55; // it always executes
//___________________________ Code Y
int x = 22;
double y = 11.1;
double z = 18.5;

if (x > 10)
{
     y = 23;
}
else
{
     y = 22;
}
z = 55; // it always executes
//___________________________ Code Z
int x = 22;
double y = 11.1;
double z = 18.5;

if (x > 10) y = 23; else y = 22;
z = 55; // it always executes


Tip
The codes Q, R, S and T are equivalent.
Los códigos Q, R, S y T son equivalentes.

Program.cpp
//___________________________ Code Q
int a = 22;
double b = 11.1;
double c = 18.5;

if (a < 100)
{
     b = 23.1;
     c ++;
}
else
     b = 32.4;
c = 72.35; // it always executes
//___________________________ Code R
int a = 22;
double b = 11.1;
double c = 18.5;

if (a < 100)
{
     b = 23.1;
     c ++;
}
else b = 32.4;
c = 72.35; // it always executes
//___________________________ Code S
int a = 22;
double b = 11.1;
double c = 18.5;

if (a < 100){
     b = 23.1;
     c ++;
}
else
     b = 32.4;
c = 72.35; // it always executes
//___________________________ Code T
int a = 22;
double b = 11.1;
double c = 18.5;

if (a < 100) { b = 23.1; c ++; } else b = 32.4;
c = 72.35; // it always executes


Problem 3
Compute the output of the following code.
Calcule la salida del código siguiente.

Program.cpp
void Programa::Window_Open(Win::Event& e)
{
     int n =15;

     if (n<5)
     {
          this->MessageBox(L"Henry", L"Enrique", MB_OK);
          n += 10;
     }
     else
     {
          n *= 2;
          this->MessageBox(Sys::Convert::ToString(n), L"n", MB_OK);
}
     this->MessageBox(L"Thursday", L"Jueves", MB_OK);
}

Problem 4
Compute the output of the following code.
Calcule la salida del código siguiente.

Program.cpp
void Programa::Window_Open(Win::Event& e)
{
     int n =-8, m = 120;

     if (n < m)
     {
          m++;
          this->MessageBox(L"Henry", L"Enrique", MB_OK);
          n /= 10;
     }
     else
     {
          n *= 2;
          this->MessageBox(Sys::Convert::ToString(n), L"n", MB_OK);
}
     this->MessageBox(Sys::Convert::ToString(n), Sys::Convert::ToString(m), MB_OK);
}

Problem 5
Compute the output of the following code.
Calcule la salida del código siguiente.

Program.cpp
void Programa::Window_Open(Win::Event& e)
{
     int n =15;

     if (n<5)
          this->MessageBox(L"Feb", L"Dia", MB_OK);
     else
          this->MessageBox(L"Sep", L"Mes", MB_OK);
     this->MessageBox(L"Jueves", L"Hola", MB_OK);
     this->MessageBox(L"Jorge", L"Hello", MB_OK);
}

Problem 6
Compute the output of the following code.
Calcule la salida del código siguiente.

Program.cpp
void Programa::Window_Open(Win::Event& e)
{
     int n = 0;

     if (n>1) this->MessageBox(L"example", L"Abc", MB_OK);
     this->MessageBox(L"none", L"Zys", MB_OK);
}

Problem 7
Compute the output of the following code.
Calcule la salida del código siguiente.

Program.cpp
void Programa::Window_Open(Win::Event& e)
{
     int n = 0;

     if (n<1) this->MessageBox(L"Texas", L"a", MB_OK);
     this->MessageBox(L"Los Angeles", L"b", MB_OK);
     if (n<1) this->MessageBox(L"New York", L"c", MB_OK);
     else this->MessageBox(L"Hoboken", L"d", MB_OK);
     this->MessageBox(L"Arizona", L"e", MB_OK);
}

Problem 8
Compute the output of the following code.
Calcule la salida del código siguiente.

Program.cpp
void Programa::Window_Open(Win::Event& e)
{
     int n = 10;

     if (n<1) this->MessageBox(L"Texas", L"a", MB_OK);
     this->MessageBox(L"Los Angeles", L"b", MB_OK);
     if (n<1) this->MessageBox(L"New York", L"c", MB_OK);
     else this->MessageBox(L"Hoboken", L"d", MB_OK);
     this->MessageBox(L"Arizona", L"e", MB_OK);
}

Problem 9
Compute the output of the following code.
Calcule la salida del código siguiente.

Program.cpp
void Programa::Window_Open(Win::Event& e)
{
     int n = 10;

     if (n<1) this->MessageBox(L"Cancun", L"a", MB_OK);
     n -= 11;
     this->MessageBox(L"Acapulco", L"b", MB_OK);
     if (n<1) this->MessageBox(L"Puerto Vallarta", L"c", MB_OK);
     else
     {
          this->MessageBox(L"Ixtapa", L"d", MB_OK);
          this->MessageBox(L"Guayabitos", L"e", MB_OK);
     }
}

Problem 10
Create a project called Controlador that takes an input pressure and returns an adjustment value. If the pressure is bigger than 100 atm the adjustment values should be 15% of the pressure value. Otherwise, the program will return 20% of the input pressure value.
Input pressure: 225 atm
Adjustment: 33.75

Input pressure: 90 atm
Adjustment: 18

Cree un proyecto llamado Controlador que toma un valor de presión de entrada y regrese un valor de ajuste. Si la presión es mayor de 100 atmosferas el valor de ajuste es 15% del valor de la presión. De otro modo, el programa regresará 20% de la presión de entrada.
Presión de entrada: 225 atm
Valor de ajuste: 33.75

Presión de entrada: 90 atm
Valor de ajuste: 18

Tip
You can use the function pow to compute the power of a numeric value. For instance, pow(2, 3) is 8. In Java and C#, all math functions are inside Math, for instance: Math.abs, Math.pow, etc.
xy = pow(x, y);
Usted puede usar la función pow para elevar a una potencia un valor numérico. Por ejemplo, pow(2, 3) es 8. En Java y C#, las funciones de matemáticas están dentro de Math, por ejemplo: Math.abs, Math.pow, etc.
xy = pow(x, y);

Problem 11
Create a project called Bank that takes an input present amount of money and returns the future value after 12 months. If the input value is bigger than 5000.00, the bank offers a monthly interest rate of i=1.5%. Otherwise, the bank offers a monthly interest rate i = 0.22%. In the formula below, n represents the number of months.
Future = Present (1 + i)n

Present (input): 7500.00
Future (output): 8967.14

Future = 7500.00(1+0.015) 12
Present (input): 2872.39
Future (output): 2949.15

Future = 2872.39 (1+0.0022) 12

Cree un proyecto llamado Bank que toma una cantidad presente de dinero y regresa el valor futuro después de 12 meses. Si el valor de entrada es mayor a 5000.00, el banco ofrece una tasa de interés mensual i = 1.5%. De otro modo, el banco ofrece una tasa de interés mensual i = 0.22%. En la fórmula de abajo, n representa el número de meses.
Futuro = Presente (1 + i)n

Presente (entrada): 7500.00
Futuro (salida): 8967.14

Presente (entrada): 2872.39
Futuro (salida): 2949.15


Problem 12
Compute the output and table of variables of the following code.
Calcule la salida y la tabla de variables del código siguiente.

Program.cpp

void Programa::Window_Open(Win::Event& e)
{
     wstring texto;
     int n=0, a=11;
     double b = 20, c=40, z=50.3;
     n = a/2;
     b = a/2;
     z = a/2.0;
     Sys::Format(texto, L"%i, %i, %f <-> %f <-> %f", n, a, b, c, z);
     this->MessageBox(texto, L"Data", MB_OK);
}

tvNabcz

Problem 13
Compute the output and table of variables of the following code.
Calcule la salida y la tabla de variables del código siguiente.

Program.cpp

void Programa::Window_Open(Win::Event& e)
{
     wstring texto;
     int n = 550;
     const int a = -15;
     double b = 20, c=40, z=22.2;
     if (a <= 0)
     {
          n = a/2;
          b = a/2;
     }
     if (z == 22.2)
     {
          z = a/2.0;
     }
     Sys::Format(texto, L"%i, %i, %f <-> %f <-> %f", n, a, b, c, z);
     this->MessageBox(texto, L"Data", MB_OK);
}

tvNabcz

Problem 14
Compute the output and table of variables of the following code.
Calcule la salida y la tabla de variables del código siguiente.

Program.cpp

void Programa::Window_Open(Win::Event& e)
{
     wstring texto;
     int n = 33;
     const int a = 15;
     double b = 20, c=40, z=22.2;
     if (a <= 10)
     {
          n = a/2;
          b = a/2;
     }
     else
     {
          n++;
          z /= 11.0;
     }
     if (z != 22.2)
     {
          z = a/2.0;
     }
     else
     {
          n--;
          z *= 2;
          b *= M_PI;
     }
     Sys::Format(texto, L"%d, %i, %g, %d, %.2f", a, b, c, n, z);
     this->MessageBox(texto, L"ABC", MB_OK);
}

tvNabcz

Operator ?

In some cases, it is possible to use the operator ? to write an instruction if else to assign a variable value. The code G and H shown below are equivalent. Basically, the operator ? is the same as if else plus and variable set using the equal sign. C, C++, Java and C# supports the ? operator.
En algunos casos, es posible usar el operador ? para escribir una instrucción if else para asignar una variable. Los códigos G y H mostrados debajo son equivalentes. Básicamente, el operador de ? es lo mismo que un if else más la asignación de una variable usando el signo de igual. C, C++, Java y C# soportan el operador de ?.

Program.cpp
//____________________________ Code G
double x = 14.7;
int y = 0;
if (x > 32.4)
{
     y = 10;
}
else
{
     y = 28;
}
//____________________________ Code H
double x = 14.7;
int y = (x > 32.4) ? 10 : 28;


Problem 15
Write a equivalent code using the operator ?
Escriba el código equivalente usando el operator ?

Program.cpp
int input = tbxInput.IntValue;
bool isEven = false;
if (input%2 == 0)
{
     isEven = true;
}
else
{
     isEven = false;
}

Problem 16
Write a equivalent code using the operator ?
Escriba el código equivalente usando el operator ?

Program.cpp
const int input = tbxInput.IntValue;
double y = 0.0;
if (input%10 == 0)
{
     y = M_PI;
}
else
{
     y = 2.0 * M_PI;
}

Problem 17
Write a equivalent code using the operator ?
Escriba el código equivalente usando el operator ?

Program.cpp
const bool isArea = true;
double z = 0.0;
const double r = 5.0;
if (isArea == true)
{
     z = M_PI*r+r;
}
else
{
     z = 2.0 * M_PI*r;
}

Radio Button

A radio button is usually used in groups of radio buttons. They allow choosing one option from a set of options. Always select one radio button of the group. The most important property from a radio button is Checked, and it can take the values of true or false.
Un radio button es usualmente usado en grupos de botones de radio. Estos permiten escoger una opción desde un conjunto de opciones. Siempre seleccione un botón del grupo. La propiedad más importante del radio button es Checked, y puede tomar los valores de true o false.

Problem 18
Write a program called Converter to convert from centimeters to inches and the other way as shown. The radio button has a property called Checked that can be true or false. Observe that the labels are modified when the user selects the radio buttons. To do this, generate the Click event for both radio buttons and change the Text of the labels. Double click the radio buttons to open the edit the properties and events of the radio buttons.
Escriba un programa llamado Converter para convertir de centimetros a pulgadas y viceversa como se muestra. El botón de radio tiene una propiedad llamada Checked que puede valer true o false. Observe que las etiquetas son modificadas cuando el usuario selecciona los radio buttons. Para hacer esto, genere el evento Click de los radio buttons y modifique la propiedad Text de las etiquetas. Haga doble clic en los radio buttons para editar las propiedades y eventos de los radio buttons.

Converter.cpp
void Converter::Window_Open(Win::Event& e)
{
     this->radioPulgadas.Checked = true;
     ...
}

void Converter::btConvertir_Click(Win::Event& e)
{
     const bool isInches = radioPulgadas.Checked;
     ...
}

Converter1

Converter2

RadioEvent

Problem 18a
Repeat the previous problem using Win32, called your program Converter32.
Repetir el problema previo usando Win32, llame a su proyecto Converter32.

Converter32.cpp
//_________________________________________________ Converter32.cpp
#include "stdafx.h"
#include "Converter32.h"

INT_PTR Window_Open(HWND hWnd, WPARAM wParam, LPARAM lParam)
{
     ::SetWindowText(hWnd, L"Converter32");
     ::SendMessage(::GetDlgItem(hWnd, ID_RADIO_CENTIMETROS), BM_SETCHECK, BST_CHECKED, 0);
     return TRUE;
}

INT_PTR btConvertir_Click(HWND hWnd, WPARAM wParam, LPARAM lParam)
{
     wchar_t text[32];
     //_______________________________ Extract Input
     ::GetWindowText(::GetDlgItem(hWnd, ID_TBX_INPUT), text, 32);
     const double input = _wtof(text);
     double output = 0.0;

     if (::SendMessage(::GetDlgItem(hWnd, ID_RADIO_CENTIMETROS), BM_GETCHECK, 0, 0) == BST_CHECKED)
     {
          output = input*2.54;
     }
     else
     {
          output = input / 2.54;
     }
     //_______________________________ Display the result
     _snwprintf_s(text, 32, _TRUNCATE, L"%f", output);
     ::SetWindowText(::GetDlgItem(hWnd, ID_TBX_OUTPUT), text);
     return TRUE;
}

INT_PTR radioCentimetros_Click(HWND hWnd, WPARAM wParam, LPARAM lParam)
{
     ::SetWindowText(::GetDlgItem(hWnd, ID_LB_INPUT), L"in");
     ::SetWindowText(::GetDlgItem(hWnd, ID_LB_OUTPUT), L"cm");
     return TRUE;
}

INT_PTR radioPulgadas_Click(HWND hWnd, WPARAM wParam, LPARAM lParam)
{
     ::SetWindowText(::GetDlgItem(hWnd, ID_LB_INPUT), L"cm");
     ::SetWindowText(::GetDlgItem(hWnd, ID_LB_OUTPUT), L"in");
     return TRUE;
}

INT_PTR CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
     switch (message)
     {
     case WM_INITDIALOG:
          return Window_Open(hWnd, wParam, lParam);
     case WM_COMMAND:
          if (LOWORD(wParam) == ID_BT_CONVERTIR) return btConvertir_Click(hWnd, wParam, lParam);
          if (LOWORD(wParam) == ID_RADIO_CENTIMETROS) return radioCentimetros_Click(hWnd, wParam, lParam);
          if (LOWORD(wParam) == ID_RADIO_PULGADAS) return radioPulgadas_Click(hWnd, wParam, lParam);
          if (LOWORD(wParam) == IDCANCEL) ::EndDialog(hWnd, 0);
          break;
     }
     return (INT_PTR)FALSE;
}

int APIENTRY _tWinMain(HINSTANCE hInstance, HINSTANCE, LPTSTR cmdLine, int cmdShow)
{
     ::DialogBox(hInstance, MAKEINTRESOURCE(IDD_DIALOG1), NULL, WndProc);
     return 0;
}


Problem 19
Repeat the previous problem using Java, called your program ConverterJ.
Repetir el problema previo usando Java, llame a su proyecto ConverterJ.

Problem 20
Repeat the previous problem using C#, called your program ConverterS.
Repetir el problema previo usando C#, llame a su proyecto ConverterS.

ConverterSRun

Form1.cs
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 ConverterS
{
     public partial class Form1 : Form
     {
          public Form1()
          {
               InitializeComponent();
          }

          private void Form1_Load(object sender, EventArgs e)
          {
               labelInput.Text = "cm";
               labelOutput.Text = "in";
               radioInches.Checked = true;
          }

          private void btConvert_Click(object sender, EventArgs e)
          {
               ...
          }

          private void radioInches_CheckedChanged(object sender, EventArgs e)
          {
               if (radioInches.Checked == true)
               {
               ...
          }

          private void radioCentimeter_CheckedChanged(object sender, EventArgs e)
          {
               ...
          }
     }
}

© Copyright 2000-2019 Wintempla selo. All Rights Reserved. Sep 05 2019. Home