programador de sistemas - cursos.integra-gestion.comcursos.integra-gestion.com/pdes/mod1.pdf ·...

71
Septiembre 2011 – Febrero 2012 Programador de Sistemas Material del Curso Módulo 1. Teoría de la Programación Antonio J. Emperador Sau [email protected]

Upload: hoanghanh

Post on 13-Oct-2018

271 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Programador de Sistemas - cursos.integra-gestion.comcursos.integra-gestion.com/PdeS/Mod1.pdf · Programación Shell-Script para Linux . Programador de Sistemas ... Ejercicios Resueltos

Septiembre 2011 – Febrero 2012

Programador de Sistemas Material del Curso

Módulo 1. Teoría de la Programación

Antonio J. Emperador Sau

[email protected]

Page 2: Programador de Sistemas - cursos.integra-gestion.comcursos.integra-gestion.com/PdeS/Mod1.pdf · Programación Shell-Script para Linux . Programador de Sistemas ... Ejercicios Resueltos
Page 3: Programador de Sistemas - cursos.integra-gestion.comcursos.integra-gestion.com/PdeS/Mod1.pdf · Programación Shell-Script para Linux . Programador de Sistemas ... Ejercicios Resueltos

Programador de Sistemas

3 Módulo 1 – Teoría de la Programación

Antonio J. Emperador Sau

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

Page 4: Programador de Sistemas - cursos.integra-gestion.comcursos.integra-gestion.com/PdeS/Mod1.pdf · Programación Shell-Script para Linux . Programador de Sistemas ... Ejercicios Resueltos
Page 5: Programador de Sistemas - cursos.integra-gestion.comcursos.integra-gestion.com/PdeS/Mod1.pdf · Programación Shell-Script para Linux . Programador de Sistemas ... Ejercicios Resueltos

Programador de Sistemas

5 Módulo 1 – Teoría de la Programación

Antonio J. Emperador Sau

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

Page 6: Programador de Sistemas - cursos.integra-gestion.comcursos.integra-gestion.com/PdeS/Mod1.pdf · Programación Shell-Script para Linux . Programador de Sistemas ... Ejercicios Resueltos
Page 7: Programador de Sistemas - cursos.integra-gestion.comcursos.integra-gestion.com/PdeS/Mod1.pdf · Programación Shell-Script para Linux . Programador de Sistemas ... Ejercicios Resueltos

Programador de Sistemas

7 Módulo 1 – Teoría de la Programación

Antonio J. Emperador Sau

Módulo 1

Teoría de la programación

30 horas

Page 8: Programador de Sistemas - cursos.integra-gestion.comcursos.integra-gestion.com/PdeS/Mod1.pdf · Programación Shell-Script para Linux . Programador de Sistemas ... Ejercicios Resueltos
Page 9: Programador de Sistemas - cursos.integra-gestion.comcursos.integra-gestion.com/PdeS/Mod1.pdf · Programación Shell-Script para Linux . Programador de Sistemas ... Ejercicios Resueltos

Programador de Sistemas

9 Módulo 1 – Teoría de la Programación

Antonio J. Emperador Sau

Módulo 1. Teoría de la Programación. Contenido de Presentación

Page 10: Programador de Sistemas - cursos.integra-gestion.comcursos.integra-gestion.com/PdeS/Mod1.pdf · Programación Shell-Script para Linux . Programador de Sistemas ... Ejercicios Resueltos

Programador de Sistemas

10 Módulo 1 – Teoría de la Programación

Antonio J. Emperador Sau

Page 11: Programador de Sistemas - cursos.integra-gestion.comcursos.integra-gestion.com/PdeS/Mod1.pdf · Programación Shell-Script para Linux . Programador de Sistemas ... Ejercicios Resueltos

Programador de Sistemas

11 Módulo 1 – Teoría de la Programación

Antonio J. Emperador Sau

Page 12: Programador de Sistemas - cursos.integra-gestion.comcursos.integra-gestion.com/PdeS/Mod1.pdf · Programación Shell-Script para Linux . Programador de Sistemas ... Ejercicios Resueltos

Programador de Sistemas

12 Módulo 1 – Teoría de la Programación

Antonio J. Emperador Sau

Page 13: Programador de Sistemas - cursos.integra-gestion.comcursos.integra-gestion.com/PdeS/Mod1.pdf · Programación Shell-Script para Linux . Programador de Sistemas ... Ejercicios Resueltos

