Visual basic actualizado y c -2-1212616707734961-8

81
3. Sentencias de control

Transcript of Visual basic actualizado y c -2-1212616707734961-8

Page 1: Visual basic actualizado y c -2-1212616707734961-8

3. Sentencias de control

Page 2: Visual basic actualizado y c -2-1212616707734961-8

If … Then … ElseSelect CaseFor … Next Do … LoopWhile & WendFor Each & NextDo While … Loop

Las sentencias de control, denominadas también estructuras de control, permiten tomar decisiones y realizar un proceso repetidas veces. Se trata de unas estructuras muy importantes ya que son las encargadas de controlar el flujo de un programa según los requerimientos del mismo.Visual Basic 6.0 dispone de las siguientes estructuras de control:

Page 3: Visual basic actualizado y c -2-1212616707734961-8

if … elseswitchfor … do …whiledo while

En C, C++ y C#

Page 4: Visual basic actualizado y c -2-1212616707734961-8

Estructuras condicionales o de selección

Page 5: Visual basic actualizado y c -2-1212616707734961-8

If … Then … ElseSelect Case

Son aquellas que evalúan una variable, y dependiendo de las propiedades determinadas en su evaluación, se realiza una acción determinada.

Estructuras condicionales o de selección

Estructuras condicionales en Visual Basic

Page 6: Visual basic actualizado y c -2-1212616707734961-8

if … elseswitch

En C, C++ y C#

Page 7: Visual basic actualizado y c -2-1212616707734961-8

Sentencia IF .. THEN … ELSE

Esta estructura permite ejecutar condicionalmente una o más sentencias y puede escribirse de dos formas.

La primera ocupa sólo una línea y tiene la forma siguiente: If condición Then sentencia1 [Else sentencia2]

La segunda es más general y se muestra a continuación: If condicion Thensentencia(s) [Elsesentencia(s)]End If

Page 8: Visual basic actualizado y c -2-1212616707734961-8

Sentencia if… else …

En C, C++ y C#:

La primera: if (condición) sentencia1 [else sentencia2];

La segunda: if (/*condición*/) {//sentencia(s); }[else{//sentencia(s);]}

Notas:1)La condición siempre va entre paréntesis2)Cada else busca el if más cercano3)Si se ejecutan dos o más sentencias en una estructura if, estas deben ir encerradas entre llaves

Page 9: Visual basic actualizado y c -2-1212616707734961-8

Para indicar que se quiere ejecutar uno de varios bloques de sentencias dependientes cada uno de ellos de una condición, la estructura adecuada es la siguiente:

If condicion1 Thensentencias1ElseIf condicion2 Thensentencias2 End Ifsentencia-nEnd If

Page 10: Visual basic actualizado y c -2-1212616707734961-8

En C, C++, C#:

NotasEn C, C++ y C# no existe el then ni código semejante

