Condicionales
Retomemos el ejercicio dejado como tarea en la clase anterior: Disear un algoritmo para leer 3 valores numricos a, b y c, y mostrar cul es el mayor. Como siempre, hay muchas formas de resolver el problema, veamos a continuacin varias
Alternativa 1
Leer A, B, C Si (A > B) Si ( A > C) Mostrar A, es el mayor Fin Si Fin Si Si (B > A) Si (B > C) Mostrar B, es el mayor Fin Si Fin Si Si (C > A)
Si (C > B) Mostrar C, es el mayor Fin Si
Fin Si
Alternativa 2
Leer A, B, C Si ((A > B) Y (A > C)) Mostrar A, es el mayor Fin Si Si ((B > A) Y (B > C)) Mostrar B, es el mayor Fin Si Si ((C > A) Y (C > B)) Mostrar C, es el mayor Fin Si
Implica utilizar 3 condicionales simples Emplea expresiones lgicas compuestas Cada Si debe cerrarse con Fin Si
Alternativa 3
Leer A, B, C Si ((A > B) Y (A > C)) Mostrar A, es el mayor De lo contrario Si ((B > A) Y (B > C)) Mostrar B, es el mayor De lo contrario Mostrar C, es el mayor Fin Si Fin Si
Implica utilizar slo 2 condicionales compuestos Emplea expresiones lgicas compuestas Cada Si debe cerrarse con Fin Si Se evidencia la utilidad de emplear sangras
Alternativa 4
Utiliza slo un condicional mltiple Emplea expresiones lgicas compuestas Hay un solo Fin Si
Leer A, B, C Si ((A > B) Y (A > C)) Mostrar A, es el mayor De lo contrario Si ((B > A) Y (B > C)) Mostrar B, es el mayor De lo contrario Mostrar C, es el mayor Fin Si
Iteracin definida
Para i = 1, <= 10, +1 Pseudocdigo Escribir i Fin Para Para i = 1, <= 10, +1 Escriba i La instruccin PARA permite implementar la estructura de iteracin definida Se ejecuta un conjunto de instrucciones cierto nmero de veces. Se contina con la instruccin siguiente cuando se agota el ciclo
Diagrama de caja
Estructura general
Variable de control Condicin de la iteracin (no necesariamente <=)
PARA variable = valorInicial, <= valorFinal, variacion . FIN PARA Variacin de la variable de control en cada iteracin
Sintaxis en VB
Palabra clave del lenguaje
Valor inicial de la variable de control
Sintaxis general en VB
For variable = valorInicial To valorFinal Step Variacin [Accin 1] [Accin 2] [Accin n] Next variable
variable variable: : ndice de iteracin
Cuando variable est por fuera del intervalo [valorInicial valor Final] el proceso termina. Variacin Variacin: : es el incremento o decremento de variable. Si la variacin es +1, puede omitirse esta parte
valorInicial, valorFinal: valorFinal: pueden ser expresiones enteras o reales.
Ejemplo 1
Elaborar un algoritmo para calcular la raz cuadrada de los primeros 100 nmeros naturales pares
INICIO Para i = 2, <= 200, +2 Escribir i FIN
Diagrama de caja
Private Sub CommandButton1_Click() Dim i As Integer For i = 2 To 200 Step 2 TextBox1 = TextBox1 & i & ":" & vbTab & Sqr(i) & vbCrLf Next i End Sub
VBA
Ejemplo 1
Recordar que para concatenar (pegar) dos textos en VBA se usa el operador & vbTab, vbCrLf son constantes string de VBA y se usan para dar formato a los textos Al cuadro de texto se le deben cambiar las propiedades Multiline a true y ScrollBars a vertical para que aparezcan los resultados como en la figura
Ejemplo 2
Una persona invierte un capital C al r% anual, en una cuenta de ahorros, durante n aos aos. . Elaborar un algoritmo que calcule el saldo ao por ao teniendo en cuenta la siguiente frmula frmula: : Donde:
s = C*(1 + r)n
n = nmero de aos C = capital invertido r = tasa de inters anual s = cantidad de depsito al final del ensimo ao.
Ejemplo 2
En pseudocdigo: INICIO Leer C, n, r r = r/100 Para i: 1, <=n, +1 s = C*(1 + r)i Mostrar Saldo del ao, i, :, s Fin Para FIN
Ejemplo 2
En VBA
Private Sub botonCalcular_Click() Dim C As Single, n As Integer, r As Single, S As Single 'Se leen las variables de entrada C = Val(textC) n = Val(textN) r = Val(textR) r = r / 100 'Por ser porcentaje For i = 1 To n Step 1 S = C * (1 + r) ^ i 'Se muestra el saldo para cada ao textResultados = textResultados & i & ":" & vbTab & S & vbCrLf Next i End Sub Private Sub botonSalir_Click() End End Sub
Ejemplo 2
Resultados
Contador
Un contador se utiliza para determinar cuantas veces se cumple una determinada condicin dentro de un proceso iterativo.
INICIO Leer N C=0 Para i = 1, <= N, +1 Leer nota nota>=3 Si
Ejemplo: disear un algoritmo para leer N notas y decir cuantos estudiantes ganaron
No
Acumulador
Un acumulador se utiliza para almacenar el resultado de una acumulacin (sumas o productos) dentro de un proceso iterativo. Ejemplo: disear un algoritmo para mostrar la sumatoria de los primeros M nmeros enteros positivos
INICIO Leer M S=0 Para i = 1, <= M, +1 S=S+i Escribir Sumatoria S FIN
Esquema general
Contador Acumulador variable = variable + 1 variable = variable + * X
En ambos casos, como en toda operacin de asignacin, primero se evala el lado derecho, y el resultado se asigna al lado izquierdo
Ejemplo 3
Disear un algoritmo para leer las notas de Q estudiantes y mostrar el promedio de los que ganaron.
INICIO Leer Q C=0 S=0 Para i:1, <=Q, +1 Leer nota Si (nota >= 3) C = C+1 S = S+nota Fin Si Fin para Prom = S/C Escribir El promedio de los que ganaron fue: Prom FIN
Ejemplo 4
Disear un algoritmo para mostrar los n primeros trminos de la siguiente serie y su sumatoria.
INICIO Leer n S=0 Para i:1, <=n, +1 num = i2 den = (2*i+1) T = num/den S = S+T Escribir T Fin Para Escribir La sumatoria es: S FIN
1 4 9 16 25 , , , , ,... 3 5 7 9 11
Ejemplo 5
Disear un algoritmo para calcular el factorial de un nmero.
INICIO Leer X Fact = 1 Para i:1, <=X, +1 Fact = Fact*i Fin Para Escribir El factorial de X es Fact FIN
Ejemplo 6
Disear un algoritmo para mostrar 2 4 6 8 , 2 , 3 , 4 ,..., los h primeros trminos de la X X X X siguiente serie y su productoria.
INICIO Leer h, X P=1 Para i:1, <=h, +1 num = (-1)i*2i den = Xi T = num/den P = P*T Escribir T Fin Para Escribir La productoria es: P FIN
Ejemplo 7
Disear un algoritmo para determinar si un nmero A es primo o no.
INICIO Leer A nd = 0 Para i : 1, <= A, +1 Si A % i = 0 nd = nd +1 Fin Si Fin Para Si nd > 2 Escribir No es primo De lo contrario Escribir Si es primo Fin Si FIN
Tareas
Hacer por cuenta propia los ejercicios vistos en clase Realizar los ejercicios que no se alcanzaron a hacer Resolver los problemas 1 a 15 de la problemateca 2
FIN DE LA CLASE
Gracias por la atencin
Escuela de Sistemas, Facultad de Minas Universidad Nacional de Colombia Sede Medelln