Programador de Sistemas

13 Módulo 1 – Teoría de la Programación

Antonio J. Emperador Sau

Page 14: Programador de Sistemas - cursos.integra-gestion.comcursos.integra-gestion.com/PdeS/Mod1.pdf · Programación Shell-Script para Linux . Programador de Sistemas ... Ejercicios Resueltos

Programador de Sistemas

14 Módulo 1 – Teoría de la Programación

Antonio J. Emperador Sau

Page 15: Programador de Sistemas - cursos.integra-gestion.comcursos.integra-gestion.com/PdeS/Mod1.pdf · Programación Shell-Script para Linux . Programador de Sistemas ... Ejercicios Resueltos

Programador de Sistemas

15 Módulo 1 – Teoría de la Programación

Antonio J. Emperador Sau

Page 16: Programador de Sistemas - cursos.integra-gestion.comcursos.integra-gestion.com/PdeS/Mod1.pdf · Programación Shell-Script para Linux . Programador de Sistemas ... Ejercicios Resueltos

16 Módulo 2 – Conceptos de Redes

Antonio J. Emperador Sau

Programador de Sistemas

Módulo 1 – Teoría de la

programación

Ejercicios propuestos

Page 17: Programador de Sistemas - cursos.integra-gestion.comcursos.integra-gestion.com/PdeS/Mod1.pdf · Programación Shell-Script para Linux . Programador de Sistemas ... Ejercicios Resueltos

17 Módulo 2 – Conceptos de Redes

Antonio J. Emperador Sau

Programador de Sistemas

Módulo 1. Teoría de la Programación. Ejercicios Propuestos

Page 18: Programador de Sistemas - cursos.integra-gestion.comcursos.integra-gestion.com/PdeS/Mod1.pdf · Programación Shell-Script para Linux . Programador de Sistemas ... Ejercicios Resueltos

18 Módulo 2 – Conceptos de Redes

Antonio J. Emperador Sau

Programador de Sistemas

Page 19: Programador de Sistemas - cursos.integra-gestion.comcursos.integra-gestion.com/PdeS/Mod1.pdf · Programación Shell-Script para Linux . Programador de Sistemas ... Ejercicios Resueltos

19 Módulo 2 – Conceptos de Redes

Antonio J. Emperador Sau

Programador de Sistemas

Page 20: Programador de Sistemas - cursos.integra-gestion.comcursos.integra-gestion.com/PdeS/Mod1.pdf · Programación Shell-Script para Linux . Programador de Sistemas ... Ejercicios Resueltos

20 Módulo 2 – Conceptos de Redes

Antonio J. Emperador Sau

Programador de Sistemas

Page 21: Programador de Sistemas - cursos.integra-gestion.comcursos.integra-gestion.com/PdeS/Mod1.pdf · Programación Shell-Script para Linux . Programador de Sistemas ... Ejercicios Resueltos

21 Módulo 2 – Conceptos de Redes

Antonio J. Emperador Sau

Programador de Sistemas

Page 22: Programador de Sistemas - cursos.integra-gestion.comcursos.integra-gestion.com/PdeS/Mod1.pdf · Programación Shell-Script para Linux . Programador de Sistemas ... Ejercicios Resueltos

22 Módulo 2 – Conceptos de Redes

Antonio J. Emperador Sau

Programador de Sistemas

Page 23: Programador de Sistemas - cursos.integra-gestion.comcursos.integra-gestion.com/PdeS/Mod1.pdf · Programación Shell-Script para Linux . Programador de Sistemas ... Ejercicios Resueltos

23 Módulo 2 – Conceptos de Redes

Antonio J. Emperador Sau

Programador de Sistemas

Page 24: Programador de Sistemas - cursos.integra-gestion.comcursos.integra-gestion.com/PdeS/Mod1.pdf · Programación Shell-Script para Linux . Programador de Sistemas ... Ejercicios Resueltos
Page 25: Programador de Sistemas - cursos.integra-gestion.comcursos.integra-gestion.com/PdeS/Mod1.pdf · Programación Shell-Script para Linux . Programador de Sistemas ... Ejercicios Resueltos

25 Módulo 2 – Conceptos de Redes

Antonio J. Emperador Sau

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