if (/*condicion1*/) {//sentencias1;}else if (/*condicion2*/) {//sentencias2; }else{//sentencia-n;}

Page 11: Visual basic actualizado y c -2-1212616707734961-8

Por ejemplo, se desea escribir un programa que permita definir si un número a es menor que un número b,

Solución 1: If a<b Then Print a & " es menor que " & bIf a=b Then Print a & " es igual que " & bIf a>b Then Print a & " es mayor que " & b

Solución 2: If a<b Then Print a & " es menor que " & b ElseIf a=b Then Print a & " igual que " & b Else Print a & " es mayor que " & b End If

Page 12: Visual basic actualizado y c -2-1212616707734961-8

Solución 1: if (a<b) printf("%d es menor que %d", a, b); if (a==b) printf("%d es igual que %d", a, b); if (a>b) printf("%d es mayor que %d", a, b);

Solución 2: if (a<b){

printf("%d es menor que %d", a, b);}else if (a==b) {

printf("%d es igual que %d", a, b);}else{

printf("%d es mayor que %d", a, b);}

En C:

Page 13: Visual basic actualizado y c -2-1212616707734961-8

Ejemplo. Escribir un programa que de como resultado el menor de tres números a, b, c. Utilizar la sentencia de control If…Then…ElseIf…End If

Dim a, b, c, menor As Integer 'Declaración de variables'Ingreso de datosa = InputBox("a= "): b = InputBox("b="): c = InputBox("c=")'Ordenamiento de datosIf a < b Then If a < c Then menor = a Else menor = c End IfElse If b < c Then menor = b Else menor = c End IfEnd IfVentana.Print "Menor = " & menor

Page 14: Visual basic actualizado y c -2-1212616707734961-8

int main(){int a, b, c, menor; //Declaración de variables//Ingreso de datosprintf("a= "); printf("b= "); printf("c= ");scanf("%d%d%d", &a, &b, &c);//Ordenamiento de datosif (a < b){ if (a < c) { menor = a; }else{ menor = c; }}else{ if (b < c){ menor = b; }else{ menor = c; }}printf("Menor = %d",menor);return 0;}

En C:

Page 15: Visual basic actualizado y c -2-1212616707734961-8

Sentencia SELECT CASE

Esta sentencia permite ejecutar una de entre varias acciones en función del valor de una expresión. Es una alternativa a If … Then ElseIf If cuando se compara la misma expresión con diferentes valores.

Select Case expresionCase etiq1[ sentencias1] Case etiq2 [ sentencias2] Case Else[ sentenciasn ] End Select

donde expresión es una expresión numérica o alfanumérica, y etiq1, etiq2, ... pueden

adoptar las formas siguientes:1. expresion 2. expresion To expresion 3. Is operador-de-relación expresión 4. combinación de las anteriores separadas por comas

Page 16: Visual basic actualizado y c -2-1212616707734961-8

Sentencia switch en C y C++

alternativa a if ...{}else{}if

switch (/*expresión*/){ case etiq1:[/* sentencias1*/];break;case etiq2:[/* sentencias2*/];break; defraut:[/* sentenciasn*/]; }

donde expresión es una expresión numérica o alfanumérica, y etiq1, etiq2, ... pueden adoptar las formas siguientes:

1. expresión 2. etiq distintas que tiene el mismo resultado una debajo de la otra o al costado de la otra

Page 17: Visual basic actualizado y c -2-1212616707734961-8

Por ejemplo,

Numero = 8 ' Se inicializa la variable Numero' Se va a evaluar la variable Numero. Select Case Numero' Si Numero está entre 1 y 5.Case 1 To 5Resultado = "Se encuentra entre 1 y 5" ' Numero es uno de los tres valores. Case 6, 7, 8Resultado = "Se encuentra entre 6 y 8"' Numero es 9 ó 10. Case Is = 9 , Is = 10 Resultado = "El valor es 9 o 10" 'Si Numero toma otro valor Case Else Resultado = "El número no se encuentra entre 1 y 10" End Select Print Resultado

Page 18: Visual basic actualizado y c -2-1212616707734961-8

En C y C++,

char * resultado;int numero = 8; //Se inicializa la variable número// Se va a evaluar la variable número. switch (numero){// Si número está entre 1 y 5.case 1 … 5:resultado = ("Se encuentra entre 1 y 5");break; // número es uno de los tres valores. case 6: case 7: case 8:resultado = ("Se encuentra entre 6 y 8");break;// número es 9 ó 10.case 9: case 10: resultado = ("El valor es 9 o 10");break;//Si número toma otro valor default:resultado = ("El n£mero no se encuentra entre 1 y 10"); }printf("%s", resultado);}

Page 19: Visual basic actualizado y c -2-1212616707734961-8

SugerenciaLa expresión caso variable, número … variable2, expresión 2 separada por tres puntos, indicando rango un rango de valores, (case 1 … 5:) es la forma abreviada decase 1: case 2: case 3: case 4: case 5:

Nota:case 1:case 2:

Es lo mismo que case 1: case 2: es lo mismo case 2: Nota 2: En un switch las llaves deben incluirse

Page 20: Visual basic actualizado y c -2-1212616707734961-8

En C #

En C# se requiere que también se corte la sentencia por defecto

switch (/*expresión*/){ case etiq1:[/* sentencias1*/];break;case etiq2:[/* sentencias2*/];break; defraut:[/* sentenciasn*/];break; } Se requiere este break aquí

Page 21: Visual basic actualizado y c -2-1212616707734961-8

Ejemplo. Escribir un programa que de como resultado el menor de tres

números a, b, c. Utilizar la sentencia de control Select Case Private Sub Command1_Click()Dim a, b, c, menor As Integer 'Declaración de variablesDim VarSel As Boolean'Ingreso de datosa = InputBox("a = "): b = InputBox("b = "): c = InputBox("c = "):'Ordenamiento de datosVarSel = TrueSelect Case VarSel Case (a < b) And (a < c) menor = a Case (b < a) And (b < c) menor = b Case Else menor = cEnd SelectVentana.Print "Menor = " & menorEnd Sub

Page 22: Visual basic actualizado y c -2-1212616707734961-8

En C . Usando switch

#include <stdio.h>#include <stdlib.h>#include <stdbool.h> //<- incluir esta librería para reconocer variables booleanas

int main(){int a, b, c, menor; //Declaración de variablesbool varsel;//Ingreso de datosprintf("a= "); printf("b= "); printf("c= ");scanf("%d%d%d", &a, &b, &c);//Ordenamiento de datosvarsel = true;switch (varsel){case a < b:case a < c: menor = a;break;case b < a:case b < c: menor = b; default: menor = c;}printf("Menor = %d", menor);return 0;}

Page 23: Visual basic actualizado y c -2-1212616707734961-8

Ejercicio: Escribir un programa que calcule las raíces de la ecuación:

a·x2 + b·x + c = 0

Teniendo en cuenta los siguientes casos:

1. Si a=0 y b=0, imprimiremos un mensaje diciendo la ecuación es degenerada.

2. Si a=0 y b≠0, existe una raíz única con valor –c / b.

3. En los demás casos utilizaremos la fórmula siguiente:

La expresión d=b2-4ac se denomina discriminante.

- Si d≥0 entonces hay dos raíces reales

- Si d<0 entonces hay dos raíces complejas de la forma

x + yj, x - yj

Indicar con literales adecuados los datos a introducir, así como los resultados

obtenidos.

a2

c·a·4bbx

2

i

Page 24: Visual basic actualizado y c -2-1212616707734961-8

Solución.a. Utilizando la sentencia If … Then … Else …

Dim a, b, c, r1, r2, real, compleja, d As Double 'Declaración de variablesa = InputBox("a = "): b = InputBox("b = "): c = InputBox("c =")Ventana.Print "Ecuación: " & a & "x^2 + " & b & "x +" & cIf (a = 0) Or (b = 0) Then 'Ecuación degenerada Ventana.Print "La ecuación es degenerada" ElseIf (a = 0) And (b <> 0) Then 'Dos raíces reales iguales r1 = -c / b 'r2 = r1 Ventana.Print "r1 = r2 = " & r1 Else d = b ^ 2 - 4 * a * c 'Cálculo del discriminante If d >= 0 Then 'Dos raíces reales diferentes r1 = (-b + (d ^ (1 / 2))) / (2 * a) r2 = (-b - (d ^ (1 / 2))) / (2 * a) Ventana.Print "r1 =" & r1 Ventana.Print "r2 =" & r2 Else 'Dos raíces reales conjugadas real = -b / (2 * a) compleja = ((-b ^ 2 + 4 * a * c) ^ (1 / 2)) / (2 * a) Ventana.Print "r1 = " & real & " + " & compleja & ".i " Ventana.Print "r2 = " & real & " - " & compleja & ".i " End IfEnd If

Page 25: Visual basic actualizado y c -2-1212616707734961-8

El C:#include <stdio.h>#include <stdlib.h>#include <math.h>

int main(){double a, b, c, r1, r2, real, compleja, d; //Declación de variablesprintf("a = "); printf("b = "); printf("c =");scanf("%lf%lf%lf", &a, &b, &c);printf("Ecuaci¢n: %gx^2 + %gx + %g\n",a,b,c);if (a == 0 || b == 0) { //Ecuación degenerada printf("La ecuaci¢n es degenerada");

}else{if (a == 0 && b != 0) { //Dos raíces reales iguales r1 = -c / b; //r2 = r1 printf("r1 = r2 = %g", r1); }else{ d = pow(b,2) - 4 * a * c; //Cálculo del discriminante

if (d >= 0) { //Dos raíces reales diferentes r1 = (-b + (sqrt(d))) / (2 * a); r2 = (-b - (sqrt(d))) / (2 * a); printf("r1 = %g\n", r1); printf("r2 = %g", r2); }else{

//Dos raíces reales conjugadas real = -b / (2 * a); compleja = (sqrt(pow(-b,2) + 4 * a * c),(1 / 2)) / (2 * a); printf("r1 = %g + %g.i\n", real, compleja); printf("r2 = %g - %g.i", real, compleja); } }}return 0;}

Page 26: Visual basic actualizado y c -2-1212616707734961-8

b. Utilizando la sentencia Select Case

Dim a, b, c, r1, r2, real, compleja, d As Double 'Declaración de variablesDim VarSeleccion As Booleana = InputBox("a = "): b = InputBox("b = "): c = InputBox("c = ")Ventana.Print "Ecuación: " & a & "x^2 + " & b & "x +" & cVarSeleccion = TrueSelect Case VarSeleccion Case (a = 0) And (b = 0) 'Ecuación degenerada Ventana.Print "La ecuación es degenerada" Case (a = 0) And (b <> 0) r1 = -c / b 'r2 = r1 Ventana.Print "r1 = r2 = " & r1 Case Else d = b ^ 2 - 4 * a * c 'Cálculo del discriminante Select Case VarSeleccion Case d >= 0 r1 = (-b + (d ^ (1 / 2))) / (2 * a) r2 = (-b - (d ^ (1 / 2))) / (2 * a) Ventana.Print "r1 =" & r1 Ventana.Print "r2 =" & r2 Case Else real = -b / (2 * a) compleja = ((-b^ 2 + 4 * a * c) ^ (1 / 2)) / (2 * a) Ventana.Print "r1 = " & real & " + " & compleja & ".i " Ventana.Print "r1 = " & real & " - " & compleja & ".i " End SelectEnd Select

Page 27: Visual basic actualizado y c -2-1212616707734961-8

#include <stdio.h>#include <stdlib.h>#include <math.h>#include <stdbool.h>

int main(){double a, b, c, r1, r2, real, compleja, d; //Declaración de variablesbool varseleccion;printf("a = "); printf("b = "); printf("c = ");scanf("%lf%lf%lf", &a, &b, &c);printf("Ecuaci¢n: %gx^2 + %gx + %g\n",a,b,c);switch(varseleccion){ case '1': case '2': b = 0; //Ecuación degenerada printf("La ecuaci¢n es degenerada"); break; case '3': a = 0; case '4': b != 0; r1 = -c / b; //r2 = r1; printf("r1 = r2 = %g", r1); break; default: d = (pow(b,2) - 4 * a * c); //Cálculo del discriminante switch (varseleccion){ case '5': (d >= 0); r1 = (-b + (pow(d,(1 / 2)))) / (2 * a); r2 = (-b - (pow(d,(1 / 2)))) / (2 * a); printf("r1 = %g\n", r1); printf("r2 = %g\n", r2); default: real = -b / (2 * a); compleja = sqrt(pow(-b,2) + 4 * a * c) / (2 * a); printf("r1 = %g + %g.i \n", real,compleja); printf("r1 = %g - %g.i \n", real,compleja); }}return 0;}

Page 28: Visual basic actualizado y c -2-1212616707734961-8

Estructuras iteractivas o repetitivas

Page 29: Visual basic actualizado y c -2-1212616707734961-8

Son aquellas que realizan una acción repetidamente, mientras la variable cumpla con determinada propiedad.

Estructuras iteractivas o repetitivas

For … NextDo … LoopWhile & WendFor Each & NextDo While … Loop

Estructuras repetitivas en Visual Basic

Page 30: Visual basic actualizado y c -2-1212616707734961-8

En C, C++ y C#

for…do…while…do…while

Page 31: Visual basic actualizado y c -2-1212616707734961-8

SentenciaFOR… NEXT

La sentencia For da lugar a un lazo o bucle, y permite ejecutar un conjunto de sentencias cierto número de veces. Su forma general es:

For variable = expresion1 To expresion2 [sentencias] [Step expresion3]Exit Forsentencias] Next[variable]

Page 32: Visual basic actualizado y c -2-1212616707734961-8

Sentencia for…

En C, C++ y C#

for (/*variable*/ = /*expresion1*/; /*variable*/ <= /* expresion2 */; /*incremento*/){//[sentencias]; break;//[sentencias]; }

Page 33: Visual basic actualizado y c -2-1212616707734961-8

Sentencia for con paso negativo…

for (/*variable*/ = /*expresion1*/; /*variable*/ >= /* expresion2 */; /*decremento*/){//[sentencias]; break;//[sentencias]; }

Page 34: Visual basic actualizado y c -2-1212616707734961-8

La sentencia Exit For es opcional y permite salir de un bucle For… Next antes de que éste finalice. Por ejemplo,

MyString = "Ing. Química" For Words = 3 To 1 Step -1For Chars = Words To Words+4MyString = MyString & CharsNext CharsMyString = MyString & " "Next Words

Page 35: Visual basic actualizado y c -2-1212616707734961-8

En C y C++

mystring = "Ing. Química"; for(words = 3; words <= 1; words--){for(chars = words; chars <= word+4; chars++){mystring = myString && chars;}mystring = mystring && '\0';}

En C/c++ la sentencia Exit For es break

Page 36: Visual basic actualizado y c -2-1212616707734961-8

Ejercicio. Realizar un programa que permita imprimir los números del 1 al 50. Utilizar la sentencia For … Next

Ejercicio. Realizar un programa que permita imprimir los números impares

del 1 al 50. Utilizar la sentencia For … Next

Dim i As Integer 'ContadorFor i = 1 To 50 Ventana.Print iNext i

Dim i As Integer 'ContadorFor i = 1 To 50 Step 2 Ventana.Print iNext i

Page 37: Visual basic actualizado y c -2-1212616707734961-8

En C

Números impares del 1 al 50.

int i; //Contadorfor (i = 1; i <= 50; i++){printf("%d ",i);}

int i; //Contadorfor (i = 1; i <= 50; i+=2){printf("%d ",i);}

En CNúmeros del 1 al 50.

Page 38: Visual basic actualizado y c -2-1212616707734961-8

Sentencia DO … LOOP

Un Loop (bucle) repite la ejecución de un conjunto de sentencias mientras una condición dada sea cierta, o hasta que una condición dada sea cierta. La condición puede ser verificada antes o después de ejecutarse el conjunto de sentencias. Sus posibles formas son las siguientes:

' Formato 1: Do [{While/Until} condición] [ sentencias] [Exit Do] [ sentencias] Loop

Page 39: Visual basic actualizado y c -2-1212616707734961-8

Sentencia do

En C, C++ y C#

//Formato 2: do{//[ sentencias]; [break]; //[ sentencias];}while [(/*{!}condicion*/)];

Nota:Algunos IDES piden las llaves.

Page 40: Visual basic actualizado y c -2-1212616707734961-8

' Formato 2: Do[ sentencias] [Exit Do] [ sentencias] Loop [{While/Until} condicion]

La sentencia opcional Exit Do permite salir de una bucle Do… Loop antes de que finalice éste.

Page 41: Visual basic actualizado y c -2-1212616707734961-8

// Formato 2: do{//[ sentencias]; [break]; //[ sentencias] ;}while [({!}condicion)];

La sentencia opcional break permite salir de una bucle do…while antes de que finalice éste.

Page 42: Visual basic actualizado y c -2-1212616707734961-8

Por ejemplo,

Check = TrueCounts = 0DoDo While Counts < 20Counts = Counts + 1

If Counts = 10 Then Check = FalseExit Do

End IfLoopLoop Until Check = False

Page 43: Visual basic actualizado y c -2-1212616707734961-8

En C y C++, Exit Sub es break;

#include <stdio.h>#include <stdlib.h>#include <stdbool.h> //<incorporar esta librería

int main() { int check = true;int counts = 0;do{do{counts = counts + 1;if (counts == 10){check = false;break;}} while (counts <= 20);} while (check != false);printf("%d", counts);return 0;}

Page 44: Visual basic actualizado y c -2-1212616707734961-8

Ejercicio. Realizar un programa que permita imprimir los números del 1 al 50. Utilizar la sentencia Do…Loop

Ejercicio. Realizar un programa que permita imprimir los números impares

del 1 al 50. Utilizar la sentencia Do…Loop

Dim i As Integer 'Contadori = 1DoVentana.Print iIf i = 50 Then Exit Doi = i + 1Loop

Dim i As Integer 'Contadori = 1DoIf i = 50 Then Exit DoVentana.Print ii = i + 1Loop

Page 45: Visual basic actualizado y c -2-1212616707734961-8

En C imprimir los números del 1 al 50, usando do…

En C imprimir los números impares del 1 al 50., usando

do…

int i; //Contadori = 1;do{printf("%d ", i);i = i + 1;}while (i <= 50);

int i; //Contadori = 1;do{printf("%d ", i);i = i + 2;}while (i <= 50);

Page 46: Visual basic actualizado y c -2-1212616707734961-8

Sentencia WHILE & WEND

Esta sentencia es otra forma de generar bucles que se recorren mientras se cumpla la condición inicial. Su estructura es la siguiente:

While condicion [ sentencias] WendPor ejemplo, Counts = 0

' Se inicializa la variable. While Counts < 20 ' Se comprueba el valor de Counts. Counts = Counts + 1 ' Se incrementa el valor de CountsWend ' Se acaba el bucle cuando Counts > 19

Page 47: Visual basic actualizado y c -2-1212616707734961-8

En C, C++ y C#

while (/*condicion*/){ //[ sentencias] }

counts = 0 ;

// Se inicializa la variable. while (counts < 20){ // Se comprueba el valor de counts.counts = counts + 1; // Se incrementa el valor de counts. Forma alternativa count++} // Se acaba el bucle cuando counts > 19

Page 48: Visual basic actualizado y c -2-1212616707734961-8

Ejercicio. Realizar un programa que permita imprimir los números del 1 al 50. Utilizar la sentencia While…Wend

Ejercicio. Realizar un programa que permita imprimir los números impares del 1 al 50. Utilizar la sentencia While…Wend

Dim i As Integer 'Contadori = 1While i <= 50 Ventana.Print ii = i + 1Wend

Dim i As Integer 'Contadori = 1While i <= 50 Ventana.Print ii = i + 1Wend

Page 49: Visual basic actualizado y c -2-1212616707734961-8

int i; //Contadori = 1;while (i <= 50) {printf("%d", i);i = i + 2;}

Ejercicio. Realizar un programa que permita imprimir los números impares del 1 al 50. Utilizar la sentencia while…

Ejercicio. Realizar un programa que permita imprimir los números del 1 al 50. Utilizar la sentencia while…

int i; //Contadori = 1;while (i <= 50) {printf("%d", i);i = i + 1;}

Page 50: Visual basic actualizado y c -2-1212616707734961-8

Sentencia FOR EACH … NEXT

Esta construcción es similar al bucle For, con la diferencia de que la variable que controla la repetición del bucle no toma valores entre un mínimo y un máximo, sino a partir de los Elementos de un array (o de una colección de objetos). La forma general es la siguiente:

For Each variable In grupo[ sentencias]Next variable

Page 51: Visual basic actualizado y c -2-1212616707734961-8

Ejercicios adicionales:

3.1 Escribir un programa que de como resultado la suma de los 100 primeros números naturales

3.2 Realizar un programa que de cómo resultado la suma de los números pares comprendidos entre dos números a y b.

3.3 Realizar un programa que imprima si un número dado por el teclado es par o impar, positivo o negativo, entero decimal.

3.4 Realizar un programa que de como resultado una tabla donde se especifique el cuadrado y el cubo de los n primeros números. NÚMERO CUADRADO CUBO

Page 52: Visual basic actualizado y c -2-1212616707734961-8

3.5 Realizar un programa que liste la tabla de sumar entre 0 y 9 de

cualquier número introducido por el teclado.

3.6 Realizar un programa que liste las tablas de multiplicar de todos los

números comprendidos entre otros dos a y b, introducidos por el

teclado.

3.7 Realizar un programa que dé como resultado la suma y la media de un conjunto de números introducidos por el teclado. La entrada de datos finalizará, por ejemplo al teclear el número 99999.

3.8 Realizar un programa que de cómo resultado el mayor y el menor de un

conjunto de números introducidos por el teclado. La entrada de datos

finalizará por ejemplo, con el número 99999.

Page 53: Visual basic actualizado y c -2-1212616707734961-8

3.9 Realizar un programa que dibuje un triángulo de n filas , empleando el carácter asterisco. Realice el programa utilizando: a.Sentencias Forb.Sentencias While

Por ejemplo, para n=4

******* *********

Page 54: Visual basic actualizado y c -2-1212616707734961-8

3.10. Implementar un programa que permita evaluar el factorial de un

número entero positivo. Por ejemplo

Si n = 5: S = 5*4*3*2*1

Si n = 3: S = 3*2*1

3.11. Implementar programas que permitan evaluar la suma total de los n primeros términos de las siguientes series:

a. La suma de los n primeros términos de la serie

S = 1 + 3 + 5 + 7 + ...

b. La suma de los n primeros términos de la serie

c. S = 1-2+3-5+8-13+21-34+…..

n

1......

4

1

3

1

2

1

1

1S

Page 55: Visual basic actualizado y c -2-1212616707734961-8

d. Evaluar los n primeros térmicos de la serie:

......7 !

1

5 !

1

3 !

1

1 !

1S

3.12 Implementar un programa que permita ingresar n números y ordenarlos de acuerdo a las opciones: de mayor a menor, o de menor a mayor. 3.13 Implementar un programa que permita determinar si un número entero ingresado es primo.

Page 56: Visual basic actualizado y c -2-1212616707734961-8

3.14 Utilizando la sentencia For … Next , escribir un programa que imprima un tablerode ajedrez en el que las casillas blancas se simbolizarán con una B y las negras con unaN. Así mismo el programa deberá marcar con * las casillas a las que se puede moverun alfil desde una posición dada. La solución será similar a la siguiente:

Posición del alfil:Fila 3Columna 4

B * B N B * B NN B * B * B N BB N B * B N B NN B * B * B N BB * B N B * B N* B N B N B * BB N B N B N B *N B N B N B N B

Page 57: Visual basic actualizado y c -2-1212616707734961-8

Ejercicios adicionales:

3.1 Dim c, suma As Integer c = 1 suma = 0 While c <= 100 suma = suma + c c = c + 1 Wend Ventana.Print "La suma de los 100 primeros números es: " & sumaEnd Sub

Page 58: Visual basic actualizado y c -2-1212616707734961-8

3.1 en Cint c, suma; c = 1; suma = 0; while (c <= 100) { suma = suma + c; c = c + 1; } printf("La suma de los 100 primeros n£meros es: %d", suma);return 0; }

Page 59: Visual basic actualizado y c -2-1212616707734961-8

3.2 Dim a, b, i, suma As Integera = Val(InputBox("a = ")): b = val(InputBox("b = "))For i = a To b If i Mod 2 = 0 Then suma = suma + iNext iVentana.Print suma

Page 60: Visual basic actualizado y c -2-1212616707734961-8

3.2 en Cint a, b, i, suma ;suma = 0;printf("a = ");scanf("%d", &a);printf("b = ");scanf("%d", &b);for (i = a; i <= b; i++){ if (i % 2 == 0) suma = suma + 1;}printf ("%d", suma);

Page 61: Visual basic actualizado y c -2-1212616707734961-8

3.3 Private Sub Command1_Click()'declaramos la variable del tipo integer o enteroDim a As Double'Variable para el informe al usuarioDim mensaje As String'Para obtener la parte entera y decimales.Dim entero As IntegerDim decimales As Double'cargamos a la variable lo que ingrese por teclado el operadora = Val(InputBox("Ingrese cualquier número, aún con decimales!", "Evaluador de Números"))'si la variable esta vacía lo informa y sale del subIf a = Empty Then MsgBox "¡No ha ingresado ninguna información!", vbCritical, "Evaluador de números Enteros"Exit SubEnd If'¿Saber si es par?. utilizamos mod que divide dos as y devuelve el resto.'es decir si cualquier a dividido por 2, da como resto cero, es par.

Page 62: Visual basic actualizado y c -2-1212616707734961-8

If a Mod 2 = 0 Then'informamos que el a es par Ventana.Print a & " es par."Else'informamos que el número ingresado es impar Ventana.Print a & " es impar."End If'saber si es negativo o positivoIf a < 0 Then'informamos que el número es par Ventana.Print mensaje & a & " es Negativo."Else'informamos que el número ingresado es impar Ventana.Print mensaje & a & " es Positivo."End Ifentero = CInt(a)decimales = a - (CInt(a))Ventana.Print mensaje & entero & " es la parte entera." & vbCrLfVentana.Print mensaje & decimales & " es la parte decimal." & vbCrLfEnd Sub

Page 63: Visual basic actualizado y c -2-1212616707734961-8

3.3 En C#include <math.h> int main(){//declaramos la variable del tipo integer o enterodouble a;//Para obtener la parte entera y decimales.int entero;double decimales;//cargamos a la variable lo que ingrese por teclado el operadorprintf("Ingrese cualquier n£mero, a£n con decimales!: ");scanf("%lf", &a);//¿Saber si es par?. Utilizamos % que divide dos números y devuelve el resto.//es decir si cualquier a dividido por 2, da como resto cero, es par.if ((int)a % 2 == 0){//informamos que el a es par printf ("%g es par.\n", a); //%g no devuelve .000000 cuando el número que se ingresa es entero}else{//informamos que el número ingresado es impar printf ("%g es impar.\n", a);}

Page 64: Visual basic actualizado y c -2-1212616707734961-8

//saber si es negativo o positivoif (a < 0){//informamos que el número es par printf ("%g es Negativo.\n", a);}else{//informamos que el número ingresado es impar printf ("%g es Positivo.\n", a);}entero = floor(a); //floor es redondeo hacia el menordecimales = a - (floor(a));printf ("%d es la parte entera.\n" , entero);printf("%g es la parte decimal.\n", decimales);return 0;}

Page 65: Visual basic actualizado y c -2-1212616707734961-8

3.4 Dim a, i As Integeri = Val(InputBox("Ingrese cualquier número"))'si la variable esta vacía lo informa y sale del subIf i = Empty Then MsgBox "¡No ha ingresado ninguna información!", vbCritical, "Evaluador de números Enteros"Exit SubEnd IfVentana.Print "NÚMERO CUADRADO CUBO"For a = 0 To i Ventana.Print a & " " & a ^ 2 & " " & a ^ 3Next

Page 66: Visual basic actualizado y c -2-1212616707734961-8

3.4 En C #include <math.h>

int main(){ int a, i; printf("Ingrese cualquier n£mero: "); scanf("%d", &i); printf("NUMERO CUADRADO CUBO\n"); for (a = 0; a <= i; a++){ printf("%d\t%.f\t%.f\t\n", a, pow(a,2), pow(a,3)); } return 0;}

Page 67: Visual basic actualizado y c -2-1212616707734961-8

3.5 Dim a, z As Integerz = Val(InputBox("Ingrese z")) For a = 0 To 9 Step 1 Ventana.Print a & " + " & z &" = "& a + z Next aEnd Sub

Page 68: Visual basic actualizado y c -2-1212616707734961-8

3.5 En Cint a, z;printf("Ingrese z: ");scanf("%d", &z); for (a = 0; a <= 9; a++){ printf("%d + %d = %d\n", a, z, a + z); }return 0;}

Page 69: Visual basic actualizado y c -2-1212616707734961-8

3.6 Dim a, z, x, y As Integer z = Val(InputBox("Ingrese un multiplicador")) x = Val(InputBox("Ingrese una base para multiplicar")) y = Val(InputBox("Ingrese un tope para multiplicar")) For a = x To y Step 1 Ventana.Print a & " * " & z & " = " & a * z Next a

Page 70: Visual basic actualizado y c -2-1212616707734961-8

3.6 En Cint a, z, x, y;printf("Ingrese un multiplicador: ");scanf("%d", &z);printf("Ingrese una base para multiplicar: ");scanf("%d", &x);printf("Ingrese un tope para multiplicar: ");scanf("%d", &y);for (a = x; a <= y; a++){ printf("%d * %d = %d\n", a, z, a * z); }return 0;}

Page 71: Visual basic actualizado y c -2-1212616707734961-8

3.9 con For Dim n, i, j As Integer Dim caracter As String n = inputBox("Ingrese un valor entero") caracter = inputBox("Ingrese um carácter") For i = n To 0 Step -1 For j = 1 To i Step 1 Print caracter ; Next Print "" NextEnd Sub

Page 72: Visual basic actualizado y c -2-1212616707734961-8

3.9 en C con forint n, i, j;char caracter ;printf("Ingrese un valor entero");scanf("%d", &n);printf("Ingrese un caracter");scanf("%c", &caracter);

fflush(stdin); //limpia la basura del teclado

for (i = n; i > 0; i--) {for (j = 1; j < i; j++)printf("%c", caracter );printf("\n");}getch();return 0;}

Page 73: Visual basic actualizado y c -2-1212616707734961-8

3.9 con WhileDim i, j, n As IntegerDim carácter As Stringi = 0

n = InputBox("Ingrese un valor entero: ") carácter = InputBox("Ingrese un caracter: ") While i < n j = i While j < n Print carácter; j = j + 1 Wend Print "" i = i + 1 WendEnd Sub

Page 74: Visual basic actualizado y c -2-1212616707734961-8

3.9 en C con whileint i,j,n;char caracter;i=0;

printf("Ingrese un valor entero: ");scanf("%d", &n);

fflush(stdin);

printf("Ingrese un caracter: "); scanf("%c", &caracter); while(i<n){ j=i; while(j<n){ printf("%c", caracter); j++; } printf("\n"); i++; } getch(); return 0;}

Page 75: Visual basic actualizado y c -2-1212616707734961-8

3.10 ' declaración de variables Dim i, n As Integer Dim factorial As Integer factorial = 1 i = 1 ' Entrada, Pre-condición: n numero entero positivo n = Val(InputBox("Introduzca un número entero positivo")) While i <= n factorial = factorial * i i = i + 1 Wend ' salida, Post-condición: imprimir el factorial de n Ventana.Print "Factorial de " & n & " es " & factorialEnd Sub

Page 76: Visual basic actualizado y c -2-1212616707734961-8

3.10 en C /* declaración de variables */ int i, n; int factorial; factorial = 1; i = 1; /* Entrada, Pre-condición: n numero entero positivo */ printf("Introduzca un numero entero positivo"); scanf("%d", &n); //proceso: cálculo del factorial , n! = n.(n-1).(n-2)…(n-(n-1)) while (i < n) { factorial = factorial * i; i = i + 1; } /* salida, Post-condición: imprimir el factorial de n */ printf("Factorial de %d es %d ", n, factorial); return 0;}

Page 77: Visual basic actualizado y c -2-1212616707734961-8

3.11 a Dim suma, i, s As Integer s = Val(InputBox("Ingrese tope")) For i = 0 To s Step 1 If i Mod 2 <> 0 Then suma = suma + i End If Next Ventana.Print "La suma de los impares es ", sumaEnd Sub

Page 78: Visual basic actualizado y c -2-1212616707734961-8

3.11 a en C int suma, i, s; printf("Ingrese tope"); scanf("%d", &s); for (i = 0; i >= s; i--){ if (i % 2 != 0){ suma = suma + i; } } printf ("La suma de los impares es %d", suma); return 0;}

Page 79: Visual basic actualizado y c -2-1212616707734961-8

3.13 Dim s As String Dim n As Integer, d As Integer pctRes.Cls s = InputBox("Introduce un número natural positivo") n = CInt(s) 'CInt, redondeo hacia el mayor d = 2 While n Mod d <> 0 d = d + 1 Wend If n = d Then Ventana.Print "El número " & n & " es primo" Else Ventana.Print "El número " & n & " no es primo" End IfEnd Sub

Page 80: Visual basic actualizado y c -2-1212616707734961-8

3.13 en C#include <math.h>#include <conio.h>

int main(){ char s = 0; int n, d; printf("Introduce un n£mero natural positivo "); n = ceil(s); scanf("%d", &n); d = 2; while (n % d != 0){ d++; } if (n == d) printf("El n£mero %d es primo", n); else printf("El n£mero %d no es primo", n); getch(); return 0;}

Page 81: Visual basic actualizado y c -2-1212616707734961-8

Para información más detallada, revisar el capítulo 5 del texto: Cevallos Javier. Curso de Programación de Visual Basic 6. Alfaomega. 2000