Download Programador de Sistemas - Módulo 1
Document related concepts
Transcript
Programador de Sistemas Material del Curso Módulo 1. Teoría de la Programación Antonio J. Emperador Sau aemperador@efor.es Septiembre 2011 – Febrero 2012 Programador de Sistemas Módulos Módulo 1. Teoría de la programación Módulo 2. Conceptos de redes de comunicación Módulo 3. Windows Server 2008 Módulo 4. Programación de Scripts para Windows Server 2008 con PowerShell 2.0 Módulo 5. Linux Módulo 6. Programación Shell-Script para Linux Módulo 1 – Teoría de la Programación Antonio J. Emperador Sau 3 Programador de Sistemas Tabla de contenido Módulo 1. Teoría de la Programación. Contenido de Presentación ............................................. 9 Módulo 1. Teoría de la Programación. Ejercicios Propuestos .................................................... 17 Módulo 1. Teoría de la Programación. Ejercicios Resueltos ....................................................... 25 Módulo 1 – Teoría de la Programación Antonio J. Emperador Sau 5 Programador de Sistemas Módulo 1 Teoría de la programación 30 horas Módulo 1 – Teoría de la Programación Antonio J. Emperador Sau 7 Programador de Sistemas Módulo 1. Teoría de la Programación. Contenido de Presentación Módulo 1 – Teoría de la Programación Antonio J. Emperador Sau 9 Programador de Sistemas Módulo 1 – Teoría de la Programación Antonio J. Emperador Sau 10 Programador de Sistemas Módulo 1 – Teoría de la Programación Antonio J. Emperador Sau 11 Programador de Sistemas Módulo 1 – Teoría de la Programación Antonio J. Emperador Sau 12 Programador de Sistemas Módulo 1 – Teoría de la Programación Antonio J. Emperador Sau 13 Programador de Sistemas Módulo 1 – Teoría de la Programación Antonio J. Emperador Sau 14 Programador de Sistemas Módulo 1 – Teoría de la Programación Antonio J. Emperador Sau 15 Programador de Sistemas Módulo 1 – Teoría de la programación Ejercicios propuestos Módulo 2 – Conceptos de Redes Antonio J. Emperador Sau 16 Programador de Sistemas Módulo 1. Teoría de la Programación. Ejercicios Propuestos Módulo 2 – Conceptos de Redes Antonio J. Emperador Sau 17 Programador de Sistemas Módulo 2 – Conceptos de Redes Antonio J. Emperador Sau 18 Programador de Sistemas Módulo 2 – Conceptos de Redes Antonio J. Emperador Sau 19 Programador de Sistemas Módulo 2 – Conceptos de Redes Antonio J. Emperador Sau 20 Programador de Sistemas Módulo 2 – Conceptos de Redes Antonio J. Emperador Sau 21 Programador de Sistemas Módulo 2 – Conceptos de Redes Antonio J. Emperador Sau 22 Programador de Sistemas Módulo 2 – Conceptos de Redes Antonio J. Emperador Sau 23 Programador de Sistemas Módulo 1. Teoría de la Programación. Ejercicios Resueltos ' Ejercicio 1.1.a ' Pasar a binario 37 =b 100101 104 =b 1101000 281 =b 100011001 ' Ejercicio 1.1.b ' Pasar a decimal 101110 =d 54 110110101 =d 437 10001010110 =d 1110 00101011101 =d 349 ' Ejercicio 1.1.c ' Pasar a octal y hexadecimal 10010111011 =o 2273 =h 4BB 1110111001101 =o 16715 =h 1DCD ' Ejercicio 1.1.d ' Opuesto a 17 por complemento a 2 y sumarlo a 17 17 =b 10001, -17 =c2 01111, 10001+01111 = 00000 ' Ejercicio 1.1.e ' Pasar 123,75 a binario 128,75 =b 1111011,11 ' Ejercicio 1.1.f ' Pasar 1101101,1011 a decimal 1101101,1011 =d 109,9375 ' Ejercicio 1.2.a ' Sumar 1011011101 y 11101101 1011011101 + 11101101 = 1111001010 =d 970 ' Ejercicio 1.2.b ' 101110110 AND 110100110 101110110 AND 110100110 = 100100110 =d 294 ' Ejercicio 1.2.c ' 1101101110 OR 100011101 1101101110 OR 100011101 = 1101111111 =d 895 Módulo 2 – Conceptos de Redes Antonio J. Emperador Sau 25 Programador de Sistemas ' Ejercicio 1.3.a ' Llover y coger el parauas ' Ejercicio 1.3.b ' Calcular el área de un círculo Function AreaCirculo(radio) AreaCirculo = 3.141598 * radio ^ 2 End Function /* * Ejercicio 1.3.b * Calcular el área de un círculo */ INICIO RADIO 0 AREA 0 #include <stdlib.h> #include <stdio.h> PEDIR RADIO /* Función principal */ int main(void) { /* Declaración de constantes y variables */ #define PI 3.141598 /* Constante PI */ float radio = 0; /* Variable de tipo real para el radio */ float area = 0; /* Variable de tipo real para el área */ /* Pedir datos */ printf ("\n Escribe el radio del círculo: "); scanf ("%f", &radio); AREA 3.1415 * RADIO MOSTRAR AREA /* Calcular el área */ area = PI * radio * radio; FIN /* Mostrar el resultado */ printf ("\n El área del círculo de radio %f es %f.\n", radio, area); /* Detener para que se vea y terminar */ system("PAUSE"); return(0); } ' Ejercicio 1.3.c Módulo 2 – Conceptos de Redes Antonio J. Emperador Sau 26 Programador de Sistemas ' Suma de los primeros 20 números naturales INICIO Function Suma20Naturales() Dim n As Integer For n = 1 To 20 Suma20Naturales = Suma20Naturales + n Next End Function /* * Ejercicio 1.3.c * Suma de los 20 primeros números naturales */ #include <stdlib.h> #include <stdio.h> /* Función principal */ int main(void) { /* Declaración de constantes y variables */ int suma = 0; /* Variable de tipo entero para la suma */ int n = 0; /* Variable de tipo entero para el número natural */ SUMA = 0 N=0 N=N+1 NO SUMA = SUMA + N ¿N = 20? SI IMPRIMIR SUMA FIN /* Proceso de cálculo */ for (n = 0; n <= 20; n++) { suma = suma + n; } /* Mostrar el resultado */ printf ("\n La suma de los 20 naturales es %d.\n", suma); /* Detener para que se vea y terminar */ system("PAUSE"); return(0); } ' Ejercicios de expresiones a) A = 2 A es 2 B = a + 1 B es 3 A = A + B*2 A es 8 A = A % B A es 2 b) A = 1 B = A * 2 + A = 3 A = 2 * (A + B * 2) = 14 A = A % B = 2 B = B / A = 1 c) A = 30, B = 20 5>4 VERDADERO A<5 FALSO A<=B FALSO A-10 = B VERDADERO A*2 = B*3 VERDADERO A<>30 FALSO d) A = 30, B = 20 A>5 AND B<40 = VERDADERO A>5 AND A<30 = FALSO A>5 OR A<30 = VERDADERO A>B AND B<15 AND B>10 = FALSO A>B OR A<15 OR B>10 = VERDADERO Módulo 2 – Conceptos de Redes Antonio J. Emperador Sau 27 Programador de Sistemas e) A = 30, B = 20 B<15 AND A>B OR B>10 = VERDADERO B<15 AND (A>B OR B>10) = FALSO f) A = 30, B = 20 A>5 AND A<>44 AND B+A>B*2 = VERDADERO (A>5 OR B<10) AND A<40 = VERDADERO A>3 OR B=20 AND B=A = VERDADERO ' Ejercicio 2.1. ' Programa que calcula la media de tres números a introducir Sub Media3Numeros() Dim M As Double, A As A = InputBox("Dame el b = InputBox("Dame el c = InputBox("Dame el M = (A + b + c) / 3 MsgBox "La media es " End Sub Double, b As Double, c As Double primer número") segundo número") tercer número") & M /* * Ejercicio 2.1 * Media de tres números solicitados */ INICIO A=0 B= 0 C= 0 MEDIA = 0 #include <stdlib.h> #include <stdio.h> /* Función principal */ int main(void) { /* Declaración de constantes y variables */ float a = 0; /* Variable de tipo real para el primero float b = 0; /* Variable de tipo real para el segundo float c = 0; /* Variable de tipo real para el tercero float media = 0; /* Variable de tipo real para la media PEDIR A, B, C */ */ */ */ /* Pedir datos */ printf ("\n Escribe el primer número: "); scanf ("%f", &a); printf ("\n Escribe el segundo número: "); scanf ("%f", &b); printf ("\n Escribe el tercer número: "); scanf ("%f", &c); MEDIA = (A+B+C)/3 ESCRIBIR MEDIA FIN /* Proceso de cálculo */ media = (a+b+c)/3; /* Mostrar el resultado */ printf ("\n La media de los números es %f.\n", media); /* Detener para que se vea y terminar */ system("PAUSE"); return(0); } ' Ejercicio 2.2. ' Programa que intercambia los valores de dos variables (volteo de variables) Sub VolteoVariables() Dim X As Double, y As Double, aux As Double X = InputBox("Dame el primer número") y = InputBox("Dame el segundo número") aux = X Módulo 2 – Conceptos de Redes Antonio J. Emperador Sau 28 Programador de Sistemas X = y y = aux MsgBox "Ahora x = " & X & " e y = " & y End Sub /* * Ejercicio 2.2 * Volteo de variales */ #include <stdlib.h> #include <stdio.h> /* Función principal */ int main(void) { /* Declaración de constantes y variables */ float x = 0; /* Variable de tipo real para el primero */ float y = 0; /* Variable de tipo real para el segundo */ float aux = 0; /* Variable de tipo real para la auxiliar */ INICIO X=0 Y=0 AUX = 0 PEDIR X, Y AUX = X /* Pedir datos */ printf ("\n Escribe el primer número: "); scanf ("%f", &x); printf ("\n Escribe el segundo número: "); scanf ("%f", &y); /* Proceso de cálculo */ aux = x; x = y; y = aux; X=Y Y = AUX MOSTRAR X, Y FIN /* Mostrar el resultado */ printf ("\n Los números son %f y %f.\n", x, y); /* Detener para que se vea y terminar */ system("PAUSE"); return(0); } ' Ejercicio 2.3. ' Cajero: programa que desglosa un importe en billetes de 10 y 5 y monedas de 1 euro Sub Cajero() Dim c As Integer, b10 As Integer, b5 As Integer, m1 As Integer c = InputBox("Indica un importe de euros a desglosar") b10 = Int(c / 10) c = c Mod 10 b5 = Int(c / 5) m1 = c Mod 5 MsgBox "Billetes de 10 €: " & b10 & vbCrLf & _ "Billetes de 5 €: " & b5 & vbCrLf & "Monedas de 1 €: " & m1 End Sub /* * Ejercicio 2.3 * Cajero automático */ #include <stdlib.h> #include <stdio.h> /* Función principal */ int main(void) Módulo 2 – Conceptos de Redes Antonio J. Emperador Sau 29 Programador de Sistemas { INICIO /* Declaración de constantes y variables */ int c = 0; /* Variable de tipo entero para cantidad */ int a10 = 0; /* Variable de tipo entero para billetes de 10 */ int a5 = 0; /* Variable de tipo entero para billetes de 5 int a1 = 0; /* Variable de tipo entero para monedas de 1 */ C=0 A10 = 0 A5 = 0 A1 = 0 */ PEDIR CANTIDAD C /* Pedir datos */ printf ("\n Escribe la cantidad a repartir: "); scanf ("%d", &c); /* Proceso de cálculo */ a10 = c/10; c = c%10; a5 = c/5; a1 = c%5; A10 = C/10 C = C%10 /* Mostrar el resultado */ printf ("\nBilletes de 10 €: %d", a10); printf ("\nBilletes de 5 €: %d", a5); printf ("\nMonedas de 1 €: %d\n", a1); A5 = C/5 A1 = C%5 /* Detener para que se vea y terminar */ system("PAUSE"); return(0); ESCRIBIR A10, A5, A1 } ' Ejercicio 2.4. ' Programa que lee dos números y escribe el mayor seguido del menor Sub Mayor2Menor() Dim A As Integer, b As Integer A = InputBox("Dime el primer número") b = InputBox("Dime el segundo número") If A > b Then MsgBox "El mayor es " & A & " y el menor " & b Else MsgBox "El mayor es " & b & " y el menor " & A End If End Sub INICIO A=0 B=0 PEDIR A, B /* * Ejercicio 2.4 * Mayor y menor entre dos números */ #include <stdlib.h> #include <stdio.h> /* Función principal */ int main(void) { /* Declaración de constantes y variables */ float a = 0; /* Real primer número */ float b = 0; /* Real segundo número */ FIN SI ¿A > B? MAYOR A MENOR B NO MAYOR B MENOR A FIN /* Pedir datos */ printf ("\n Escribe el primer número: "); scanf ("%f", &a); Módulo 2 – Conceptos de Redes Antonio J. Emperador Sau 30 Programador de Sistemas printf ("\n Escribe el segundo número: "); scanf ("%f", &b); /* Proceso de cálculo y mostrar resultado*/ if (a > b){ printf ("\nMayor: %f\nMenor: %f\n", a, b); }else{ printf ("\nMayor: %f\nMenor: %f\n", b, a); } /* Detener para que se vea y terminar */ system("PAUSE"); return(0); } ' Ejercicio 2.5. ' Programa que lee dos números y escribe sólo el mayor Sub MayorSolo() Dim mayor As Integer, b As Integer mayor = InputBox("Dame el primer número") b = InputBox("Dame el segundo número") If mayor < b Then mayor = b End If MsgBox "El mayor es " & mayor End Sub /* * Ejercicio 2.5 * Mayor entre dos números */ #include <stdlib.h> #include <stdio.h> INICIO MAYOR = 0 B=0 PEDIR MAYOR, B ¿MAYOR < B? SI MAYOR = B /* Función principal */ int main(void) { float mayor = 0;/* Real primer número */ float b = 0; /* Real segundo número */ /* Pedir datos */ printf ("\n Escribe el primer número: "); scanf ("%f", &mayor); printf ("\n Escribe el segundo número: "); scanf ("%f", &b); NO ESCRIBIR “EL MAYOR ES “ MAYOR FIN /* Proceso de cálculo */ if (mayor < b){ mayor = b; } /* Mostrar el resultado */ printf ("\nEl mayor es %f\n", mayor); /* Detener para que se vea y terminar */ system("PAUSE"); return(0); } ' Ejercicio 2.6. ' Suma el valor de 5 números introducidos por teclado Módulo 2 – Conceptos de Redes Antonio J. Emperador Sau 31 Programador de Sistemas Sub Suma5Numeros() Dim Suma As Integer, Cont As Integer, n As Integer For i = 1 To 5 n = InputBox("Introduce número") Suma = Suma + n Next MsgBox "La suma es " & Suma End Sub /* * Ejercicio 2.6 * Suma de 5 números solicitados */ #include <stdlib.h> #include <stdio.h> INICIO SUMA = 0 N=0 CONTADOR = 0 ESCRIBIR SUMA ¿CONTADOR < 5? SI PEDIR N FIN SUMA = SUMA + N CONTADOR = CONTADOR + 1 /* Función principal */ int main(void) { float suma = 0; float n = 0; int contador = 0; /* Pedir y procesar */ while (contador < 5){ printf ("\nEscribe un número %d: ", contador+1); scanf ("%f", &n); suma = suma + n; contador = contador + 1; } /* Mostrar el resultado */ printf ("\nLa suma es %f\n\n", suma); /* Detener para que se vea y terminar */ system("PAUSE"); return(0); } INICIO ' Ejercicio 2.7. ' Calcula el factorial de un número Function Factorial(Numero As Integer) As Double Factorial = 1 Do While Numero > 0 Factorial = Factorial * Numero Numero = Numero - 1 Loop End Function /* * Ejercicio 2.7 * Factorial de un número */ N=0 FACTORIAL = 1 PEDIR N ¿N > 0? NO ESCRIBIR FACTORIAL SI FACTORIAL = FACTORIAL * N FIN N=N-1 #include <stdlib.h> #include <stdio.h> /* Función principal */ int main(void) { int n = 0; Módulo 2 – Conceptos de Redes Antonio J. Emperador Sau 32 Programador de Sistemas int factorial = 1; /* Pedir datos */ printf ("\n Escribe el número: "); scanf ("%d", &n); /* Proceso de cálculo */ while (n > 0){ factorial = factorial * n; n = n - 1; } /* Mostrar el resultado */ printf ("\nEl factorial es %d\n", factorial); /* Detener para que se vea y terminar */ system("PAUSE"); return(0); } ' Ejercicio 2.8. ' Suma de números hasta que el usuario introduce el 0 Sub SumaNumerosHasta0() Dim Suma As Double, n As Double Do n = InputBox("Introduce un número") Suma = Suma + n Loop While n > 0 MsgBox "La suma es " & Suma End Sub /* * Ejercicio 2.8 * Suma de números hasta introducir 0 */ #include <stdlib.h> #include <stdio.h> /* Función principal */ int main(void) { float n = 0; float suma = 0; INICIO N=0 SUMA = 0 NO PEDIR N SUMA = SUMA + N ¿N = 0? SI ESCRIBIR SUMA FIN /* Pedir datos y procesar*/ do { printf ("\nNúmero: "); scanf ("%f", &n); suma = suma + n; } while (n != 0); /* Mostrar el resultado */ printf ("\nLa suma es %f\n", suma); /* Detener para que se vea y terminar */ system("PAUSE"); return(0); } ' Ejercicio 2.9. ' Tabla de multiplicar Módulo 2 – Conceptos de Redes Antonio J. Emperador Sau 33 Programador de Sistemas Sub TablaMultiplicar() Dim n As Integer, i As Integer n = InputBox("Dime un número") Do Debug.Print i & " * " & n & " = " & i * n i = i + 1 Loop While i <= 10 End Sub INICIO /* * Ejercicio 2.9 * Tabla de multiplicar de un número */ I=0 N=0 PEDIR N #include <stdlib.h> #include <stdio.h> /* Función principal */ int main(void) { /* Declaración de constantes y variables */ int n = 0; int i = 0; ESCRIBIR I * N = I*N I=I+1 SI /* Pedir el número */ printf ("\n Escribe el número: "); scanf ("%d", &n); ¿I <= 10? NO FIN /* Procesar y mostrar tabla*/ do { printf ("\n%d * %d = %d", i, n, i*n); i++; } while (i <= 10); /* Detener para que se vea y terminar */ system("PAUSE"); return(0); } ' Ejercicio 2.10. ' Calcular los divisores de un número positivo Sub Divisores() Dim n As Integer, i As Integer i = 1 n = InputBox("Dime el número") Do While i <= n If n Mod i = 0 Then Debug.Print i & " es divisor de " & n End If i = i + 1 Loop End Sub /* * Ejercicio 2.10 * Divisores de un número */ #include <stdlib.h> #include <stdio.h> INICIO N=0 I=1 PEDIR N ¿I <= N? NO FIN ¿N%I == 0? SI NO ESCRIBIR I ES DIVISOR I ++ /* Función principal */ int main(void) { Módulo 2 – Conceptos de Redes Antonio J. Emperador Sau 34 Programador de Sistemas /* Declaración de constantes y variables */ int n = 0; int i = 1; /* Pedir datos */ printf ("\nEscribe el número: "); scanf ("%d", &n); /* Procesar y mostrar divisores */ while ( i <= n ){ if ( n % i == 0){ printf ("\n%d es divisor de %d.", i, n); } i++; } /* Detener para que se vea y terminar */ printf ("\n\n"); system("PAUSE"); return(0); } ' Ejercicio 2.11. ' Indica cuántos digitos tiene un número Function NumeroDigitos(Numero As Long) As Integer Do While Numero > 0 Numero = Int(Numero / 10) NumeroDigitos = NumeroDigitos + 1 Loop End Function INICIO N=0 D=0 PEDIR N /* * Ejercicio 2.11 * Dígitos de un número solicitado */ #include <stdlib.h> #include <stdio.h> ¿N > 0? NO ESCRIBIR DIGITOS D SI FIN D=D+1 /* Función principal */ int main(void) { /* Declaración de constantes y variables */ int n = 0; int d = 0; N = N / 10 /* Pedir datos */ printf ("\n Escribe el número: "); scanf ("%d", &n); /* Proceso de cálculo */ while (n > 0){ d = d + 1; n = n / 10; } /* Mostrar el resultado */ printf ("\nNúmero de dígitos: %d", d); /* Detener para que se vea y terminar */ printf ("\n\n"); system("PAUSE"); Módulo 2 – Conceptos de Redes Antonio J. Emperador Sau 35 Programador de Sistemas return(0); } ' Ejercicio 2.12. ' Suma de dígitos pares de un número Function SumaDigPares(Numero As Long) As Integer Dim D As Integer Do While Numero > 0 D = Numero Mod 10 Numero = Int(Numero / 10) If D Mod 2 = 0 Then SumaDigPares = SumaDigPares + D Loop End Function /* * Ejercicio 2.12 * Suma de dígitos pares de un número */ #include <stdlib.h> #include <stdio.h> INICIO N=0 D=1 SUMA = 0 PEDIR N ¿N>0? ESCRIBIR SUMA NO SI /* Función principal */ int main(void) { /* Declaración de constantes y variables */ int n = 0; int d = 1; int suma = 0; FIN D = N % 10 N = N / 10 ¿ D % 2 == 0 ? SI SUMA = SUMA + D /* Pedir datos */ printf ("\n Escribe el número: "); scanf ("%d", &n); NO /* Proceso de cálculo */ while (n > 0){ d = n % 10; n = n / 10; if (d % 2 == 0){ suma = suma + d; } } /* Mostrar el resultado */ printf ("\nLa suma es: %d", suma); /* Detener para que se vea y terminar */ printf ("\n\n"); system("PAUSE"); return(0); } ' Ejercicio 2.13. ' Pasa de base 10 a base 2 Function Nto2(Numero As Long) As String Dim r As Integer Do While Numero > 1 r = Numero Mod 2 Numero = Int(Numero / 2) Nto2 = r & Nto2 Módulo 2 – Conceptos de Redes Antonio J. Emperador Sau 36 Programador de Sistemas Loop Nto2 = Numero & Nto2 End Function /* * Ejercicio 2.13 * Decimal a binario */ #include <stdlib.h> #include <stdio.h> /* Función principal */ int main(void) { /* Declaración de constantes y variables */ unsigned long n1 = 0; unsigned long alg, mult=1, n2=0; int base1=2, base2=10; INICIO N=0 BINARIO = “” PEDIR N ¿N>1? NO BINARIO = N . BINARIO SI /* Pedir datos */ printf ("\n Escribe el número: "); scanf ("%lu", &n1); /* Proceso de cálculo */ while (n1 > 0){ alg = n1 % base1; n1 /= base1; n2 += (alg*mult); mult *= base2; } BINARIO = N%2 . BINARIO ESCRIBIR BINARIO N=N/2 FIN /* Mostrar el resultado */ printf ("\nEl número en binario es %lu", n2); /* Detener para que se vea y terminar */ printf ("\n\n"); system("PAUSE"); return(0); } ' Ejercicio 2.14. ' Descomposición factorial de un número: ' Indica los divisores primos de un número con su exponente Sub DescompFact() Dim n As Integer, i As Integer, E As Integer i = 2 n = InputBox("Escribe el número a descomponer") Do While n > 1 Do While n Mod i = 0 n = Int(n / i) E = E + 1 Loop If E > 0 Then Debug.Print i & "^" & E E = 0 i = i + 1 Loop End Sub /* Módulo 2 – Conceptos de Redes Antonio J. Emperador Sau 37 Programador de Sistemas * Ejercicio 2.14 * Descomposición factorial de un número */ #include <stdlib.h> #include <stdio.h> /* Función principal */ int main(void) { /* Declaración de constantes y variables */ int n = 0; int i = 2; int e = 0; INICIO N=0 I=2 E=0 PEDIR N ¿N>1? NO FIN SI N=N/I SI /* Pedir datos */ printf ("\n Escribe el número: "); scanf ("%d", &n); ¿N%I=0? NO E=E+1 /* Proceso de cálculo y resultado*/ while (n > 1){ while (n % i == 0){ n = n / i; e++; } if (e > 0){ printf ("\n%d ** %d", i, e); } e = 0; i++; } ¿E>0? SI ESCRIBIR I ** E NO E=0 I=I+1 /* Detener para que se vea y terminar */ printf ("\n\n"); system("PAUSE"); return(0); } ' Ejercicio 4.1. a) Un entero pequeño (por ejemplo, en C short o en VB Byte) b) Al ser necesarias cifras decimales, a pesar de no representar una magnitud muy grande, debería utilizarse algún coma flotante (por ejemplo, float en C o Single en VB) c) El nombre de una persona es una cadena de caracteres, definida por char(n) en C o Str(n) en VB (donde n sería el tamaño máximo, 30 por ejemplo) d) La letra de un apartamento solo necesita un carácter por lo que su definición sería char en C y Str(1) en VB e) Deberá ser un valor lógico o booleano, no definido explícitamente en C y como Boolean en VB ' Ejercicio 4.2.a) ' Numero * 20 y / 10, etc., etc. Sub OperaNumEntero() Dim n As Integer, Mult As Integer, Div As Integer, msg As String n = InputBox("Indica un número entero") Mult = n * 20 Div = Int(Mult / 10) msg = Div & vbCrLf Mult = Mult + Div Div = Int(Mult / 10) msg = msg & Div Módulo 2 – Conceptos de Redes Antonio J. Emperador Sau 38 Programador de Sistemas If Mult Mod 10 <> 0 Then msg = msg & vbCrLf & Mult Mod 10 MsgBox msg End Sub /* * Ejercicio 4.2.a * Operar con un número entero solicitado */ #include <stdlib.h> #include <stdio.h> /* Función principal */ int main(void) { /* Declaración de constantes y variables */ int n = 0; int mult = 0; int div = 0; /* Pedir datos */ printf ("\n Escribe el número: "); scanf ("%d", &n); /* Proceso de cálculo y resultado*/ mult = n * 20; div = mult / 10; printf ("\nPrimer resultado: %d\n", div); mult = mult + div; div = mult / 10; printf ("Segundo resultado: %d\n", div); if (mult % 10 != 0){ printf ("Tercer resultado: %d\n", mult % 10); } /* Detener para que se vea y terminar */ printf ("\n\n"); system("PAUSE"); return(0); } ' Ejercicio 4.2.b) ' Numero * 20 y / 10, etc., etc. Sub OperaNumReal() Dim n As Double, Mult As Double, Div As Double, msg As String n = InputBox("Indica un número entero") Mult = n * 20 Div = Mult / 10 msg = Div & vbCrLf Mult = Mult + Div Div = Mult / 10 msg = msg & Div If Mult Mod 10 <> 0 Then msg = msg & vbCrLf & Mult Mod 10 MsgBox msg End Sub /* * Ejercicio 4.2.b * Operar con un número entero solicitado */ #include <stdlib.h> #include <stdio.h> Módulo 2 – Conceptos de Redes Antonio J. Emperador Sau 39 Programador de Sistemas /* Función principal */ int main(void) { /* Declaración de constantes y variables */ float n = 0; float mult = 0; float div = 0; /* Pedir datos */ printf ("\n Escribe el número: "); scanf ("%f", &n); /* Proceso de cálculo y resultado*/ mult = n * 20; div = mult / 10; printf ("\nPrimer resultado: %f\n", div); mult = mult + div; div = mult / 10; printf ("Segundo resultado: %f\n", div); if ((int)mult % 1 != 0){ printf ("Tercer resultado: %f\n", (int)mult % 1); } /* Detener para que se vea y terminar */ printf ("\n\n"); system("PAUSE"); return(0); } ' Ejercicio 4.2.c) ' Raices de una ecuación de segundo grado Sub Raices2Grado() Dim A As Double, b As Double, c As Double Dim x1 As Double, x2 As Double A = InputBox("Coeficiente a: ") b = InputBox("Coeficiente b: ") c = InputBox("Coeficiente c: ") x1 = (-b + (b ^ 2 - 4 * A * c) ^ (1 / 2)) / (2 * A) x2 = (-b - (b ^ 2 - 4 * A * c) ^ (1 / 2)) / (2 * A) MsgBox "x1 = " & x1 & vbCrLf & "x2 = " & x2 End Sub /* * Ejercicio 4.2.c * Soluciones de una ecuación de segundo grado */ #include <stdlib.h> #include <stdio.h> #include <math.h> /* Función principal */ int main(void) { /* Declaración de constantes y variables */ float a = 0; float b = 0; float c = 0; float discriminante = 0; float x1 = 0; float x2 = 0; Módulo 2 – Conceptos de Redes Antonio J. Emperador Sau 40 Programador de Sistemas /* Pedir datos */ printf ("\n Escribe el coeficiente a: "); scanf ("%f", &a); printf ("\n Escribe el coeficiente b: "); scanf ("%f", &b); printf ("\n Escribe el coeficiente c: "); scanf ("%f", &c); /* Proceso de cálculo y resultado*/ discriminante = (float)(pow(b,2) - 4*a*c); if (discriminante < 0){ printf ("\nNo existen raíces de esta ecuación\n"); }else{ x1 = (float)((-b + sqrt(discriminante)) / 2*a); x2 = (float)((-b - sqrt(discriminante)) / 2*a); printf ("\nSoluciones:\n x1 = %f\n x2 = %f\n", x1, x2); } /* Detener para que se vea y terminar */ printf ("\n\n"); system("PAUSE"); return(0); } ' Ejercicio 4.2.d) ' Mostrar letras minúsculas y su código ASCII Sub LetrasASCII() Dim i As Integer For i = 97 To 122 Debug.Print i & " = "; Chr(i) Next End Sub /* * Ejercicio 4.2.d * Letras minúsculas de código ASCII */ #include <stdlib.h> #include <stdio.h> /* Función principal */ int main(void) { /* Declaración de constantes y variables */ int i = 0; /* Proceso de cálculo y resultado*/ printf ("\nLas letras minúsculas y sus códigos ASCII:\n\n"); for (i = 97; i <= 122; i++){ printf ("\nCódigo %d: %c", i, (char)i); } /* Detener para que se vea y terminar */ printf ("\n\n"); system("PAUSE"); return(0); } ' Ejercicio 4.2.e) ' Ordenar dos caracteres Módulo 2 – Conceptos de Redes Antonio J. Emperador Sau 41 Programador de Sistemas Sub OrdenaCaracter() Dim A As String, b As String A = InputBox("Teclea el primer carácter") b = InputBox("Teclea el segundo carácter") If A > b Then MsgBox b & " - " & A Else MsgBox A & " - " & b End If End Sub /* * Ejercicio 4.2.e * Letras minúsculas de código ASCII */ #include <stdlib.h> #include <stdio.h> /* Función principal */ int main(void) { /* Declaración de constantes y variables */ char car1; char car2; /* Pedir datos */ printf ("\n Escribe los dos caracteres: "); scanf ("%c", &car1); scanf ("%c", &car2); /* Proceso de cálculo y resultado*/ if (car1 > car2){ printf ("Ordenados: %c y %c", car2, car1); }else{ printf ("Ordenados: %c y %c", car1, car2); } /* Detener para que se vea y terminar */ printf ("\n\n"); system("PAUSE"); return(0); } ' Ejercicio 4.3.a) ' Número de meses, días, horas, minutos y segundos en un nº de años Sub NumeroEnAnos() Dim meses As Double, dias As Double, horas As Double, minutos As Double, segundos As Double Dim anos As Double anos = CDbl(InputBox("Dime el número de años")) meses = anos * 12 dias = anos * 365 horas = dias * 24 minutos = horas * 60 segundos = minutos * 60 MsgBox "Datos para " & anos & " años:" & vbCrLf & _ "- Meses: " & meses & vbCrLf & "- Días: " & dias & vbCrLf & _ "- Horas: " & horas & vbCrLf & "- Minutos: " & minutos & vbCrLf & _ "- Segundos: " & segundos End Sub /* Módulo 2 – Conceptos de Redes Antonio J. Emperador Sau 42 Programador de Sistemas * Ejercicio 4.3.a * Letras minúsculas de código ASCII */ #include <stdlib.h> #include <stdio.h> /* Función principal */ int main(void) { /* Declaración de constantes y variables */ float anos = 0; float meses = 0; float dias = 0; float horas = 0; float minutos = 0; float segundos = 0; /* Pedir datos */ printf ("\n Introduce el número de años: "); scanf ("%f", &anos); /* Proceso de cálculo*/ meses = anos * 12; dias = anos * 365; horas = dias * 24; minutos = horas * 60; segundos = minutos * 60; /* Mostrar el resultado */ printf ("\n%.0f años tienen:", anos); printf ("\n- %.0f meses\n- %.0f dias", meses, dias); printf ("\n- %.0f horas\n- %.0f minutos", horas, minutos); printf ("\n- %.0f segundos", segundos); /* Detener para que se vea y terminar */ printf ("\n\n"); system("PAUSE"); return(0); } ' Ejercicio 4.3.b) ' Area de un cilindro Function AreaCilindro(r As Double, h As Double) As Double Const Pi = 3.141598 AreaCilindro = 2 * (Pi * r ^ 2 * h) + (2 * Pi * r) * h End Function /* * Ejercicio 4.3.a * Letras minúsculas de código ASCII */ #include <stdlib.h> #include <stdio.h> #include <math.h> /* Función principal */ int main(void) { /* Declaración de constantes y variables */ #define PI 3.141598 /* Constante PI */ float radio = 0; float altura = 0; Módulo 2 – Conceptos de Redes Antonio J. Emperador Sau 43 Programador de Sistemas float area = 0; /* Pedir datos */ printf ("\n ÁREA DE UN CILINDRO\n"); printf ("\n Introduce el radio: "); scanf ("%f", &radio); printf ("\n Introduce la altura: "); scanf ("%f", &altura); /* Proceso de cálculo*/ area = 2 * (PI * pow(radio, 2) * altura) + (2 * PI * radio) * altura; /* Mostrar el resultado */ printf ("\nArea = %f", area); /* Detener para que se vea y terminar */ printf ("\n\n"); system("PAUSE"); return(0); } ' Ejercicio 4.3.c) ' Entero de la raíz cuadrada de un número Function RaizEntera(Numero As Double) As Long RaizEntera = Round(Sqr(Numero), 0) End Function /* * Ejercicio 4.3.c * Entero de una raíz cuadrada */ #include <stdlib.h> #include <stdio.h> #include <math.h> /* Función principal */ int main(void) { /* Declaración de constantes y variables */ float n = 0; int raiz = 0; /* Pedir datos */ printf ("\n Introduce el número: "); scanf ("%f", &n); /* Proceso de cálculo*/ raiz = (int)(sqrt(n)); /* Mostrar el resultado */ printf ("\nRaíz = %d", raiz); /* Detener para que se vea y terminar */ printf ("\n\n"); system("PAUSE"); return(0); } ' Ejercicio 4.3.d) ' Horas a semanas, días y horas Sub HorasASemanas() Módulo 2 – Conceptos de Redes Antonio J. Emperador Sau 44 Programador de Sistemas Dim Numero As Double Dim semanas As Double, dias As Double, horasr As Double Dim msg As String Numero = InputBox("Indica el número de horas") horasr = Numero Mod 24 dias = Int(Numero / 24) semanas = Int(dias / 7) dias = dias Mod 7 msg = Numero & " horas es:" & vbCrLf msg = msg & "- Semanas: " & semanas & vbCrLf msg = msg & "- Días: " & dias & vbCrLf msg = msg & "- Resto horas: " & horasr MsgBox msg End Sub /* * Ejercicio 4.3.d * Desglose de horas */ #include <stdlib.h> #include <stdio.h> /* Función principal */ int main(void) { /* Declaración de constantes y variables */ int n = 0; int semanas = 0; int dias = 0; int horas = 0; /* Pedir datos */ printf ("\n Introduce el número de horas: "); scanf ("%d", &n); /* Proceso de cálculo*/ horas = n % 24; dias = n / 24; semanas = dias / 7; dias = dias % 7; /* Mostrar el resultado */ printf ("\nDesglose de %d horas", n); printf ("\n- Semanas: %d", semanas); printf ("\n- Días: %d", dias); printf ("\n- Horas: %d", horas); /* Detener para que se vea y terminar */ printf ("\n\n"); system("PAUSE"); return(0); } ' Ejercicio 4.3.e) ' Nombre y apellidos con su extracción Sub ExtraerNomAp() Dim cadena As String * 32 Dim nombre As String * 8, ap1 As String * 12, ap2 As String * 12 cadena = "Antonio " & "Emperador " & "Sau " nombre = Left(cadena, 8) Módulo 2 – Conceptos de Redes Antonio J. Emperador Sau 45 Programador de Sistemas ap1 = Mid(cadena, 8, 12) ap2 = Right(cadena, 12) MsgBox "Nombre: " & nombre & vbCrLf & "Apellido 1: " & ap1 & vbCrLf & "Apellido 2: " & ap2 End Sub ' Ejercicio 4.3.e) v. 2 ' Nombre y apellidos con su extracción Public Type CadenaNomAp nombre As String * 8 ap1 As String * 12 ap2 As String * 12 End Type Sub ExtraerNomAp_v2() Dim nomapel As CadenaNomAp nomapel.nombre = "Antonio " nomapel.ap1 = "Emperador " nomapel.ap2 = "Sau " MsgBox "Nombre: " & nomapel.nombre & vbCrLf & "Apellido 1: " & nomapel.ap1 & vbCrLf & "Apellido 2: " & nomapel.ap2 End Sub /* * Ejercicio 4.3.e v2 * Estructuras de variables */ #include <stdlib.h> #include <stdio.h> #include <string.h> /* Función principal */ int main(void) { /* Declaración de constantes y variables */ struct CadenaNomAp { char nombre[8]; char ap1[12]; char ap2[12]; }; struct CadenaNomAp nomapel; /* Dar strcpy strcpy strcpy valores a la estructura */ (nomapel.nombre, "Antonio"); (nomapel.ap1, "Emperador"); (nomapel.ap2, "Sau"); /* Lectura de la estructura */ printf ("\n %s %s %s", nomapel.nombre, nomapel.ap1, nomapel.ap2); /* Detener para que se vea y terminar */ printf ("\n\n"); system("PAUSE"); return(0); } ' Ejercicio 5.1.a) ' Indica si es par o impar un número dado Sub ParOImpar() Dim Numero As Integer Numero = InputBox("Dame un número entero:") If Numero Mod 2 = 0 Then Módulo 2 – Conceptos de Redes Antonio J. Emperador Sau 46 Programador de Sistemas MsgBox "El número " & Numero & " es par" Else MsgBox "El número " & Numero & " es impar" End If End Sub /* * Ejercicio 5.1.a * Indicar par o impar */ #include <stdlib.h> #include <stdio.h> /* Función principal */ int main(void) { /* Declaración de constantes y variables */ int numero = 0; /* Pedir datos */ printf ("\n Introduce el número: "); scanf ("%d", &numero); /* Proceso de cálculo y mostrar*/ if (numero % 2 == 0){ printf ("\nEl número %d es par\n", numero); }else{ printf ("\nEl número %d es impar\n", numero); } /* Detener para que se vea y terminar */ printf ("\n\n"); system("PAUSE"); return(0); } ' Ejercicio 5.1.b) ' Calcula la suma de enteros anteriores Function SumaEnterosAnteriores(Numero As Integer) As Long Dim i As Integer i = 0 For i = Numero To 1 Step -1 SumaEnterosAnteriores = SumaEnterosAnteriores + i Next End Function /* * Ejercicio 5.1.b * Suma desde N hasta 1 */ #include <stdlib.h> #include <stdio.h> /* Función principal */ int main(void) { /* Declaración de constantes y variables */ int numero = 0; int suma = 0; /* Pedir datos */ Módulo 2 – Conceptos de Redes Antonio J. Emperador Sau 47 Programador de Sistemas printf ("\n Introduce el número: "); scanf ("%d", &numero); /* Proceso de cálculo y mostrar*/ if (numero <=0){ printf ("\nEl número debe ser mayor que 0\n"); }else{ while (numero > 0){ suma = suma + numero; numero = numero - 1; } printf ("\nLa suma para %d es %d\n", numero, suma); } /* Detener para que se vea y terminar */ printf ("\n\n"); system("PAUSE"); return(0); } ' Ejercicio 5.1.c) ' Calcula a elevado a b Sub AelevadoB() Dim A As Double, b As Long, potencia As Double Dim j As Long potencia = 1 A = InputBox("Dame la base:") b = InputBox("Dame el exponente (entero):") For j = 0 To b - 1 Step 1 potencia = potencia * A Next MsgBox (A & " elevado a " & b & " = " & potencia) End Sub /* * Ejercicio 5.1.c * Potencia entera de un número */ #include <stdlib.h> #include <stdio.h> /* Función principal */ int main(void) { /* Declaración de constantes y variables */ float a = 0; int b = 0; float potencia = 1; int j; /* Pedir datos y comprobación */ printf ("\n Introduce la base a: "); if (scanf("%f", &a) < 1){ printf("Error en la lectura de a\n"); return(0); } printf ("\n Introduce el exponente b: "); if (scanf("%d", &b) < 1){ printf("Error en la lectura de b\n"); return(0); } Módulo 2 – Conceptos de Redes Antonio J. Emperador Sau 48 Programador de Sistemas /* Proceso de cálculo y mostrar*/ for (j = 0; j < b; j++){ potencia = potencia * a; } /* Mostrar el resultado */ printf ("\n%f elevado a %d = %f\n", a, b, potencia); /* Detener para que se vea y terminar */ printf ("\n\n"); system("PAUSE"); return(0); } ' Ejercicio 5.1.d) ' Pantalla con serie N Sub SerieN() Dim n As Long Dim i As Long, j As Long Dim mensaje As String n = InputBox("Dame un número natural") For i = 1 To n Step 1 For j = 1 To i Step 1 mensaje = mensaje & j & " " Next mensaje = mensaje & vbCrLf Next Debug.Print mensaje End Sub /* * Ejercicio 5.1.d * Pirámide de números */ #include <stdlib.h> #include <stdio.h> /* Función principal */ int main(void) { /* Declaración de constantes y variables */ int n = 0; int i = 1; int j = 1; /* Pedir datos y comprobación */ printf ("\n Introduce un número: "); if (scanf("%d", &n) < 1){ printf("Error en la lectura del número\n"); return(0); } /* Proceso de cálculo y mostrar*/ for (i = 1; i <= n; i++){ for (j = 1; j <= i; j++){ printf("%d ",j); } printf ("\n"); } /* Detener para que se vea y terminar */ printf ("\n\n"); Módulo 2 – Conceptos de Redes Antonio J. Emperador Sau 49 Programador de Sistemas system("PAUSE"); return(0); } ' Ejercicio 5.1.e) ' Días de un mes Function DiasDeMes(mes) Dim meses(12, 2) meses(1, 0) = 1: meses(1, 1) = meses(2, 0) = 1: meses(2, 1) = meses(3, 0) = 1: meses(3, 1) = meses(4, 0) = 1: meses(4, 1) = meses(5, 0) = 1: meses(5, 1) = meses(6, 0) = 1: meses(6, 1) = meses(7, 0) = 1: meses(7, 1) = meses(8, 0) = 1: meses(8, 1) = meses(9, 0) = 1: meses(9, 1) = meses(10, 0) = 1: meses(10, 1) meses(11, 0) = 1: meses(11, 1) meses(12, 0) = 1: meses(12, 1) "Enero": meses(1, 2) = 31 "Febrero": meses(2, 2) = 28 "Marzo": meses(3, 2) = 31 "Abril": meses(4, 2) = 30 "Mayo": meses(5, 2) = 31 "Junio": meses(6, 2) = 30 "Julio": meses(7, 2) = 31 "Agosto": meses(8, 2) = 31 "Septiembre": meses(9, 2) = = "Octubre": meses(10, 2) = = "Noviembre": meses(11, 2) = "Diciembre": meses(12, 2) 30 31 = 30 = 31 DiasDeMes = meses(mes, 2) MsgBox "El mes número " & mes & ", o sea " & meses(mes, 1) & ", tiene " & meses(mes, 2) & " días." End Function /* * Ejercicio 5.1.e * Días de un mes */ #include <stdlib.h> #include <stdio.h> enum Meses {enero, febrero, marzo, abril, mayo, junio, julio, agosto, septiembre, octubre, noviembre, diciembre}; /* Función principal */ int main(void) { /* Declaración de constantes y variables */ enum Meses mes; int diasMes; /* Pedir datos y comprobación */ printf ("\n Introduce el número de un mes"); printf ("\n (0 = enero, 11 = diciembre:"); scanf("%d", (int *) &mes); /* Proceso de cálculo y mostrar*/ switch(mes){ case abril: case junio: case septiembre: case noviembre: diasMes = 30; break; case febrero: diasMes = 28; break; default: diasMes = 31; Módulo 2 – Conceptos de Redes Antonio J. Emperador Sau 50 Programador de Sistemas } /* Mostrar el resultado */ printf ("\nEl mes número %d tiene %d días\n", mes, diasMes); /* Detener para que se vea y terminar */ printf ("\n\n"); system("PAUSE"); return(0); } ' Ejercicio 5.2.a) ' Máximo, mínimo y media de una lista de números Sub MaxMinMedia() Dim n As Double Dim contador As Long Dim maximo As Double, minimo As Double, media As Double Dim mensaje As String minimo = 1E+17: maximo = -1E+17 Do While True n = InputBox("Dame un número") If n < 0 Then Exit Do contador = contador + 1 If n > maximo Then maximo = n If n < minimo Then minimo = n media = media + n Loop mensaje = "Número mensaje = mensaje mensaje = mensaje minimo & vbCrLf mensaje = mensaje media / contador MsgBox mensaje End Sub de datos en lista: " & contador & vbCrLf & "El máximo es: " & maximo & vbCrLf & "El mínimo es: " & & "La media es: " & /* * Ejercicio 5.2.a * Max, min y promedio de una lista */ #include <stdlib.h> #include <stdio.h> /* Función principal */ int main(void) { /* Declaración de constantes y variables */ float n = 0; float max = -100000000; float min = 100000000; float media = 0; int cont = 0; /* Pedir datos y procesar */ while (1){ printf ("\n Introduce un número: "); scanf ("%f", &n); if (n < 0) break; cont++; Módulo 2 – Conceptos de Redes Antonio J. Emperador Sau 51 Programador de Sistemas media = media + n; if (n > max) max = n; if (n < min) min = n; } /* Mostrar el resultado */ printf ("\nNúmero de datos en lista: %d\n", cont); printf ("El máximo es %f\n", max); printf ("El mínimo es %f\n", min); printf ("La media es %f\n", media / cont); /* Detener para que se vea y terminar */ printf ("\n\n"); system("PAUSE"); return(0); } ' Ejercicio 5.2.b) ' Vocal o consonante Sub VocalOConsonante() Dim Letra As String * 1 Dim mensaje As String Letra = InputBox("Escribe una letra:") Select Case Letra Case "a", "e", "i", "o", "u" mensaje = "La letra es vocal" Case Else mensaje = "La letra es consonante" End Select MsgBox mensaje End Sub /* * Ejercicio 5.2.b * Vocal o consonante */ #include <stdlib.h> #include <stdio.h> /* Función principal */ int main(void) { /* Declaración de constantes y variables */ char c; /* Pedir datos */ printf ("\n Escribe una letra: "); scanf ("%c", &c); /* Procesar y mostrar resultado */ if (c == 'a' || c == 'e' || c == 'i' || c == 'o' || c == 'u'){ printf ("\n%c es vocal\n", c); }else{ printf ("\n%c es consonante\n", c); } /* Detener para que se vea y terminar */ printf ("\n\n"); system("PAUSE"); return(0); } Módulo 2 – Conceptos de Redes Antonio J. Emperador Sau 52 Programador de Sistemas ' Ejercicio 5.2.c) ' Mayor de tres números Sub Mayor3numeros() Dim A(2) As Double, mayor As Double mayor = -1E+18 For i = 0 To 2 A(i) = InputBox("Dame el número " & i) If mayor < A(i) Then mayor = A(i) Next MsgBox "El mayor es " & mayor End Sub /* * Ejercicio 5.2.c * Mayor de tres números */ #include <stdlib.h> #include <stdio.h> /* Función principal */ int main(void) { /* Declaración de constantes y variables */ float mayor = -999999999; int i = 0; float n = 0; /* Pedir datos */ /* Pedir datos y Procesar */ for (i = 1; i <= 3; i++){ printf ("\n Escribe el número %d: ", i); scanf ("%f", &n); if (n > mayor) mayor = n; } /* Mostrar el resultado */ printf ("\nEl mayor es: %f\n", mayor); /* Detener para que se vea y terminar */ printf ("\n\n"); system("PAUSE"); return(0); } ' Ejercicio 5.2.d) ' Primo o no primo, ese es el dilema Sub PrimoONo() Dim n As Integer, i As Integer, indicador As Boolean i = 2: indicador = True n = InputBox("Dime el número") Do While i < n If n Mod i = 0 Then indicador = False End If i = i + 1 Loop If indicador Then MsgBox "El número " & n & " es primo" Else MsgBox "El número " & n & " no es primo" End If Módulo 2 – Conceptos de Redes Antonio J. Emperador Sau 53 Programador de Sistemas End Sub /* * Ejercicio 5.2.d * Determinar si un número es primo */ #include <stdlib.h> #include <stdio.h> /* Función principal */ int main(void) { /* Declaración de constantes y variables */ int n = 0; int i = 2; int indic = 1; /* Pedir datos */ printf ("\n Escribe el número: "); scanf ("%d", &n); /* Procesar */ while (i < n){ if (n % i == 0) indic = 0; i++; } /* Mostrar el resultado */ if (indic == 1){ printf("\nEl número es primo"); }else{ printf("\nEl número no es primo"); } /* Detener para que se vea y terminar */ printf ("\n\n"); system("PAUSE"); return(0); } ' Ejercicio 5.2.e) ' Los 100 primeros números primos Sub PrimerosPrimos() Dim n As Long, i As Long, primos As Integer Dim mensaje As String n = 1: primos = 0 Do While True i = 2: indicador = True Do While i < n If n Mod i = 0 Then indicador = False End If i = i + 1 Loop If indicador = True Then mensaje = mensaje & n & vbCrLf primos = primos + 1 End If n = n + 1 If primos = 100 Then Exit Do Loop Módulo 2 – Conceptos de Redes Antonio J. Emperador Sau 54 Programador de Sistemas Debug.Print mensaje End Sub /* * Ejercicio 5.2.e * Los 100 primeros primos */ #include <stdlib.h> #include <stdio.h> /* Función principal */ int main(void) { /* Declaración de constantes y variables */ int n = 1; int i = 2; int primos = 0; int indic = 1; /* Procesar y mostrar primos */ while (1){ i = 2; indic = 1; while (i < n){ if (n % i == 0) indic = 0; i++; } if (indic == 1){ printf ("\n %d", n); primos++; } n++; if (primos >= 100) break; } /* Detener para que se vea y terminar */ printf ("\n\n"); system("PAUSE"); return(0); } ' Ejercicio 5.2.f) ' La calculadora humana Sub Calculadora() Dim opcion As String * 1, num1 As Double, num2 As Double Dim resultado As Double Dim mensaje As String, operacion As String mensaje mensaje mensaje mensaje mensaje mensaje = = = = = = " PROGRAMA CALCULADORA" & vbCrLf & vbCrLf mensaje & "a) Sumar" & vbCrLf mensaje & "b) Restar" & vbCrLf mensaje & "c) Multiplicar" & vbCrLf mensaje & "d) Dividir" & vbCrLf mensaje & "e) Salir" & vbCrLf Do While opcion <> "e" opcion = InputBox(mensaje) Select Case opcion Case "a", "b", "c", "d" num1 = InputBox("Primer número") num2 = InputBox("Segundo número") Select Case opcion Módulo 2 – Conceptos de Redes Antonio J. Emperador Sau 55 Programador de Sistemas Case "a" 'Suma resultado = num1 + num2 operacion = "Suma" Case "b" 'Resta resultado = num1 - num2 operacion = "Resta" Case "c" 'Multiplicación resultado = num1 * num2 operacion = "Multiplicación" Case "d" 'División resultado = num1 / num2 operacion = "División" End Select MsgBox "La " & operacion & " de " & num1 & " y " & num2 & " es " & resultado End Select Loop End Sub /* * Ejercicio 5.2.f * Calculadora */ #include <stdlib.h> #include <stdio.h> /* Función principal */ int main(void) { /* Declaración de constantes y variables */ char opcion; float num1 = 0; float num2 = 0; float resultado = 0; /* Procesar y mostrar primos */ while (1) { num1 = 0; num2 = 0; resultado = 0; fflush ( stdin); system("cls"); printf("\n\nLA CALCULADORA HUMANA\n"); printf("=====================\n"); printf("\n Elige una de las siguientes operaciones:\n"); printf("\n a) Sumar"); printf("\n b) Restar"); printf("\n c) Multiplicar"); printf("\n d) Dividir"); printf("\n e) Salir"); printf("\n\nPulsa opción (a, b, c, d, e): "); scanf("%c", &opcion); if (opcion == 'e') break; printf("\n\n - Escribe el primer número: "); scanf("%f", &num1); printf(" - Escribe el segundo número: "); scanf("%f", &num2); if (opcion == 'a') resultado = num1 + num2; if (opcion == 'b') resultado = num1 - num2; Módulo 2 – Conceptos de Redes Antonio J. Emperador Sau 56 Programador de Sistemas if (opcion == 'c') resultado = num1 * num2; if (opcion == 'd') resultado = num1 / num2; printf ("\n\n\nResultado: %f\n\n", resultado); system("PAUSE"); } /* Detener para que se vea y terminar */ printf ("\n\n"); system("PAUSE"); return(0); } ' Ejercicio 6.1.a) ' Función que retorna el doble de un número Function DobleN(Numero As Double) As Double DobleN = 2 * Numero End Function /* * Ejercicio 6.1.a * Doble de un número */ #include <stdlib.h> #include <stdio.h> /* Función doble */ /* Calcula el doble de un número pasado como parámetro */ float doble(float n){ float b = 0; b = 2 * n; return(b); } /* Función principal */ int main(void) { /* Declaración de constantes y variables */ float a = 0; /* Pedir dato */ printf ("\nTeclea un número: "); scanf("%f", &a); /* Procesar */ /* Mostrar resultado */ printf ("\n\nEl doble de %f es %f", a, doble(a)); /* Detener para que se vea y terminar */ printf ("\n\n"); system("PAUSE"); return(0); } ' Ejercicio 6.1.b) ' Función que calcula el volumen de un cubo Function VolumenCubo(lado As Double) As Double VolumenCubo = lado ^ 3 End Function Módulo 2 – Conceptos de Redes Antonio J. Emperador Sau 57 Programador de Sistemas /* * Ejercicio 6.1.b * Volumen de un cubo */ #include <stdlib.h> #include <stdio.h> /* Función VolumenCubo */ /* Calcula el volumen de un cubo pasando el lado como parámetro */ float VolumenCubo(float n){ float b = 0; b = n * n * n; return(b); } /* Función principal */ int main(void) { /* Declaración de constantes y variables */ float a = 0; /* Pedir dato */ printf ("\nVOLUMEN DE UN CUBO"); printf ("\n==================\n\n"); printf ("\nTeclea la longitud del lado: "); scanf("%f", &a); /* Procesar */ /* Mostrar resultado */ printf ("\n\nEl volumen es %f", VolumenCubo(a)); /* Detener para que se vea y terminar */ printf ("\n\n"); system("PAUSE"); return(0); } ' Ejercicio 6.1.c) ' Función que calcula el área de un círculo Function AreaCirc(radio As Double) As Double Const Pi = 3.141598 AreaCirc = Pi * radio ^ 2 End Function /* * Ejercicio 6.1.c * Área de un círculo */ #include <stdlib.h> #include <stdio.h> /* Función AreaCirculo */ /* Calcula el área de un círculo pasando el radio como parámetro */ float AreaCirculo(float n){ #define PI 3.141598 /* Constante PI */ float b = 0; b = PI * n * n; return(b); } Módulo 2 – Conceptos de Redes Antonio J. Emperador Sau 58 Programador de Sistemas /* Función principal */ int main(void) { /* Declaración de constantes y variables */ float a = 0; /* Pedir dato */ printf ("\nÁREA DE UN CÍRCULO"); printf ("\n==================\n\n"); printf ("\nTeclea la longitud del radio: "); scanf("%f", &a); /* Procesar */ /* Mostrar resultado */ printf ("\n\nEl área es %f", AreaCirculo(a)); /* Detener para que se vea y terminar */ printf ("\n\n"); system("PAUSE"); return(0); } ' Ejercicio 6.1.d) ' Función que calcula el volumen de un cilindro Function VolCilin(radio As Double, altura As Double) As Double VolCilin = AreaCirc(radio) * altura End Function /* * Ejercicio 6.1.d * Volumen de un cilindro */ #include <stdlib.h> #include <stdio.h> /* Función AreaCirculo */ /* Calcula el área de un círculo pasando el radio como parámetro */ float AreaCirculo(float n){ #define PI 3.141598 /* Constante PI */ float b = 0; b = PI * n * n; return(b); } float VolumenCilindro(float r, float h){ return(AreaCirculo(r) * h); } /* Función principal */ int main(void) { /* Declaración de constantes y variables */ float radio = 0; float altura = 0; /* Pedir dato */ printf ("\nVOLUMEN DE UN CILINDRO"); printf ("\n======================\n\n"); printf ("\nTeclea la longitud del radio de la base: "); scanf("%f", &radio); Módulo 2 – Conceptos de Redes Antonio J. Emperador Sau 59 Programador de Sistemas printf ("\nTeclea la longitud de la altura: "); scanf("%f", &altura); /* Procesar */ /* Mostrar resultado */ printf ("\n\nEl volumen es %f", VolumenCilindro(radio, altura)); /* Detener para que se vea y terminar */ printf ("\n\n\n\n"); system("PAUSE"); return(0); } ' Ejercicio 6.1.e) ' Función que pide un número por pantalla y retorna el valor escrito Function PideNumero() As Double Dim aux As Variant Do aux = InputBox("Escribe un número") Loop While Not IsNumeric(aux) PideNumero = aux End Function /* * Ejercicio 6.1.e * Pide un número y lo presenta en pantalla */ #include <stdlib.h> #include <stdio.h> /* Función AreaCirculo */ /* Calcula el área de un círculo pasando el radio como parámetro */ void Contestar(float n){ printf("%f", n); return; } /* Función principal */ int main(void) { /* Declaración de constantes y variables */ float a = 0; /* Pedir dato */ printf ("\nCONTESTAR LO ESCRITO"); printf ("\n====================\n\n"); printf ("\nEscribe un número: "); scanf("%f", &a); /* Procesar */ Contestar(a); /* Mostrar resultado */ /* Detener para que se vea y terminar */ printf ("\n\n\n\n"); system("PAUSE"); return(0); } Módulo 2 – Conceptos de Redes Antonio J. Emperador Sau 60 Programador de Sistemas ' Ejercicio 6.2.a) ' Procedimiento que muestra un mensaje por pantalla Sub MuestraMsg(texto As String) MsgBox texto, vbCritical + vbOKOnly, "Mensaje del sistema" End Sub /* * Ejercicio 6.2.a * Muestra un mensaje estándar por pantalla */ #include <stdlib.h> #include <stdio.h> /* Función AreaCirculo */ /* Calcula el área de un círculo pasando el radio como parámetro */ void MostrarMsg(void){ char a; printf("Mensaje del sistema\n"); printf("===================\n\n"); printf("Pulsa INTRO para continuar\n"); scanf("%c", &a); system("cls"); return; } /* Función principal */ int main(void) { /* Declaración de constantes y variables */ /* Pedir dato */ printf ("\nMOSTRAR MENSAJE ESTÁNDAR"); printf ("\n========================\n\n"); /* Procesar */ MostrarMsg(); /* Mostrar resultado */ /* Detener para que se vea y terminar */ printf ("\n\n\n\n"); system("PAUSE"); return(0); } ' Ejercicio 6.2.b) ' Muestra un menú con tres opciones Sub MuestraMenu3() Dim texto As String, aux As Variant texto = " M E N Ú D E T R E S O P C I O N E S" texto = texto & vbCrLf & vbCrLf texto = texto & "1) Opción primera" & vbCrLf texto = texto & "2) Opción segunda" & vbCrLf texto = texto & "3) Opción tercera" & vbCrLf texto = texto & vbCrLf & vbCrLf texto = texto & "(Introduce valores 1, 2 ó 3)" Do aux = InputBox(texto, "Selección de opciones") Loop While aux <> 1 And aux <> 2 And aux <> 3 MuestraMsg (aux) Módulo 2 – Conceptos de Redes Antonio J. Emperador Sau 61 Programador de Sistemas End Sub /* * Ejercicio 6.2.b * Muestra un menú con tres opciones */ #include <stdlib.h> #include <stdio.h> /* Función AreaCirculo */ /* Calcula el área de un círculo pasando el radio como parámetro */ void Menu3opt(void){ char a; do { system("cls"); printf("M E N Ú D E T R E S O P C I O N E S\n"); printf("=========================================\n\n"); printf("1) Opción primera\n"); printf("2) Opción segunda\n"); printf("3) Opción tercera\n"); printf("\n\n"); printf("Introduce valor de la opción (1, 2 ó 3): "); scanf("%c", &a); } while (a != '1' && a != '2' && a != '3'); printf("\n\nOpción elegida: %c\n\n", a); return; } /* Función principal */ int main(void) { /* Declaración de constantes y variables */ /* Pedir dato */ printf ("\nMOSTRAR MENÚ DE OPCIONES"); printf ("\n========================\n\n"); system("PAUSE"); /* Procesar */ Menu3opt(); /* Mostrar resultado */ /* Detener para que se vea y terminar */ printf ("\n\n\n\n"); system("PAUSE"); return(0); } ' Ejercicio 7.1.a) ' Pide la temperatura media mensual y responde la media anual Sub TemperaturaAnual() Dim meses(1 To 12, 0 To 2) Dim i As Byte, media As Double Dim mensaje As String meses(1, meses(2, meses(3, meses(4, meses(5, 0) 0) 0) 0) 0) = = = = = 1: 2: 3: 4: 5: Módulo 2 – Conceptos de Redes Antonio J. Emperador Sau meses(1, meses(2, meses(3, meses(4, meses(5, 1) 1) 1) 1) 1) = = = = = "Enero" "Febrero" "Marzo" "Abril" "Mayo" 62 Programador de Sistemas meses(6, 0) = 6: meses(6, 1) meses(7, 0) = 7: meses(7, 1) meses(8, 0) = 8: meses(8, 1) meses(9, 0) = 9: meses(9, 1) meses(10, 0) = 10: meses(10, meses(11, 0) = 11: meses(11, meses(12, 0) = 12: meses(12, = "Junio" = "Julio" = "Agosto" = "Septiembre" 1) = "Octubre" 1) = "Noviembre" 1) = "Diciembre" For i = 1 To 12 Do aux = InputBox("Indica la temperatura media en " & meses(i, 1)) Loop While Not IsNumeric(aux) Or aux < -20 Or aux > 60 meses(i, 2) = aux Next media = 0 For i = 1 To 12 media = media + meses(i, 2) Next mensaje = "Resumen anual de temperaturas" mensaje = mensaje & vbCrLf & vbCrLf mensaje = mensaje & "Temperatura media del año: " & media / 12 MuestraMsg (mensaje) End Sub /* * Ejercicio 7.1.a * Temperatura media de 12 meses */ #include <stdlib.h> #include <stdio.h> #define NUMERO_MESES 12 /* Función principal */ int main(void) { /* Declaración de constantes y variables */ float tempMeses[NUMERO_MESES]; int j; float tempMedia = 0; /* Lectura de los valores */ for (j = 0; j < NUMERO_MESES; j++){ printf("Introduce la temperatura del mes %d: ", j+1); scanf("%f", &tempMeses[j]); } /* Procesar */ for (j = 0; j < NUMERO_MESES; j++) tempMedia = tempMedia + tempMeses[j]; tempMedia = tempMedia / NUMERO_MESES; /* Mostrar el mensaje */ printf("\nLa temperatura media anual es %f", tempMedia); /* Detener para que se vea y terminar */ printf ("\n\n"); system("PAUSE"); Módulo 2 – Conceptos de Redes Antonio J. Emperador Sau 63 Programador de Sistemas return(0); } ' Ejercicio 7.1.b) ' Crea una matriz unid. de 10 elem., rellena con valores entre 1 y 10 y la imprime Sub Matrix10() Dim Matriz(1 To 10) Dim i As Byte Randomize For i = 1 To 10 Matriz(i) = Int(Rnd() * 10 + 1) Next For i = 1 To 10 Debug.Print Matriz(i) Next End Sub /* * Ejercicio 7.1.b * Matriz de 10 números aleatorios */ #include <stdlib.h> #include <stdio.h> #include <time.h> /* Función principal */ int main(void) { /* Declaración de constantes y variables */ int matr[10]; int j; /* Lectura de los valores */ /* Procesar */ srand (time(NULL)); for (j = 0; j < 10; j++) matr[j] = rand() % 100; /* Mostrar el mensaje */ for (j = 0; j < 10; j++) printf ("Elemento %d: %d\n", j+1, matr[j]); /* Detener para que se vea y terminar */ printf ("\n\n"); system("PAUSE"); return(0); } ' Ejercicio 7.1.c) ' Crea una matriz 5x5, rellana con valores entre 1000 y 2000, la imprime ' y muestra el valor máximo y mínimo Sub Matrix5x5() Dim Matriz(1 To 5, 1 To 5) As Long Dim i As Byte, j As Byte Dim maximo As Long, minimo As Long Dim mensaje As String Módulo 2 – Conceptos de Redes Antonio J. Emperador Sau 64 Programador de Sistemas Randomize For i = 1 To 5 For j = 1 To 5 Matriz(i, j) = Int(1000 * Rnd() + 1000) Next Next maximo = 1000: minimo = 2000 For i = 1 To 5 For j = 1 To 5 mensaje = mensaje & Matriz(i, j) & " " If maximo < Matriz(i, j) Then maximo = Matriz(i, j) If minimo > Matriz(i, j) Then minimo = Matriz(i, j) Next mensaje = mensaje & vbCrLf Next mensaje = mensaje & vbCrLf mensaje = mensaje & "El valor máximo es: " & maximo & vbCrLf mensaje = mensaje & "El valor mínimo es: " & minimo MuestraMsg (mensaje) End Sub /* * Ejercicio 7.1.c * Matriz de 5x5 números aleatorios */ #include <stdlib.h> #include <stdio.h> #include <time.h> /* Función principal */ int main(void) { /* Declaración de constantes y variables */ int matr[5] [5]; int i; Módulo 2 – Conceptos de Redes Antonio J. Emperador Sau 65 Programador de Sistemas int j; int max = -9999999; int min = 9999999; /* Lectura de los valores */ /* Procesar */ srand (time(NULL)); for (i = 0; i < 10; i++){ for (j = 0; j < 10; j++){ matr[j] [i] = rand() % 1000 + 1000; } } /* Mostrar el mensaje */ for (i = 0; i < 10; i++){ for (j = 0; j < 10; j++){ printf ("%d ", matr[j] [i]); if (matr[j] [i] > max) max = matr[j] [i]; if (matr[j] [i] < min) min = matr[j] [i]; } printf ("\n"); } printf ("\nEl máximo es %d", max); printf ("\nEl mínimo es %d", min); /* Detener para que se vea y terminar */ printf ("\n\n"); system("PAUSE"); return(0); } ' Ejercicio 7.1.d) ' Pide notas de alumnos hasta que se pone un negativo. Al final ' muestra máximo, mínimo, media y número de alumnos Sub EvaluaciónAlumnos() Dim Notas() Dim i As Integer, aux As Variant Dim maximo As Single, minimo As Single, media As Single Dim Numero As Integer Dim mensaje As String i = 0 Do While True Do aux = InputBox("Introduce la nota del alumno número " & i + 1) Loop While Not IsNumeric(aux) Or aux >= 10 If aux < 0 Then Exit Do If i = 0 Then ReDim Notas(0) Else ReDim Preserve Notas(UBound(Notas) + 1) End If Notas(i) = aux i = i + 1 Loop maximo = 0: minimo = 10 media = 0: Numero = 0 Módulo 2 – Conceptos de Redes Antonio J. Emperador Sau 66 Programador de Sistemas For i = 0 To UBound(Notas) If maximo < Notas(i) Then maximo = Notas(i) If minimo > Notas(i) Then minimo = Notas(i) media = media + Notas(i) Numero = Numero + 1 Next mensaje = "RESUMEN DE NOTAS DE MATEMÁTICAS" mensaje = mensaje & vbCrLf & vbCrLf mensaje = mensaje & "Número de alumnos: " & Numero & vbCrLf mensaje = mensaje & "Nota máxima: " & maximo & vbCrLf mensaje = mensaje & "Nota mínima: " & minimo & vbCrLf mensaje = mensaje & "Media de notas: " & media / Numero & vbCrLf MuestraMsg (mensaje) End Sub ' Ejercicio 7.1.e) ' Tenga una función que recibe como parámetro un array y un elemento. ' La función determina si el elemento se encuentra en el array, ' devolviendo 0 si no está y 1 si lo está Sub EnviaArray() Dim elem As String, A(4) As String Dim mensaje As String elem = "a" A(0) = "b": A(1) = "a": A(2) = "c": A(3) = "z": A(4) = "t" MsgBox RecibeArray(elem, A()) End Sub Function RecibeArray(elemento As String, ParamArray Matriz() As Variant) aux = 0 For i = 1 To UBound(Matriz) If Matriz(i) = elemento Then aux = 1 Next RecibeArray = aux End Function ' Ejercicio 7.2.a) ' Da la longitud de una cadena de texto Function LongCadena(cadena As String) As Long Dim i As Long i = 1 Do While Mid(cadena, i, 1) <> "" i = i + 1 Loop LongCadena = i - 1 End Function /* * Ejercicio 7.2.a Módulo 2 – Conceptos de Redes Antonio J. Emperador Sau 67 Programador de Sistemas * Longitud de una cadena */ #include <stdlib.h> #include <stdio.h> #define MAX_CADENA 100 /* Función principal */ int main(void) { /* Declaración de constantes y variables */ char cadena[MAX_CADENA]; int longitud = 0; /* Lectura de los valores */ printf("Introduce una cadena de caracteres: "); scanf("%s", &cadena); /* Procesar */ while (cadena[longitud] != '\0'){ longitud++; } /* Mostrar el mensaje */ printf("La longitud de \"%s\" es %d\n", cadena, longitud); /* Detener para que se vea y terminar */ printf ("\n\n"); system("PAUSE"); return(0); } ' Ejercicio 7.2.b) ' Devuelve la misma cadena sin vocales Function SinVocales(cadena As String) As String Dim i As Long, aux As String For i = 1 To LongCadena(cadena) aux = Mid(cadena, i, 1) Select Case aux Case "a", "e", "i", "o", "u" Case Else SinVocales = SinVocales & aux End Select Next End Function /* * Ejercicio 7.2.b * Cadena sin vocales */ #include <stdlib.h> #include <stdio.h> /* Función principal */ int main( int argc, char *argv[]) { /* Declaración de constantes y variables */ char *mensaje; char *mensaje_duplica; int i, j, longitud; Módulo 2 – Conceptos de Redes Antonio J. Emperador Sau 68 Programador de Sistemas /* Lectura de los valores */ if (argc != 2){ printf ("\nUso: %s <mensaje a acortar>\n", argv[0]); exit(-1); } /* Procesar */ mensaje = argv[1]; longitud = 0; for (i = 0; mensaje[i] != '\0'; i++){ longitud++; } mensaje_duplica = (char *)malloc(sizeof(char)*(longitud+1)); if (mensaje_duplica == NULL){ printf("No se puede asignar memoria\n"); return(0); } j = 0; for (i = 0; i <= longitud; i++){ if ( (mensaje[i] != 'a') && (mensaje[i] != 'e') && (mensaje[i] != 'i') && (mensaje[i] != 'o') && (mensaje[i] != 'u') ) { mensaje_duplica[j] = mensaje[i]; j++; } } mensaje_duplica[j] = '\0'; /* Mostrar el mensaje */ printf("%s\n", mensaje_duplica); free(mensaje_duplica); /* Detener para que se vea y terminar */ printf ("\n\n"); system("PAUSE"); return(0); } ' Ejercicio 7.2.c) ' Dice si la cadena es un palíndromo Function Palindromo(cadena As String) As String Dim i As Long, largo As Long largo = LongCadena(cadena) Palindromo = "Sí" For i = 1 To Int(largo / 2) If Mid(cadena, i, 1) <> Mid(cadena, largo - i + 1, 1) Then Palindromo = "No" End If Next End Function ' Ejercicio 7.2.d) ' Primera y última letra alfabéticamente de una cadena Sub PriUltLetra() Dim cadena As String, primera As String, ultima As String Dim Letra As String * 1 primera = "z": ultima = "a" Módulo 2 – Conceptos de Redes Antonio J. Emperador Sau 69 Programador de Sistemas cadena = InputBox("Escribe una cadena de texto") For i = 1 To LongCadena(cadena) Letra = Mid(cadena, i, 1) If Letra > ultima Then ultima = Letra If Letra < primera Then primera = Letra Next MsgBox "La primera es: " & primera & vbCrLf & "La última es: " & ultima End Sub ' Ejercicio 7.2.e) ' Crea una cadena aleatoria de 10 car. e indica cuántas veces se repite una letra Sub RepiteLetra() Dim cadena As String, Letra(), Numero() Dim i As Byte, caracter As String Dim j As Byte, esta As Byte Randomize For i = 1 To 10 cadena = cadena & Chr(Int(Rnd() * 26 + 97)) Next MsgBox cadena ReDim Letra(0), Numero(0) For i = 1 To 10 caracter = Mid(cadena, i, 1) For j = 0 To UBound(Letra) If caracter = Letra(j) Then esta = j Next If esta > 0 Then Numero(esta) = Numero(esta) + 1 Else ReDim Preserve Letra(UBound(Letra) + 1) ReDim Preserve Numero(UBound(Letra) + 1) Letra(UBound(Letra)) = caracter Numero(UBound(Letra)) = 1 End If esta = 0 Next mensaje = "Cadena aleatoria: " & cadena & vbCrLf & vbCrLf For i = 1 To UBound(Letra) mensaje = mensaje & "- Letra " & Letra(i) & ", " & _ Numero(i) & " veces" & vbCrLf Next MsgBox mensaje End Sub ' Ejercicio 7.2.f) ' Partir cadena solicitada en tres partes Sub PartirCadenaEn3() Dim cadena As String, Parte(2) As String Dim mensaje As String cadena = InputBox("Dame una cadena de texto") mensaje = "La cadena es: " & cadena & vbCrLf & vbCrLf If Len(cadena) < 7 Then mensaje = mensaje & "La cadena tiene menos de 7 caracteres" Else Módulo 2 – Conceptos de Redes Antonio J. Emperador Sau 70 Programador de Sistemas Parte(0) = Left(cadena, 2) Parte(1) = Mid(cadena, 4, 3) Parte(2) = Right(cadena, 4) End If If Len(cadena) >= 7 Then For i = 0 To 2 mensaje = mensaje & "- " & Parte(i) & vbCrLf Next End If MsgBox mensaje End Sub Módulo 2 – Conceptos de Redes Antonio J. Emperador Sau 71