Page 26: Programador de Sistemas - cursos.integra-gestion.comcursos.integra-gestion.com/PdeS/Mod1.pdf · Programación Shell-Script para Linux . Programador de Sistemas ... Ejercicios Resueltos

26 Módulo 2 – Conceptos de Redes

Antonio J. Emperador Sau

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 */ #include <stdlib.h> #include <stdio.h> /* 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 par a el radio */ float area = 0; /* Variable de tipo real par a el área */ /* Pedir datos */ printf ("\n Escribe el radio del círculo: "); scanf ("%f", &radio); /* Calcular el área */ area = PI * radio * radio; /* 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

INICIO

RADIO � 0AREA � 0

PEDIR RADIO

AREA � 3.1415 * RADIO

MOSTRAR AREA

FIN

Page 27: Programador de Sistemas - cursos.integra-gestion.comcursos.integra-gestion.com/PdeS/Mod1.pdf · Programación Shell-Script para Linux . Programador de Sistemas ... Ejercicios Resueltos

27 Módulo 2 – Conceptos de Redes

Antonio J. Emperador Sau

Programador de Sistemas

' Suma de los primeros 20 números naturales 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 */ /* 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

INICIO

SUMA = 0N = 0

N = N + 1

SUMA = SUMA + N

¿N = 20?

NO

IMPRIMIR SUMA

SI

FIN

Page 28: Programador de Sistemas - cursos.integra-gestion.comcursos.integra-gestion.com/PdeS/Mod1.pdf · Programación Shell-Script para Linux . Programador de Sistemas ... Ejercicios Resueltos

28 Módulo 2 – Conceptos de Redes

Antonio J. Emperador Sau

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 Double, b As Double, c As Double A = InputBox("Dame el primer número") b = InputBox("Dame el segundo número") c = InputBox("Dame el tercer número") M = (A + b + c) / 3 MsgBox "La media es " & M End Sub /* * Ejercicio 2.1 * Media de tres números solicitados */ #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 e l primero */ float b = 0; /* Variable de tipo real para e l segundo */ float c = 0; /* Variable de tipo real para e l tercero */ float media = 0; /* Variable de tipo real para la media */ /* 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); /* 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

INICIO

A = 0B= 0C= 0

MEDIA = 0

PEDIR A, B, C

MEDIA = (A+B+C)/3

ESCRIBIR MEDIA

FIN

Page 29: Programador de Sistemas - cursos.integra-gestion.comcursos.integra-gestion.com/PdeS/Mod1.pdf · Programación Shell-Script para Linux . Programador de Sistemas ... Ejercicios Resueltos

29 Módulo 2 – Conceptos de Redes

Antonio J. Emperador Sau

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 e l primero */ float y = 0; /* Variable de tipo real para e l segundo */ float aux = 0; /* Variable de tipo real para la auxiliar */ /* 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; /* 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 desg losar") 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)

INICIO

X = 0Y = 0

AUX = 0

PEDIR X, Y

AUX = X

X = Y

Y = AUX

MOSTRARX, Y

FIN

Page 30: Programador de Sistemas - cursos.integra-gestion.comcursos.integra-gestion.com/PdeS/Mod1.pdf · Programación Shell-Script para Linux . Programador de Sistemas ... Ejercicios Resueltos

30 Módulo 2 – Conceptos de Redes

Antonio J. Emperador Sau

Programador de Sistemas

{ /* Declaración de constantes y variables */ int c = 0; /* Variable de tipo entero para c antidad */ int a10 = 0; /* Variable de tipo entero para b illetes de 10 */ int a5 = 0; /* Variable de tipo entero para b illetes de 5 */ int a1 = 0; /* Variable de tipo entero para m onedas de 1 */ /* 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; /* Mostrar el resultado */ printf ("\nBilletes de 10 €: %d", a10); printf ("\nBilletes de 5 €: %d", a5); printf ("\nMonedas de 1 €: %d\n", a1); /* Detener para que se vea y terminar */ system("PAUSE"); return(0); }

' 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 /* * 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 */ /* Pedir datos */ printf ("\n Escribe el primer número: "); scanf ("%f", &a);

INICIO

C = 0A10 = 0A5 = 0A1 = 0

PEDIR CANTIDAD C

A10 = C/10

C = C%10

A5 = C/5

A1 = C%5

ESCRIBIR A10, A5, A1

FIN

