PDF de programación - FP04A - Más sobre subprogramas

Imágen de pdf FP04A - Más sobre subprogramas

FP04A - Más sobre subprogramasgráfica de visualizaciones

Actualizado el 15 de Junio del 2021 (Publicado el 17 de Noviembre del 2018)
625 visualizaciones desde el 17 de Noviembre del 2018
742,6 KB
8 paginas
Creado hace 11a (03/09/2013)
Fundamentos de la programación

4A

Grado en Ingeniería Informática
Grado en Ingeniería del Software
Grado en Ingeniería de Computadores
Facultad de Informática
Luis Hernández Yáñez
Universidad Complutense

Archivos como parámetros
La función main()
Argumentos implícitos
Sobrecarga de subprogramas

498
501
504
508

z
e
ñ
á
Y
 
z
e
d
n
á
n
r
e
H
 
s
i
u
L

Fundamentos de la programación: La abstracción procedimental (Anexo)

z
e
ñ
á
Y
 
z
e
d
n
á
n
r
e
H
 
s
i
u
L

z
e
ñ
á
Y
 
z
e
d
n
á
n
r
e
H
 
s
i
u
L

Fundamentos de la programación: La abstracción procedimental (Anexo)

Página 498

#include <iostream>
using namespace std;
#include <fstream>
void sumatorio_archivo(ifstream &arch, double &suma);
int main() {

double resultado;
ifstream archivo;
archivo.open("datos.txt");
if (!archivo.is_open()) {

cout << "ERROR DE APERTURA" << endl;

}
else {

}

sumatorio_archivo(archivo, resultado)
cout << "Suma = " << resultado << endl;
archivo.close();

return 0;

}

Fundamentos de la programación: La abstracción procedimental (Anexo)

Página 499

void sumatorio_archivo(ifstream &arch, double &suma) {

double dato;

suma = 0;
arch >> dato;

while (dato != ‐1) {

suma = suma + dato;
arch >> dato;

}

}

Los archivos siempre se pasan por referencia
Los archivos siempre se pasan por referencia

z
e
ñ
á
Y
 
z
e
d
n
á
n
r
e
H
 
s
i
u
L

z
e
ñ
á
Y
 
z
e
d
n
á
n
r
e
H
 
s
i
u
L

Fundamentos de la programación: La abstracción procedimental (Anexo)

Página 500

Fundamentos de la programación: La abstracción procedimental (Anexo)

Página 501

Comunicación con el sistema operativo

C:\>prueba cad1 cad2 cad3

int main(int argc, char *argv[])

Parámetros opcionales de la función main():
Para obtener datos proporcionados al ejecutar el programa:
Ejecuta prueba.execon tres argumentos (cadenas)
Parámetros de main():
— argc: número de argumentos que se proporcionan
4 en el ejemplo (primero: nombre del programa con su ruta)
— argv: array con las cadenas proporcionadas como argumentos

Fundamentos de la programación: La abstracción procedimental (Anexo)

Página 502

¿Cómo ha ido la función?

La función main()devuelve al S.O. un código de terminación
— 0: Todo OK
— Distinto de 0: ¡Ha habido un error!
Si la ejecución llega al final de la función main(), todo OK:

...
return 0; // Fin del programa

}

Fundamentos de la programación: La abstracción procedimental (Anexo)

Página 503

z
e
ñ
á
Y
 
z
e
d
n
á
n
r
e
H
 
s
i
u
L

z
e
ñ
á
Y
 
z
e
d
n
á
n
r
e
H
 
s
i
u
L

z
e
ñ
á
Y
 
z
e
d
n
á
n
r
e
H
 
s
i
u
L

z
e
ñ
á
Y
 
z
e
d
n
á
n
r
e
H
 
s
i
u
L

Fundamentos de la programación: La abstracción procedimental (Anexo)

Página 504

Valores predeterminados para parámetros por valor

Valor por defecto para un parámetro:
Tras un = a continuación del nombre del parámetro:
Si no se proporciona argumento, el parámetro toma ese valor
itoma el valor explícito 12
itoma el valor implícito (1)
Sólo puede haber argumentos implícitos en los parámetros finales:

void proc(int i = 1);

proc(12);
proc();

void p(int i, int j = 2, int k = 3); // CORRECTO
void p(int i = 1, int j, int k = 3); // INCORRECTO

Una vez asignado un valor implícito, todos los que siguen
Una vez asignado un valor implícito, todos los que siguen

han de tener también valor implícito
han de tener también valor implícito

Fundamentos de la programación: La abstracción procedimental (Anexo)

Página 505

Parámetros y argumentos implícitos
void p(int i, int j = 2, int k = 3);

Se copian los argumentos en los parámetros del primero al último
los que no tengan correspondencia tomarán los implícitos

void p(int i, int j = 2, int k = 3);
...

p(13); // i toma 13, j y k sus valores implícitos
p(5, 7); // i toma 5, j toma 7 y k su valor implícito
p(3, 9, 12); // i toma 3, j toma 9 y k toma 12

Los argumentos implícitos se declaran en el prototipo
(preferible) o en la cabecera del subprograma, pero NO en ambos

Fundamentos de la programación: La abstracción procedimental (Anexo)

Página 506

Por defecto, signo +
Por defecto, signo +
Por defecto, Δes 1
Por defecto, Δes 1

#include <iostream>
using namespace std;

double f(double x, double y, int signo = 1, double delta = 1.0);

int main() {

No podemos dejar signopor defecto
No podemos dejar signopor defecto
y concretar delta
y concretar delta

double x, y;
cout << "X = ";
cin >> x;
cout << "Y = ";
cin >> y;
cout << "signo y delta por defecto: " << f(x, y) << endl;
cout << "signo ‐1 y delta por defecto: " << f(x, y, ‐1) << endl;
cout << "signo y delta concretos: " << f(x, y, 1, 1.25) << endl;

return 0;

}

double f(double x, double y, int signo, double delta) {

return signo * delta * x / y;

}

Fundamentos de la programación: La abstracción procedimental (Anexo)

Página 507

z
e
ñ
á
Y
 
z
e
d
n
á
n
r
e
H
 
s
i
u
L

z
e
ñ
á
Y
 
z
e
d
n
á
n
r
e
H
 
s
i
u
L

z
e
ñ
á
Y
 
z
e
d
n
á
n
r
e
H
 
s
i
u
L

z
e
ñ
á
Y
 
z
e
d
n
á
n
r
e
H
 
s
i
u
L

Fundamentos de la programación: La abstracción procedimental (Anexo)

Página 508

Igual nombre, distintos parámetros

int abs(int n);
double abs(double n);
long int abs(long int n);

Funciones o procedimientos con igual nombre y distintos parámetros:
Se ejecutará la función que corresponda al tipo de argumento:
Para indicar que es un literal long int, en lugar de int
Para indicar que es un literal long int, en lugar de int

abs(13) 
abs(‐2.3)  // argumento double ‐‐> segunda función
abs(3L) 

// argumento int ‐‐> primera función

// argumento long int ‐‐> tercera función

Fundamentos de la programación: La abstracción procedimental (Anexo)

Página 509

char tmp;
tmp = x;
x = y;
y = tmp;

int main() {

#include <iostream>
using namespace std;

void intercambia(int &x, int &y);
void intercambia(double &x,
double &y);

void intercambia(char &x, char &y);

void intercambia(int &x, int &y) {

int tmp;
tmp = x;
x = y;
y = tmp;

}

void intercambia(double &x,

double &y) {

double tmp;
tmp = x;
x = y;
y = tmp;

z
e
ñ
á
Y
 
z
e
d
n
á
n
r
e
H
 
s
i
u
L

}

}

}

inter.cpp
inter.cpp

void intercambia(char &x, char &y) {

int i1 = 3, i2 = 7;
double d1 = 12.5, d2 = 35.9;
char c1 = 'a', c2 = 'b';
cout << i1 << " ‐ " << i2 << endl;
cout << d1 << " ‐ " << d2 << endl;
cout << c1 << " ‐ " << c2 << endl;
intercambia(i1, i2);
intercambia(d1, d2);
intercambia(c1, c2);
cout << i1 << " ‐ " << i2 << endl;
cout << d1 << " ‐ " << d2 << endl;
cout << c1 << " ‐ " << c2 << endl;
return 0;

Fundamentos de la programación: La abstracción procedimental (Anexo)

Página 510

Licencia CC (Creative Commons)

Este tipo de licencias ofrecen algunos derechos a terceras personas
bajo ciertas condiciones.
Este documento tiene establecidas las siguientes:
Reconocimiento (Attribution):
En cualquier explotación de la obra autorizada por la licencia
hará falta reconocer la autoría.
No comercial (Non commercial):
La explotación de la obra queda limitada a usos no comerciales.
Compartir igual (Share alike):
La explotación autorizada incluye la creación de obras derivadas
siempre que mantengan la misma licencia al ser divulgadas.
Pulsa en la imagen de arriba a la derecha para saber más.

Fundamentos de la programación: La abstracción procedimental (Anexo)

Página 511

z
e
ñ
á
Y
 
z
e
d
n
á
n
r
e
H
 
s
i
u
L
  • Links de descarga
http://lwp-l.com/pdf14240

Comentarios de: FP04A - Más sobre subprogramas (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad