0% encontró este documento útil (0 votos)
527 vistas47 páginas

Librerias y Funciones en C

El documento resume las principales bibliotecas de cabecera en C y sus funciones. Algunas bibliotecas como <stdio.h>, <stdlib.h> y <string.h> contienen muchas funciones para E/S, manipulación de cadenas y números aleatorios. Otras bibliotecas como <ctype.h>, <locale.h> y <math.h> contienen funciones para conversiones de caso, locales y operaciones matemáticas respectivamente. Finalmente, bibliotecas como <setjmp.h>, <signal.h> y <time.h> definen

Cargado por

Guadalupe
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOC, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
527 vistas47 páginas

Librerias y Funciones en C

El documento resume las principales bibliotecas de cabecera en C y sus funciones. Algunas bibliotecas como <stdio.h>, <stdlib.h> y <string.h> contienen muchas funciones para E/S, manipulación de cadenas y números aleatorios. Otras bibliotecas como <ctype.h>, <locale.h> y <math.h> contienen funciones para conversiones de caso, locales y operaciones matemáticas respectivamente. Finalmente, bibliotecas como <setjmp.h>, <signal.h> y <time.h> definen

Cargado por

Guadalupe
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOC, PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 47

LIBRERIAS EN LENGUAJE 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>

asociadas. Pero tienen macros constantes

#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

Cierra un fichero a travs de su puntero.

fopen,
Abre un fichero para lectura, para escritura/reescritura o para adicin.
freopen,
fdopen
remove

Elimina un fichero.

rename

Cambia al fichero de nombre.

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

Comprueba el indicador de final de fichero.

ferror

Comprueba el indicador de errores.

fflush

Si stream apunta a un stream de salida o de actualizacin cuya operacin ms reciente no era


de entrada, la funcin fflush enva cualquier dato an sin escribir al entorno local o a ser
escrito en el fichero; si no, entonces el comportamiento no est definido. Si stream es un
puntero nulo, la funcin fflush realiza el despeje para todos los streams cuyo
comportamiento est descrito anteriormente.

fgetpos

Devuelve la posicin actual del fichero.

fgetc

Devuelve un carcter de un fichero.

fgets

Consigue una cadena de caracteres de un fichero.

fputc

Escribe un carcter en un fichero.

fputs

Escribe una cadena de caracteres en un fichero.

ftell

Devuelve la posicin actual del fichero como nmero de bytes.

fseek

Sita el puntero de un fichero en una posicin aleatoria.

fsetpos

Cambia la posicin actual de un fichero.

fread

lee diferentes tamaos de datos de un fichero.

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

Devuelve un carcter desde un fichero.

getchar

Igual que getc.

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

Tambin utilizado para imprimir salidas.

perror

Escribe un mensaje de error a stderr.

putc

Devuelve un carcter de un fichero.

putchar, Igual que putc(stdout).


fputchar
scanf,
fscanf,
sscanf

Utilizado para introducir entradas.

vfscanf,
vscanf,
vsscanf

Tambin utilizado para introducir entradas.

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

Imprime una de cadena de caracteres.

#include "stdlib.h"
atof (ascii to float)

cadena de caracteres a coma flotante

atoi

cadena de caracteres a entero

atol (C Standard Library) (ascii to


long)

cadena de caracteres a entero tamao largo

strtod

cadena de caracteres a coma flotante tamao doble

strtol

cadena de caracteres a entero largo

strtoul

cadena de caracteres a entero largo sin signo (positivo)

rand

Genera un nmero pseudo-aleatorio

srand

Establece la semilla para el generador de nmeros pseudoaleatorios

malloc, calloc, realloc

Reservan memoria dinmica del heap

free

Liberan memoria devolvindola al heap

abort

terminar ejecucin anormalmente

atexit

registrar una funcin callback callback para la salida del


programa

exit

terminar ejecucin del programa

getenv

recuperar una variable de entorno

system

ejecutar un comando externo

bsearch

bsqueda binaria en un array

qsort

ordena un vector usando quicksor

abs, labs

valor absoluto

div, ldiv

divisin entera o euclidiana

#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

sobre escribe un rea de memoria con un patrn de bytes dado

strcat

aade una cadena al final de otra

strncat

aade los n primeros caracteres de una cadena al final de otra

strchr

localiza un carcter en una cadena, buscando desde el principio

strrchr

localiza un carcter en una cadena, buscando desde el final

strcmp

compara dos cadenas alfabticamente ('a'!='A')

strncmp compara los n primeros caracteres de dos cadenas numricamente ('a'!='A')


strcoll

compara dos cadenas segn la colacin actual ('a'=='A')

strcpy

copia una cadena en otra

strncpy

copia los n primeros caracteres de una cadena en otra

strerror

devuelve la cadena con el mensaje de error correspondiente al nmero de error dado

strlen

devuelve la longitud de una cadena

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

busca una cadena dentro de otra

strtok

parte una cadena en una secuencia de tokens

strxfrm

transforma una cadena en su forma de colacin (??)

strrev

invierte una cadena

#include <ctype.h>
tolower: Convierte un carcter, en un parmetro entero ch, a
minscula.

toupper: Convierte un carcter, en un parmetro entero ch, a


mayscula
#include <locale.h>
localeconv: La funcin localeconv asigna los componentes de un
objeto con tipo struct lconv con valores apropiados para el
formateo de cantidades numricas (monetarias y otras) segn las
reglas de la localidad actual.
setlocale La funcin setlocale selecciona la porcin apropiada de la
localidad del programa especificado por los argumentos
categoria y localidad. La funcin setlocale puede ser usada para
cambiar o preguntar la localidad actual total del
programa o porciones de ello.
#include <math.h>
acos

arcocoseno

asien

arcoseno

atan

arcotangente

atan2

arcotangente de dos parmetros

ceil

menor entero no menor que el parmetro

cos

coseno

cosh

coseno hiperblico

exp(double x) funcin exponencial, computa ex


abs

valor absoluto

floor

mayor entero no mayor que el parmetro

fmod

residuo de la division de flotantes

frexp

fracciona y eleva al cuadrado.

ldexp

tamao del exponente de un valor en punto flotante

log

logaritmo natural

log10

logaritmo en base 10

modf

obtiene un valor en punto flotante ntegro y en


partes

pow(x,y)

eleva un valor dado a un exponente, xy

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

clock_t clock (void)

Devuelve el nmero de pulsos de reloj desde que se inici el proceso

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 *)

Recibe un puntero a una variable de tiempo (time_t*) y devuelve su


conversion como fecha/hora UTC a struct tm a travs de un puntero.

struct tm

Similar funcionalidad a gmtime(), pero devuelve la conversin como

*localtime(time_t *)

fecha/hora LOCAL.

time_t mktime(struct_ Inversamente a gmtime() y localtime(),l recibe un puntero a struct tm (struct


tm *)
tm*) y devuelve su conversin al tipo time t.
time_t time(time_t *) Devuelve la fecha/hora (time_t) actual o -1 en caso de no ser posible. Si el
argumento que se le pasa no es NULL, tambin asigna la fecha/hora actual a
dicho argumento.
size_t strftime(char
*,size_t,char *,struct
tm *)

Formatea la informacin pasada mediante la estructura (struct tm*) mediante


el formato indicado en una cadena (char*) e imprime el resultado sobre otra
cadena (char*) hasta un lmite de caracteres (size_t).

Otras librerias que no tienen funciones asociadas. Pero tienen


macros constantes 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 un 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.

#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;
}

Las funciones getch(), getche() y getchar() nos sirve para capturar un


solo carcter ingresado por medio del teclado, pero aunque las 3
funciones tienen el mismo propsito pertenecen a diferentes libreras y
difieren un poco en su funcionamiento.

Funciones getch() y getche()


Estas funciones pertenecen a la librera conio.h, hablando un poco sobre
esta, cabe destacar que no es una librera estndar del lenguaje C, fue
desarrollada originalmente para el compilador Borland y debido a este
detalle no todos los compiladores cuentan con esta librera, en nuestro
caso en el IDE codeblocks si se puede utilizar.
La funcin getch() lee u obtiene un solo carcter ingresado desde el
teclado, este carcter no es mostrado en pantalla al ingresarlo
(tendramos que utilizar un printf() para mostrarlo) y al terminar de
pulsar la tecla se ejecuta inmediatamente la instruccin siguiente,
ejemplo.#include <stdio.h>
#include <conio.h>
int main()
{
char caracter;
printf("Ingrese un caracter \n");
caracter = gecth();
printf("\n El caracter que ingreso es %c", caracter);
return 0;
}

Nota: en la lnea char caracter; cabe destacar que utilizamos una


variable del tipo char, no profundizaremos en este tema por el momento,
solo lo utilizamos para el ejemplo.

La funcin getche() obtiene el mismo resultado que la funcin getch(),


con la diferencia de que si se muestra el carcter al momento de
presionar la tecla, ejemplo.#include <stdio.h>
#include <conio.h>
int main()
{
char caracter;
printf("Ingrese un caracter \n");
caracter = gecthe();
printf("\n El caracter que ingreso es %c", caracter);
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;
}

A diferencia de la funcin gecth(), esta funcin necesita que se presione


enter despus de ingresar el carcter para que se ejecute la siguiente
instruccin.

En este articulo aprenderemos a utilizar los operadores a nivel de bit en


el lenguaje C, el manejo de bits es una de las herramientas mas
potentes del lenguaje C, ya que nos permiten manejar internamente, es
decir bit a bit, las variables o mejor dicho sus valores.

Operadores a nivel de bit


Los operadores a nivel de bit solo se puede utilizar con valores
numricos y estos deben ser enteros (no se pueden utilizar nmeros con
decimales), por tal motivo solo se podrn utilizar los siguientes tipos de
datos.char 1byte (8bits)
int 2 bytes (16 bits)
Y tambin cabe mencionar que los nicos modificadores de datos que se
pueden utilizar son short y unsigned, los operadores a nivel de bit son
los siguientes.& operador and bit a bit.
^ operador or exclusivo.
| operador or inclusivo.
>> recorrer bits a la derecha.
<< recorrer bits a la izquierda.
Para entender mejor el funcionamiento de los operadores a nivel de bit
vamos a trabajar con los valores de las variables pero utilizando su
similar en binario, solo hay una dificultad con el lenguaje C, y es que no
tiene una funcin nativa para poder mostrar el valor binario de una

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");
}
}
}

La variable que llamamos contador, como su nombre lo indica nos


servir de contador, el numero 128 nos indica el numero de bits a
mostrar, y este numero lo sacamos elevando el numero 2 a la n potencia
menos 1, donde n es el numero de bits a utilizar, por ejemplo tenemos
una variable tipo char, por lo tanto es una variable de tamao de 8 bits,
la formula quedara asi 2^ (8 - 1) y resumindola mas quedara asi 2^7
(que es equivalente a 2 x 2 x 2 x 2 x 2 x 2 = 128).
Ahora vamos a recorrer bit a bit la siguiente variable.// Esta variable la declaramos antes de la variable contador
char numero = 5;

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.-

El valor binario de 5 es 11111011


El valor binario de -5 es 00000101
Bien, ya teniendo los valores binarios de estos nmeros ya podemos
comenzar a explicar los operadores a nivel de bit.

Operador & and bit a bit


Este operador compara el primer bit del primer operando con el primer
bit del segundo operando, si los dos bit son igual a 1 el bit se establece
en un uno, en caso contrario el bit se establece a 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;

La lectura del ejemplo anterior seria la siguiente.00000101

este

es

el

valor

binario

de

num1

11111011

este

es

el

valor

binario

de

num2

-----------00000001 resultado despus de utilizar el operador &


El valor de la variable resultado seria 1 y el valor binario seria 00000001,
lo podemos comprobar utilizando un printf para mostrar el valor normal
y despus con el programa que creamos obtener el valor binario de 1.

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

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;

La lectura del ejemplo anterior seria la siguiente.00000101

este

es

el

valor

binario

de

num1

11111011

este

es

el

valor

binario

de

num2

-----------11111110 resultado despus de utilizar el operador ^


El valor de la variable resultado seria -2 y el valor binario seria
11111110, lo podemos comprobar utilizando un printf para mostrar el
valor normal y despus con el programa que creamos obtener el valor
binario de -2.

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;

La lectura del ejemplo anterior seria la siguiente.00000101

este

es

el

valor

binario

de

num1

11111011

este

es

el

valor

binario

de

num2

-----------11111111 resultado despus de utilizar el operador |


El valor de la variable resultado seria -1 y el valor binario seria
11111111, lo podemos comprobar utilizando un printf para mostrar el
valor normal y despus con el programa que creamos obtener el valor
binario de -1.

Operador >> desplazar bits a la derecha


Este operador nos permite desplazar 1 o mas bits a la derecha de un
valor binario, veamos un ejemplo de como funciona.// Declaramos una variable
char numero = 5;
// Desplazamos un bit a la derecha
char resultado = numero >> 1;
// Imprimimos el resultado
printf("%i", resultado);

Si ejecutamos el cdigo anterior el programa nos dar como resultado un


2, esto es debido a que en realidad lo que hace este operador es dividir
el valor de la variable entre 2, si recordamos un poco explicbamos al
principio del articulo que los operadores a nivel de bit no aceptan valores
decimales, entonces la divisin de 5 (valor de la variable numero) entre
2 nos da un 2.5 este valor se redondea para obtener un entero y nos da
un 2 que en binario seria 00000010.

Operador << desplazar bits a la izquierda


Este operador nos permite desplazar 1 o mas bits a la izquierda de un
valor binario, veamos un ejemplo de como funciona.// Declaramos una variable
char numero = 5;
// Desplazamos un bit a la derecha
char resultado = numero << 1;
// Imprimimos el resultado
printf("%i", resultado);

Ejecutamos el cdigo anterior y veremos que el resultado obtenido es un


10, esto es debido a que el operador lo que hace es multiplicar por 2 el
valor de la variable y el valor binario seria 00001010.
. Objetivo. Al finalizar la prctica el estudiante ser capaz de:
Definir estructuras de datos y arreglos.
Utilizar arreglos en una dimensin para resolver problemas.
II. Introduccin Terica.
Los Arreglos (Vectores o Array)
Un array (lista o tabla9 es una secuencia de datos del mismo tipo. Los datos se
llaman elementos del array y se numeran consecutivamente 0, 1, 2, 3, ,, etc.
Estos nmeros se denominan valores ndice o subndice del array. El tipo de
elementos almacenados en el array pueden ser cualquier tipo de dato de C,
incluyendo estructuras definidas por el usuario.
Entonces, podemos entender los arrays (tambin conocidos como arreglos o
formaciones) como variables que contienen diferentes tipos de datos
homogneos. Se puede acceder a cada elemento de datos individual de la
variable mediante un subndice, o ndice. En los lenguajes C y C++, un array no
se corresponde con un tipo de dato estndar; en su lugar, se trata de un tipo
agregado que se obtiene a partir de otros tipos de datos. Es posible tener un array
de cualquier cosa: caracteres, enteros, nmeros en coma flotante, arrays, etc.
Un array se declara de modo similar a otros tipos de datos, excepto que se debe
indicar al compilador el tamao o longitud del array. Para indicar al compilador el
tamao o longitud del array se debe hacer seguir al nombre, el tamao encerrado
entre corchetes.
Los arrays tienen cuatro propiedades bsicas:
Los elementos individuales de datos de un array se denominan elementos.
Todos los elementos deben ser del mismo tipo de dato.
Todos los elementos se almacenan en posiciones contiguas de la memoria de la
computadora y el subndice (o ndice) del primer elemento es cero.
El nombre de un array es un valor constante que representa la direccin del

primer elemento del array.


Para acceder a un elemento especifico del array, se utiliza el nombre de ste
seguido por uno o ms ndices (donde cada uno representa una dimensin del
arreglo o array) encerrado entre corchetes. Supongamos que tenemos un arreglo
unidimensional llamado X con un tamao de n elementos, su esquema grafico
es el siguiente:

Como puede verse en el esquema, aunque el arreglo es de n elementos, en


realidad tienen n-1 elementos porque comienzan a enumerarse desde cero.
En trminos generales para definir un array se especifica el tipo de
almacenamiento (atributo opcional), el tipo de datos, el identificador y entre
corchetes el tamao del arreglo. Abajo se muestra algunos ejemplos de definicin
de arreglos:
a) int num[100]; (un array de 100 enteros)
b) char apellido[25]; (un array de 25 caracteres)
c) float prom[30]; (un array de 30 coma flotante)
d) char contrasena[16]; (un array de 16 caracteres)
La necesidad de definir arrays en funcin de constantes
A veces es conveniente definir el tamao de un array en trminos de una
constante, en lugar de estar especificando una cantidad entera fija. Esto se
realiza por facilidad de mantenimiento. Por ejemplo, suponga que tenemos un
programa (con 350 lneas de cdigo) donde se halle un array de 20 items, y a lo
largo del programa se hace referencia unas 12 veces al arreglo, y supongamos
tambin que se necesita cambiar el tamao del arreglo. Sin usar la constante se
tendra que revisar todo el programa para localizar las lneas de cdigo y efectuar
el cambio al nuevo tamao, en cambio con el uso de constantes slo se le cambia
el tamao a la misma y el problema esta resuelto. La definicin de un array a
travs de una constante se muestra en el siguiente ejemplo:
# include stdio.h>
# include stdlib.h>
/* Definicin de la constante */
#define tamano 20
main()
{
/* Utilizacin de la constante para definir la dimensin del arreglo */
int promedios[tamano];
/* Leer valores utilizando la variable i como contador dentro del ciclo FOR y ++i
como acumulador*/
for (i=0; i < tamano; ++i)
scanf(%d,&promedios[i]);
.....
.....
}
La utilizacin de constantes definidas garantiza que las siguientes referencias al

array no sobrepasen el tamao definido para el mismo.


C no comprueba que los ndices del array estn dentro del rango definido.
Inicializacin de arreglos
En ciertas circunstancias puede ser necesario darle valores iniciales a los arreglos,
para ello basta con colocar entre llaves el conjunto de valores deseados
separados por comas y en el orden requerido. A continuacin se muestran
algunos ejemplos:
a) int cant[6]={12,-3,0,15,8};
b) double DesvTipica[8]={0.23, 3.1416, -0.5, 2.16789, -56.78, 25, 0.15, -14 };
c) char meses[12]={E, F, M, A, M, J, J, A, S, O, N, D};
Para el caso del arreglo cant es como tener:
Cant[0]=12
Cant[1]= -3
Cant[2]=0
Cant[3]=15
Cant[4]=8
Cuando los elementos del arreglo no tienen asignados valores iniciales explcitos,
stos son puestos a cero, a continuacin tenemos un ejemplo:
int edades[8]={25,13,18};
El resultado de la asignacin seria el siguiente:
Edades[0]=25;
Edades[1]=13;
Edades[2]=18;
Edades[3]=0;
Edades[4]=0;
Edades[5]=0;
Edades[6]=0;
Edades[7]=0;
Este mtodo de inicializar arrays mediante valores constantes despus de su
definicin, es adecuado cuando el nmero de elementos del arreglo es pequeo.
Una nota interesante en cuanto a la inicializacin de arreglos, es que el tamao
no necesita ser indicado explcitamente. Con los arrays numricos el tamao ser
fijado igual al nmero de valores incluidos. En cuanto a las cadenas, el tamao se
fijar igual al nmero de caracteres del string o cadena mas uno (el carcter nulo
\0).
C puede dejar los corchetes vacos, slo cuando se asignan valores al array, tal
como
int cuenta[ ] = { 15, 25, -45 , 0 , 50 };
char c[ ] = { L, u, i, s }; /* declara un array de 4 elementos */
El compilador asigna automticamente cinco elementos a cuenta.
Otros ejemplos:
a) Int porcent[ ]={8, 6, 10, -15, 23};
b) Char mes[ ]=octubre;

que vienen siendo equivalente a:


Porcent[0]=8;
porcent[1]=6;
porcent[2]=10;
porcent[3]= -15;
porcent[4]=23;
mes[0]=o;
mes[1]=c;
mes[2]=t;
mes[3]=u;
mes[4]=b;
mes[5]=r;
mes[6]=e;
mes[7]=\0
Ejemplo 1:
Elabore un programa que permita leer una lista de nmeros en un arreglo, calcule
la suma, promedio, cuadrado , cubo y desviacin estndar de los mismos:
#include stdio.h>
#include stdlib.h>
#include conio.h>
#include math.h>
#define tam 4
/* programa para calcular la suma, promedio, cuadrado, cubo y desviacin
estandar de una serie de nmeros */
main ( )
{
double vector[tam],cuadrado, cubo;
float prom, desv,suma=0;
int i, j;
system("cls" );
printf ("PROGRAMA PARA CALCULAR \n");
printf(" PROMEDIO, SUMA, CUADRADO, CUBO Y DESV. EST.\n\n") ;
//Captura de valores y suma de los mismos
for(i = 0 ; i < tam ; ++i)
{
printf ("num [%d] = " , i) ;
scanf ("%lf" , &vector[i]) ;
suma+= vector[i] ;
}
prom = suma / tam ;
printf (" \n El promedio de los numeros es: %4.2f\n ", prom) ;
//Calculo e impresin de cuadrado, cubo y desviacin estandar
printf(" \n \n NUMERO CUADRADO CUBO DESV. EST.\n");
for( i = 0 ; i < tam ; ++i )

{
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

de un elemento (valor) a la vez, con la condicin de que todos los elementos


deben ser del mismo tipo, es decir, que se puede tener un conjunto de datos
enteros, reales, etc.
Estructuras de datos:
Estructura de Datos es una coleccin de datos que se caracterizan por su
organizacin y las operaciones que se definen en ella.
Los datos de tipo estndar pueden ser organizados en diferentes estructuras de
datos: estticas y dinmicas.
Estructura de Datos estticas:
Son aquellas en las que el espacio ocupado en memoria se define en tiempo de
compilacin y no puede ser modificado durante la ejecucin del programa.
Corresponden a este tipo los arrays y registros
Estructuras de Datos Dinmicas:
Son aquellas en las que el espacio ocupado en memoria puede ser modificado en
tiempo de ejecucin.
Corresponden a este tipo las listas, rboles y grafos .
Estas estructuras no son soportadas en todos los lenguajes.
La eleccin de la estructura de datos idnea depender de la naturaleza del
problema a resolver y, en menor medida, del lenguaje.
Las estructuras de datos tienen en comn que un identificador, nombre, puede
representar a mltiples datos individuales.
Arreglos o Arrays:
Un arreglo (array) es una coleccin de datos del mismo tipo, que se almacenan en
posiciones consecutivas de memoria y reciben un nombre comn. Para referirse a
un determinado elemento de un array se deber utilizar un ndice, que
especifique su posicin relativa en el array.
Un arreglo es una coleccin finita, homognea y ordenada de elementos.
Finita:Todo arreglo tiene un lmite; es decir,debe determinarse cul ser el nmero
mximo de elementos que podrn formar parte del arreglo.
Homognea: Todos los elementos del arreglo deben ser del mismo tipo.
Ordenada: Se puede determinar cul es el primer elemento, el segundo, el
tercero,.... y el n-simo elmento.
Los arreglos se clasifican de acuerdo con el nmero de dimensiones que tienen.
As se tienen los:
Unidimensionales (vectores)
Bidimensionales (tablas o matrices)
Multidimensionales (tres o ms dimensiones)
Tipos de arreglos:

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

corchetes, como en calificacin[3].


Al declarar un arreglo, se debe inicializar sus elementos antes de utilizarlos.
Para declarar un arreglo tiene que indicar su tipo, un nombre nico y la cantidad
de elementos que va a contener. Por ejemplo, las siguientes instrucciones
declaran tres arreglos distintos:
Float costo_partes[50];
Int edad_empleados[100];
Float precios_acciones[25];
Ejemplo de arreglo unidimensional:

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

de sus elementos. Normalmente se realizan con estructuras repetitivas, aunque


pueden usarse estructuras selectivas.
Usamos los ndices para recorrer los elementos del arreglo:
desde i = 1 hasta 70 hacer
leer ( arre[i])
fin_desde
Escritura:
Es similar al caso de lectura, slo que en vez de leer el componente del arreglo, lo
escribimos.
leer (N)
desde i = 1 hasta N hacer
escribir (arre[i])
fin_desde
Asignacin e Inicializacin de vectores:
Asignacin:
No es posible asignar directamente un valor a todo el arreglo; sino que se debe
asignar el valor deseado en cada componente. Con una estructura repetitiva se
puede asignar un valor a todos los elementos del vector.
Por ejemplo:
arre[1] <- 120 (asignacin de un valor constante nico a una casilla del vector)
arre[3] <- arre[1] / 4 (asignar una operacin)
Se puede asignar un valor constante a todos los elementos del vector:
desde i = 1 hasta 5 hacer
arre[i] <- 3
fin_desde
O bien
arre <- 3 (con arre del tipo arreglo)
Inicializacin
Para inicializar con cero todos los elementos del arreglo:
desde i = 1 hasta 70 hacer
arre[i] <- 0
fin_desde
Acceso secuencial y Actualizacin de vectores:
Acceso Secuencial. (Recorrido)
El acceso a los elementos de un vector puede ser para leer en l o para escribir
(visualizar su contenido).
Recorrido del vector es la accin de efectuar una accin general sobre todos los
elementos de ese vector.
Actualizacin.
Incluye aadir (insertar), borrar o modificar algunos de los ya existentes. Se debe
tener en cuenta si el arreglo est o no ordenado.
Aadir datos a un vector consiste en agregar un nuevo elemento al final del
vector, siempre que haya espacio en memoria.
Fin de la clase.
Gracias por asistir.
PUBLICADO POR SALOMONAQUINO EN 22:25 9 COMENTARIOS:
LUNES, 17 DE SEPTIEMBRE DE 2007

Practica 9: Ejercicios con While y Do While.


Materia: Lgica Computacional.
Profesor: Lic. Salomn Aquino.
Objetivos. Al finalizar la prctica los estudiantes sern capaces de:
Resolver Problemas usando estructuras While Y Do While
Aplicar el concepto de centinelas y banderas con estructuras While y Do While.
Estructura Mientras (While)
Al igual que el bucle for, el bucle While es un bucle de precondicin. Esto significa
que el programa evala la condicin antes de entrar en la instruccin o
instrucciones del cuerpo del bucle. Como consecuencia de esto, los bucles de
precondicin se pueden ejecutar desde cero hasta varias veces.
La sentencia while se utiliza para generar bucles repetidamente, hasta que la
condicin deje de ser verdadera.
Sintaxis:
while ( [condicin] ) {
Sentencias;
}
Como en todas las estructuras que hemos visto, si se cuenta con una sola
sentencia de repeticin, no es necesario escribir las llaves.
Estructura Repetir (Do While)
La sentencia do while se utiliza para especificar un bucle condicional que se
ejecuta al menos una vez. Esta situacin se suele dar en algunas circunstancias
en las que se ha de tener la seguridad de que una determinada accin se
ejecutar una o varias veces, pero al menos una vez.
Cuando se construye un bucle usando while, la evaluacin de la condicin para la
continuacin del bucle se realiza al comienzo de cada pasada. Sin embargo, a
veces es deseable disponer de un bucle en el que se realice el examen al final de
cada pasada.
Con esta sentencia se controla la condicin al final del bucle. Si sta se cumple, el
programa vuelve a ejecutar las sentencias del bucle.
La nica diferencia entre las sentencias while y do...while es que con la segunda
el cuerpo del bucle se ejecutar por lo menos una vez.
Sintaxis:
do {
sentencia1;.......
sentenciaN;
} while ([evaluacin]);
Ejemplo 1
Elabore un programa en lenguaje C para calcular el promedio de una lista de x
nmeros.
Solucion en WHILE:
#include stdio.h>
#include stdlib.h>

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

condicin evaluada resulte verdadera.


Se evala la expresin booleana y, si es cierta, se ejecuta la instruccin
especificada, llamada el cuerpo del bucle. Entonces se vuelve a evaluar la
expresin booleana, y si todava es cierta se ejecuta de nuevo el cuerpo. Este
proceso de evaluacin de la expresin booleana y ejecucin del cuerpo se repite
mientras la expresin sea cierta. Cuando se hace falsa, finaliza la repeticin.
Estructura repetir (repeat o Do While)
Se llama Repetir a la estructura algortmica que se ejecuta un nmero definido
de veces hasta que la condicin se torna verdadera.

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

calificacin vlida y cuando aparezca este valor se terminar de ejecutar el bucle.


Si la lista de datos son nmeros positivos, un valor centinela puede ser un
nmero negativo.
Los centinelas solamente pueden usarse con las estructuras Mientras y Repetir,
no con estructuras Desde/Para
Ejemplo de centinelas:
Suponga que debemos obtener la suma de los gastos que hicimos en nuestro
ltimo viaje, pero no sabemos exactamente cuntos fueron.
Si definimos gasto1, gasto2, gasto3, ...., -1 donde
gastoi: real es el gasto nmero i y
sumgas: real es el acumulador de gastos efectuados.
-1 es el centinela de fin de datos.
Algoritmo:
Inicio
Sumgas <--0
Leer (gasto)
Mientras gasto <> -1 hacer
Sumgas <-- sumgas + gasto
Leer (gasto)
Fin_mientras
Escribir (sumgas)
Fin
Banderas:
Conocidas tambin como interruptores, switch, flags o conmutadores, son
variables que pueden tomar solamente dos valores durante la ejecucin del
programa, los cuales pueden ser 0 1, o bien los valores booleanos True o False.
Se les suele llamar interruptores porque cuando toman los valores 0 1 estn
simulando un interruptor abierto/cerrado o encendido/apagado.
Ejemplo de banderas:
Ejemplo 1: Leer un nmero entero N y calcular el resultado de la siguiente serie:
1 1/2+ 1/3 1/4 +.... +/- 1/N.
Algoritmo:
Inicio
Serie <-- 0
I <-- 1
Leer (N)
Band <-- T
Mientras I <= N hacer
Si band = T entonces
Serie <--serie + (1/I)
Band <-- F
Sino
Serie <-- serie (1/I)
Band <-- T
Fin_si
I <-- I + 1
Fin_mientras
Escribir (serie)

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;

printf ("Numeros del 1 al 15\n\n\n");


for (i=1;i<=15;i++)
printf ("%d\n",i);
system(pause);
return 0;
}
Ejemplo 2:
Escriba un programa que escriba los nmeros del 15 al 1 (descendente).
#include stdio.h>
#include stdlib.h>
main ()
{
int i;
printf ("Numeros del 15 al 1\n\n\n");
for (i=15;i>=1;i--)
printf ("%d\n",i);
system(pause);
return 0;
}
Ejemplo 3. El siguiente ejemplo suma los cinco primeros nmeros enteros.
#include stdio.h>
#include stdlib.h>
main ()
{
int isuma,ivalor;
isuma=0;
for (ivalor=1; ivalor<=5; ivalor++)
{
isuma+= ivalor;
printf(\n%d,isuma);
}
Printf(\n);
system(pause);
return 0;
}
En C++ se podra haber escrito el fragmento de cdigo del for, de la siguiente
manera:
For (int ivalor=1; ivalor<=5; ivalor++);
C++ permite declarar e inicializar la variable de control del bucle dentro del bucle
for. Se pueden declarar variables inmediatamente antes de la instruccin que
realmente las utiliza.
Los rangos de incremento/ decremento de la variable o expresin de control del
bucle pueden ser cualquier valor y no siempre 1, por ejemplo:
#include stdio.h>
#include stdlib.h>
main()
{

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:
*
**
***
****
*****
******
*******
********
*********
**********

PUBLICADO POR SALOMONAQUINO EN 21:56 43 COMENTARIOS:


DOMINGO, 9 DE SEPTIEMBRE DE 2007
Clase 8: Estructuras repetitivas e iterativas.
Materia: Lgica Computacional
Profesor: Lic. Salomn Aquino.
Objetivos de la clase:
Al final de la clase los alumnos y alumnas sern capaces de:
Identificar y diferenciar el uso de las estructuras repetitivas e iterativas.
Entender el uso de contadores y acumuladores y aplicarlo en la solucin de
problemas repetitivos e iterativos.
ESTRUCTURAS REPETITIVAS E ITERATIVAS:
Son operaciones que se deben ejecutar un nmero repetido de veces.
El conjunto de instrucciones que se ejecuta repetidamente cierto nmero de
veces, se llama Ciclo, Bucle o Lazo.
Iteracin es cada una de las diferentes pasadas o ejecuciones de todas las
instrucciones contenidas en el bucle.
Fases de un Programa Cclico:
Entrada de datos e instrucciones previas
Lazo o bucle
Instrucciones finales o resto del proceso
Salida de resultados
Ejemplo de bucle infinito:

Ejemplo de bucle finito:

Estructura Desde/Para

Se usa frecuentemente cuando se conoce de antemano el nmero de veces que


se ejecutarn las acciones de un bucle.
A la estructura Desde/Para se le conoce como Repetitiva. Para utilizar esta
estructura en algoritmos, debemos hacer uso de contadores y algunas veces de
acumuladores, cuyos conceptos se describen a continuacin:
Contador y Acumulador:
Un contador es una variable cuyo valor se incrementa o decrementa en una
cantidad constante cada vez que se produce un determinado suceso o accin.
La inicializacin consiste en asignarle al contador un valor. Se situar antes y
fuera del bucle.
Representacin:
+
Si en vez de incremento es decremento se coloca un menos en lugar del ms.

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;
}

También podría gustarte