Librerias y Funciones en C
Librerias y Funciones en C
#include
clearerr
fgets
freopen
getchar
remove
sscanf
#include
abort
calloc
malloc
srand
#include
memchr
strcmp
strmcmp
strxfrm
#include
tolower
<stdio.h>
fclose
feof
fopen
formato
fscanf
fseek
gets
perror
rename
rewind
tmpfile
tmpnam
<stdlib.h>
abs
atexit
div
exit
mblen
mbstowcs
strtod
strtol
<string.h>
memcmp memcpy
strcoll
strcpy
strmcpy
strpbrk
ferror
fprintf
fsetpos
printf
scanf
ungetc
atof
free
mbtowc
strtoul
fflush
fputc
ftell
putc
setbuf
vfprintf
atoi
getenv
qsort
system
fgetc
fputs
fwrite
putchar
setybuf
vprintf
atol
labs
rand
wctomb
bsearch
ldiv
Realloc
strcat
strlen
strstr
strchr
strmcat
strtok
ceil
frexp
sinh
cos
ldexp
sqrt
cosh
log
tan
Gmtime
localtime
mktime
memmove memset
strcspn
strerror
strrchr
strspn
fgetpos
fread
getc
puts
sprintf
vsprintf
<ctype.h>
toupper
#include <locale.h>
localeconv setlocale
#include <math.h>
Acos
Asin
atan
atan2
Exp
Fabs
floor
fmod
log10
modf
pow
sin
tanh
#include <setjmp.h>
longjmp
setjmp
#include <signal.h>
raise
signal
#include <time.h>
asctime
clock
ctime
difftime
strftime
time
Otras librerias que no tienen funciones
y/o estructuras.
#include <assert.h>
#include <errno.h>
#include <float.h>
#include <limits.h>
#include <stdarg.h>
#include <stddef.h>
RESUMEN DE LIBRERIAS
assert.h Contiene una macro para el diagnstico dentro de los programas.
ctype.h Contiene varias funciones para comprobacin de tipos y
transformacin de caracteres.
errno.h Contiene varias macros usadas para informar de errores.
limits.h Contienen varias macros que definen constantes para el tamao de
tipo enteros.
float.h Contienen varias macros que definen constantes para el tamao de tipo
flotante.
locale.h Contienen varias macros, funciones y tipos para unidades locales,
como unidad monetaria, tiempo, dgitos, etc.
math.h Contiene una macro y varias funciones matemticas.
setjmp.h Contienen declaraciones que proporcionan una forma de evitar la
secuencia normal de llamada y regreso de funciones.
signal.h Contiene un tipo, dos funciones y varias macros para manejar
condiciones excepcionales que aparecen durante la ejecucin, tal como una seal
de interrupcin de una fuente externa o un error en la ejecucin.
stdarg.h Contiene un tipo y tres macros que proporcionan recursos para
recorrer una lista de argumentos de funcin de tamao y tipo desconocido.
stddef.h Contiene varios tipos y macros que tambin estn definidas en otras
libreras, como size_t.
stdio.h Contiene tipos, macros y funciones para la realizacin de tareas de E/S.
stdlib.h Contiene tipos, macros y funciones para la conversin numrica,
generacin de nmeros aleatorios, bsquedas y ordenacin, gestin de memoria
y tareas similares.
string.h Contiene tipos, macros y funciones para la manipulacin de cadenas
de caracteres.
time.h Contiene tipos, macros y funciones para la la manipulacin de
informacin sobre fechas y horas.
Funcionabilidad de la Funcin System, que pertenece a la librera <stlib.h>
Colores de Fondo
0 = Negro
1 = Azul
2 = Verde
3 = Aguamarina
4 = Rojo
5 = Prpura
6 = Amarillo
7 = Blanco
8 = Gris
9 = Azul claro
Colores de Fuente
a = Verde claro
b = Aguamarina claro
c = Rojo claro
d = Prpura claro
e = Amarillo claro
f = Blanco brillante
#include "stdio.h"
FUNCIONES
fclose
fopen,
Abre un fichero para lectura, para escritura/reescritura o para adicin.
freopen,
fdopen
remove
Elimina un fichero.
rename
rewind
Coloca el indicador de posicin de fichero para el stream apuntado por stream al comienzo
del fichero.
tmpfile
Crea y abre un fichero temporal que es borrado cuando cerramos con la funcin fclose().
clearerr Despeja los indicadores de final de fichero y de posicin de fichero para el stream apuntado
por stream al comienzo del fichero.
feof
ferror
fflush
fgetpos
fgetc
fgets
fputc
fputs
ftell
fseek
fsetpos
fread
fwrite
Enva, desde el array apuntado por puntero, hasta nmemb de elementos cuyo tamao es
especificado por tamao. El indicador de posicin de ficheros es avanzado por el nmero de
caracteres escritos correctamente. Si existe un error, el valor resultante del indicador de
posicin de ficheros es indeterminado.
getc
getchar
gets
Lee caracteres de entrada hasta que encuentra un salto de lnea, y los almacena en un nico
argumento.
printf,
Usados para imprimir salidas de datos.
fprintf,
sprintf
snprintf
vprintf
perror
putc
vfscanf,
vscanf,
vsscanf
setbuf
Esta funcin es equivalente a la funcin setvbuf pasando los valores _IOFBF para modo y
BUFSIZ para tamao, o (si acumulador es un puntero nulo), con el valor _IONBF para
modo.
setvbuf
Slo puede ser usada despus de que el stream apuntado por stream ha sido asociado con un
fichero abierto y antes de otra operacin cualquiera es llevada acabo al stream. El argumento
modo determina cmo stream ser almacenado segn lo siguiente: _IOFBF ocasiona la
entrada/salida a ser completamente almacenado; _IOLBF ocasiona la entrada/salida a
almacenar por lneas; _IONBF ocasiona la entrada/salida a no ser almacenado. Si
acumulador no es un puntero nulo, el array al que es apuntado puede ser usado en vez de la
acumulacin adjudicada por la funcin setvbuf. El argumento tamao especifica el tamao
del array.
tmpnam Genera una cadena de caracteres que es un nombre vlido para ficheros y que no es igual al
nombre de un fichero existente. La funcin tmpnam genera una cadena diferente cada vez
que es llamada, hasta un mximo de TMP_MAX veces. Si la funcin es llamada ms veces
que TMP_MAX, entonces el comportamiento de la funcin est definido segn la
implementacin del compilador.
puts
#include "stdlib.h"
atof (ascii to float)
atoi
strtod
strtol
strtoul
rand
srand
free
abort
atexit
exit
getenv
system
bsearch
qsort
abs, labs
valor absoluto
div, ldiv
#include <string.h>
memcpy copia n bytes entre dos reas de memoria que no deben solaparse
memmove copia n bytes entre dos reas de memoria; al contrario que memcpy las reas deben
solaparse
memchr busca un valor a partir de una direccin de memoria dada y devuelve un puntero a la
primera ocurrencia del valor buscado o null si no se encuentra
memcmp compara los n primeros caracteres de dos reas de memoria
memset
strcat
strncat
strchr
strrchr
strcmp
strcpy
strncpy
strerror
strlen
strspn
devuelve la posicin del primer carcter de una cadena que no coincide con ninguno de los
caracteres de otra cadena dada
strcspn
devuelve la posicin del primer carcter que coincide con alguno de los caracteres de otra
cadena dada
strpbrk
encuentra la primera ocurrencia de alguno de los caracteres de una cadena dada en otra
strstr
strtok
strxfrm
strrev
#include <ctype.h>
tolower: Convierte un carcter, en un parmetro entero ch, a
minscula.
arcocoseno
asien
arcoseno
atan
arcotangente
atan2
ceil
cos
coseno
cosh
coseno hiperblico
valor absoluto
floor
fmod
frexp
ldexp
log
logaritmo natural
log10
logaritmo en base 10
modf
pow(x,y)
sin
seno
sinh
seno hiperblico
sqrt
raz cuadrada
tan
tangente
tanh
tangente hiperblica
#include <setjmp.h>
longjmp: Restaura el entorno guardado por la invocacin ms
reciente de la funcin setjmp en la misma
invocacin del programa, con el argumento correspondiente entorno
setjmp: Guarda su entorno de llamadas en el argumento entorno
para uso posterior por la funcin longjmp
#include <signal.h>
raise: La funcin enva la seal seal al programa en ejecucin.
signal:La funcin signal retorna el valor de func para la llamada ms
reciente a signal para la seal especificada, seal, si la operacin fue
realizada con xito
#include <time.h>
char * asctime(struct Recibe una variable de tipo puntero a estructura tm (struct tm*) y devuelve
tm *)
una cadena de caracteres
char * ctime(time_t *) Recibe una variable de tipo puntero a time_t (time t*) y devuelve una cadena
con el mismo formato que asctime()
double
Recibe dos variables de tipo time_t, calcula su diferencia y devuelve el
difftime(time_t, time t) resultado (double) expresado en segundos.
struct tm
*gmtime(time_t *)
struct tm
*localtime(time_t *)
fecha/hora LOCAL.
#include <assert.h>
#include <errno.h>
#include <float.h>
#include <limits.h>
#include <stdarg.h>
#include <stddef.h>
RESUMEN DE LIBRERIAS
assert.h Contiene una macro para el diagnstico dentro de los
programas.
ctype.h Contiene varias funciones para comprobacin de tipos
y transformacin de caracteres.
errno.h Contiene varias macros usadas para informar de
errores.
#include <stdio.h>
void main()
{
printf("Hola");
}
777777777777777
#include <stdio.h>
main()
{
printf("Hola");
return 0;
}
777777777777777777777777
mira:
int funcion(int x)
{
if (x==8) {cout<<"mi valor es"<<x;return 1;}
x=8;
cout<<"mi valor es"<<x;
getch();
return 0;
}
observa que el return se utiliza para cortar una funcin cuando llega a un resultado
satisfactorio.....
o continuar hasta que lo haga
observa:
void funcion(int x)
{
if (x==8) {cout<<"mi valor es"<<x;return;}
x=8;
cout<<"mi valor es"<<x;
getch();
return;
}
como la funcion es void no retorna nada y tambien podemos cortarla cuando queramos... esto
sirve bastante y nos ahorra en cierta forma la mamera de los if largos hasta el final como por
ejemplo:
void funcion(int x)
{
if (x==8) {cout<<"mi valor es"<<x;}
else
{
x=8;
cout<<"mi valor es"<<x;
}
getch();
777777777777777777777777777777777777777777777777777777
main ()
{
...
...
return 0;
}
le ests diciendo a tu programa que si en la funcin principal no se regresa ese valor, se marque
un error de ejecucin, ya que hubo algn error en el programa. Pero cuando utilizas:
void main ()
{
...
...
}
el programa cuando tenga un error de ejecucin, no le importar ese error y no marcar nada.
Espero esto te haya aclarado tu duda.
system() es una funcin del lenguaje de programacin C incluida en su biblioteca estndar, dentro
de la cabecera <stdlib.h>. Sirve para ejecutar subprocesos o comandos del sistema operativo.
system permite ejecutar a su vez otras funciones como: cls, dir o pause. Por
ejemplo, al escribir system ("pause") se est incorporando una pausa en el programa, es
decir, que se espera a que el usuario presione alguna tecla para continuar con la ejecucin
del mismo. La siguiente lnea de cdigo no se ejecutar hasta que el usuario presione una
tecla.
A continuacin se muestra un ejemplo sencillo de programa en C en el que se incluye la
funcin system ("pause"):
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
int main(void)
{
printf("Hola, mundo.\n");
system("pause");
return 0;
}
Funcin getchar()
Esta funcin es equivalente a la funcin getch(), pertenece a la librera
stdio.h la cual es estndar del lenguaje C, y por ello se recomienda su
uso (aunque si es necesario utilicen las dos anteriores), ejemplo.#include <stdio.h>
int main()
{
char caracter;
printf("Ingrese un caracter \n");
caracter = gecthar();
printf("\n El caracter que ingreso es %c", caracter);
return 0;
}
variable, por este motivo vamos a crear una, les dejo el cdigo
completo.#include <stdio.h>
int main()
{
unsigned int contador = 128; // 2^(n - 1)
for(contador; contador > 0, contador >> 1){
if(contador & numero){
printf("1");
} else {
printf("0");
}
}
}
Cuando el valor de la variable entre al bucle for por cada ciclo que este
complete el contador se desplazara un bit a la derecha hasta recorrer
todo el valor de la variable numero (en binario).
Con este sencillo procedimiento ya podemos obtener el valor binario de
una variable, ejecutamos el programa anterior buscando el valor binario
de 5 y -5.-
este
es
el
valor
binario
de
num1
11111011
este
es
el
valor
binario
de
num2
Operador ^ or exclusivo
Este operador compara el primer bit del primer operando con el primer
bit del segundo operando, si uno de los bit es 0 y el otro 1 establece el
este
es
el
valor
binario
de
num1
11111011
este
es
el
valor
binario
de
num2
Operador | or inclusivo
Este operador compara el primer bit del primer operando con el primer
bit del segundo operando, si uno de los dos bit 1 establece el bit a 1, en
caso contrario lo establece en 0, terminando esta comparacin sigue con
el segundo bit de cada operando y asi sucesivamente hasta terminar,
ejemplo.// Declaramos las variables
char num1 = 5;
char num2 = -5;
// Utilizamos el operador |
char resultado = num1 | num2;
este
es
el
valor
binario
de
num1
11111011
este
es
el
valor
binario
de
num2
{
cuadrado = vector[i] * vector[i] ;
cubo = pow (vector[i], 3) ;
desv = vector [i] - prom ;
printf ("%.2lf", vector[i] ) ;
printf (" \t%.2lf", cuadrado) ;
printf (" \t%.2lf", cubo) ;
printf (" \t%.2f\n", desv) ;
}
system("pause");
return(0);
}
Nota que los valores fueron declarados de tipo double no enteros, por el tamao
de los valores que se generan en los clculos.
Ejemplo 2:
El siguiente programa lee 5 valores de teclado y los guarda en un arreglo a. Luego
los escribe.
#include stdio.h>
#include stdlib.h>
main()
{
int a[5],i,num;
for(i=0; i<5;i++){
printf("Digite el numero:\n");
scanf("%d",&num);
a[i]=num;
}
printf("\nEscribiendo el arreglo con los datos leidos:\n\n");
for(i=0; i<5;i++){
printf("a[%d]= %d\n\n",i,a[i]);
}
system("pause");
return 0;
}
Ejemplo 3:
El siguiente programa, pide 5 numeros y calcula los cubos de ellos, los cuales son
guardados en un arreglo y son desplegados.
#include stdio.h>
#include stdlib.h>
#include math.h>
main()
{
int i;
double a[5], num;
for (i=0; i<5; i++)
{
printf("\n Digite numero:");
scanf("%lf", &num);
a[i]=num;
}
printf("_________________________________________\n");
printf("Los cubos de los numeros leidos son:\n");
for (i=0; i<5; i++){
a[i]=pow(a[i],3);
printf("%.0lf\n",a[i]);
}
printf("\n");
system("pause");
return 0;
}
EJERCICIOS:
Ejercicio 1:
Digite, compile y ejecute el siguiente programa.
#include stdio.h>
#include stdlib.h>
main()
{
int a,b=0;
int c[10]={1,2,3,4,5,6,7,8,9,0};
for (a=0;a<10;++a)
if ((c[a]%2)==0) b+=c[a];
printf("%d\n",b);
system(pause);
return 0;
}
Qu hace el programa? __________________________________________
_______________________________________________________________
Cul es la salida? _______
Ejercicio 2:
Digite, compile y ejecute el siguiente programa.
#include stdio.h>
#include stdlib.h>
main()
{
int a,b=0;
int c[10]={1,2,3,4,5,6,7,8,9,0};
for (a=0;a<10;++a)
if ((a%2)==0)b+=c[a];
printf("%d\n",b);
system(pause);
return 0;
}
Qu hace el programa? __________________________________________
_______________________________________________________________
Cul es la salida? _______
En qu se diferencia del ejemplo anterior? ____________________________
_______________________________________________________________
Ejercicio 3
Elabore un programa que sume los primeros 25 nmeros enteros guardados en un
vector. Se desea imprimir la lista de nmeros y al final la suma de los mismos.
Ejercicio 4
Generar e imprimir un vector de 10 nmeros enteros y encontrar el mayor de
ellos. Desplegar el resultado.
Ejercicio 5
Dadas dos listas A y B de igual nmero de elementos, se desea generar e imprimir
una lista C conteniendo las sumas: A[i] + B[i] = C[i]
PUBLICADO POR SALOMONAQUINO EN 20:36 47 COMENTARIOS:
DOMINGO, 23 DE SEPTIEMBRE DE 2007
Clase 10: Estructuras de datos y arreglos.
Materia: Lgica Computacional
Profesor: Lic. Salomn Aquino.
Objetivos de la clase:
Al final de la clase los alumnos y alumnas sern capaces de:
Asimilar los conceptos generales de estructuras de datos y arreglos.
Resolver problemas usando arreglos en una dimensin (vectores).
Introduccin:
Todas las variables que se han considerado hasta ahora son de tipo simple. Una
variable de tipo simple consiste de una sola caja de memoria y slo puede
contener un valor cada vez.
Una variable de tipo estructurado consiste en toda una coleccin de casillas de
memoria.
Los tipos de datos estudiados: entero, real, alfabtico son considerados como
datos de tipo simple, puesto que una variable que se define con alguno de estos
tipos slo puede almacenar un valor a la vez, es decir, existe una relacin de uno
a uno entre la variable y el nmero de elementos (valores) que es capaz de
almacenar.
En cambio un dato de tipo estructurado, como el arreglo, puede almacenar ms
Arreglos unidimensionales:
Estn formados por un conjunto de elementos de un mismo tipo de datos que se
almacenan bajo un mismo nombre, y se diferencian por la posicin que tiene cada
elemento dentro del arreglo de datos.dentro del arreglo, los programas
especifican el nombre de ste y el nmero del elemento, colocndolo dentro de
Para acceder a valores especficos del arreglo, use un valor de ndice que apunte
al elemento deseado. Por ejemplo, para acceder al primer elemento del arreglo
calificaciones debe utilizar el valor de ndice 0 (calificaciones[0]).
Los programas en C++ siempre indizan el primer elemento de un arreglo con 0 y
el ltimo con un valor menor en una unidad al tamao del arreglo.
Inicializacin y asignacin de valores:
Como se deca anteriormente, antes de utilizar un arreglo es necesario
inicializarlo:
Para inicializar todos los elementos de una vez, se colocan dentro de una
estructura for que va del primer elemento al ltimo que contiene el arreglo.
Para asignar un valor a un elemento del arreglo se hace por ejemplo:
Calificaciones[0] <- 100;
Cuando se usan arreglos, una operacin comn es usar una variable ndice para
acceder a los elementos de un arreglo. Suponiendo que la variable ndice I
contiene el valor 3, la siguiente instruccin asigna el valor 400 a valores[3]:
valores[I] <- 400;
Partes de un arreglo:
Los componentes. Hacen referencia a los elementos que forman el arreglo, es
decir, a los valores que se almacenan en cada una de las casillas del mismo.
Los ndices. Permiten hacer referencia a los componentes del arreglo en forma
individual, especifican cuntos elementos tendr el arreglo y adems, de qu
modo podrn accesarse esos componentes.
Operaciones con vectores:
Las operaciones que se pueden realizar con vectores durante el proceso de
resolucin de un problema son:
Lectura/ escritura
Asignacin
Actualizacin ( insercin, eliminacin, modificacin)
Recorrido (acceso secuencial)
Ordenacin
Bsqueda
Lectura y escritura de vectores:
Lectura
El proceso de lectura de un arreglo consiste en leer y asignar un valor a cada uno
main ( )
{
int n , contar=1;
float x , promedio , suma=0;
printf ("Cuantos nmeros desea leer?: ");
scanf ("%d",&n);
while (contar <= n) {
printf ("x= ");
scanf ("%f",&x);
suma +=x;
++contar;
}
promedio=suma/n;
printf ("\nEl promedio es: %.2f\n",promedio);
system(pause);
return 0;
}
Solucion en DO-WHILE
#include stdio.h>
#include stdlib.h>
main ( )
{
int n, contar = 1;
float x, promedio, suma = 0;
printf ("Cuantos numeros?: ");
scanf ("%d",&n);
do {
printf("x= ");
scanf ("%f", &x);
suma +=x;
++contar;
} while (contar <= n);
promedio = suma/n;
printf ("\nEl promedio es: %.2f\n",promedio);
system(pause);
return 0;
}
Ejemplo 3 : Uso de centinelas
En el ejemplo se introducen notas mientras que sta sea distinta de centinela, al
final imprime cuntas notas se ingresaron, su suma y un mensaje de final. Nota se
ha declarado de tipo entero.
#include stdio.h>
#include stdlib.h>
main()
{
const int centinela = -1;
int nota,suma=0;
int cuenta =0;
printf("Introduzca primera nota:\n");
scanf("%d",a);
while (nota != centinela)
{
cuenta++;
suma+= nota;
printf("Introduzca la siguiente nota:\n");
scanf("%d",a);
}
printf("la suma es: %d\n",suma);
printf("la cuenta fue: %d\n", cuenta);
puts("final");
system(pause);
return 0;
}
Ejemplo 4: Uso de centinelas.
Elabore un programa para solicitar el nombre, apellido, edad y la nota promedio
de 5 estudiantes de un curso de computacin, el programa debe realizar la
peticin de los datos hasta que se hallan completado los datos.
Solucin:
#include stdio.h>
#include conio.h>
#include stdlib.h>
main()
{
int op,edad;
float nota;
char nombre[20], apellido[20];
op=1;
while (op<=5)
{
system("cls");
if(op==5)
{
printf("\n\n\t");
printf("ESTE ES EL ULTIMO ALUMNO");
}
printf("\n\n\t");
printf("REGISTRO DE ALUMNO # %d",op);
printf("\n\n\t\t");
printf ("Nombre: ");
scanf ("%s",nombre);
printf("\n\n\t\t");
printf ("Escriba su Apellido: ");
scanf ("%s",apellido);
printf("\n\n\t\t");
printf ("Escriba su Edad: ");
scanf ("%d",&edad);
printf("\n\n\t\t");
printf ("Escriba su Nota Promedio: ");
scanf ("%f",a);
++op;
}
system("cls");
printf("\n\n\n\t");
printf ("\nE L P R O G R A M A H A T E R M I N A D O\n");
system("pause");
return 0;
}
Nota: Este ejemplo aplica el uso de tabuladores para ordenar la informacin
Ejemplo 5: Uso de banderas.
El siguiente programa utiliza un juego de adivinacin de un nmero, indicando las
veces que se necesitan para encontrar el valor de 77. Note el uso de la
instruccin continue que provoca que se ignoren todas las instrucciones que
siguen a dicha instruccin.
La instruccin while (!iadivinado) indica que mientras sea verdadero que entre al
bucle, esto es porque la variable iadivinado se inicializ a FALSO. Esta variable es
la bandera del programa, en el momento en que el usuario digite el nmero 77, la
bandera cambia a verdadero y la condicin del bucle deja de ser verdadera y se
sale.
Observa tambin que se definieron dos constantes para que la comparacin sea
numrica, ya que decimos que verdadero vale 1 y falso vale cero, al escribir por
ejemplo, la palabra VERDADERO, en realidad, lo que toma la variable es el valor
de 1.
#include
#include
#define VERDADERO 1
#define FALSO 0
int main()
{
int inumero_correcto,iadivinado;
int ivalor_introducido,inumero_intentos;
inumero_correcto=77;
iadivinado=FALSO;
inumero_intentos=0;
while (!iadivinado){
printf("por favor, introduzca el numero de la suerte:");
scanf("%d", &ivalor_introducido);
inumero_intentos++;
if(ivalor_introducido== inumero_correcto)
iadivinado=VERDADERO;
else
continue;
printf ("Usted ha necesitado %d intentos para adivinarlo!\n", inumero_intentos);
}
system("pause");
return 0;
}
EJERCICIOS:
Ejercicio 1:
Escriba un programa que calcule el resultado de todos los nmeros del uno al cien
(1+2+3+4......).
Ejercicio 2:
Escriba un programa que genere las tablas de multiplicar del 1 al 10.
Ejercicio 3:
Haga un programa que pida el nmero de alumnos de una clase y luego debe
permitir ingresar los nombres de dichos alumnos.
Ejercicio 4:
Una compaa de seguros tiene contratados a n vendedores. Cada uno hace tres
ventas a la semana. Su poltica de pagos es que un vendedor recibe un sueldo
base y un 10% extra por comisiones de sus ventas.
El gerente de la compaa desea saber cunto dinero obtendr en la semana cada
vendedor por concepto de comisiones y cunto tomando en cuenta su sueldo
base y sus comisiones
Ejercicio 5:
Haga un programa usando bucle do-While, que pida nmeros y luego calcule la
media de esos nmeros. El usuario debe introducir los datos hasta que escriba 1
para finalizar la lectura.
Ejercicio 6:
Escriba un programa usando banderas para imprimir y sumar los trminos de la
serie 2,5,7,10,12,15....50. Nota que a la serie se le suma 2 y a veces 3. (Puedes
auxiliarte del algoritmo visto en clase terica)
Ejercicio 7:
Elabora el programa que escriba los nmeros del 1 al 100 excepto el nmero 25.
Utiliza la funcin continue.
PUBLICADO POR SALOMONAQUINO EN 19:59 17 COMENTARIOS:
DOMINGO, 16 DE SEPTIEMBRE DE 2007
Clase 9: Estructura Mientras y Repetir.
Materia: Lgica Computacional
Profesor: Lic. Salomn Aquino.
Objetivos de la clase:
Al final de la clase los alumnos y alumnas sern capaces de:
1) Aplicar las estructuras mientras y repetir, en la solucin de problemas.
2) Entender y aplicar el uso de centinelas y banderas.
Estructura Mientras (While):
Se llama Mientras a la estructura algortmica que se ejecuta mientras la
Representacin en pseudocodigo:
Mientras:
Mientras
Acciones
Fin_mientras
Repetir:
Repetir
Acciones
Hasta que
EJEMPLO:
Calcular la suma de los cuadrados de los primeros 100 nmeros enteros y escribir
el resultado.
Solucin estructura Repetir:
Centinelas:
En un ciclo While controlado por tarea, la condicin de While especifica que el
cuerpo del ciclo debe continuar ejecutndose mientras la tarea no haya sido
completada.
En un ciclo controlado por centinela el usuario puede suspender la introduccin
de datos cuando lo desee, introduciendo una seal adecuada llamada centinela.
Un ciclo Repetir controlado por centinela es cuando el usuario digita una letra
para salir como por ejemplo S o N para indicar si desea continuar o no. El bucle
debe repetirse hasta que la respuesta del usuario sea n o N.
Cuando una decisin toma los valores de 1 o algn posible valor que no est
dentro del rango vlido en un momento determinado, se le denomina centinela y
su funcin primordial es detener el proceso de entrada de datos en una corrida de
programa.
Por ejemplo, si se tienen las calificaciones de un test (comprendida entre 0 y
100); un valor centinela en esta lista puede ser 999, ya que nunca ser una
Fin
Fin de la clase.
Gracias por asistir.
PUBLICADO POR SALOMONAQUINO EN 21:38 2 COMENTARIOS:
LUNES, 10 DE SEPTIEMBRE DE 2007
Practica 8: Ejercicios con Estructura FOR.
Materia: Lgica Computacional.
Profesor: Lic. Salomn Aquino.
Objetivos. Al finalizar la prctica los estudiantes sern capaces de:
Resolver Problemas usando estructuras desde con contadores y acumuladores.
Repeticin: El bucle For.
Es el bucle ms adecuado para implementar bucles controlados por contador que
son bucles en los que un conjunto de sentencias se ejecutan una vez por cada
valor de un rango especificado.
Es quiz la ms frecuente estructura usada para crear ciclos en C. Esta sentencia
incluye una expresin que especifica el valor inicial de un ndice, otra expresin
que determina cundo se contina o no el bucle y una tercera expresin que
permite que el ndice se modifique al final de cada pasada.
De forma general el ciclo FOR se representara as:
for ( [valor inicial]; [valor final]; [incremento o decremento])
sentencia;
Y en el caso que el ciclo FOR est compuesto por ms de una lnea de sentencias
se escribira as:
for ([valor inicial]; [valor final]; [incremento o decremento])
{
sentencia 1;
sentencia 2;
sentencia N;
}
La inicializacin indica una variable (variable de control) que condiciona la
repeticin del bucle. Si hay ms, van separadas por comas:
for (a=1,b=100;a!=b;a++,b- -){
Normalmente se utilizan los bucles For siempre que exista un nmero necesario y
predefinido de iteraciones.
Ejemplo 1:
El siguiente ejemplo muestra como utilizar el for para mostrar un listado de
nmeros del 1 al 15.
#include stdio.h>
#include stdlib.h>
main ()
{
int i;
int n;
for (n=0; n<100; n+=20)
printf("%d \t %d \n", n, n*n);
system(pause);
return 0;
}
Otros ejemplos:
1) int c;
for (c=A; c<=Z; c++)
printf("%c", c);
2) for (i=9; I>=0; I-=3)
printf("%d", (i*i));
3) for (i=1; i<100; I*=2)
printf("%d", i);
4) # define MAX 25
int i,j;
for (i=0, j=MAX; i<=j; i++,j--)
printf("%d", (i+2*j));
5) double p;
for (p=0.75; p<=5; p+=0.25)
printf(la respuesta es: %.21f,p);
6) double x;
for (x=pow(y,3.0); x>2.0; x=sqrt(x))
printf(x vale %.5e,x);
Naturalmente, cuando la variable de control no es de tipo int, se tendrn menos
garantas de precisin.
Se debe tener cuidado con el uso de las condiciones del bucle For, ya que
debemos estar seguros de que en algn momento el bucle terminar y no que
seguir ejecutndose infinitamente. Por eso no es recomendable modificar la
condicin de incremento como parte de las instrucciones del cuerpo del ciclo, o se
corre el riesgo de que se vuelva infinito.
Para abortar un bucle infinito se presiona CTRL + C
La sentencia Continue hace que la ejecucin de un bucle vuelva a la cabecera del
bucle.
Ejemplo:
#include stdio.h>
#include stdlib.h>
int main()
{
int clave,i;
puts ("introduzca -9 para finalizar");
clave =1;
for (i=0; i<8; i++){
if (clave== -9) continue;
scanf("%d", &clave);
printf("clave %d\n",clave);
}
printf("valores finales i=%d clave=%d", i,clave);
system(pause);
return 0;
}
Ejemplo 6
El siguiente ejemplo nos pide una cadena de 10 caracteres y nos muestra dicha
cadena en forma invertida.
/* Uso de la sentencia FOR. */
#include stdio.h>
#include stdlib.h>
#define ctam_array 10
int main ()
{
int idespl;
char carray[ctam_array];
printf("Escriba una palabra de 10 espacios:\n");
for (idespl=0; idespl carray[idespl]=getchar();
for (idespl=ctam_array -1; idespl>=0;idespl--)
putchar(carray[idespl]);
printf("\n");
system("pause");
return 0;
}
EJERCICIOS
Desarrolla los siguientes programas:
1. Escriba un programa que pida N nmeros y nos diga cul es el mayor y cul es
el menor y la posicin en que fueron leidos cada uno.
2. Escriba un programa que pida las notas y nombres de cinco alumnos y calcule
el promedio general.
3. Escriba un programa que presente en pantalla la tabla de multiplicar entre 1 y
10, requerida por el usuario.
4. Escribir un programa que visualice un tringulo issceles de 10 filas, como se
muestra a continuacin:
*
**
***
****
*****
******
*******
********
*********
**********
Estructura Desde/Para
Ejemplo: i = i + 1
Acumulador: Es una variable que suma sobre s misma un conjunto de valores
para de esta manera tener la suma de todos ellos en una sola variable.
La diferencia entre un contador y un acumulador es que mientras el primero va
aumentando de uno en uno, el acumulador va aumentando en una cantidad
variable.
Representacin: +
Ejemplo de contador y acumulador:
Fin de la clase.
Gracias por asistir.
PUBLICADO POR SALOMONAQUINO EN 22:29 3 COMENTARIOS:
LUNES, 3 DE SEPTIEMBRE DE 2007
Solucion a ejercicios
Ejercicio 1:
#include iostream.h>
#include stdlib.h>
#include stdio.h>
int main()
{
float venta, comision;
printf("introduzca la cantidad vendida: ");
scanf("%f",&venta);
printf("\n");
if ((venta>=2000 && venta <=10000))
comision = venta*0.07;
else
if (venta>10000 && venta <=20000)
comision = venta * 0.1;
else
if (venta>20000)
comision = venta *0.15;
else
printf("valor menor de 2000\n");
printf("la comision es: %.2f \n",comision);
system("PAUSE");
return 0;
}
Ejercicio 2:
#include iostream.h>
#include stdlib.h>
#include stdio.h>
int main()
{
int a,b;
printf("introduzca el valor de a: ");
scanf("%f",&a);
printf("\n");
printf("introduzca el valor de b: ");
scanf("%f",&b);
printf("\n");
if (a==b)
printf(" a = b \n");
else
{
printf(" no son iguales \n");
if (a > b)
printf("a > b \n");
else
printf("a < b \n");
}
system("PAUSE");
return 0;
}
Ejercicio 4:
#include iostream.h>
#include stdlib.h>
#include stdio.h>
int main()
{
float a, b, r;
int opc=0;
char ch;
printf("introduzca el valor de a: ");
scanf("%f",&a);
printf("\n");
printf("introduzca el valor de b: ");
scanf("%f",&b);
printf("\n");
printf( "Elige el numero en el menu:\n\n" );
printf( "1 - Sumar\n" );
printf( "2 - Restar\n" );
printf( "3 - Multiplicar\n" );
printf( "4 - Dividir\n" );
fflush(stdin);
//opc= getchar();
//printf("opc = %d \n",opc);
ch = getchar();
switch (ch) {
case ('1'):
r = a+b;
break;
case ('2'):
r = a - b;
break;
case ('3'):
r = a * b;
break;
case ('4'):
r = a / b;
break;
default:
printf("La opcion No. %c no esta definida\n", ch);
}
printf("el resultado es : %f \n",r);
system("PAUSE");
return 0;
}