Bueno resulta que estamos viendo pseudocódigo en mi colegio y no entiendo este código, es de un subprograma que es llamado desde el programa principal:
Programa:
Inicio
Entero A, B
Mostrar ("Ingrese el valor para A:")
Leer (A) 'Que hace éste comando leer??
Mostrar ("Ingrese el valor para B:")
Leer (B)
Mostrar ("El resultado de la suma es:", Suma (a,b)
Subprograma:
Entero Suma (Entero X, Entero y)
devolver (X+Y)
Fin [Suma]
Bueno la verdad que no entiendo, donde dice "Ingrese el valor para A:" y el usuario lo ingresa, donde queda guardado el valor a la variable?
En el subprograma aparece "Entero Suma" que le está poniendo un nombre a la variable? Por qué después pone entero X, entero Y y abajo devuelve los valores?
Si alguien me lo puede explicar medianamente le voy a estar agradecido...sino desde ya gracias igual ;)
PD: Yo estoy acostumbrado a programar en VB, esto es de programación para entender a programar y en laboratorio vemos VB, si alguien me puede explicar el equivalente a VB y las preguntas que puse que no entiendo...
:-\
Para mi está clarísimo... es pseudocódigo, no hay mucho que analizar...
LEER(A), es leer y almacenar en A un dato ingresado por el usuario.
El subprograma, devuelve la suma de A y B, luego el programa principal, la muestra.
Cita de: algorythm en 3 Abril 2010, 17:53 PM
Para mi está clarísimo... es pseudocódigo, no hay mucho que analizar...
LEER(A), es leer y almacenar en A un dato ingresado por el usuario.
El subprograma, devuelve la suma de A y B, luego el programa principal, la muestra.
Cual sería el equivalente de
LEER en VB? Lee el valor de A ingresado antes? Porque yo me acuerdo que para eso el profesor usaba otro comando, el de
IMPRIMIR..
Y otra más, en el subprograma crean una variable llamada
SUMA si mal no entiendo..para que pone entre paréntesis Entero
X, Entero
Y? Y después les pone devolver..cuando no tienen ningún valor asignado..
:P
No se cual sea el equivalente en VB del lectura de datos por stdin ;) pero es lo de menos y estoy segura recibiras pronto respuesta a ello.
Ahora, Sobre tu pregunta:
CitarY otra más, en el subprograma crean una variable llamada SUMA si mal no entiendo..para que pone entre paréntesis Entero X, Entero Y? Y después les pone devolver..cuando no tienen ningún valor asignado..
Ahora el pseudocodigo:
CitarInicio
Entero A, B
Mostrar ("Ingrese el valor para A:")
Leer (A) 'Que hace éste comando leer??
Mostrar ("Ingrese el valor para B:")
Leer (B)
Mostrar ("El resultado de la suma es:", Suma (a,b)
Suma no es una variable ;)
Suma es una funcion (fijate que tiene le estan pasando 2 parametros, previamente con datos insertados
a y
b. Por lo que Suma pasa a ser una funcion que recibe estos 2 parametros y dentro de si evalua una expresion donde el resultado es la suma de esos 2 parametros. La funcion Suma me temo no esta definida en el pseudocodigo mostrado, obviamente puedes crearla tu, o hacerlo mas rapido.. obviar una funcion para algo tan simple y hacer de una vez
Mostrar ("El resultado de la suma es:", (a+b))
Ten pendiente que cuando veas :
Funcion(a,b)
Estan haciendo referencia a una funcion o un procedimiento (que no todo debe retornar lol) que recibe 2 parametros. Dices que porke al final tiene que devolver...si las variables segun estan vacias.. Fijate que antes de llamar a la Funcion 'Suma' (Esa que tiene el devolver) se cumple los pasos de peticionarte 2 numeros (Se te pide primero que insertes 1 numero para la variable a luego otro para la variable b ) y ya cumplidas esas 2 peticiones (donde ambas variables obtienen un valor) entonces las 2 variables pasan a la FUncion Suma y proceden a ser sumadas y el resultado de dicha suma se retorna para ser imprimido por pantalla (stdout)
:D
En visual basic tendría que ser cuando asignas un text a una variable... Ahí estas leyendo el campo...
O también la lectura de:
A=inputbox("Ingresa a:")
Muchas gracias por sus respuestas (espero no me dejen abandonado ahora) espero ir entendiendo...
Cuando tu ^TiFa^ dices:
Citar(Se te pide primero que insertes 1 numero para la variable a luego otro para la variable b ) y ya cumplidas esas 2 peticiones (donde ambas variables obtienen un valor) entonces las 2 variables pasan a la FUncion Suma y proceden a ser sumadas y el resultado de dicha suma se retorna para ser imprimido por pantalla (stdout)
Entiendo hasta la parte que pide ingresar un valor para A y otro para B pero: ¿Dónde guarda el valor que el usuario ingresó para A y para B? Con el comando Leer (A) y Leer (B) se guardan los resultados de la petición en cada variable?
Después con la función suma, no tendría que sumar A + B y después ser llamado por el programa principal?
No sería mas fácil (Lo inventé yo, no sé si está bien):
Entero A, B
Mostrar ("Ingrese el valor para A:",(A))
'Para que guarde el valor ingresado en AMostrar ("Ingrese el valor para B:", (B))
'Para que guarde el valor ingresado en AMostrar ("El resultado de la suma es:", A+B)
Y listo??? Sin tantas complicaciones.. :¬¬
PD: O en VB crearía 3 Textbox's, una variable para cada valor de
Text1,
Text2,
Text3, que se guarden en las variables valor1, valor2, resultado3, valor 1 y valor 2 son los 2 datos ingresados, y resultado3 la suma de A+B, luego con un
MsgBox o un
Print que muestre los valores por pantalla de la suma obtenida
Debe ser porque lo único que se es VB que no puedo entender esto..la verdad me pone medio mal porque la prox semana tengo evaluación y quiero aprender y no se que voy a hacer.. :P
Es que con visual basic lo haces en modo gráfico...
Por ejemplo en vez de ingresé a e ingresé b, pones 3 texts y un botón...
En el text1 pones a, en el text2 b y en el text3 el resultado. El botón suma text1 y text2 y luego muestra el resultado en text 3, algo asi como...
text3.text = val(text1.text) + val(text2.text)
Eso sería el código de tu botón
Si pero pues lo entiendo para VB pero no para Pseudocódigo :-\
Citar¿Dónde guarda el valor que el usuario ingresó para A y para B? Con el comando Leer (A) y Leer (B) se guardan los resultados de la petición en cada variable?
Exactamente ;) los valores insertados se guardan en cada variable. Porque dices Leer(A) imaginate que Leer es una funcion que hace eso... Leer lo que escribas por el teclado pero no es suficiente con leerlo cierto? tienes que guardarlo en alguna parte si quieres que tenga sentido leer algo.. entonces que haces? lo guardas en este caso en la variable A por esa razon la instruccion dice Leer(A) (leeme lo que sea que se escriba por teclado en A) ;)
CitarDespués con la función suma, no tendría que sumar A + B y después ser llamado por el programa principal?
Si mi nino, de hecho aunque la funcion
Suma No esta detallada en ninguna parte de tu pseudocodigo, se supone que la funcion
Suma dentro de si deberia tener algo como:
Suma(A,B)
Devolver(A+B)
Pero hacerlo de la manera anterior.. pasa muy directo a parecerse a un lenguaje de programacion :-\ y el pseudocodigo pretende ser lo mas humanamente entendible y legible... pero mas o menos es para que tuvieras una idea, cuando la funcion Suma dice Devolver y dentro del parentesis sumas A+B Devolver (que dicho sea de paso es otra funcion) lo que hace es sacar de manera global (para la aplicacion) el valor resultante de (A+B) la aplicacion llama el resultado si te fijas cuando dices:
Mostrar ("El resultado de la suma es:", Suma(A,B))
Recuerdate que como te dije previamente, la funcion Suma tiene una instruccion que dice Devolver(A+B) entonces que devuelve la funcion SUma?? un valor, cual valor? el resultado de la suma de A+B, cuando hagas la linea de Mostrar como la funcion Suma esta retornando un valor este sera imprimido en pantalla cuando llames a Mostrar...Si la funcion Suma no tuviera dentro de si 'Devolver' no podrias imprimir nada en pantalla con Mostrar porque no se dijo en ninguna parte en la funcion Suma que se mostrase globalmente el resultado de la suma de (A+B) y tu quieres ver el resultado de esa Suma asi que la unica forma es usando un Devolver o imprimiendo dentro de la misma funcion el resultado de (A+B) pero en este caso si la funcion no retorna valor alguno, pasaria a ser un procedimiento (Void) y no una funcion como tal.
Me parece que lo voy entendiendo, alguien me puede ayudar a armar más o menos el código para estos 2 TP's?
Algo así sencillo que funcione, yo después en todo caso lo mejoro, es para ver como funciona esto y como los puedo armar porque no se me ocurre :P
TP Nº1:
Hacer un programa donde el usuario ingrese 2 valores enteros y muestre los números pares existentes entre dichos valores. usar un subprograma para averiguar si un número es par.
TP Nº2:
Hacer un programa que permita el ingreso de N (puede ser cualquier valor, 50 números, 60 o cuantos quiera el usuario) cantidad de números y muestre al finalizar el ingreso el número de mayor y el de menor valor (El número mayor y menor de los números ingresados)
Al menos si me pueden ayudar a hacer el 1ro, ya que todavía no le agarro mucho la mano a Pseudocódigo, para el 2do en VB sería hacer un bucle While-Wend y en cada pregunta de ingresar un número que vaya comparando el ingresado con el número mayor de todos ingresados anteriormente y lo mismo con el menor pero en Pseudocódigo no se me ocurre que puedo hacer para estos 2 problemas con el código :-(
Gracias por su ayuda ;D
CitarHacer un programa donde el usuario ingrese 2 valores enteros y muestre los números pares existentes entre dichos valores. usar un subprograma para averiguar si un número es par.
INICIO
Entero A
Mostrar("Ingrese un Numero :: ")
Leer(A)
Si (A(modulus)2=0) entonces
Mostrar("el numero es par")
sino
Mostrar("el numero es impar")
Finsi
FINMas o menos por ahi va el asunto...
Y si sobre tu segunda pregunta, necesitarias dos bucles anidados y un arreglo que vaya guardando los 50 valores que ingreses.
Cita de: ^Tifa^ en 3 Abril 2010, 20:41 PM
CitarHacer un programa donde el usuario ingrese 2 valores enteros y muestre los números pares existentes entre dichos valores. usar un subprograma para averiguar si un número es par.
INICIO
Entero A
Mostrar("Ingrese un Numero :: ")
Leer(A)
Si (A(modulus)2=0) entonces
Mostrar("el numero es par")
sino
Mostrar("el numero es impar")
Finsi
FIN
Mas o menos por ahi va el asunto...
Y si sobre tu segunda pregunta, necesitarias dos bucles anidados y un arreglo que vaya guardando los 50 valores que ingreses.
tu pseudo programa solo te dice si un numero es par, no hace lo que te indica las instrucciones :P
masomenos la resolucion seria:
inicio:
entero A;
entero B;
leer(A);
leer(B);
mientras(A sea menor a B) hacer
inicio:
A ← A + 1;
si(A(modulus)2 es igual a 0)
imprime(A);
fin;
fin;
Ya lo entendí, en el programa principal donde muestra el resultado de la operación (Suma) llama a la subrutina o subprograma y le da los valores (A,B) que son los valores que ingresó el usuario a las variables del subprograma en este caso X e Y y efectúa la operación que contiene éste, la de sumar, y por eso pone el comando devolver
Ahora chicos, quise pasar esto a Visual basic y no me funciona me quedó así:
Programa principal:
Private Sub Form_Load()
A = InputBox("Ingrese un valor para a:")
B = InputBox("Ingrese un valor para b:")
MsgBox "El resultado de la operación es:" & Suma(A, B)
End Sub
Subrutina o subprograma:
Private Sub Suma(X As Integer, Y As Integer, Sumar As Integer)
Sumar = A + B
End Sub
No sé como tengo que hacer para igualar al comando devolver del pseudocódigo, trate de poner A+B sólo pero me saca el signo "+" y me deja A B, entonces le puse Sumar = A+B pero igual no funciona
Y después cuando trato de ejecutarlo me aparece esto y cuando le doy aceptar me marca en amarillo la línea
Private Sub Form_Load()
(http://r.i.elhacker.net/cache?url=http://i.elhacker.net/i?i=GjXAjAlgIbMLBss1f_lU42Vo) (http://i.elhacker.net/d?i=GjXAjAlgIbMLBss1f_lU42Vo)
Gracias y espero que me puedan ayudar :-\
PD: No sería mejor moverlo a VB ahora?
Cita de: Og. en 5 Abril 2010, 08:46 AM
Cita de: ^Tifa^ en 3 Abril 2010, 20:41 PM
CitarHacer un programa donde el usuario ingrese 2 valores enteros y muestre los números pares existentes entre dichos valores. usar un subprograma para averiguar si un número es par.
INICIO
Entero A
Mostrar("Ingrese un Numero :: ")
Leer(A)
Si (A(modulus)2=0) entonces
Mostrar("el numero es par")
sino
Mostrar("el numero es impar")
Finsi
FIN
Mas o menos por ahi va el asunto...
Y si sobre tu segunda pregunta, necesitarias dos bucles anidados y un arreglo que vaya guardando los 50 valores que ingreses.
tu pseudo programa solo te dice si un numero es par, no hace lo que te indica las instrucciones :P
masomenos la resolucion seria:
inicio:
entero A;
entero B;
leer(A);
leer(B);
mientras(A sea menor a B) hacer
inicio:
A ← A + 1;
si(A(modulus)2 es igual a 0)
imprime(A);
fin;
fin;
Bien tu aporte mi vida, pero recuerdate que el enunciado del problema dice:
]Hacer un programa donde el usuario ingrese 2 valores enteros y muestre los números pares existentes entre dichos valores. usar un subprograma para averiguar si un número es par.No especifica que solicite cuando un numero sea mayor o menor que cualquiera de los insertados.... (Y que ocurrira cuando A sea mayor a B? tu programa no seguira corriendo, terminara sin ejercer ningun funcion). De hecho... podrias traducirme tu pseudocodigo a lenguaje de programacion... es que, o no soy buena en pseudocodigo o estoy entendiendo mal.. porque dices que mientras (bucle) A sea menor a B haga un bucle infinito que imprima el valor de A :-\ ....
Dreamaker :) tendras que realizar tu ultima pregunta en el subforo de Visual Basic.
CitarHacer un programa donde el usuario ingrese 2 valores enteros y muestre los números pares existentes entre dichos valores. usar un subprograma para averiguar si un número es par.
INICIO
Entero A
Mostrar("Ingrese un Numero :: ")
Leer(A)
Si (A(modulus)2=0) entonces
Mostrar("el numero es par")
sino
Mostrar("el numero es impar")
Finsi
FIN
Mas o menos por ahi va el asunto...
Y si sobre tu segunda pregunta, necesitarias dos bucles anidados y un arreglo que vaya guardando los 50 valores que ingreses.
tu pseudo programa solo te dice si un numero es par, no hace lo que te indica las instrucciones :P
masomenos la resolucion seria:
inicio:
entero A;
entero B;
leer(A);
leer(B);
mientras(A sea menor a B) hacer
inicio:
A ← A + 1;
si(A(modulus)2 es igual a 0)
imprime(A);
fin;
fin;
Los dos teneis una parte de razón:
lo que ha escrito Tifa sería la función para saber si es par.
Lo de Og, en realidad antes haría falta saber si no son iguales y despues comprobar cual de los dos es mayor.
si A = B entonces
escribir('los numeros son iguales')
sino
si A > B entonces
hacer la parte de Og, pero con la parte de Tifa como función
sino
hacer la parte de Og cambiando A por B (con la parte de Tifa como función)
finsi
finsi
En cuanto al segundo ejercicio, ya has descrito que es lo que debes hacer.
Pseudocodigo es programar tal como hablas, por lo que sólo debes seguir los pasos q tu mismo has descrito.
Pedir un número, pedir un segundo número, realizar un bucle, comparar si es mayor al más grande o menor al pequeño y pedir el numero siguiente hasta q el usuario diga basta. (introduzca 0 o cualquier cosa por el estilo.
Un saludo,
Creo que el más complejo es el primero y ya está todo dicho =P, y el segundo sería tal y como decias, en pseudocódgio sería algo como:
REAL mayor = -99999999 //consideramos inicialmente mayor como un número muy pequeño
REAL menor = 99999999 //consideramos inicialmente menor como un número muy grande
REAL numero
ENTERO cantidad
ENTERO i = 0
LEER(cantidad)
MIENTRAS ( i < cantidad )
INICIO MIENTRAS
LEER(numero)
SI ( numero >= mayor)
mayor = numero
SI ( numero <= menor)
menor = numero
i = i + 1
FIN MIENTRAS
PD:
@LeGNa29A No hagas doble post.
Si introducen 3 números (2,5,8)
el mayor sería 99999 y menor -999999 lo cual no sería correcto.
En mi opinión, daría como mayor el número y menor el número porq si sólo introducen un número ese sería el mayor y el menor, si introducen más iría haciendo las comparaciones que ha hecho SeC en el código.
Además primero de todo controlaría si piden de cantidad 0, con algún mensaje de "no introduce números" o algo así.
PD: perdón por el doble post y gracias por avisar @SeC
Cita de: LeGNa29A en 5 Abril 2010, 23:31 PM
Si introducen 3 números (2,5,8)
el mayor sería 99999 y menor -999999 lo cual no sería correcto.
En mi opinión, daría como mayor el número y menor el número porq si sólo introducen un número ese sería el mayor y el menor, si introducen más iría haciendo las comparaciones que ha hecho SeC en el código.
Además primero de todo controlaría si piden de cantidad 0, con algún mensaje de "no introduce números" o algo así.
Falso hazle seguimiento a mi código ;) , funciona bien :) ...
Cita de: LeGNa29A en 5 Abril 2010, 23:31 PM
PD: perdón por el doble post y gracias por avisar @SeC
No pasa nada, solo decía.
Cita de: SeC en 5 Abril 2010, 23:57 PM
Falso hazle seguimiento a mi código ;) , funciona bien :) ...
Uix cierto, lo vi al revés...
Aunque fallaría en algunos casos... por ejemplo si introduce un único número. ;)
Prefiero asignar mayor y menor a la variable numero.
Cita de: Dreamaker en 5 Abril 2010, 15:14 PM
Ya lo entendí, en el programa principal donde muestra el resultado de la operación (Suma) llama a la subrutina o subprograma y le da los valores (A,B) que son los valores que ingresó el usuario a las variables del subprograma en este caso X e Y y efectúa la operación que contiene éste, la de sumar, y por eso pone el comando devolver
Ahora chicos, quise pasar esto a Visual basic y no me funciona me quedó así:
Programa principal:
Private Sub Form_Load()
A = InputBox("Ingrese un valor para a:")
B = InputBox("Ingrese un valor para b:")
MsgBox "El resultado de la operación es:" & Suma(A, B)
End Sub
Subrutina o subprograma:
Private Sub Suma(X As Integer, Y As Integer, Sumar As Integer)
Sumar = A + B
End Sub
No sé como tengo que hacer para igualar al comando devolver del pseudocódigo, trate de poner A+B sólo pero me saca el signo "+" y me deja A B, entonces le puse Sumar = A+B pero igual no funciona
Y después cuando trato de ejecutarlo me aparece esto y cuando le doy aceptar me marca en amarillo la línea
Private Sub Form_Load()
(http://r.i.elhacker.net/cache?url=http://i.elhacker.net/i?i=GjXAjAlgIbMLBss1f_lU42Vo) (http://i.elhacker.net/d?i=GjXAjAlgIbMLBss1f_lU42Vo)
Gracias y espero que me puedan ayudar :-\
PD: No sería mejor moverlo a VB ahora?
Private Sub Form_Load()
Dim A As Integer
Dim B As Integer
A = Val(InputBox("Ingrese un valor para a:"))
B = Val(InputBox("Ingrese un valor para b:"))
MsgBox "El resultado de la operación es: " & Suma(A, B)
End
End Sub
Private Function Suma(X As Integer, Y As Integer) As Integer
Suma = X + Y
End Function
Cita de: Dreamaker en 5 Abril 2010, 15:14 PM
Ya lo entendí, en el programa principal donde muestra el resultado de la operación (Suma) llama a la subrutina o subprograma y le da los valores (A,B) que son los valores que ingresó el usuario a las variables del subprograma en este caso X e Y y efectúa la operación que contiene éste, la de sumar, y por eso pone el comando devolver
Ahora chicos, quise pasar esto a Visual basic y no me funciona me quedó así:
Programa principal:
Private Sub Form_Load()
A = InputBox("Ingrese un valor para a:")
B = InputBox("Ingrese un valor para b:")
MsgBox "El resultado de la operación es:" & Suma(A, B)
End Sub
Subrutina o subprograma:
Private Sub Suma(X As Integer, Y As Integer, Sumar As Integer)
Sumar = A + B
End Sub
No sé como tengo que hacer para igualar al comando devolver del pseudocódigo, trate de poner A+B sólo pero me saca el signo "+" y me deja A B, entonces le puse Sumar = A+B pero igual no funciona
Y después cuando trato de ejecutarlo me aparece esto y cuando le doy aceptar me marca en amarillo la línea
Private Sub Form_Load()
(http://i.elhacker.net/i?i=GjXAjAlgIbMLBss1f_lU42Vo) (http://i.elhacker.net/d?i=GjXAjAlgIbMLBss1f_lU42Vo)
Gracias y espero que me puedan ayudar :-\
PD: No sería mejor moverlo a VB ahora?
* Primero tienes que declarar las variables que vas a utilizar:
Dim A as Integer
Dim B as Integer
* Luego sustituir el nombre de las variables A y B por X e Y, no es necesario colocar el argumento Sumar, la funcion modificada t queda asi:
Private Function Suma(X As Integer, Y As Integer) As Integer
Sumar = X + Y
End Function
* Lo demas esta bien, hay se deberia de ejecutar