Computing">
Nothing Special   »   [go: up one dir, main page]

Investigacion de Algoritmos

Descargar como docx, pdf o txt
Descargar como docx, pdf o txt
Está en la página 1de 17

1

INSTITUTO TECNOLOGICO DE CIUDAD MADERO.

Carrera: Ingeniería Industrial.


Materia: Algoritmos y Lenguaje de Programación.
“UNIDAD 6 FUNCIONES.”
PROGRAMADORES.
 Jessica Nahomi Abdikrim Velázquez.
 Gerardo Bustos Saldaña.
 Carlos Gallardo Martínez.
 Isaid Marco del Ángel.
Docente: Liliana Salazar Dives.

INVESTIGACION.
13-14
2

INDICE.

6.1
INTRODUCCION…………………………………………………
………………… 3

6.2 FUNCIONES
ESTANDAR………………………………………………… 4, 5, 6

6.3 ENTRADA Y SALIDA DE


DATOS……………………………………………… 7

6.4 FUNCIONES DEFINIDAS POR EL


USUARIO…………………………. 8, 9

6.5 PASE POR


VALOR………………………………………………………………
… 10

6.6 PASE POR


REFERENCIA………………………………………………….. 11,
12

6.7 ELABORACION DE
PROGRAMAS…………………………………….. 13, 14
3

FUNCIONES.

INTRODUCCION: Una función es un bloque de código que realiza alguna operación.


Una función puede definir opcionalmente parámetros de entrada que permiten a los
llamadores pasar
argumentos a la función. Una función también puede devolver un valor como salida.
4

Las funciones son útiles para encapsular las operaciones comunes en un solo bloque
reutilizable, idealmente con un nombre que describa claramente lo que hace la función. La
siguiente función acepta dos enteros de un autor de llamada y devuelve su suma; a y b
son parámetros de tipoint.

No hay ningún límite práctico para la longitud de la función, pero el buen diseño
tiene como objetivo las funciones que realizan una sola tarea bien definida. Los
algoritmos complejos deben dividirse en funciones más sencillas y fáciles de
comprender siempre que sea posible.
Las funciones definidas en el ámbito de clase se denominan funciones miembro. En

C++, a diferencia de otros lenguajes, una función también pueden definirse en el


ámbito de espacio de nombres (incluido el espacio de nombres global implícito).
Estas funciones se denominan funciones libres o funciones no miembro; se usan
ampliamente en la biblioteca estándar.

FUNCIONES ESTANDAR: También conocido como una subrutina o subprograma,


como idea general, se presenta como un Subalgoritmo que forma parte del algoritmo
principal, el cual permite resolver una tarea específica. Algunos lenguajes de
programación, comoVisual Basic .NET o Fortran, utilizan el nombre función para referirse a
subrutinas
5

que devuelven un valor.


Las funciones son casi exactamente iguales que los procedimientos con respecto
a la forma en que se los llama y se los crea o declara en el código, en cómo se le pasa los
parámetros etc.
La diferencia fundamental con respecto a los procedimientos o subrutinas es que estos,
luego de ejecutar el código que tengan en su interior, al final retornan un valor, y este
valor luego lo podemos utilizar para una determinada tarea. En cambio los
procedimientos, solo ejecutan el código que contienen y luego mueren por decirlo de
alguna manera.
Los elementos necesarios de una declaración de función son los siguientes:
1. El tipo de retorno, que especifica el tipo del valor que devuelve la función,
o void si no se devuelve ningún valor. En C++11, auto es un tipo de retorno
válido que indica al compilador que infiera el tipo de la sentencia de retorno.
En C++14, también está permitido. Para obtener más información, consulte
más adelante Deducción de tipos en tipos de valor devueltos.
2. El nombre de la función, que debe comenzar con una letra o un carácter de
subrayado y no puede contener espacios. En general, los caracteres de
subrayado iniciales en los nombres de función de la biblioteca estándar
indican funciones miembro privadas o funciones que no son miembro que
no están diseñadas para su uso por parte del código.
3. La lista de parámetros, que es un conjunto delimitado por llaves y separado
por comas de cero o más parámetros que especifican el tipo y,
opcionalmente, un nombre local mediante el cual se puede acceder a los
valores de dentro del cuerpo de la función.
Los elementos opcionales de una declaración de función son los siguientes:
1. constexpr, que indica que el valor devuelto de la función es un valor constante que se
puede calcular en tiempo de compilación.
6

2. Su especificación de vinculación, extern o static.

3. inline, que indica al compilador que reemplace todas las llamadas a la función con el
propio código de la función. La inserción en línea puede mejorar el rendimiento en
escenarios donde una función se ejecuta rápidamente y se invoca varias veces en una
sección del código crítica para el rendimiento.
7

4. Una noexcept expresión que especifica si la función puede o no lanzar una excepción.
En el ejemplo siguiente, la función no produce una excepción si la is_pod expresión se
evalúa como true.

5. (solo funciones miembro) Los calificadores cv, que especifican si la función es const o
volatile.
6. (solo funciones de los miembros) virtual, override, o final. virtual especifica que una
función se puede reemplazar en una clase derivada. override significa que una función de
una clase derivada reemplaza una función virtual. Final significa que una función no se
puede invalidar en ninguna clase derivada adicional.
7. (solo funciones miembro) static aplicado a una función miembro significa que la función
no está asociada a ninguna instancia de objeto de la clase.
8. (solo funciones miembro no estáticas) El calificador de referencia, que especifica al
compilador qué sobrecarga de una función, debe elegir cuando el parámetro implícito del
objeto (*this) es una referencia rvalue frente a una referencia lvalue.
8

Ejemplo de una función aplicada en un algoritmo:

ENTRADA Y SALIDA DE DATOS: En esta entrada veremos cómo solicitar datos


al usuario y como guardarlos cuando este los introduzca. Básicamente necesitaremos la
librería stdio.h, incluirla nos permitirá utilizar la función printf(); que sirve para mostrar
texto en pantalla y scanf(); que nos permite leer datos introducidos mediante el teclado.
9

Antes debemos recordar que al ser un lenguaje estricto con los tipos de datos, deberemos
tratar cada dato de acuerdo a su tipo, para realizar una entrada simple de datos
tendríamos el siguiente código:

Como vemos, primero declaramos una variable de tipo Entero (int) llamada número,
después imprimimos el texto “Introduce un número” seguida de \n (esto nos indica un
salto de línea). En la siguiente línea leemos el dato, scanf tiene la siguiente estructura:
scanf("%x",&variable), donde x corresponde a una letra de acuerdo al tipo de dato que se
debe recibir, d para int, c para char, etc. Siempre entre comillas dobles, una coma, el signo
“&” (ampersand) junto al nombre de la variable. Después volvemos a usar la función
printf, pero ahora imprime también una variable, para esto se sigue un criterio similar, con
%d, para indicar el tipo de variable a imprimir (Esto dentro de las comillas dobles),
después de la coma el nombre de la variable, esta vez sin el sigo `&``. 8 Si imprimiéramos
mas variables en una sola línea solo basta agregar un %d por cada variable que se desea
imprimir y donde se mostrara, de igual forma después de la coma irán los nombre de las
variables (separadas por comas) en el orden en el cual aparecerán, recuerda que % debe ir
seguido de la letra correspondiente al tipo de variable. Terminaremos con el siguiente
ejemplo:

FUNCIONES DEFINIDAS POR EL USUARIO: Una función definida por el


usuario es una función proporcionada por el usuario de un programa o entorno, en un
contexto donde la suposición habitual es que las funciones están incluidas en el programa
o entorno. Al igual que las funciones de los lenguajes de programación, las funciones
definidas por el usuario de SQL Server son rutinas que aceptan parámetros, realizan una
10

acción, como un cálculo complejo, y devuelven el resultado de esa acción como un valor.
El valor devuelto puede ser un valor escalar único o un conjunto de resultados.

¿Por qué usar funciones definidas por el usuario (UDF)?

 Programación modular. Puede crear la función una vez, almacenarla en la base de datos
y llamarla desde el programa tantas veces como desee. Las funciones definidas por el
usuario se pueden modificar, independientemente del código de origen del programa.

 Ejecución más rápida. Al igual que los procedimientos almacenados, las funciones
definidas por el usuario de Transact-SQL reducen el costo de compilación del código de
Transact-SQL almacenando los planes en la caché y reutilizándolos para ejecuciones
repetidas. Esto significa que no es necesario volver a analizar y optimizar la función
definida por el usuario con cada uso, lo que permite obtener tiempos de ejecución mucho
más rápidos. Las funciones CLR ofrecen una ventaja de rendimiento importante sobre las
funciones de Transact-SQL para tareas de cálculo, manipulación de cadenas y lógica
empresarial. Las funciones de Transact-SQL se adecuan mejor a la lógica intensiva del
acceso a datos.

 Reducción del tráfico de red. Una operación que filtra datos basándose en restricciones
complejas que no se puede expresar en una sola expresión escalar se puede expresar
como una función. La función se puede invocar luego en la cláusula WHERE para reducir el
número de filas que se envían al cliente.
 Tipos de funciones

 Funciones escalares

 Las funciones escalares definidas por el usuario devuelven un único valor de datos del
tipo definido en la cláusula RETURNS. En una función escalar insertada, el valor escalar es
el resultado de una sola instrucción. Para una función escalar de varias instrucciones, el
cuerpo de la función puede contener una serie de instrucciones de Transact-SQL que
devuelven el único valor.

 Funciones con valores de tabla

 Las funciones con valores de tabla definidas por el usuario (TVF) devuelven un tipo de
datos table. Las funciones insertadas con valores de tabla no tienen cuerpo; la tabla es el
conjunto de resultados de una sola instrucción SELECT.
11

 Funciones del sistema

 SQL Server proporciona numerosas funciones del sistema que se pueden usar para
realizar diversas operaciones. No se pueden modificar.

EJEMPLO:

PASE POR VALOR: Una variable de tipo de valor contiene directamente los datos,
a diferencia de una variable de tipo de referencia, que contiene una referencia a los datos.
Por lo tanto, pasar una variable de tipo de valor a un método significa pasar una copia de
la variable al método. Cualquier cambio en el parámetro que se produzca dentro del

método no afectará a los datos originales almacenados en la variable.


12

El siguiente ejemplo muestra cómo trabajar pasando parámetros por valor:

Como se observa, la variable valor es inicializada en cero. Cuando se invoca a la Funcion3,


el contenido de valor se copia en el parámetro dato, el cual se cambia dentro del método.
Sin embargo, en Main, el valor del variable valor es el mismo, antes y después de llamar al

método Funcion3, es decir, el cambio que se produce dentro del método sólo afecta a la
variable local dato.

Tal vez en ocasiones al usar el out tengamos los siguientes errores:

Error del compilador CS0269

"Uso del parámetro out sin asignar 'parámetro'"

Error del compilador CS0177

"Es necesario asignar el parámetro 'parámetro' out antes de que el control abandone el
método actual"

Esto se debe a que el compilador no pudo comprobar que al parámetro out se le hubiera
asignado a un valor antes de utilizarlo, es decir, no se asignó un valor a un parámetro
marcado con la palabra clave out en el cuerpo del método.

PASE POR REFERENCIA: Una variable de tipo referencia no contiene


directamente los datos, contiene una referencia a ellos. El paso de parámetros por
referencia permite a los miembros de funciones, métodos, propiedades, indicadores,
13

operadores y constructores, cambiar el valor de los parámetros y hacer que ese cambio
persista.
Para pasar un parámetro por referencia, se debe usar una de las palabras clave Ref u Out.
Por ejemplo:

Para pasar un
argumento a un parámetro Ref, primero debe inicializarse. Aunque Ref y Out se tratan de
manera diferente en tiempo de ejecución, se tratan de la misma manera en tiempo de
compilación. Por consiguiente no se pueden sobrecargar los métodos si un método toma
un argumento Ref y el otro toma un argumento Out.

El siguiente ejemplo muestra cómo trabajar con Ref:


14

Out no requiere que se inicialice la variable antes de pasarla. Al utilizar un parámetro Out,
la definición de método y el método de llamada deben utilizar explícitamente la palabra
clave out.

El siguiente ejemplo muestra cómo trabajar con Out:

Uso de pasos por valor y por referencia

Generalmente es preferible usar paso por valor en los subprogramas que uno escriba. La
ejecución de un programa es mucho más fácil de entender si las funciones no tienen
influencia más allá de sus variables locales y su valor de retorno.

Hay dos casos principales en los que conviene usar paso por referencia.

1. Cuando se necesita pasar un elemento muy grande (como un arreglo o un string), para
evitar el costo de copiarlo.

2. Cuando se necesite un subprograma que entregue más de un valor como resultado, ya


que una función no puede retornar más de un valor.
15

ELABORACION DE PROGRAMAS:

Análisis: En esta fase se establece el producto a desarrollar, siendo necesario especificar


los procesos y estructuras de datos que se van a emplear. Debe existir una gran
comunicación entre el usuario y el analista para poder conocer todas las necesidades que
precisa la aplicación.

Diseño: En esta fase se alcanza con mayor precisión una solución óptima de la aplicación,
teniendo en cuenta los recursos físicos del sistema (tipo de ordenador, periféricos,
comunicaciones, etc…) y los recursos lógicos. (Sistema operativo., programas de utilidad,
bases de datos, etc…)

Fases o Etapas:

Análisis, Diseño, Codificación o construcción, Implantación o explotación, Mantenimiento.

Explotación: En esta fase se realiza la implantación de la aplicación en el sistema o


sistemas físicos donde van a funcionar habitualmente y su puesta en marcha para
comprobar el buen funcionamiento.

Actividades a tener en cuenta o realizar:

Instalación del/los programa/s.

Pruebas de aceptación al nuevo sistema.

Conversión de la información del antiguo sistema al nuevo (si hay una aplicación antigua)

Eliminación del sistema anterior.

Mantenimiento: Esta es la fase que completa el ciclo de vida y en ella nos encargaremos
de solventar los posibles errores o deficiencias de la aplicación. Existe la posibilidad de que
ciertas aplicaciones necesiten reiniciar el ciclo de vida.

Tipo de Mantenimiento:

Mantenimiento Correctivo: Consiste en corregir errores no detectados en pruebas


anteriores y que aparezcan con el uso normal de la aplicación. Este mantenimiento puede
estar incluido en la garantía o mantenimiento de la aplicación.
16

Mantenimiento Preventivo: Es el destinado a la conservación de equipos o instalaciones


mediante la realización de revisión y reparación que garanticen su buen funcionamiento y
fiabilidad. El mantenimiento preventivo se realiza en equipos en condiciones de
funcionamiento, por oposición al mantenimiento correctivo que repara o pone en
condiciones de funcionamiento aquellos que dejaron de funcionar o están dañados.

Codificación: Consiste en traducir los resultados obtenidos a un determinado lenguaje de


programación, teniendo en cuenta las especificaciones obtenidas en el cuaderno de carga.
Se deben de realizar las pruebas necesarias para comprobar la calidad y estabilidad del
programa.

https://learn.microsoft.com/es-es/cpp/cpp/functions-cpp?view=msvc-170

https://prezi.com/kcv2nowj38i7/65-pase-por-valor/
17

https://sites.google.com/view/gerardo-isaias-espinoza-leal/unidad-3/3-9-elaboraci
%C3%B3n-de-programas

También podría gustarte