P2- Segundo Tema Asignatura: Lab. de Programación I. :

Anuncio
Prof. Élvido Batista. P2- Segundo Tema
Asignatura: Lab. de Programación I.
E-mail: [email protected]
Sitio web: elvido.jimdo.com **UTESA **
Funciones y Procedimientos
Esta es la parte de la programación estructurada que le da el nombre de “estructurada”, ya que es la
programación que permite dividir el problema en módulos, para resolver problemas. A dichos módulos se les
conoce como funciones y procedimientos.
Funciones tipo void o procedimientos
Las funciones tipo void o procedimientos las podemos entender como subprogramas o subrutinas que
realizan una tarea específica, pero que no devuelven ningún valor. Su sintaxis es así:
void nombre_del_procedimiento(parámetros)
{
bloque de instrucciones
}
En este caso, los parámetros son opcionales, de no haber parámetros, se recomienda poner la palabra
void entre los paréntesis.
/* Ejemplo de procedimiento */
#include <stdio.h>
void imprime_datos(char n[30])
{
printf("\nNombre...:%s",n);
}
main()
{char nombre[30];
clrscr();
printf("Teclee los datos de la persona...");
printf("\nNombre...:");scanf("%s",&nombre);
imprime_datos(nombre);
getch();
}
Funciones
La utilización de funciones reduce considerablemente la cantidad de código que se escribe en un
programa. Hablando de funciones, podemos distinguir dos tipos principales: las funciones simples y las
funciones con parámetros.
Funciones simples
Las funciones simples son aquellas que no reciben parámetros pero que pueden devolver un valor,
para declarar una función simple se debe especificar el tipo de dato que va a devolver (cualquier tipo de dato
en C). Ejemplo:
#include <stdio.h>
#include <conio.h>
int n,m;
int suma()
{
printf("Introduzca un entero...");
scanf("%d",&n);
printf("Introduzca otro entero...");
scanf("%d",&m);
return (m+n);
}
main()
{
clrscr();
1
printf("La suma es...%d",suma());
getch();
}
En este ejemplo, la función suma() que es de tipo entero, devuelve la suma de dos números capturados en
esa misma función, el valor de la suma se devuelve al main(), ya que fue la función que la llamó.
Funciones con parámetros
La utilización de funciones con parámetros es tal vez la forma más lógica de utilizar las funciones, no
son otra cosa que funciones que reciben valores o datos para poder calcular el valor que devolverán. Ejemplo:
#include <stdio.h>
int n,m;
int suma(int a, int b)
{
return (a+b);
}
main()
{
clrscr();
printf("Introduzca un entero...");
scanf("%d",&n);
printf("Introduzca otro entero...");
scanf("%d",&m);
printf("La suma es...%d",suma(n,m));
getch();
}
Paso de parámetros por valor
En este ejemplo, los valores para las variables n y
m se leen desde el main(), y se pasan a la función
suma() como parámetros. Observemos que los
nombres para los parámetros que recibe suma()
son a y b, esto se llama paso de parámetros por
valor...
En el ejemplo anterior, las variables que se leen en el main() se llaman n y m, mientras que los valores
que recibe la función suma() se llaman a y b, esto es un paso de parámetros por valor, o paso de parámetros
por copia, ya que la función suma() copia los valores de n y m en a y b, respectivamente. Pero existe otro tipo
de paso de parámetros y es el llamado paso de parámetros por referencia...
Paso de parámetros por referencia
En el paso de parámetros por valor, la función que recibe los parámetros copia el valor de esos
parámetros en variables propias de la función, mientras que en el paso de parámetros por referencia, la
función que recibe dichos parámetros, no recibe valores, sino direcciones (punteros).
FUNCIONES PARA EL MANEJO DE CADENAS
La función strcpy()
La función strcpy() copia una cadena completa a otra posición de memoria, su sintaxis es:
strcpy(cad1,cad2);
Donde cad1 es una cadena que recibe el valor o contenido de cad2, que puede ser una variable o constante.
Función de concatenación
La función strcat()
La concatenación significa unión de cadenas, es decir, la unión de dos cadenas, su sintaxis es la
siguiente: strcat(cad1,cad2);
2
Esta función une dos cadenas, cad1 y cad2, quedando cad2 sin cambio, mientras que cad1 contiene a
cad2 unida al final.
Ejemplo:
#include <stdio.h>
#include <string.h>
char cad1[30], cad2[30],cad3[50]="Valor inicial + ";
main()
{
clrscr();
printf("Teclee una cadena original...: ");
gets(cad2);
strcpy(cad1,cad2);
printf("Valor copiado a la cadena 1 es..: %s\n",cad1);
printf("La cadena original 2 es ........: %s\n",cad2);
getch();
strcat(cad3,cad2);
printf("La cadena 3 con su agregado es %s \n",cad3);
sleep(4);
}
La función strlen ()
Devuelve el número de caracteres que almacena cad (sin contar el nulo final).
La función strupr ()
Convierte cad a mayúsculas. La función no tiene efecto sobre los caracteres que no sean letras minúsculas ni
sobre el conjunto extendido de caracteres ASCII (letras ñ, ç o vocales acentuadas).
La función strlwr ()
Convierte cad a minúsculas. La función no tiene efecto sobre los caracteres que no sean letras minúsculas ni
sobre el conjunto extendido de caracteres ASCII (letras ñ, ç o vocales acentuadas).
#include<stdio.h>
#include <string.h>
main()
{ char cad[30],cad1[30],cad2[30];
clrscr();
printf ("\nTeclee una frase: ");
gets (cad);
printf ("\nLa frase <<<%s>>> tiene %d caracteres", cad, strlen (cad));
printf ("\nTeclee una frase en mayúsculas: ");
gets (cad1);
printf ("\nLa cadena en minusculas es %s", strlwr (cad1));
printf ("\nTeclee una frase en minúsculas: ");
gets (cad2);
printf ("\nLa frase en mayusculas es %s", strupr (cad2));
sleep(5);
}
También existe un amplio conjunto de funciones que manejan caracteres individuales. La mayoría de estas
funciones informan del tipo de carácter incluido en su argumento devolviendo un valor 1 ó 0. Estas funciones
tienen su prototipo definido en ctype.h. Algunas de estas funciones se explican a continuación:
toupper (ch)
Devuelve el carácter ch en mayúscula. Si ch no es una letra minúscula la función
devuelve ch sin modificación.
3
tolower (ch)
isalpha (ch)
isdigit (ch)
islower (ch)
Devuelve el carácter ch en minúscula. Si ch no es una letra mayúscula la función
devuelve ch sin modificación.
Devuelve 1 si ch es una letra del alfabeto y 0 en caso contrario.
Devuelve 1 si ch es un dígito del 0 al 9, y 0 en caso contrario.
Devuelve 1 si ch es un letra minúscula y 0 en caso contrario.
isspace (ch)
ispunct (ch)
Devuelve 1 si ch es un espacio y 0 en caso contrario.
Devuelve 1 si ch es un signo de puntuación y 0 en caso contrario.
Ejemplo:
#include<stdio.h>
#include<ctype.h>
main()
{ char letra='a',otra='B';
clrscr();
letra=toupper(letra);
otra=tolower(otra);
printf("%c\t %c",letra,otra);
getch();
}
Otro ejemplo:
#include<stdio.h>
#include<ctype.h>
main()
{ char letra;
clrscr();
puts("Digite un caracter");
scanf("%c",&letra);
if isalpha(letra)
{
if islower(letra) printf("Es letra minuscula");
else
if isupper(letra) printf("Es letra mayuscula");
}
else
if isdigit(letra) printf("Es un digito");
else
if ispunct(letra) printf("Es signo de puntuacion");
else if isspace(letra) printf("Es un espacio");
getch();
}
4
Descargar