miércoles, 7 de septiembre de 2022

Ejercicios de programación II

  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