Sunteți pe pagina 1din 32

Funciones – Subprogramas -

SubAlgoritmos

1
Funciones – Subprogramas -
SubAlgoritmos
 Los programas muchas veces deben de dividirse para ser más
sencillos.
 Los problemas complejos se resuelven dividiendo en
subproblemas.

2
Funciones – Subprogramas -
SubAlgoritmos
 La forma de invocación de un programa Principal a sub
Programa

Tipo de Procesos
1. Funciones
2. Procedimientos

3
Funciones
 Definición:
– Matemáticamente una función es una operación que
toma uno o mas valores llamados argumentos y
produce un valor denominado resultado.

 Los Lenguajes de Programacion tienen sus


propios funcione incorporadas.
 Las funciones incorporadas al Sistema se
denomina funciones Internas o Intrinsecas y las
funciones Creadas por el Usuarios se denomina
extrínsecas. 4
Funciones
 Declaración de Funciones

5
Funciones
 Criterios para crearlas:
– Se usa la estrategia de “Dividir y Conquistar”, en
otras palabras, es realizar la partición de la tarea en
subtareas más fáciles de abordar.
– Todo problema se puede resolver con funciones o
sin ellas, pero su uso adecuado hace que el
programa sea más eficiente, fácil de leer y probar.

6
Funciones
 Ejemplos

7
Procedimientos
 Es un Subprograma que ejecuta un proceso
especifico. No retorna valor.
 Un procedimiento se invoca con el nombre del
procedimiento.
 Los procedimientos son similares a las funciones
y su diferencia radica en la entrega de resultados.

8
Ámbito de las Variables
 Variables Globales, es aquella que esta declarada
para el programa principal.
 Variables Locales, es aquella que se declara dentro
del subprograma.

9
Comunicación de Sub Programas
Los subprogramas o funciones se llaman por
argumentos de dos tipos:
1. Por Valor, cuando no varia su valor del argumento.
2. Por Referencia, cuando el argumento cambia su
valor.

10
Ejercicio

11
Programa en Java
import java.util.Scanner; public static int SUMA(int NUM_01, int NUM_02)
public class EJERCICIO_02 {
{ int SUMA;
public static Scanner TECLADO; SUMA = NUM_01 + NUM_02;
public static void main(String[] ARGUMENTOS) return SUMA;
{ }
TECLADO = new Scanner(System.in); public static int RESTA(int NUM_01, int NUM_02)
int NUMERO_01,NUMERO_02,OP_SUMA,OP_RESTA,OP_MULTIPLICACION; {
float OP_DIVISION; int RESTA;
RESTA = NUM_01 - NUM_02;
NUMERO_01 = LEER_NUMERO("NUMERO 01"); return RESTA;
NUMERO_02 = LEER_NUMERO("NUMERO_02"); }
public static int MULTIPLICACION(int NUM_01, int NUM_02)
OP_SUMA = SUMA(NUMERO_01,NUMERO_02); {
OP_RESTA = RESTA(NUMERO_01,NUMERO_02); int MULTIPLICACION;
OP_MULTIPLICACION = MULTIPLICACION(NUMERO_01,NUMERO_02); MULTIPLICACION = NUM_01 * NUM_02;
OP_DIVISION = DIVISION(NUMERO_01,NUMERO_02); return MULTIPLICACION;
}
public static float DIVISION(int NUM_01, int NUM_02)
IMPRIMIR_RESULTADOS(OP_SUMA,OP_RESTA,OP_MULTIPLICACION,OP_DIVISION); {
} float DIVISION;
DIVISION = (float)(NUM_01/NUM_02);
public static int LEER_NUMERO(String NOMBRE_NUMERO) return DIVISION;
{ }
int NUMERO; public static void IMPRIMIR_RESULTADOS(int S,int R,int M,float D)
{
System.out.print("INDIQUE EL " + NOMBRE_NUMERO + " : "); System.out.println("LOS RESUTLADOS SON : \n");
NUMERO = TECLADO.nextInt();
System.out.println("SUMA : " + S);
return NUMERO; System.out.println("RESTA : " + R);
} System.out.println("MULTIPLICACION : " + M);
System.out.println("DIVISION : " + D);
}
}

12
Programa en C
#include <stdio.h>
#include <stdlib.h> case 3:
printf("\nIntroduce a: "); float multiplicar(float a, float b) {
void menu(); // Menu de opciones scanf("%f", &a); return a*b;
float suma(float a, float b); // Funcion sumar dos numeros printf("\nIntroduce b: "); }
float resta(float a, float b); // Funcion restar dos numeros scanf("%f", &b);
float multiplicar(float a, float b); // Funcion multiplicar dos numeros printf("La multiplicacion de %.2f y %.2f es: %.2f\n\n", a, b, float dividir(float a, float b) {
float dividir(float a, float b); // Funcion dividir dos numeros multiplicar(a, b)); return a/b;
break; }
void main() { case 4:
int opc; printf("\nIntroduce a: ");
float a, b; scanf("%f", &a);
char c; printf("\nIntroduce b: ");
scanf("%f", &b);
do { printf("La division entre %.2f y %.2f es: %.2f\n", a, b, dividir(a, b));
menu(); break;
scanf("%d",&opc); case 0: break;
switch(opc) { default:
case 1: printf("\nIntroduce una opción valida...");
printf("\nIntroduce a: "); }
scanf("%f", &a); } while (opc != 0);
printf("\nIntroduce b: "); }
scanf("%f", &b); void menu() {
printf("La suma de %.2f y %.2f es: %.2f\n\n", a, b, suma(a, b)); printf ("\nIntroduce una opción de las siguientes:\n");
break; printf ("1.- Sumar\n");
case 2: printf ("2.- Restar\n");
printf("\nIntroduce a: "); printf ("3.- Multiplicar\n");
scanf("%f", &a); printf ("4.- Dividir\n");
printf("\nIntroduce b: "); printf ("0.- Salir\n");
scanf("%f", &b); printf ("Opcion: ");
printf("La resta de %.2f y %.2f es: %.2f\n\n", a, b, resta(a, b)); }
break; float suma(float a, float b) {
return a+b;
}
float resta(float a, float b) {
return a-b;
}
13
Programa en Python
def fSuma():
#funcion que imprime el menu submenu("SUMA")
#la funcion no recive ningun parametro num1 = float(input("\tIngrese un numero: "))
def menu(): num2 = float(input("\tIngrese un numero: "))
print("\n" * 50) #varios cambios de lineas con el fin de limpiar la pantalla
print("\t\t*** MENU ***\n") respuesta = num1 + num2
print("\t1. Suma")
print("\t2. Resta") #str(num) : es una funcion que convierte el numero num en texto
print("\t3. Multiplicacion") print("\n\t-> El resultado de " + str(num1) + " + " + str(num2) + "= ", respuesta)
print("\t4. Division") print("\t Presione cualquier tecla para continuar ...")
print("\t5. Resultado") input()
print("\t0. Salir") return respuesta

def opcion(min, max, salida): def fResta():


opcion= -1 submenu("RESTA")
num1 = float(input("\tIngrese un numero: "))
menu() #dibuja el menu num2 = float(input("\tIngrese un numero: "))
opcion= int(input("\n\t-> Opcion?: ")) #recibe una opcion del usuario
while (opcion < min) or (opcion > max): respuesta = num1 - num2
print("\n\t>>> Error. Opcion invalida.")
print("\t Presione una tecla para continuar ...") #str(num) : es una funcion que convierte el numero num en texto
input() print("\n\t-> El resultado de " + str(num1) + " - " + str(num2) + "= ", respuesta)
menu() #dibuja el menu print("\t Presione cualquier tecla para continuar ...")
opcion= int(input("\n\t-> Opcion?: ")) input()
return opción return respuesta

def submenu(titulo): def fMultiplicacion():


print("\n" * 50) #varios cambios de lineas con el fin de limpiar la pantalla submenu("MULTIPLICACION")
#texto.upper() : combierte todo el texto en MAYUSCULAS num1 = float(input("\tIngrese un numero: "))
print("\t\t*** " + titulo.upper() + " ***\n") num2 = float(input("\tIngrese un numero: "))
respuesta = num1 * num2
print("\n\t-> El resultado de " + str(num1) + " * " + str(num2) + "= ", respuesta)
print("\t Presione cualquier tecla para continuar ...")
input()
return respuesta

14
Programa en Python
#*************************
def fDivision(): #*** PROGRAMA PRINCIAL ***
submenu("division") #no importa enviarlo en minuscula submenu la convierte #*************************
num1 = float(input("\tIngrese un dividendo: "))
num2 = float(input("\tIngrese un divisor: ")) resultado = 0
op= -1
if num2 != 0:
respuesta = num1 / num2 while op != 0:
print("\n\t-> El resultado de " + str(num1) + " / " + op = opcion(0, 5, 0) #llama a la funcion opcion
str(num2) + "= ", respuesta)
else: if op == 1:
#Division entre cero ## funcion Suma
print("\n\t>>> Error. Division entre cero.") resultado = fSuma()
respuesta= "Error. Division entre cero."
elif op == 2:
print("\t Presione cualquier tecla para continuar ...") ## funcion Resta
input() resultado = fResta()
return respuesta
elif op == 3:
def fResultado(r): ## funcion Multiplicacion
submenu("resultado resultado = fMultiplicacion()
print("\n\t-> El ultimo resultado calculado fue: " , r)
print("\t Presione cualquier tecla para continuar ...") elif op == 4:
input() ## funcion Division
resultado = fDivision()
def fSalida(): elif op == 5:
submenu("Salida") #no importa enviarlo en minuscula submenu la convierte ## funcion Resultado
fResultado(resultado)
print("\n\t-> Gracias por usarnos. Adios. ") else:
print("\t Presione cualquier tecla para terminar ...") ## funcion Salida
input() resultado = fSalida()
print("\n" * 50) #varios cambios de lineas con el fin de limpiar la pantalla

15
Tarea
1. Listar las Librerias que usa la Herramienta de
Programacion y su forma de Invocacion (
matemáticas, Cadenas, Archivos, Pantallas, etc.
2. Realizar un listado de Funciones de cada una de
las Librerias.
3. Realizar los ejercicios del Capitulo 6 del Libro de
Fundamentos de Programación autor: Joyanes
Aguilar 4ta Edición

16
Tarea

17
Estructuras de Datos (Array y
estructuras)
1. Datos Simples: Entero, Real, Carácter, Logico, Definidos
por el Programador como SubRango, Enumerativo.
2. Datos Estructuras:

a. Estáticos: a. Dinámicos:
1. Arrays u 1. Listas
Vectores 2. Listas Enlazadas
2. Registros 3. árboles
3. Ficheros 4. Grafos
4. Conjuntos
5. Cadenas

18
Arreglos
1. Conjunto finito y ordenado de elementos
homogéneos
2. Un arreglo es un conjunto de variables del mismo
tipo que poseen un nombre común concatenado a
un índice.
3. El índice permite acceder directamente a un
elemento particular de un arreglo.
4. Los arreglos se almacenan en celdas de memoria
contiguas.
5. Pueden tener 1 o más dimensiones.

19
Arreglos Unidimensionales
La forma general de declaración:
tipo nombre_variable[tamaño];

La cantidad de memoria en bytes se puede


obtener con la función:
numero_bytes = sizeof(tipo)*tamaño;

El 0 es el índice del primer elemento de un


arreglo.

elemento 0 elemento 1 elemento n-1

20
Arreglos Bidimensionales
Definición:
Es un arreglo de dos dimensiones (2 índices).
A[i][j]
Declaración:

tipo nombre_variable[tamaño_1][tamaño_2];

21
Arreglos Bidimensionales
• Una matriz bidimensional tiene la forma
siguiente:
a11 a12 ............ a1n
a21 a22 ............ a2n
.....................

am1 am2 ............ amn


• Para acceder al dato aij se hace de la
manera siguiente:
c=a[i][j];

22
Arreglos Bidimensionales
Definición:
– Es un arreglo con k-dimensiones, el cual está
indexado por medio de k índices.
A[m]….[n]
k
Declaración:
tipo nombre_variable[tamaño_1]...[tamaño_k];

23
Ejemplos en C
Definición:
– Es un arreglo con k-dimensiones, el cual está
indexado por medio de k índices.
A[m]….[n]
k
Declaración:
tipo nombre_variable[tamaño_1]...[tamaño_k];

24
Programa en Java
import java.util.Scanner;

public class TestArreglos {


public static void main(String[] args) {
Scanner entrada = new Scanner(System.in);
float promedio = 0;
float suma = 0;
int mayor = 0;
int menor = 0;

int[] miArreglo = new int[10];


for (int i = 0; i < 10; i++) {
System.out.print("Ingrese el número en la posición " + (i) + " :");
miArreglo[i] = entrada.nextInt();
}
// realizar la suma, promedio y el mayor
for (int i = 0; i < miArreglo.length; i++) {
suma += miArreglo[i];
if (mayor < miArreglo[i]) {
mayor = miArreglo[i];
}
System.out.println(String.format("Posición [%d] Elemento: %d", i, miArreglo[i]));
}
menor = mayor;
// buscar el menor
for (int i = 0; i < miArreglo.length; i++) {
if (menor > miArreglo[i]) {
menor = miArreglo[i];
}
}
//promedio
promedio = suma / miArreglo.length;

25
Programa en Java
promedio = suma / miArreglo.length;
System.out.println("***Salida***");
// contar las veces que se repite cada número
int cont;
for (int i = 0; i < miArreglo.length; i++) {
cont = 0;
for (int j = i; j < miArreglo.length; j++) {
if (miArreglo[i] == miArreglo[j]) {
cont++;
}
}
System.out.println(String.format("El número %d se repite %d veces", miArreglo[i], cont));
}
System.out.println(String.format("La suma es %.2f, el promedio es %.2f, el mayor es %d, el menor es %d", suma, promedio, mayor, menor));
}

26
Programa en C
#include <stdio.h> // Hacemos las sumatorias
#define N 1000 sumax=sumay=sumaxy=sumax2=0;
for (i=0;i<n;i++)
main() {
{
//Declaracion de variables
int n,i;
float m,b,sumax,sumay,sumaxy,sumax2; /* suma de los produtos*/
float x[N],y[N]; sumaxy += x[i]*y[i];
/* suma de los valores de x^2*/
// Pedimos la cantidad de puntos sumax2 += x[i]*x[i];
printf("\n==>Este es un programa creado por maria paz sandoval<== "); /*suma de los valores de x*/
printf("\n"); sumax += x[i];
printf("\n==>Programa en C que calcula la Regresion Lineal<== "); /*suma de los valores de y*/
printf("\n"); sumay += y[i];

}
printf("\nIngrese la Cantidad de puntos: "); /* Calculamos la pendiente (m) y la interseccion (b)*/
scanf("%d",&n);
m = (n*sumaxy - sumax*sumay) / (n*sumax2 - sumax*sumax);
// mostramos los puntos para pedir el peso y la estatura b = (sumay - m*sumax) / n;
for (i=0;i<n;i++)
{ // Mostramos los valores de la pendiente y de la interseccion
printf("\nPunto==> %d: \tPeso : ",i+1); printf("\n\npendiente(m) = %f \nInterseccion(b) = %f\n\n",m,b);
scanf("%f",&y[i]);
printf(" \tEstatura : ",i+1); // la formula para calcular la variable dependiente(Y) es:
scanf("%f",&x[i]); printf("\n\nValor de la variable dependiente es Y = %f*X+ (%f)\n\n",m,b);

} system("pause");
}

27
Programa en Python
i=0
n=0
while n<3:
n = int(raw_input("\n\nCuantos puntos tiene la funcion a lineaizar: "))

horizontal=vertical=range(n)
while (i<n):
print "\n"
horizontal[i]=float(raw_input("x["+str(i)+"]="))
print horizontal[i]
vertical[i]=float(raw_input("y["+str(i)+"]="))
print vertical[i]

i=i+1

print "\n"
i=0
while (i<n):
print horizontal[i], vertical[i], "\n"
i=i+1

i=0
SUMx=SUMy=SUMxy=SUMxx=a=b=0.0

while (i<n):
print SUMx, SUMy, SUMxy, SUMxy, "\n"
SUMx = SUMx + horizontal[i]
SUMy = SUMy + vertical[i]
SUMxy = SUMxy + (horizontal[i]*vertical[i])
SUMxx = SUMxx + (horizontal[i]*horizontal[i])
i =i+1

print SUMx, SUMy, SUMxy, SUMxy, "\n"


a = ( (SUMx*SUMy) - (n*SUMxy) ) / ( (SUMx*SUMx) - (n*SUMxx) )
b = ( SUMy - (a*SUMx) ) / n

print a,"x",
if b>=0:
print "+",
print b
************************************************** **************

28
Manejo de Cadenas
 Es el uso más común de arreglo unidimensional.
 En C y Java un string es un arreglo de caracteres
que terminan en un caracter nulo: ‘\0’.
 Se declaran como arreglos unidimensionales.
 Debe contener 1 carácter más que la cadena más
larga más larga que pueda contener.

TipDat cadena[6]; 0 1 2 3 4 5
\0

Puede contener hasta Caracter que marca el fin del string


5 caracteres
29
Programa String en C
#include <string.h>
#include <stdio.h>

int main(void){
char c1[64,c2[64];

printf("Ingrese un string:");
scanf("%s",c1);
printf("Ingrese un string:");
scanf("%s",c2);

printf("Longitudes: %d %\n",strlen(c1),strlen(c2));

if(!strcmp(c1,c2)) printf("Son iguales\n");


strcat(c1,c2);
printf("%s\n",c1);

Informática Aplicada al Medio Ambiente - Curso 99/00


return 0;
30
Programa en Java
// Código Java para ilustrar diferentes constructores y métodos String s4 = "Java desde Cero";
// de la clase String. System.out.println("Índice de Cero: " + s4.indexOf("Cero"));
class DemoMetodosString // Devuelve el índice dentro de la cadena de
{ // la primera aparición de la cadena especificada,
public static void main (String[] args) // comenzando en el índice especificado.
{ System.out.println("Índice de a = " + s4.indexOf('a',3));
String s= "JavadesdeCero"; // Comprobando la igualdad de cadenas
// o String s= new String ("JavadesdeCero"); Boolean out = "Java".equals("java");
// Devuelve la cantidad de caracteres en la Cadena. System.out.println("Comprobando la igualdad: " + out);
System.out.println("String length = " + s.length()); out = "Java".equals("Java");
// Devuelve el carácter en el índice i. System.out.println("Comprobando la igualdad: " + out);
System.out.println("Character at 3rd position = " out = "Java".equalsIgnoreCase("jaVA ");
+ s.charAt(3)); System.out.println("Comprobando la igualdad: " + out);
// Devuelve la subcadena del carácter índice i-ésimo int out1 = s1.compareTo(s2);
// al final de la cadena System.out.println("Si s1 = s2: " + out);
System.out.println("Substring " + s.substring(3)); // Conversión de cases
// Devuelve la subcadena del índice i a j-1. String palabra1 = "JavadesdeCero";
System.out.println("Substring = " + s.substring(2,5)); System.out.println("Cambiando a minúsculas: " + palabra1.toLowerCase());
// Concatena string2 hasta el final de string1. // Conversión de cases
String s1 = "Java"; String palabra2 = "JavadesdeCero";
String s2 = "desdeCero"; System.out.println("Cambiando a MAYÚSCULAS: " + palabra1.toUpperCase(
System.out.println("String concatenado = " + // Recortando la palabra
s1.concat(s2)); String word4 = " JavadesdeCero ";
// Devuelve el índice dentro de la cadena de System.out.println("Recortando la palabra: " + word4.trim());
// la primera aparición de la cadena especificada. // Reemplazar caracteres
String str1 = "YavadesdeCero";
System.out.println("String Original: " + str1);
String str2 = "YavadesdeCero".replace('Y' ,'J') ;
System.out.println("Reemplazando Y por J -> " + str2); 31
Programa en python
# Declaro las listas
lista_1 = ["Una","frase","formada","con","palabras"]
lista_2 = ["Otra","frase","con","otras","palabras"]
resultado = []

# Convierto la palabra a minúsculas y la agrego a la lista


for palabra in lista_1:
palabra_min = palabra.lower()
resultado.append(palabra_min)

# Comparo ambas listas y luego convierto a mínusculas


for a in lista_2:
if a not in lista_1:
palabra_min = a.lower()
resultado.append(palabra_min)

print resultado

32

S-ar putea să vă placă și