PDF de programación - Herramientas para mejorar el estilo de programación en C++

Imágen de pdf Herramientas para mejorar el estilo de programación en C++

Herramientas para mejorar el estilo de programación en C++gráfica de visualizaciones

Publicado el 28 de Febrero del 2019
562 visualizaciones desde el 28 de Febrero del 2019
33,4 KB
4 paginas
Creado hace 20a (24/06/2003)
HERRAMIENTAS PARA MEJORAR EL ESTILO DE



PROGRAMACIÓN EN C++

2. Funciones



A diferencia de los procedimientos, las
funciones después de ejecutar un conjunto de

Bruno López Takeyas

Instituto Tecnológico de Nuevo Laredo

Reforma Sur 2007, C.P. 88070, Nuevo Laredo, Tamps. México

http://www.itnuevolaredo.edu.mx/takeyas
E-mail: [email protected]



Resumen: El presente documento tiene como
objetivo crear conciencia de
los programadores de
lenguaje C/C++ sobre el aprovechamiento de los recursos
que proporciona el lenguaje y el compilador para mejorar
el estilo de programación y facilitar la depuración y
corrección de
los programas. Para este efecto se
mencionan temas de suma importancia : Uso de subrutinas,
procedimientos, funciones, manejo de variables locales y
globales,
compilación
condicional y la forma de crear y usar encabezados
diseñados por el programador.

argumentos,

parámetros



Básicamente una Subrutina es un segmento de
código que se escribe sólo una vez pero puede
invocarse o ejecutarse muchas veces. Existen dos
tipos: Procedimientos y Funciones.


o

Subrutinas



? Procedimientos

? Funciones



1. Procedimientos



Son un tipo de subrutina que ejecuta un
conjunto de acciones sin devolver valor alguno como
resultado de dichas operaciones. Estos se identifican
por su declaración void().

P. ejem.
void Rutina(void);
void TAREA(void);


1

acciones devuelven sólo un valor del tipo usado en la
declaración de ésta por medio de return().

P. ejem.
int SUMA(void); // Devuelve un valor de
tipo entero

float CALCULA(void); // Devuelve un
valor de tipo real



3. Limitación de return()

La cláusula return() sólo devuelve un valor. Si

se desea que la función devuelva más de un valor
debe usarse otro mecanismo (uso de apuntadores).



4. Variables locales y

globales



Las variables que se declaran dentro de una
subrutina se llaman locales mientras que las variables
globales se conocen a través del programa entero y
se pueden usar en cualquier segmento de código
manteniendo su valor. Se pueden declarar variables
globales declarándolas fuera de cualquier función.
Cualquier función puede acceder a ellas sin tener en
cuenta en qué función esté dicha expresión.



5. Usando argumentos para
pasar datos a subrutinas



El mecanismo para enviar información a las

subrutinas es llamado argumento (algunos autores lo

conocen como parámetro) y son los datos que se
colocan entre paréntesis al invocarlas.
P. ejem.


*y+=5;
cout << "\n\n\n\r Valor modificado de y=" << *y;
return;
}


int PROCESO(int x, float y)

Fig. 1.- Paso de argumentos por referencia


1400
1401
1402
1403
1404
1405


Memoria RAM


3



1401


x



y

Fig. 2.- Apuntadores como receptores de direcciones


la Fig. 3 muestra una
típica de envío de argumentos por

El programa de

aplicación
referencia: el ordenamiento de un arreglo.

/*
Programa para ordenar un arreglo (pasandolo por
referencia)

Autor: M.C. Bruno Lopez Takeyas

2



7. Paso de argumentos por

referencia

Existen dos formas de pasar argumentos a una
subrutina: por valor y por referencia. Hasta este punto
sólo se ha analizado el envío de valores, pero
también se puede enviar la dirección de memoria de
una variable a una subrutina.



Todos los arreglos se pasan por
referencia a una subrutina

TIP

En el ejemplo de la Fig. 1 se muestra una
variable x de tipo entero, que se pasa por referencia
(se manda su dirección de memoria) a un
procedimiento llamado RUTINA, quien recibe dicha
dirección con una variable apuntador a un valor
entero (y). La variable y recibe la dirección donde se
aloja el valor de x y esto provoca que cuando se
modifica lo que apunta y (valor de x), indirectamente
se modifica el valor de x. Esto se refleja en memoria
como lo indica la Fig. 2.


Argumentos



Se pueden enviar varios argumentos a una
subrutina, sin embargo es necesario precisar que
deben estar declaradas las variables receptoras en el
orden
tipo de dato
apropiado.



indicado considerando el

6. Recibiendo un valor de

una función



Una vez que se

función es
necesario utilizar la variable capaz de recibir el valor
calculado por ésta, la cual debe ser del mismo tipo de
la función. P. Ejem.

invoca una



a=PROCESO(3, 5.25);



// un argumento (apuntador a


en el caso anterior, la variable “a” recibe el valor
calculado por la función “PROCESO”, quien acepta
los argumentos 3 y 5.25 respectivamente.

/*
Programa para el paso de argumentos por
referencia

Autor: M.C. Bruno Lopez Takeyas
*/

#include <conio.h>
#include <iostream.h>

void RUTINA(int *y); // Declaracion del
procedimiento RUTINA que acepta

un entero)

