🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: chile.comp.programacion
2 messages
2 total messages Started by Antonia Tue, 12 Feb 2008 11:54
Programacion en C
#669
Author: Antonia
Date: Tue, 12 Feb 2008 11:54
27 lines
2972 bytes
Hola;Mi duda es sobre el tema de programación modular.En el primer
ejercicio del tema pide indicar si debe resolverse comofunción o
procedimiento,e indicar salidas y entradas. a.Calcualar a elevado a
b,siendo a un número real y b un valor enteropositivo no
nulo.entrada:a y bsalida:a^b recibe dos entradas y tiene una única
sálida:FUNCIÓN b.dado un carácter car devolver la mayúscula
correspondiente(si no esminúscula devuelve el carácter sin
modificar)entrad:carsalida:car mayúscula Realiza la función de pasar a
mayúscula:PROCEDIMIENTO. c.dado un número entero decir si es primo o
noentrada:númerosalida:es primo o no realiza la funcion de decir si es
primo o noPROCEDIMIENTO d.calcular el diámetro y área de una
circunferencia dado el radio.entrada:radiosalida:área y diametro ¿es
función o procedimiento?Como hay dossalidas sería procedimiento pero
en realidad devolveria un valor al puntode llamada...en el caso que
sólo nos pidiera el área(salida)seria función? f.dados los
coeficientes de una ecuación de segundo grado obtenga sus dosraices
reales.entrada:a,b,csalida:raiz1,raiz2 como tiene dos salidas es
procedimiento?? g.dado dos numeros enteros devuelva el mayor de
ellos.entrada:n1,n2salida:mayor número como tiene una única salida es
función??? h.descomponer y escribir los factores primos de un número
entero.entrada:n1salida:todos los factores primos varias salidas es
procedimiento?? i.intercambiar el valor de dos variables a y b de tipo
enteroentrada:a y bsalida:b y a como hay dos salidas es
procedimiento??? j.leer un número num validando que se encuentra en un
rango determinadopor dos valores linf y lsup(linf<=num<=lsup)
entrada:numsalida:??? esto no se haria con un bucle???  Gracias por
contestar.
Re: Programacion en C
#670
Author: Cristian Gutierrez
Date: Thu, 14 Feb 2008 12:33
66 lines
3339 bytes
Antonia wrote:

> Hola;Mi duda es sobre el tema de programación modular.En el primer
> ejercicio del tema pide indicar si debe resolverse comofunción o
> procedimiento,e indicar salidas y entradas.

A ver, pareciera que la distincion que se hace (puedo estar equivocado)
es la siguiente:

 * Las funciones retornan algo, y pueden usarse en expresiones.
   Ej.
        double p = sqrt(s) + 1;

 * Los procedimientos no retornan, ya que solo interesan sus efectos
   secundarios (como imprimir a la pantalla) o en realidad "retornan"
   modificando las variables que le fueron pasadas.  Tecnicamente, su
   tipo de retorno es "void".
   Ej:
        memset(buf, c, size);

Incluso bajo esas definiciones, uno puede tomar una funcion, darle un
argumento extra (puntero) para que deje alli el resultado, fijar su tipo
de retorno en "void" y ya pasaria -bajo las premisas anteriores- a ser
un procedimiento.  Al final, si cierta tarea se resuelve con una funcion
o procedimiento es a gusto del consumidor.

> a. Calcualar a elevado a b,siendo a un número real y b un valor entero
>    positivo no nulo.  entrada:a y b salida:a^b
> 
>    recibe dos entradas y tiene una única sálida: FUNCIÓN

En principio si, pero puede implementarse como procedimiento tambien.

    void elevar(float a, int b, float *resultado) {
         *resultado = /* a elevado a b */ ;
    }

> b. Dado un carácter car devolver la mayúscula correspondiente (si no es
>    minúscula devuelve el carácter sin modificar). entrada:car salida:car
>    mayúscula
> 
>    Realiza la función de pasar a mayúscula: PROCEDIMIENTO.

Pero podria ser funcion:

    char mayuscula(char minuscula) {
         return /* minuscula pasada a mayuscula */;
    }

> c. Dado un número entero decir si es primo o no. entrada: número salida:
>    es primo o no
> 
>    Realiza la funcion de decir si es primo o no: PROCEDIMIENTO

Si "decir si es primo o no" es imprimir el dato en la pantalla, de
acuerdo, procedimiento.  Si es devolver un valor de verdad (0/1), puede
ser procedimiento o funcion, pero lo esperable es que sea funcion.

    int es_primo(int n) {
        return /* n es primo o no */;
    }

Creo que ya captas la idea, no te voy a hacer toda la tarea ;-)

-- 
Guti
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads