En otra entrada ya publiqué una serie de ejercicios de programación hechos en Python. Hoy he encontrado, como siempre que pasa en estos casos sin saber como he llegado hasta ahí, otro página en la cual hay ejercicios resueltos para Python. Y como en la anterior entrada mencionada, voy a hacer esos mismo ejercicios en Gambas. Los ejercicios son muy sencillos, ideales para principiantes.
1 - Definir una función max() que tome como argumento
dos números y devuelva el mayor de ellos. (Es cierto que python tiene
una función max() incorporada, pero hacerla nosotros mismos es un muy
buen ejercicio). Si, Gambas también tiene una función Max que devuelve el número más grande de dos números pasados. Es más, he tenido que cambiar el nombre de la función para no usar la función Max de Gambas.
Private Function grande ( num1 As Integer , num2 As Integer ) As Integer
If num1 > num2 Then
Return num1
Else
Return num2
Endif
End
2 - Definir una función max_de_tres(), que tome tres números como argumentos y devuelva el mayor de ellos.
Private Function max_de_tres ( num1 As Integer , num2 As Integer , num3 As Integer ) As Integer
Dim retorno As Integer = num3
If num1 >= num2 And num1 >= num3 Then
retorno = num1
Else If num2 >= num1 And num2 >= num3 Then
retorno = num2
Endif
Return retorno
End
3 - Definir una función que calcule la longitud de una lista o una cadena dada. (Es cierto que python tiene la función len() incorporada, pero escribirla por nosotros mismos resulta un muy buen ejercicio). Aquí si me he encontrado con una pequeña limitación en Gambas. O hago una función que devuelve la longitud de un String o una que devuelva la longitud de un Array. Para saber la longitud de un String en Gambas hay que usar la función Len() y para saber el número de elementos de un Array la función Lenght().
Private Function largo_cadena ( cadena As String ) As Integer
'Devuelve la longitud de una cadena de caracteres
Dim a, contador As Integer
For a = 0 To String .Len ( cadena ) - 1
Inc contador
Next
Return contador
End
Private Function largo_array ( arra As Array ) As Integer
'Devuelve la longitud de un array
Dim a, contador As Integer
For a = 0 To arra.Max
Inc contador
Next
Return contador
End
4 - Escribir una función que tome un carácter y devuelva True si es una vocal, de lo contrario devuelve False.
Private Function esVocal ( palabra As String ) As Boolean
Dim vocales As String [ ] = [ "a" , "e" , "i" , "o" , "u" ]
Return IIf ( vocales.Exist ( palabra, gb.Natural + gb.IgnoreCase ) , True , False )
End
5 - Escribir una función sum() y una función multip() que sumen y multipliquen respectivamente todos los números de una lista. Por ejemplo: sum([1,2,3,4]) debería devolver 10 y multip([1,2,3,4]) debería devolver 24.
Private Function suma ( numeros As Float [ ] ) As Float
Dim total As Float
For a As Integer = 0 To numeros.Max
total += numeros [ a ]
Next
Return total
End
Private Function multiplicacion ( numeros As Float [ ] ) As Float
Dim total As Float
For a As Integer = 0 To numeros.Max
total *= numeros [ a ]
Next
Return total
End
6 - Definir una función inversa() que calcule la inversión de una cadena. Por ejemplo la cadena "estoy probando" debería devolver la cadena "odnaborp yotse".
Private Function inversa ( palabra As String ) As String
Dim devolver As String
For a As Integer = String .Len ( palabra ) To 1 Step - 1
devolver &= String .Mid ( palabra, a, 1 )
Next
Return devolver
End
7 - Definir una función es_palindromo() que reconoce palíndromos (es decir, palabras que tienen el mismo aspecto escritas invertidas), ejemplo: es_palindromo ("radar") tendría que devolver True.
Private Function esPalindromo ( palabra As String ) As Boolean
Dim inversa As String
For a As Integer = String .Len ( palabra ) To 1 Step - 1
inversa &= String .Mid ( palabra, a, 1 )
Next
Return IIf ( inversa = palabra, True , False )
End
8 - Definir una función superposicion() que tome dos listas y
devuelva True si tienen al menos 1 miembro en común o devuelva False de
lo contrario. Escribir la función usando el bucle for anidado. Como es normal, en Gambas no existen las listas son arrays.
Private Function superposicion ( array1 As Array, array2 As Array ) As Boolean
For a As Integer = 0 To array1.Max
For b As Integer = 0 To array2.Max
If array1 [ a ] = array2 [ b ] Then Return True
Next
Next
Return False
End
9 - Definir una función generar_n_caracteres() que tome
un entero n y devuelva el caracter multiplicado por n. Por ejemplo:
generar_n_caracteres(5, "x") debería devolver "xxxxx".
Private Function generarCaracteres ( caracter As String , longitud As Integer ) As String
Return String ( longitud, caracter )
End
10 - Definir un histograma procedimiento() que tome una
lista de números enteros e imprima un histograma en la pantalla.
Ejemplo: procedimiento([4, 9, 7]) debería imprimir lo siguiente:
****
*********
*******
Private Sub procedimiento ( lista As Integer [ ] )
For a As Integer = 0 To lista.Max
Print String ( lista [ a ] , "*" )
Next
End
Habrá alguna función que se podrá mejorar, como casi todo en esta vida, pero en principio todas funcionan correctamente según piden los enunciados.
Como se puede apreciar, en Gambas también se puede crear programas que ocupen pocas líneas y fáciles de escribir.
No hay comentarios:
Publicar un comentario