Professional Documents
Culture Documents
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.
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
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];
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
.....................
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;
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 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
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));
print resultado
32