INICIO

A = 0B = 0

¿A > B?

MAYOR AMENOR B

SI

MAYOR BMENOR A

NO

FIN

PEDIR A, B

Page 31: Programador de Sistemas - cursos.integra-gestion.comcursos.integra-gestion.com/PdeS/Mod1.pdf · Programación Shell-Script para Linux . Programador de Sistemas ... Ejercicios Resueltos

31 Módulo 2 – Conceptos de Redes

Antonio J. Emperador Sau

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> /* 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); /* 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

INICIO

MAYOR = 0B = 0

PEDIR MAYOR, B

¿MAYOR < B?

MAYOR = B

SI

ESCRIBIR “EL MAYOR ES “

MAYOR

FIN

NO

Page 32: Programador de Sistemas - cursos.integra-gestion.comcursos.integra-gestion.com/PdeS/Mod1.pdf · Programación Shell-Script para Linux . Programador de Sistemas ... Ejercicios Resueltos

32 Módulo 2 – Conceptos de Redes

Antonio J. Emperador Sau

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> /* 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: ", cont ador+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); }

' 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 */ #include <stdlib.h> #include <stdio.h> /* Función principal */ int main(void) { int n = 0;

INICIO

SUMA = 0N = 0

CONTADOR = 0

¿CONTADOR < 5?

PEDIR N

SI

SUMA = SUMA + NCONTADOR = CONTADOR + 1

ESCRIBIR SUMA

FIN

INICIO

N = 0FACTORIAL = 1

PEDIR N

¿N > 0?

FACTORIAL = FACTORIAL * N

SI

N = N - 1

ESCRIBIR FACTORIAL

NO

FIN

Page 33: Programador de Sistemas - cursos.integra-gestion.comcursos.integra-gestion.com/PdeS/Mod1.pdf · Programación Shell-Script para Linux . Programador de Sistemas ... Ejercicios Resueltos

33 Módulo 2 – Conceptos de Redes

