FUNCIONES
La función podría ser definida como un conjunto de
instrucciones que permiten procesar las variables para obtener un resultado.
Puede que esta definición resulte un poco vaga si no nos servimos de un ejemplo
para ilustrarla.
Supongamos que queremos calcular el valor total de un pedido a partir de la simple suma de los precios de cada uno de los artículos. Podríamos definir una función suma en nuestro lenguaje ficticio:
Supongamos que queremos calcular el valor total de un pedido a partir de la simple suma de los precios de cada uno de los artículos. Podríamos definir una función suma en nuestro lenguaje ficticio:
Definir función suma (art1,art2,art3)
suma=art1+art2+art3
imprimir(suma)
fin función
suma=art1+art2+art3
imprimir(suma)
fin función
Este
supuesto programa nos permitiría calcular la suma de tres elementos e imprimir
el resultado en pantalla. Lo interesante de utilizar este tipo de funciones es
que ellas nos permiten su utilización sistemática tantas veces como queramos
sin necesidad de escribir las instrucciones tantas veces como veces queremos
utilizarla. Por supuesto, podemos prescindir de esta declaración de función e
introducir una línea del siguiente tipo:
imprimir(art1+art2+art3)
Evidentemente, cuanto más complicada sea la función y más a menudo la utilicemos en nuestros scripts más útil resulta definirlas.
Esta función suma podría ser utilizada en cualquier lugar de nuestro script haciendo una llamada del siguiente tipo:
ejecuta suma(4,6,9)
Cuyo resultado sería:
19
imprimir(art1+art2+art3)
Evidentemente, cuanto más complicada sea la función y más a menudo la utilicemos en nuestros scripts más útil resulta definirlas.
Esta función suma podría ser utilizada en cualquier lugar de nuestro script haciendo una llamada del siguiente tipo:
ejecuta suma(4,6,9)
Cuyo resultado sería:
19
La
función es una estructura autónoma similar a los módulos. La diferencia radica
en que la función se usa para devolver un solo valor de un tipo de dato simple
a su punto de referencia. La función se relaciona especificando su nombre en
una expresión, como si fuera una variable ordinaria de tipo simple. Las
funciones se dividen en estándares y definidas por el usuario.
- Estándar: Son funciones
proporcionadas por cualquier lenguaje de programación de alto nivel, y se
dividen en aritméticas y alfabéticas.
- Definidas por el usuario: son
funciones que puede definirlas el programador con el propósito de ejecutar
alguna función específica, y que por lo general se usan cuando se trata de hacer
algún cálculo que será requerido en varias ocasiones en la parte principal del
algoritmo.
Ejemplos:
Función
factorial (n:entero):entero
var
i,factorial:entero
inicio
si n <=1 entonces
factorial <-- 1
sino
factorial <-- 1
desde
i = 1 hasta n hacer
factorial <-- factorial * 1
fin_desde
fin_si
fin
Evaluar
la función f = x! / (y!(x-y)!)
Algoritmo
hallarf
var
x,y:entero
f:real
inicio
leer (x,y)
f <-- factorial (x)/(factorial (y)*
factorial (x-y))
escribir ("El valor de f es:",
f)
fin
Los
componentes son unos elementos genéricos con una funcionalidad muy concreta,
cuya única finalidad es la reutilización. Cada uno de ellos está destinado a
realizar una tarea típica en una aplicación.
Un
componente de la VCL es una clase que caracteriza a un control de
Windows agregando propiedades, métodos y gestores de eventos
a cada control.
La
filosofía de los componentes en C++ Builder es exactamente la misma que
en Visual Basic. Esto es tanto así que algunos componentes pueden
utilizarse en ambos entornos (los componentes ActiveX).
DECLARACION
Las declaraciones de funciones
generalmente son especificadas por: Un nombre único en el ámbito: Nombre
de la función con el que se identifica y se distingue de otras. No podrá haber
otra función ni procedimiento con ese nombre (salvo sobrecarga o polimorfismo
en programación orientada a objetos). Un tipo de dato de retorno: tipo de dato
del valor que la función devolverá al terminar su ejecución. Una lista de
parámetros: Especificación del conjunto de argumentos (pueden ser cero, uno
o más) que la función debe recibir para realizar su tarea. El código u órdenes
de procesamiento: conjunto de órdenes y sentencias que debe ejecutar la
función.
Una
función de inicio
Cada
programa debe tener una sola función externa denominada main(), principal, que
desde la óptica del programador define el punto de entrada al programa. Las
funciones se declaran en cabeceras (estándar o específicas de usuario) o dentro
de los ficheros fuente. Estas declaraciones son denominadas prototipos. En
ocasiones la declaración y definición se realiza en el mismo punto (como ocurre
con las variables), aunque es normal colocar al principio del fuente los
"prototipos" de las funciones que serán utilizadas en su interior, y
las definiciones en cualquier otro sitio (generalmente al final). En el caso
del ejemplo anterior, la declaración y definición de func1 se ha realizado en
el mismo punto, mientras que la declaración de func2 se realiza dentro del
cuerpo de la clase y la definición en el exterior de esta. La forma general del
prototipo de una función es: valor-devuelto nombre-función
(lista-de-argumentos); La forma general de la definición es:
valor-devuelto
nombre-función (lista-de-argumentos) {
sentencias; // "cuerpo" de la función
}
Ejemplo:
float cuadrado (float
x); // prototipo
float cuadrado (float x) { return x*x;
} // definición
La comunicación entre el programa y
las funciones que lo componen se realiza mediante los argumentos de llamada,
los valores devueltos y las variables globales y externas.
El
operador de invocación a función
En ocasiones, en especial al tratar la
sobrecarga de
operadores, es conveniente considerar una invocación del tipo
func(lista-de-argumentos); como un operador binario; el denominado operador de
invocación a función ( ) que se aplica entre el primer argumento func y el
segundo, lista-de-argumentos. En este sentido la invocación anterior sería
equivalente a: func()lista-de-argumentos.
PARÁMETROS
Normalmente, las funciones operan
sobre ciertos valores pasados a las mismas ya sea como constantes literales o
como variables, aunque se pueden definir funciones que no reciban parámetros.
Existen dos formas en de pasar parámetros a una función; por referencia o por
valor. El hecho es que si en una declaración de función se declaran parámetros
por referencia, a los mismos no se les podrá pasar valores literales ya que las
referencias apuntan a objetos (variables o funciones) residentes en la memoria;
por otro lado, si un parámetro es declarado para ser pasado por valor, el mismo
puede pasarse como una constante literal o como una variable. Los parámetros
pasados por referencia pueden ser alterados por la función que los reciba,
mientras que los parámetros pasados por valor o copia no pueden ser alterados
por la función que los recibe, es decir, la función puede manipular a su antojo
al parámetro, pero ningún cambio hecho sobre este se reflejará en el parámetro
original.
Parámetros
constantes
Los parámetros usados por una función
pueden declararse como constantes ( const ) al momento de la declaración de la
función. Un parámetro que ha sido declarado como constante significa que la
función no podrá cambiar el valor del mismo ( sin importar si dicho parámetro
se recibe por valor o por referencia ).
Parámetros
con valor por defecto
Los parámetros usados por una función
pueden declararse con un valor por defecto. Un parámetro que ha sido declarado
con valor por defecto es opcional a la hora de hacer la llamada a la función
ARGUMENTOS
Los argumentos que aparecen en la llamada a la
función se denominan argumentos actuales, mientras que los argumentos formales
son los que aparecen en la primera línea de definición de la función. (También
se llaman los argumentos actuales, a veces, argumentos simplemente, o
parámetros actuales). En una llamada normal a una función, habrá un argumento
actual por cada argumento formal. Los argumentos actuales pueden ser
constantes, variables simples, o expresiones más complejas. No obstante, cada
argumento actual debe ser del mismo tipo de datos que el argumento formal
correspondiente.
Los parámetros formales son variables locales a una función, ya que son creados al entrar en la función (se crean en la pila) y destruidos cuando ésta termina. El tipo de variable declarado para cada parámetro formal debe ser el mismo que se utilice cuando se llama a la función Si esto no sucede, pueden introducirse errores, ya que el compilador no verificará los tipos. Para prevenir estos errores se emplean los prototipos de las funciones. Los prototipos consisten en declarar al principio del programa (de cada módulo si el programa contiene varios módulos) las funciones que se utilizan y los tipos de sus argumentos. De esta forma el compilador puede reconocer una incongruencia entre el prototipo de una función y su llamada. Los prototipos, también nos pueden solveltar los errores que se pueden dar al hacer una llamada a una función func2 (que no devuelve un entero), y que aparece implementada debajo de func1, siendo llamada desde func1, por tanto, para resolver el problema de orden de definición son útiles igualmente los prototipos o declaraciones por adelantado. Veamos como sería todo esto:
Los parámetros son siempre pasados por valor. Por tanto, el parámetro de la función recibe el valor de la variable que se utiliza como argumento. Cualquier modificación sobre estos parámetros no afecta a las variables que se utilizan para llamar a la función, puesto que el parámetro en estos casos es una copia de esas variables.
Los parámetros formales son variables locales a una función, ya que son creados al entrar en la función (se crean en la pila) y destruidos cuando ésta termina. El tipo de variable declarado para cada parámetro formal debe ser el mismo que se utilice cuando se llama a la función Si esto no sucede, pueden introducirse errores, ya que el compilador no verificará los tipos. Para prevenir estos errores se emplean los prototipos de las funciones. Los prototipos consisten en declarar al principio del programa (de cada módulo si el programa contiene varios módulos) las funciones que se utilizan y los tipos de sus argumentos. De esta forma el compilador puede reconocer una incongruencia entre el prototipo de una función y su llamada. Los prototipos, también nos pueden solveltar los errores que se pueden dar al hacer una llamada a una función func2 (que no devuelve un entero), y que aparece implementada debajo de func1, siendo llamada desde func1, por tanto, para resolver el problema de orden de definición son útiles igualmente los prototipos o declaraciones por adelantado. Veamos como sería todo esto:
Los parámetros son siempre pasados por valor. Por tanto, el parámetro de la función recibe el valor de la variable que se utiliza como argumento. Cualquier modificación sobre estos parámetros no afecta a las variables que se utilizan para llamar a la función, puesto que el parámetro en estos casos es una copia de esas variables.
Veamos un ejemplo en el que se modifica el valor de
su argumento.
Se visualiza el valor original de a
(a=2) cuando comienza la ejecución de main. Este valor se pasa a la función
modificar, en donde se multiplica por 3 y se visualiza el nuevo valor. Nótese
que se altera el valor del argumento formal que se visualiza en la función.
Finalmente, el valor de a en main (el argumento actual) se vuelve a visualizar,
después de haberse devuelto el control a main desde modificar.
Se genera la siguiente
salida:
a =
2 (desde main, antes de llamar a la función)
a =
6 (desde la función, después de modificar el valor)
a =
2 (desde main, después de llamar a la función)
Pasar los argumentos por valor tiene sus
ventajas y sus desventajas. Algo positivo es que los valores hallados dentro
de la función no son vistos fuera de ella. Su desventaja es que impide que se
transfiera información desde la función hasta el punto de llamada mediante
los argumentos. Por tanto, el paso por valor implica que la transferencia de
información sólo puede realizarse en un sentido.
|
INVOCACIÓN
DE FUNCIONES Y PROCEDIMIENTOS
Una vez que en su programa se ha definido una función, esta puede ser
llamada las veces que sean necesarias. Para llamar a una función basta con
hacer referencia a su nombre y si la misma requiere de parámetros estos deberán
indicarse dentro de parentesis. Para llamar a una función que no requiera de parámetros
se deberá indicar el nombre de la misma seguida de parentesis vacios. Por
ejemplo, para llamar a la función cuadrado() vista anteriormente, podemos
emplear:
int main (void) // Llamado a procedimiento main
{
while(1)
{
F_1 = cuadrado(25); F_2 = cuadrado( ); //
llamado a función cuadrado R = cuadrado(X); // guardar en R el cuadrado de X }
return 0;
}
Última modificación: martes, 24 de abril de
2012, 19:26
Invocación de una función
La
definición de una función no hace que ésta se ejecute. Salvo la función
principal, main() (que es invocada por el SO), todas las funciones han de ser
invocadas desde alguna función, que incluso puede ser ella misma (recursivas).
Tipo de Retorno
•
Toda función retorna un valor. Si no nos
interesa el valor de devolución de la función podemos hacer dos cosas: –
Ignorarlo – Declarar el tipo de retorno como tipo void.
AMBITO O ALCANCE DE LAS
VARIABLES
En esta
lección vamos a aprender una de las más útiles características de la
programación modular: el uso de variables locales y globales en nuestros
programas.
Se dice
que una variable es local cuando está declarada y definida dentro
de algún subprograma (ya sea una función o un procedimiento). El significado y
la utilidad de una variable local están limitados únicamente al subprograma
donde fue definida, es decir, el valor que tenga almacenado no será accesible para
ningún otro subprograma. Ahora bien, pueden definirse variables locales con el
mismo nombre en distintos subprogramas, pero eso no quiere decir que se
refieran a la misma posición de memoria o al mismo valor.
Por otro
lado, una variable global es la que se declara en el programa o
algoritmo principal, del cual dependen todos los demás subprogramas. A
diferencia de las variables locales, las globales tienen la ventaja de
compartir información entre subprogramas. Una variable global es útil y
accesible tanto en el programa principal como en todos los subprogramas que
dependan de él. Cualquier subprograma puede acceder y modificar el valor de una
variable global.
El ámbito
o alcance (scope, en inglés) de una variable es la parte del
programa o algoritmo en el que una variable definida, conocida y acesible. En
la siguiente figura podemos ver una descripción conceptual del ámbito de
diferentes variables:
En el
siguiente ejemplo definimos la función signo que realiza la siguiente tarea: si
el número dado es 0, entonces devuelve un 0, si es positivo, devuelve un 1 y si
es negativo devuelve un -1.
algoritmo
Signos
var
entero: a, b, c
real: x, y, z
inicio
x <- 5.4
a <- signo(x)
y
<- 0
b <- signo(y)
z <- 7.89
c <- signo (z - 9)
escribir ("Las respuestas son " + a +"
" + b + " " + c)
fin
entero
función signo (real
x)
var
entero: s
inicio
si x = 0 entonces s <- 0
si x > 0 entonces s <- 1
si x < 0 entonces s <- -1
devolver (s)
fin_función
En este
ejemplo, la variable s, declarada dentro de la función signo, es local y
accesible únicamente dentro de ese procedimiento.
Es
importante comprender el concepto de ámbito de variables dado que muchos de los
errores de programación se dan por no considerar correctamente la accesibilidad
que tendrá una variable en un determinado programa.
PASO DE ARGUMENTOS POR VALOR
Cuando un
programa llama a un subprograma, la información se comunica a través de una
lista de parámetros o argumentos. La forma más común para realizar este paso de
información es utilizando una correspondencia posicional, es decir, que
los valores de los parámetros se asignan en el mismo orden en que se pasan.
Por
ejemplo, supongamos que tenemos un procedimiento definido del siguiente modo:
procedimiento
division
(entero dividendo, entero divisor)
...
...
fin_procedimiento
y una
llamada a dicho procedimiento desde nuestro programa principal, expresada asi:
division(20,
5)
Los
valores 20 y 5, pasados como parámetros al procedimiento división, se asignarán
en el orden que se pasan. Es decir, la variable dividendo tomará el valor de 20
y divisor el valor de 5.
Existen
diferentes métodos para la transmisión de parámetros a los subprogramas, entre
los cuales se cuentan:
- Paso por valor
- Paso por referencia
- Paso por nombre
- Paso por resultado
Los dos
primeros son los más frecuentes en la gran mayoría de los lenguajes de
programación, por lo que nos vamos a enfocar a explicarlos a detalle.
Paso por Valor
Un
parámetro es pasado por valor cuando lo que se le pasa al subprograma es
una copia del valor de una variable, el cual recibe en una variable
local al subprograma, de modo que cualquier operación realizada sobre dicho
valor no afectará ni cambiará al valor original. Tomemos, por ejemplo, el
siguiente algoritmo:
procedimiento
cambiar(entero
a, entero b)
var
entero: aux
inicio
aux <- a
a <- b
b <- aux
fin_procedimiento
algoritmo
Paso_Por_Valor
var
entero: a, b
inicio
a <- 5
b <- 50
escribir(a, b)
cambiar(a, b)
escribir(a,b)
fin
El
algoritmo principal contiene dos variables, cuyos valores son 5 y 50,
respectivamente. Luego invoca al procedimiento cambiar, el cual toma una copia
de esos valores y los usa en sus operaciones internas. Dentro de dicho
procedimiento, la variable a tomará el valor de 5 y la variable b tomará el
valor de 50. Las operaciones del procedimiento tienen el objetivo de
intercambiar dichos valores por lo que, una vez realizadas, las variables a y b
tendrán los valores intercambiados. Pero dado que el procedimiento trabaja con
una copia de los datos, las variables originales conservan sus mismos valores.
Es decir, cuando volvamos a escribir en pantalla los valores de a y b, veremos
los mismos valores que originalmente les asignamos.
Paso por referencia
Cuando
pasamos parámetros por referencia, en realidad estamos pasando a un
subprograma un indicador o apuntador que señala a la posición de
memoria donde se almacena el valor de una variable, de modo que todas las
operaciones que se hacen sobre dichos valores dentro del subprograma afectan y
cambian a los mismos. En el paso por referencia no se pasa una copia de los
datos, sino las referencias a los datos originales. Para indicar que un
parámetro está siendo pasado por referencia, utilizamos la palabra reservada var
delante de cada uno de los argumentos que especifiquemos en la definición
del subprograma.
Observa
el ejemplo anterior pero ahora modificado para recibir los parámetros por
referencia:
procedimiento
cambiar(var entero a, var entero b)
var
entero: aux
inicio
aux <- a
a <- b
b <- aux
fin_procedimiento
algoritmo
Paso_Por_Valor
var
entero: a, b
inicio
a <- 5
b <- 50
escribir(a, b)
cambiar(a, b)
escribir(a,b)
fin
Observa
que hemos añadido la palabra reservada var delante de cada uno de los
parámetros incluidos en la definición del procedimiento. En este caso, todas
las operaciones que hacemos dentro del procedimiento cambiar están afectando
directamente a los valores originales de a y b, por lo que al ejecutar la
segunda instrucción escribir(a,b) del programa principal, veremos que a
y b han intercambiado sus valores como resultado de la ejecución del
subprograma.
Es
importante resaltar que en ambos ejemplos usamos los mismos nombres para las
variables tanto en el programa principal como en el procedimiento. Pero eso no
siempre tiene que ser así. Si usamos nombres distintos para las variables, pero
especificamos que estamos pasando los valores por referencia, las variables en
el subprocedimiento apuntarán a las variables originales independientemente de
su nombre.
El paso
de parámetros más usual y por defecto es el paso por valor. Sin embargo,
existen situaciones en las que el paso por referencia es más útil, como en
aquellos casos en los que los parámetros contengan una cantidad demasiado
grande de información (como un arreglo, de los cuales aprenderemos más
adelante).
En el
siguiente ejemplo definimos la función signo que realiza la siguiente tarea: si
el número dado es 0, entonces devuelve un 0, si es positivo, devuelve un 1 y si
es negativo devuelve un -1.
algoritmo
Signos
var
entero: a, b, c
real: x, y, z
inicio
x <- 5.4
a <- signo(x)
y
<- 0
b <- signo(y)
z <- 7.89
c <- signo (z - 9)
escribir ("Las respuestas son " + a +"
" + b + " " + c)
fin
entero
función signo (real
x)
var
entero: s
inicio
si x = 0 entonces s <- 0
si x > 0 entonces s <- 1
si x < 0 entonces s <- -1
devolver (s)
fin_función
En este
ejemplo, la variable s, declarada dentro de la función signo, es local y
accesible únicamente dentro de ese procedimiento.
Es
importante comprender el concepto de ámbito de variables dado que muchos de los
errores de programación se dan por no considerar correctamente la accesibilidad
que tendrá una variable en un determinado programa.
PASO DE ARGUMENTOS POR VALOR
Cuando un
programa llama a un subprograma, la información se comunica a través de una
lista de parámetros o argumentos. La forma más común para realizar este paso de
información es utilizando una correspondencia posicional, es decir, que
los valores de los parámetros se asignan en el mismo orden en que se pasan.
Por
ejemplo, supongamos que tenemos un procedimiento definido del siguiente modo:
procedimiento
division
(entero dividendo, entero divisor)
...
...
fin_procedimiento
y una
llamada a dicho procedimiento desde nuestro programa principal, expresada asi:
division(20,
5)
Los
valores 20 y 5, pasados como parámetros al procedimiento división, se asignarán
en el orden que se pasan. Es decir, la variable dividendo tomará el valor de 20
y divisor el valor de 5.
Existen
diferentes métodos para la transmisión de parámetros a los subprogramas, entre
los cuales se cuentan:
- Paso por valor
- Paso por referencia
- Paso por nombre
- Paso por resultado
Los dos
primeros son los más frecuentes en la gran mayoría de los lenguajes de
programación, por lo que nos vamos a enfocar a explicarlos a detalle.
Paso por Valor
Un
parámetro es pasado por valor cuando lo que se le pasa al subprograma es
una copia del valor de una variable, el cual recibe en una variable
local al subprograma, de modo que cualquier operación realizada sobre dicho
valor no afectará ni cambiará al valor original. Tomemos, por ejemplo, el
siguiente algoritmo:
procedimiento
cambiar(entero
a, entero b)
var
entero: aux
inicio
aux <- a
a <- b
b <- aux
fin_procedimiento
algoritmo
Paso_Por_Valor
var
entero: a, b
inicio
a <- 5
b <- 50
escribir(a, b)
cambiar(a, b)
escribir(a,b)
fin
El
algoritmo principal contiene dos variables, cuyos valores son 5 y 50,
respectivamente. Luego invoca al procedimiento cambiar, el cual toma una copia
de esos valores y los usa en sus operaciones internas. Dentro de dicho
procedimiento, la variable a tomará el valor de 5 y la variable b tomará el
valor de 50. Las operaciones del procedimiento tienen el objetivo de
intercambiar dichos valores por lo que, una vez realizadas, las variables a y b
tendrán los valores intercambiados. Pero dado que el procedimiento trabaja con
una copia de los datos, las variables originales conservan sus mismos valores.
Es decir, cuando volvamos a escribir en pantalla los valores de a y b, veremos
los mismos valores que originalmente les asignamos.
Paso por referencia
Cuando
pasamos parámetros por referencia, en realidad estamos pasando a un
subprograma un indicador o apuntador que señala a la posición de
memoria donde se almacena el valor de una variable, de modo que todas las
operaciones que se hacen sobre dichos valores dentro del subprograma afectan y
cambian a los mismos. En el paso por referencia no se pasa una copia de los
datos, sino las referencias a los datos originales. Para indicar que un
parámetro está siendo pasado por referencia, utilizamos la palabra reservada var
delante de cada uno de los argumentos que especifiquemos en la definición
del subprograma.
Observa
el ejemplo anterior pero ahora modificado para recibir los parámetros por
referencia:
procedimiento
cambiar(var entero a, var entero b)
var
entero: aux
inicio
aux <- a
a <- b
b <- aux
fin_procedimiento
algoritmo
Paso_Por_Valor
var
entero: a, b
inicio
a <- 5
b <- 50
escribir(a, b)
cambiar(a, b)
escribir(a,b)
fin
Observa
que hemos añadido la palabra reservada var delante de cada uno de los
parámetros incluidos en la definición del procedimiento. En este caso, todas
las operaciones que hacemos dentro del procedimiento cambiar están afectando
directamente a los valores originales de a y b, por lo que al ejecutar la
segunda instrucción escribir(a,b) del programa principal, veremos que a
y b han intercambiado sus valores como resultado de la ejecución del
subprograma.
Es
importante resaltar que en ambos ejemplos usamos los mismos nombres para las
variables tanto en el programa principal como en el procedimiento. Pero eso no
siempre tiene que ser así. Si usamos nombres distintos para las variables, pero
especificamos que estamos pasando los valores por referencia, las variables en
el subprocedimiento apuntarán a las variables originales independientemente de
su nombre.
El paso
de parámetros más usual y por defecto es el paso por valor. Sin embargo,
existen situaciones en las que el paso por referencia es más útil, como en
aquellos casos en los que los parámetros contengan una cantidad demasiado
grande de información (como un arreglo, de los cuales aprenderemos más
adelante).
ACTIVIDAD
Ejemplo de donde se analizan las
funciones internas, asociándola con la definición matemática de función.
FUNCIONES INTERNAS:
Son funciones matemáticas
diferentes de las operaciones básicas pero que se incorporan al lenguaje y que
se consideran estándar. Dependen del lenguaje. Normalmente se encuentran en la
librería de matemáticas del lenguaje de programación.

Veamos ahora cómo usar estas funciones para traducir a expresiones
algorítmicas una de las fórmulas matemáticas más conocidas: la fórmula general
para resolver ecuaciones de segundo grado (sí recuerdan sus matemáticas de
secundaria, ¿verdad?):

O lo que es lo mismo:


Estas fórmulas, traducidas a expresiones algorítmicas quedarían así:
x1 = (-b + raiz2(cuadrado(b) - 4 * a * c)) / (2 * a)
x1 = (-b - raiz2(cuadrado(b) - 4 * a * c)) / (2 * a)
Dos ejemplos de ejercicios de programación donde se analizan la
diferencia entre el paso por valor y paso por referencia
Programación en c
El "Hola Mundo"
#include<stdio.h>
intmain (intargc,char **argv)
{
printf("Hola mundo\n");
return 0;
}
Nota: este programa está tomado del Dominio Público
$ ./holamundo
Hola Mundo
$
El "Hola Mundo" comentado
[Contexto]
/* Inclusión de archivos */
#include<stdio.h>
/* Función principal */
intmain (intargc,char **argv)
{
/* Impresión por pantalla y salida del programa*/
printf("Hola mundo\n");
return 0;
}
$ ./holamundoc
Hola Mundo
$
El "Hola Mundo" estructurado en funciones
[Contexto]
/*
holamundo.c
(c) Envite, 2004
para el wikilibro
"Programación en C (fundamentos)"
bajo licencia FDL, adaptado del
Dominio Público
*/
#include<stdio.h>
/*Necesario para la función printf()*/
voidholamundo(void) /*Función
donde se ejecuta la lógica del programa*/
{
printf("Hola Mundo\n");
/*imprime la cadena*/
return; /*sale de la función*/
}
intmain(void) /*Función principal
del programa*/
{
holamundo(); /*llamada a la
función que lleva el peso*/
return(0); /*sale del programa:
correcto*/
}
$ ./holamundof
Hola mundo
$
Programacipascal
Ejemplo lenguaje Pascal
Hola Mundo
Un sencillo ejemplo del programa
Hola Mundo:
PROGRAM HolaMundo (OUTPUT);
BEGIN
WriteLn('¡Hola Mundo!');
{ Es imprescindible añadir el
carácter ";" tras el
último comando de un bloque. Añadirlo hace que se
incluya un "elemento
nulo" al programa. }
END.
Dentro de la programación modular hay funciones que son instrucciones para obtener un resultado después de hacer un largo proceso a través de algoritmo.
ResponderEliminarEs muy importante que la función modular es como un conjunto de instrucciones que permiten procesar las variables para obtener un resultado.
ResponderEliminar