void main(void)
{
int x=3;

clrscr();
cout << "\n\r Antes de la rutina x=" << x;

RUTINA(&x); // Envio de la direccion de “x” como
argumento

cout << "\n\n\n\r Despues de la rutina x=" << x;

getch();
return;
}

void RUTINA(int *y)
{
cout << "\n\n\n\r Valor recibido por y=" << *y;





// arreglo

// de un arreglo

// para ordenarlo en

*/

#include <conio.h>
#include <stdio.h>
#include <iostream.h>

#define TOP 10 // Cantidad de elementos en el
arreglo

void SORTEADOR(int B[TOP]); // Declaracion del
que acepta el arreglo B

forma ascendente

void IMPRIME(int B[TOP]); // Procedimiento que
imprime los elementos


void main(void)
{
int A[TOP]={3,5,6,7,8,0,2,9,1,4}; // Declaracion
e inicializacion del


original

clrscr();

cout << "\n\rArreglo antes de sortearlo ...";
IMPRIME(A); // Imprime los elementos del arreglo
A antes de sortearlo

SORTEADOR(A); // Procedimiento para ordenar el
arreglo A en forma ascendente

cout << "\n\n\n\rArreglo despues de sortearlo
...";
IMPRIME(A); // Imprime los elementos del arreglo
A despues de sortearlo
getch();
return;
}

void IMPRIME(int B[TOP])
{
int i; // Variable local

printf("\n\r");
for(i=0;i<TOP;i++)
printf("%2d ",B[i]);
return;
}

void SORTEADOR(int B[TOP])
{
int i,j,aux; // Variables locales

for(i=0;i<TOP-1;i++)
for(j=i+1;j<TOP;j++)
if(B[i]>B[j])
{


elementos

}
return;
}

aux=B[i];
B[i]=B[j]; // Intercambio de

B[j]=aux;



Fig. 3.- Sorteador de un arreglo

3



8. Compilación condicional



#elif,

#else,

#endif,

Las directivas del preprocesador #if, #ifdef,
#ifndef,
compilarán
selectivamente varias porciones de un programa. La
idea general es que si la expresión después de #if,
#ifdef o #ifndef es cierta, entonces el código que
está entre una de las precedentes y un #endif se
compilará; de lo contrario se saltará. La directiva
#endif marca el final de un bloque #if. El #else se
puede usar con cualquiera de los anteriores de
manera similar a las sentencias else e if. El programa
de la Fig. 4 ilustra el us o de estas directivas.



// captura de los

// Si se omite esta

// de un segmento de

/*
Programa para mostrar la forma de compilar
condicionalmente un programa

Autor: M.C. Bruno Lopez Takeyas
*/

#include <conio.h>
#include <stdio.h>
#include <iostream.h>

#define CAPTURAR_ELEMENTOS // Bandera para
activar/desactivar la compilacion

codigo

definicion, se cancela la

elementos desde el teclado

#define TOP 10 // Cantidad de elementos en el
arreglo

void SORTEADOR(int B[TOP]); // Declaracion del
que acepta el arreglo B

forma ascendente

void IMPRIME(int B[TOP]); // Procedimiento que
imprime los elementos


void main(void)
{
#ifdef CAPTURAR_ELEMENTOS
int A[TOP];
int i;
#else if
int A[TOP]={3,5,6,7,8,0,2,9,1,4}; //
Declaracion e inicializacion del


original
#endif CAPTURAR_ELEMENTOS

clrscr();

#ifdef CAPTURAR_ELEMENTOS
for(i=0;i<TOP;i++)
{

// para ordenarlo en

// de un arreglo

// arreglo



printf("\n\rA[%d] ? ",i);
cin >> A[i];
}
#endif CAPTURAR_ELEMENTOS

cout << "\n\rArreglo antes de sortearlo ...";
IMPRIME(A); // Imprime los elementos del arreglo
A antes de sortearlo

SORTEADOR(A); // Procedimiento para ordenar el
arreglo A en forma ascendente

cout << "\n\n\n\rArreglo despues de sortearlo
...";
IMPRIME(A); // Imprime los elementos del arreglo
A despues de sortearlo
getch();
return;
}

void IMPRIME(int B[TOP])
{
int i; // Variable local


printf("\n\r");
for(i=0;i<TOP;i++)
printf("%2d ",B[i]);
return;
}

void SORTEADOR(int B[TOP])
{
int i,j,aux; // Variables locales

for(i=0;i<TOP-1;i++)
for(j=i+1;j<TOP;j++)
if(B[i]>B[j])
{


elementos

}
return;
}

aux=B[i];
B[i]=B[j]; // Intercambio de

B[j]=aux;



Fig. 4.- Compilación condicional

9. Encabezados creados por
el programador (archivos
*.h)



Los archivos de encabezados

(también
conocidos como archivos “include”) son de texto tal
como los que codifica el programador usando el editor
de programas de Turbo C++. Regularmente se
encuentran almacenados en el
subdirectorio
\INCLUDE. Es posible colocar estatutos en el listado
de programas que no son código de programación
sino mensajes para el compilador. Estos mensajes
llamados “directivas del compilador”,
informan al

compilador de definiciones de
frases. Ciertas
directivas del compilador se agrupan en l
  • Links de descarga
http://lwp-l.com/pdf15375

Comentarios de: Herramientas para mejorar el estilo de programación en C++ (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