Antonio J. Emperador Sau

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; /* 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

INICIO

N = 0SUMA = 0

PEDIR N

SUMA = SUMA + N

¿N = 0?

NO

ESCRIBIR SUMA

SI

FIN

Page 34: Programador de Sistemas - cursos.integra-gestion.comcursos.integra-gestion.com/PdeS/Mod1.pdf · Programación Shell-Script para Linux . Programador de Sistemas ... Ejercicios Resueltos

34 Módulo 2 – Conceptos de Redes

Antonio J. Emperador Sau

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 /* * Ejercicio 2.9 * Tabla de multiplicar 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 = 0; /* Pedir el número */ printf ("\n Escribe el número: "); scanf ("%d", &n); /* 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> /* Función principal */ int main(void) {

INICIO

I = 0N = 0

PEDIR N

ESCRIBIRI * N = I*N

I = I + 1

¿I <= 10?

SI

FIN

NO

INICIO

N = 0I = 1

PEDIR N

¿I <= N?

FIN

NO

¿N%I == 0?

ESCRIBIRI ES DIVISOR

SI

I ++

NO

Page 35: Programador de Sistemas - cursos.integra-gestion.comcursos.integra-gestion.com/PdeS/Mod1.pdf · Programación Shell-Script para Linux . Programador de Sistemas ... Ejercicios Resueltos

35 Módulo 2 – Conceptos de Redes

Antonio J. Emperador Sau

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 /* * Ejercicio 2.11 * Dígitos de un número solicitado */ #include <stdlib.h> #include <stdio.h> /* Función principal */ int main(void) { /* Declaración de constantes y variables */ int n = 0; int d = 0; /* 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");

INICIO

N = 0D = 0

PEDIR N

¿N > 0?ESCRIBIRDIGITOS D

NO

FIND = D + 1

SI

N = N / 10

Page 36: Programador de Sistemas - cursos.integra-gestion.comcursos.integra-gestion.com/PdeS/Mod1.pdf · Programación Shell-Script para Linux . Programador de Sistemas ... Ejercicios Resueltos

36 Módulo 2 – Conceptos de Redes

Antonio J. Emperador Sau

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> /* Función principal */ int main(void) { /* Declaración de constantes y variables */ int n = 0; int d = 1; int suma = 0; /* Pedir datos */ printf ("\n Escribe el número: "); scanf ("%d", &n); /* 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

INICIO

N = 0D = 1

SUMA = 0

PEDIR N

¿ N > 0 ?ESCRIBIR

SUMANO

FIND = N % 10N = N / 10

SI

¿ D % 2 == 0 ?

SUMA = SUMA + D

SI

NO

Page 37: Programador de Sistemas - cursos.integra-gestion.comcursos.integra-gestion.com/PdeS/Mod1.pdf · Programación Shell-Script para Linux . Programador de Sistemas ... Ejercicios Resueltos

37 Módulo 2 – Conceptos de Redes

Antonio J. Emperador Sau

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; /* 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; } /* 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 /*

INICIO

N = 0BINARIO = “”

PEDIR N

¿ N > 1 ?

N = N / 2

SI

BINARIO = N%2 . BINARIO

BINARIO = N . BINARIO

NO

ESCRIBIRBINARIO

FIN

Page 38: Programador de Sistemas - cursos.integra-gestion.comcursos.integra-gestion.com/PdeS/Mod1.pdf · Programación Shell-Script para Linux . Programador de Sistemas ... Ejercicios Resueltos

38 Módulo 2 – Conceptos de Redes

Antonio J. Emperador Sau

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; /* Pedir datos */ printf ("\n Escribe el número: "); scanf ("%d", &n); /* 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++; } /* 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 r epresentar 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 caractere s, 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ácte r 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 Integ er, 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

INICIO

N = 0I = 2E = 0

PEDIR N

¿ N > 1 ?

¿ N % I = 0 ?

SI

N = N / ISI

E = E + 1

¿ E > 0 ?

NO

ESCRIBIRI ** E

SI

E = 0

NO

I = I + 1

FINNO

Page 39: Programador de Sistemas - cursos.integra-gestion.comcursos.integra-gestion.com/PdeS/Mod1.pdf · Programación Shell-Script para Linux . Programador de Sistemas ... Ejercicios Resueltos

39 Módulo 2 – Conceptos de Redes

Antonio J. Emperador Sau

Programador de Sistemas

If Mult Mod 10 <> 0 Then msg = msg & vbCrLf & M ult 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 & M ult Mod 10 MsgBox msg End Sub /* * Ejercicio 4.2.b * Operar con un número entero solicitado */ #include <stdlib.h> #include <stdio.h>

Page 40: Programador de Sistemas - cursos.integra-gestion.comcursos.integra-gestion.com/PdeS/Mod1.pdf · Programación Shell-Script para Linux . Programador de Sistemas ... Ejercicios Resueltos

40 Módulo 2 – Conceptos de Redes

Antonio J. Emperador Sau

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;

Page 41: Programador de Sistemas - cursos.integra-gestion.comcursos.integra-gestion.com/PdeS/Mod1.pdf · Programación Shell-Script para Linux . Programador de Sistemas ... Ejercicios Resueltos

41 Módulo 2 – Conceptos de Redes

Antonio J. Emperador Sau

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

Page 42: Programador de Sistemas - cursos.integra-gestion.comcursos.integra-gestion.com/PdeS/Mod1.pdf · Programación Shell-Script para Linux . Programador de Sistemas ... Ejercicios Resueltos

42 Módulo 2 – Conceptos de Redes

Antonio J. Emperador Sau

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 D ouble, 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: " & dia s & vbCrLf & _ "- Horas: " & horas & vbCrLf & "- Minutos: " & minutos & vbCrLf & _ "- Segundos: " & segundos End Sub /*

Page 43: Programador de Sistemas - cursos.integra-gestion.comcursos.integra-gestion.com/PdeS/Mod1.pdf · Programación Shell-Script para Linux . Programador de Sistemas ... Ejercicios Resueltos

43 Módulo 2 – Conceptos de Redes

Antonio J. Emperador Sau

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", hora s, 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;

Page 44: Programador de Sistemas - cursos.integra-gestion.comcursos.integra-gestion.com/PdeS/Mod1.pdf · Programación Shell-Script para Linux . Programador de Sistemas ... Ejercicios Resueltos

44 Módulo 2 – Conceptos de Redes

Antonio J. Emperador Sau

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()

Page 45: Programador de Sistemas - cursos.integra-gestion.comcursos.integra-gestion.com/PdeS/Mod1.pdf · Programación Shell-Script para Linux . Programador de Sistemas ... Ejercicios Resueltos

45 Módulo 2 – Conceptos de Redes

Antonio J. Emperador Sau

Programador de Sistemas

Dim Numero As Double Dim semanas As Double, dias As Double, horasr A s 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, a p2 As String * 12 cadena = "Antonio " & "Emperador " & "Sau " nombre = Left(cadena, 8)

Page 46: Programador de Sistemas - cursos.integra-gestion.comcursos.integra-gestion.com/PdeS/Mod1.pdf · Programación Shell-Script para Linux . Programador de Sistemas ... Ejercicios Resueltos

46 Módulo 2 – Conceptos de Redes

Antonio J. Emperador Sau

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 valores a la estructura */ strcpy (nomapel.nombre, "Antonio"); strcpy (nomapel.ap1, "Emperador"); strcpy (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

Page 47: Programador de Sistemas - cursos.integra-gestion.comcursos.integra-gestion.com/PdeS/Mod1.pdf · Programación Shell-Script para Linux . Programador de Sistemas ... Ejercicios Resueltos

47 Módulo 2 – Conceptos de Redes

Antonio J. Emperador Sau

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) A s 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 */

Page 48: Programador de Sistemas - cursos.integra-gestion.comcursos.integra-gestion.com/PdeS/Mod1.pdf · Programación Shell-Script para Linux . Programador de Sistemas ... Ejercicios Resueltos

48 Módulo 2 – Conceptos de Redes

Antonio J. Emperador Sau

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); }

Page 49: Programador de Sistemas - cursos.integra-gestion.comcursos.integra-gestion.com/PdeS/Mod1.pdf · Programación Shell-Script para Linux . Programador de Sistemas ... Ejercicios Resueltos

49 Módulo 2 – Conceptos de Redes

Antonio J. Emperador Sau

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, pote ncia); /* 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");

Page 50: Programador de Sistemas - cursos.integra-gestion.comcursos.integra-gestion.com/PdeS/Mod1.pdf · Programación Shell-Script para Linux . Programador de Sistemas ... Ejercicios Resueltos

50 Módulo 2 – Conceptos de Redes

Antonio J. Emperador Sau

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) = "Enero": meses(1 , 2) = 31 meses(2, 0) = 1: meses(2, 1) = "Febrero": meses (2, 2) = 28 meses(3, 0) = 1: meses(3, 1) = "Marzo": meses(3 , 2) = 31 meses(4, 0) = 1: meses(4, 1) = "Abril": meses(4 , 2) = 30 meses(5, 0) = 1: meses(5, 1) = "Mayo": meses(5, 2) = 31 meses(6, 0) = 1: meses(6, 1) = "Junio": meses(6 , 2) = 30 meses(7, 0) = 1: meses(7, 1) = "Julio": meses(7 , 2) = 31 meses(8, 0) = 1: meses(8, 1) = "Agosto": meses( 8, 2) = 31 meses(9, 0) = 1: meses(9, 1) = "Septiembre": me ses(9, 2) = 30 meses(10, 0) = 1: meses(10, 1) = "Octubre": mes es(10, 2) = 31 meses(11, 0) = 1: meses(11, 1) = "Noviembre": m eses(11, 2) = 30 meses(12, 0) = 1: meses(12, 1) = "Diciembre": m eses(12, 2) = 31 DiasDeMes = meses(mes, 2) MsgBox "El mes número " & mes & ", o sea " & me ses(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;

Page 51: Programador de Sistemas - cursos.integra-gestion.comcursos.integra-gestion.com/PdeS/Mod1.pdf · Programación Shell-Script para Linux . Programador de Sistemas ... Ejercicios Resueltos

51 Módulo 2 – Conceptos de Redes

Antonio J. Emperador Sau

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 A s 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 de datos en lista: " & contad or & vbCrLf mensaje = mensaje & "El máximo es: " & maximo & vbCrLf mensaje = mensaje & "El mínimo es: " & minimo & vbCrLf mensaje = mensaje & "La media es: " & media / contador MsgBox mensaje End Sub /* * 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++;

Page 52: Programador de Sistemas - cursos.integra-gestion.comcursos.integra-gestion.com/PdeS/Mod1.pdf · Programación Shell-Script para Linux . Programador de Sistemas ... Ejercicios Resueltos

52 Módulo 2 – Conceptos de Redes

Antonio J. Emperador Sau

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", co nt); 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); }

Page 53: Programador de Sistemas - cursos.integra-gestion.comcursos.integra-gestion.com/PdeS/Mod1.pdf · Programación Shell-Script para Linux . Programador de Sistemas ... Ejercicios Resueltos

53 Módulo 2 – Conceptos de Redes

Antonio J. Emperador Sau

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 B oolean 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

Page 54: Programador de Sistemas - cursos.integra-gestion.comcursos.integra-gestion.com/PdeS/Mod1.pdf · Programación Shell-Script para Linux . Programador de Sistemas ... Ejercicios Resueltos

54 Módulo 2 – Conceptos de Redes

Antonio J. Emperador Sau

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

Page 55: Programador de Sistemas - cursos.integra-gestion.comcursos.integra-gestion.com/PdeS/Mod1.pdf · Programación Shell-Script para Linux . Programador de Sistemas ... Ejercicios Resueltos

55 Módulo 2 – Conceptos de Redes

Antonio J. Emperador Sau

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 = " PROGRAMA CALCULADORA" & vbCrLf & vbCrLf mensaje = mensaje & "a) Sumar" & vbCrLf mensaje = mensaje & "b) Restar" & vbCrLf mensaje = mensaje & "c) Multiplicar" & vbCrLf mensaje = mensaje & "d) Dividir" & vbCrLf mensaje = 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

Page 56: Programador de Sistemas - cursos.integra-gestion.comcursos.integra-gestion.com/PdeS/Mod1.pdf · Programación Shell-Script para Linux . Programador de Sistemas ... Ejercicios Resueltos

56 Módulo 2 – Conceptos de Redes

Antonio J. Emperador Sau

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 ope raciones:\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 ;

Page 57: Programador de Sistemas - cursos.integra-gestion.comcursos.integra-gestion.com/PdeS/Mod1.pdf · Programación Shell-Script para Linux . Programador de Sistemas ... Ejercicios Resueltos

57 Módulo 2 – Conceptos de Redes

Antonio J. Emperador Sau

Programador de Sistemas

if (opcion == 'c') resultado = num1 * num2 ; if (opcion == 'd') resultado = num1 / num2 ; printf ("\n\n\nResultado: %f\n\n", resulta do); 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

Page 58: Programador de Sistemas - cursos.integra-gestion.comcursos.integra-gestion.com/PdeS/Mod1.pdf · Programación Shell-Script para Linux . Programador de Sistemas ... Ejercicios Resueltos

58 Módulo 2 – Conceptos de Redes

Antonio J. Emperador Sau

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); }

Page 59: Programador de Sistemas - cursos.integra-gestion.comcursos.integra-gestion.com/PdeS/Mod1.pdf · Programación Shell-Script para Linux . Programador de Sistemas ... Ejercicios Resueltos

59 Módulo 2 – Conceptos de Redes

Antonio J. Emperador Sau

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);

Page 60: Programador de Sistemas - cursos.integra-gestion.comcursos.integra-gestion.com/PdeS/Mod1.pdf · Programación Shell-Script para Linux . Programador de Sistemas ... Ejercicios Resueltos

60 Módulo 2 – Conceptos de Redes

Antonio J. Emperador Sau

Programador de Sistemas

printf ("\nTeclea la longitud de la altura: ") ; scanf("%f", &altura); /* Procesar */ /* Mostrar resultado */ printf ("\n\nEl volumen es %f", VolumenCilindr o(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); }

Page 61: Programador de Sistemas - cursos.integra-gestion.comcursos.integra-gestion.com/PdeS/Mod1.pdf · Programación Shell-Script para Linux . Programador de Sistemas ... Ejercicios Resueltos

61 Módulo 2 – Conceptos de Redes

Antonio J. Emperador Sau

Programador de Sistemas

' Ejercicio 6.2.a)

' Procedimiento que muestra un mensaje por pantalla Sub MuestraMsg(texto As String) MsgBox texto, vbCritical + vbOKOnly, "Mensaje d el 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 opcione s") Loop While aux <> 1 And aux <> 2 And aux <> 3 MuestraMsg (aux)

Page 62: Programador de Sistemas - cursos.integra-gestion.comcursos.integra-gestion.com/PdeS/Mod1.pdf · Programación Shell-Script para Linux . Programador de Sistemas ... Ejercicios Resueltos

62 Módulo 2 – Conceptos de Redes

Antonio J. Emperador Sau

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, 0) = 1: meses(1, 1) = "Enero" meses(2, 0) = 2: meses(2, 1) = "Febrero" meses(3, 0) = 3: meses(3, 1) = "Marzo" meses(4, 0) = 4: meses(4, 1) = "Abril" meses(5, 0) = 5: meses(5, 1) = "Mayo"

Page 63: Programador de Sistemas - cursos.integra-gestion.comcursos.integra-gestion.com/PdeS/Mod1.pdf · Programación Shell-Script para Linux . Programador de Sistemas ... Ejercicios Resueltos

63 Módulo 2 – Conceptos de Redes

Antonio J. Emperador Sau

Programador de Sistemas

meses(6, 0) = 6: meses(6, 1) = "Junio" meses(7, 0) = 7: meses(7, 1) = "Julio" meses(8, 0) = 8: meses(8, 1) = "Agosto" meses(9, 0) = 9: meses(9, 1) = "Septiembre" meses(10, 0) = 10: meses(10, 1) = "Octubre" meses(11, 0) = 11: meses(11, 1) = "Noviembre" meses(12, 0) = 12: meses(12, 1) = "Diciembre" For i = 1 To 12 Do aux = InputBox("Indica la temperatura m edia 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", t empMedia); /* Detener para que se vea y terminar */ printf ("\n\n"); system("PAUSE");

Page 64: Programador de Sistemas - cursos.integra-gestion.comcursos.integra-gestion.com/PdeS/Mod1.pdf · Programación Shell-Script para Linux . Programador de Sistemas ... Ejercicios Resueltos

64 Módulo 2 – Conceptos de Redes

Antonio J. Emperador Sau

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

Page 65: Programador de Sistemas - cursos.integra-gestion.comcursos.integra-gestion.com/PdeS/Mod1.pdf · Programación Shell-Script para Linux . Programador de Sistemas ... Ejercicios Resueltos

65 Módulo 2 – Conceptos de Redes

Antonio J. Emperador Sau

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: " & ma ximo & vbCrLf mensaje = mensaje & "El valor mínimo es: " & mi nimo 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;

Page 66: Programador de Sistemas - cursos.integra-gestion.comcursos.integra-gestion.com/PdeS/Mod1.pdf · Programación Shell-Script para Linux . Programador de Sistemas ... Ejercicios Resueltos

66 Módulo 2 – Conceptos de Redes

Antonio J. Emperador Sau

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 A s Single Dim Numero As Integer Dim mensaje As String i = 0 Do While True Do aux = InputBox("Introduce la nota del a lumno 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

Page 67: Programador de Sistemas - cursos.integra-gestion.comcursos.integra-gestion.com/PdeS/Mod1.pdf · Programación Shell-Script para Linux . Programador de Sistemas ... Ejercicios Resueltos

67 Módulo 2 – Conceptos de Redes

Antonio J. Emperador Sau

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

Page 68: Programador de Sistemas - cursos.integra-gestion.comcursos.integra-gestion.com/PdeS/Mod1.pdf · Programación Shell-Script para Linux . Programador de Sistemas ... Ejercicios Resueltos

68 Módulo 2 – Conceptos de Redes

Antonio J. Emperador Sau

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;

Page 69: Programador de Sistemas - cursos.integra-gestion.comcursos.integra-gestion.com/PdeS/Mod1.pdf · Programación Shell-Script para Linux . Programador de Sistemas ... Ejercicios Resueltos

69 Módulo 2 – Conceptos de Redes

Antonio J. Emperador Sau

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"

Page 70: Programador de Sistemas - cursos.integra-gestion.comcursos.integra-gestion.com/PdeS/Mod1.pdf · Programación Shell-Script para Linux . Programador de Sistemas ... Ejercicios Resueltos

70 Módulo 2 – Conceptos de Redes

Antonio J. Emperador Sau

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 & vbC rLf & 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

Page 71: Programador de Sistemas - cursos.integra-gestion.comcursos.integra-gestion.com/PdeS/Mod1.pdf · Programación Shell-Script para Linux . Programador de Sistemas ... Ejercicios Resueltos

71 Módulo 2 – Conceptos de Redes

Antonio J. Emperador Sau

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) & v bCrLf Next End If MsgBox mensaje End Sub