Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

Clases y Funciones

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

CENTRO UNIVERSITARIO SIGLO XXI

NOMBRE DEL ALUMNO:

ANTONIO CONCHA GARCIA.

NOMBRE DEL PROFESOR:

LUIS ALBERTO VARGAS CRUZ.

ASIGNTURA:

PRINCIPIOS DE LA PROGRAMACIÒN.

CARRERA:

INGIENERIA PETROLERA

CUATRIMESTRE:

7 TMO.

CUNDUACAN TAB. A DE DEL 2021


CLASES Y FUNCIONES.
FUNCIONES.

Supongamos que necesitamos escribir un programa que calcule el número


combinatorio C(m,n)C(m,n), definido como:

Donde n! (el factorial de n) es el producto de los números enteros desde 1 hasta n:

El código para calcular el factorial de un número entero n es sencillo:

Sin embargo, para calcular el número combinatorio, hay que hacer lo mismo tres
veces:
La única diferencia entre los tres cálculos de factoriales es el valor de término de
cada ciclo for (m, m - n y n, respectivamente).

Escribir el mismo código varias veces es tedioso y propenso a errores. Además, el


código resultante es mucho más difícil de entender, pues no es evidente a simple
vista qué es lo que hace.

Lo ideal sería que existiera una función llamada factorial que hiciera el trabajo


sucio, y que pudiéramos usar de la siguiente manera:

Factorial (m) / (factorial (m - n) * factorial(n))

Ya vimos anteriormente que Python ofrece «de fábrica» algunas funciones,


como int, min y abs. Ahora veremos cómo crear nuestras propias funciones.

Estructura de una función.

En programación, una función es una sección de un programa que calcula un valor


de manera independiente al resto del programa.

Una función tiene tres componentes importantes:

 los parámetros, que son los valores que recibe la función como entrada;
 el código de la función, que son las operaciones que hace la función; y
 el resultado (o valor de retorno), que es el valor final que entrega la función.

En esencia, una función es un mini programa. Sus tres componentes son análogos
a la entrada, el proceso y la salida de un programa.

En el ejemplo del factorial, el parámetro es el entero al que queremos calcularle el


factorial, el código es el ciclo que hace las multiplicaciones, y el resultado es el
valor calculado.
Las funciones en Python son creadas mediante la sentencia def:

def nombre (parámetros):

# Código de la función

Los parámetros son variables en las que quedan almacenados los valores de
entrada.

La función contiene código igual al de cualquier programa. La diferencia es que, al


terminar, debe entregar su resultado usando la sentencia return.

Por ejemplo, la función para calcular el factorial puede ser definida de la siguiente
manera:

En este ejemplo, el resultado que entrega una llamada a la función es el valor que
tiene la variable f al llegar a la última línea de la función.

Una vez creada, la función puede ser usada como cualquier otra, todas las veces
que sea necesario:
Variables locales y estáticas en funciones
Una variable es un nombre que contiene un valor que puede cambiar a lo largo del
programa. De acuerdo con el tipo de información que contienen, estas son
clasificadas en 2 o más tipos en dependencia del lenguaje de programación que
se utiliza, de manera general existen 2 tipos de clasificaciones: 1 - Variables de
tipos primitivos. Están definidas mediante un valor único que puede ser entero, de
punto flotante, carácter o booleano. Cada lenguaje de programación
como Java por ejemplo, permiten distintas precisiones y rangos de valores para
cada tipo de variable (char, byte, short , int, long, float , double, boolean). Ejemplos
de variables de tipos primitivos podrían ser: 123, 3456754, 3.1415, 12e- 09, 'A',
True, etc. 2. Variables de referencia. Las variables de referencia son referencias o
nombres de una información más compleja: arreglos u objetos de una determinada
clase.

Las variables que son creadas dentro de la función (incluyendo los parámetros y el
resultado) se llaman variables locales, y sólo son visibles dentro de la función, no
desde el resto del programa.

En el ejemplo, las variables locales son n, f e i. Una vez que la llamada a la


función termina, estas variables dejan de existir:

Después de definir la función factorial, podemos crear otra función


llamada comb para calcular números combinatorios:
Esta función llama a factorial tres veces, y luego usa los resultados para calcular
su resultado. La misma función puede ser escrita también de forma más sucinta:

(http://progra.usm.cl/apunte/materia/funciones.html)
Funciones con parámetros.

Son el medio a partir del cual podemos expandir el ámbito de variables locales de
funciones, hacia otras funciones y además quienes nos permiten establecer
comunicaciones entre funciones. Si nos vemos ante la necesidad de visualizar o
modificar el valor de una variable local en otra función que llamaremos, debemos
invocar a dicha función haciendo referencia de su nombre, seguido de los
parámetros o nombres de variables para las cuales, en teoría ampliaríamos su
ámbito.

void funcion_llamada(int x){ // función que recibe un argumento

void una_funcion(void) {

int a,b; // variables

funcion_llamada(a); // llamada de la función con un parámetro

La expresión funcion_llamada(a); se denomina llamado a la función


funcion_llamada con un parámetro a de tipo entero. Y la expresión void
funcion_llamada (int x) se denomina cabecera de la función funcion_llamada con
un argumento, en este caso x, también de tipo entero.

Desde luego que, sobre la base de la comunicación entre funciones y la teoría del
paradigma procedimental donde aplicamos la disgregación de procesos, nos
podemos encontrar con las siguientes variantes:

1. Llamado de funciones sin pasar parámetros.

2. Llamado de funciones pasando parámetros.

(M.)
 Parámetros por valor y por referencia.
Vimos en el concepto anterior los parámetros por valor, ahora veremos que hay
una segunda forma de definir parámetros que es por referencia.

Un parámetro por referencia tiene por objetivo modificar el contenido de una


variable que se le envía a un procedimiento.

Si por medio de un parámetro por valor llega un dato a un procedimiento, por un


parámetro por referencia se retorna y sale un dato de un procedimiento.

La sintaxis para definir un parámetro por referencia es agregar la palabra clave var
previo al nombre del parámetro.

Implementaremos un problema elemental para ver la deferencia entre un


parámetro por valor y un parámetro por referencia:
El procedimiento1 recibe por valor un parámetro, si dentro del mismo cambiamos
su contenido asignándole otro dato el mismo no se ve reflejado en la variable que
le pasamos en el bloque principal:

Desde el bloque principal llamamos a procedimiento1 y le enviamos el contenido


de la variable valor con un 1:

Luego que sale del procedimiento1 la variable valor sigue conservando el número
1:

En cambio el procedimiento2 recibe un parámetro Integer por referencia:

Cuando asignamos el valor 100 al parámetro por referencia x la variable que


realmente se está modificando el la que le enviamos desde el bloque principal es
decir "valor":
Como vemos la variable "valor" fue modificada por el procedimiento2.

Un parámetro por valor hace una copia de la variable que le enviamos desde el
bloque principal:

En cambio un parámetro por referencia hace que el parámetro tome la misma


dirección de memoria que la variable que le pasamos (esto hace que si
modificamos el parámetro se modifique la variable que le pasamos):
Clases 
Una clase (en programación) es una agrupación de datos (variables o campos) y
de funciones (métodos) que operan sobre esos datos. A estos datos y funciones
pertenecientes a una clase se les denominan variables y métodos o funciones
miembro. La Programación Orientada a Objetos se basa en la programación de
clases.

Concepto: Una clases una agrupación de datos


(variables o campos) y de funciones
(métodos) que operan sobre esos
datos.

En la jerga de la programación orientada a objetos, las funciones dentro de las


clases se denominan funciones-miembro o métodos, y las variables dentro de
clases, variables-miembro o propiedades. El sentido es el mismo que en la
programación tradicional (la nomenclatura es más una cuestión de gustos), si bien
referirnos a "propiedades" y "métodos" supone estar utilizando la programación
orientada a objetos y que nos referimos a miembros de una clase. En C++ esta
aclaración puede ser importante, porque es un lenguaje que podríamos llamar
"híbrido"; en ciertas partes puede utilizarse con técnicas de programación
tradicional, y en otras con técnicas de POO.
CLASES DERIVADAS.

En C++, la herencia simple se realiza tomando una clase existente y derivando


nuevas clases de ella. La clase derivada hereda las estructuras de datos y
funciones de la clase original. Además, se pueden añadir nuevos miembros a las
clases derivadas y los miembros heredados pueden ser modificados.
Una clase utilizada para derivar nuevas clases se denomina clase base, clase
padre, superclase o ascendiente. Una clase creada de otra clase se denomina
clase derivada o subclase. Se pueden construir jerarquías de clases, en las que
cada clase sirve como padre o raíz de una nueva clase.

Conceptos fundamentales de derivación.

C++ utiliza un sistema de herencia jerárquica. Es decir, se hereda una clase de


otra, creando nuevas clases a partir de las clases ya existentes. Sólo se pueden
heredar clases, no funciones ordinarias n variables, en C++. Una clase
derivada hereda todos los miembros dato excepto, miembros dato estático, de
cada una de sus clases base. Una clase derivada hereda la función miembro de
su clase base. Esto significa que se hereda la capacidad para llamar a funciones
miembro de la clase base en los objetos de la clase derivada.

(https://html.rincondelvago.com/clases-derivadas.html) .
Funciones virtuales.
Las funciones virtuales permiten que clases derivadas de una misma base
(clases hermanas) puedan tener diferentes versiones de un método. Se utiliza
la palabra-clave virtual para avisar al compilador que un método será
polimórfico y que en las clases derivadas existen distintas definiciones del
mismo. En respuesta, el "Linker" utiliza para ella una técnica especial, enlazado
retrasado. La declaración de virtual en un método de una clase, implica que
esta es polimórfica, y que probablemente no se utilizará directamente para
instanciar objetos, sino como súper-clase de una jerarquía.

Esta posibilidad, que un mismo método puede exhibir distintos


comportamientos en los descendientes de una base común, es precisamente lo
que posibilita y define el polimorfismo. En estos casos se dice que las
descendientes de la función virtual solapan o sobre controlan ("Override") la
versión de la superclase, pero esta versión de la superclase puede no existir en
absoluto. Es probable que en ella solo exista una declaración del tipo: virtual
void foo(); sin que exista una definición de la misma. Para que pueda existir la
declaración de un método sin que exista la definición correspondiente, el
método debe ser virtual puro (un tipo particular dentro de los virtuales).

Utilizaremos la siguiente terminología: "función sobre controlada" o "solapada",


para referirnos a la versión en la superclase y "función sobre controladora" o
"que solapa" para referirnos a la nueva versión en la clase derivada. Cualquier
referencia al sobre control o solapamiento ("Overriding") indica que se está
utilizando el mecanismo C++ de las funciones virtuales. Parecido pero no
idéntico al de sobrecarga; conviene no confundir ambos conceptos. Más
adelante intentamos aclarar sus diferencias.
Concepto: Las funciones virtuales permiten que clases derivadas de una
misma base (clases hermanas) puedan tener diferentes versiones
de un método. Se utiliza la palabra-clave virtual para avisar al
compilador que un método será polimórfico y que en las clases
derivadas existen distintas definiciones del mismo

También podría gustarte