Programacion en C
Programacion en C
c
c
c
Se muy bien, que usted, querido lector; está muy ansioso por comenzar a programar,
pero considero que es importante; conocer un poco del lenguaje C, tanto de sus orígenes
como de sus ventajas, pero no se preocupen, seré breve en esta introducción teórica.
Además que es importante conocer o recordar algunos conceptos que, son importantes
al momento de programar.
? c
Hemos definido una, computadora como una máquina que recibe datos y ordenes, que
al ejecutarlas produce cierta información; dicha información se presenta en un "idioma"
codificado; por que ha de saberse que las computadoras no entienden nuestro idioma, o
cualquier otro en el mundo. Dicho "idioma" está compuesto únicamente por dos
elementos @ @ mejor conocido como
con el cual se
representan los datos, que arroja la computadora.
En una forma más general, y creo que más sencilla, una computadora se comprende por
dos grandes grupo: El Hardware y el Software.
Veámoslo gráficamente:
odríamos entrar en detalle de cada una de las partes descritas anteriormente, pero ese,
no es el objetivo de estas insignificantes páginas; sino que esto es una mera
introducción teórica, por ello sólo daré una breve explicación.
En la Unidad Central de roceso (o CU, por sus siglas en ingles ±Central roccessing
Unit-) se contiene la
cque su función es organizar y clasificar las
instrucciones recibidas; mientras que la
!
"
Se encarga de
ejecutar dichas instrucciones. son los mecanismos de interconexión en el
CU.
Es el lugar donde se cargan todas las instrucciones, programas,
etc que se están ejecutando.
#$
Debemos entender el software como la parte lógica de la computadora... ¿un poco difícil
de comprender, verdad?; es decir, que el software, es lo que dota a los componentes
físicos de poder realizar tareas determinadas. Ejemplo, para poder utilizar una
computadora, esta debe tener instalado un sistemas operativo. ara poder imprimir
algún trabajo, aparte de poseer un impresor, en la computadora, debo tener un software
que me permita imprimir dicha acción (generalmente las impresoras traen un cd, son su
respectivo software de instalación).
Aburrido?...
Es necesario, que empiece con tanta palabrería; por que es necesario, para el lector tener
en claro estos conceptos.
&
Es un conjunto de instrucciones que se le dan a la computadora, para que ésta realice
una determinada tarea.
%c
El lenguaje C, fue diseñado por Dennies Ritchie en 1970, en los laboratorios Bell de
Estados Unidos.
1.? £
£# '#&Estos errores son producidos, cuando se hace mal uso
de las reglas del lenguaje de programación, y se violan las normas de sintaxis, de
ese lenguaje (en nuestro caso C); estos errores son fáciles de detectar por que
generalmente es el compilador, que los identifica (Ë hasta muestra la línea
donde se encuentra dicho error, pero eso depende de la versión del compilador
que estemos usando). En este curso he usado Turbo C, en su versión 2 y 3.
2.? £
£#££ £cc(&Estos errores se producen , cuando le indicamos
a la computadora, realizar una determinada acción, y esta la comprende, pero no
puede ejecutarla. or ejemplo, indicarle a la computadora una división entre
cero, sumar dos variables a las cuales no se les ha signado valor alguno, etc.
3.? £
£#£()c &muchas veces, cuando estamos programando, el
compilador no nos indica errores de sintaxis, ni de lógica; pero el resultado de
nuestro programa, esta fuera del rango esperado, esto es producto de un error de
lógica en el código de nuestro programa. Este tipo de errores son muy difíciles
de identificar y por supuesto de corregir, ya que generalmente hay que revisar
línea por línea de nuestro programa. Ejemplo: El sueldo negativo de un
empleado, etc.
#define
ejemplo:
#include <stdio.h>
#include *math.h+
#inlcude *stlib.h+
Es necesario aclarar que esto se hace al inicio del programa, y las declaratorias deben
llevar el símbolo de numeral (#) seguido de la sentencia "include", y entre signos de
mayor y menor que (<>) el nombre de la directiva.
>Declaraciones Globales
pueden ser:
*Declaraciones de Variables
cabe destacar, que esto se hace seguido de los #include y los #define.
Esta es la función principal de nuestro programa, su cuerpo, por ello NUNCA debe
faltar, ya que en ella van contenidas todas las instrucciones de nuestro programa.
main()
la función main() va al inicio, luego abrimos llaves y dentro de ellas van las
declaraciones de variables, las sentencias de lectura, cálculos, asignaciones e
impresiones, y con la última llave ( } ), le indicamos el final del programa.
£%-.-
#include <stdio.h>
#include <conio.h>
main()
printf("Radio=\n");
scanf("%f", &radio);
area=3.14159*radio*radio;
getch();
return 0;
£
&
Ye indicamos al compilador, que usaremos las bibliotecas <stdio.h> y <conio.h>, ¿por
qué <conio.h>?, por que esta biblioteca, contiene las funciones getche(), getch(), etc, y
de una de ellas hacemos uso en este pequeño ejemplo.
Declaramos, como valores reales, las variables radio y area (de esto se hablará más
adelante). Yuego, con la instrucción printf(), mostramos en pantalla el mensaje (Radio=)
y scanf se encarga de leer el valor digitado por el usuario. osteriormente area, es igual
al la multiplicación de pi (3.14159), el radio al cuadrado. Se muestra en pantalla ese
resultado, luego el programa espera que se presiones cualquier tecla (getch() ) y no
retorna ningún valor (return 0).
£%
3.? Software:_________________________________________________________
________________________
4.? memoria
rincipal:_________________________________________________________
_________________________
5.? Yenguaje de
rogramación:_____________________________________________________
_________________________
Indique que tipo de error (Error de sintaxis, error de ejecución o error lógico), en cada
uno de los siguientes enunciados
Yo que significa que, haremos uso de esa técnica para crear programas correctos; esta es
una técnica que ayuda al programador (un tanto a la fuerza), a ser ordenado, al momento
de programar.
Ahora iniciemos, de una vez por todas, lo que el lector está esperando:
como su nombre lo indica, estos son los nombres, con los que
identificamos las variables, constantes, funciones, vectores, etc, de
nuestro programa. ara ello debemos tener presente algunas reglas:
Ejemplo:
(Correctos)
c2
_c2
( Incorrectos)
2c
2c
>No es lo mismo una minúscula que una mayúscula, ya que c distingue
de entre ellas. Ejemplo: BETA Beta beta BeTa
/*este es un comentario en C */
de nuestro rograma */
stdio.h */
£%&
#define N 100
#define I 3.1416
#define B 45
/ ; % ^ & * () - + {} [] \ ; : <> ¿ .
#include <conio.h>
main()
printf("Radio=\n");
scanf("%f", &radio);
area=3.14159*radio*radio;
getch();
return 0;
£%&
...
printf("Hola\n\b");
...
Esto es posibles, por que con el punto y coma, le estamos indicando al compilador el fin
de una sentencia o instrucción.
Ejemplo:
b = c + d; d = 2*k;
c
TABYA 2.1
NOTA: El tipo de dato string y bolean NO existen en C. Sin embargo más adelante
veremos una forma de cómo hacer uso de las cadenas de texto.
Tipo_de_dato nombre_de_la_variable;
£%&
*Declare una variable de tipo entero y otra de tipo real, una con el nombre de "x" y otra
con el identificador "y":
int x;
float y;
*Declare una variable de tipo entero llamada moon, e inicialícela con un valor de 20
int x = 20;
*Declare una variable de tipo real, llamada i, e inicialícela con una valor de 3.1415
float pi=3.1415;
char nombre[7]="manuel";
£ &
en realidad, hay 7 espacios, pero la cuanta llega hasta 6, por que c, toma la primera
posición como la posición cero, y para indicar el final de la cadena lo hace con un
espacio en blanco.
c
Su formato es el siguiente:
donde const, es una palabra reservada, para indicarle al compilador que se esta
declarando una constante.
£%&
Ejemplo:
#define N 150
#define I 3.1416
#define 50
#include <stdio.h>
Yas Funciones de E / S más simples son getchar() que lee un carácter del teclado, espera
un retorno de carro (8 ), es decir un y el eco aparece. Es decir la tecla presionada.
Algunas variaciones:
´;35&Aparece el Eco
Veamos un ejemplo:
rograma que espera que se presiona una tecla, la muestra en pantalla, y además
muestra el carácter siguiente:
Ejemplo 2.1:
#include <stdio.h>
#include <conio.h>
main()
char car;
clrscr(); /*Se encarga de borrar la pantalla por eso se llama claer screen*/
car=getchar();
putchar(car+1);
getch();
return 0;
}
Ejemplo 2.2:
#include <stdio.h>
#include <conio.h>
main()
return 0;
Una Cadena, es una frase, compuesta por varias palabras. En C, podemos hacer uso de
las cadenas, mediante, la sentencia:
´35& Yee una cadena de carácter introducido por el teclado. Se puede introducir
caracteres hasta que se de un retorno de carro, (enter); el cual no es parte de la cadena;
en su lugar se coloca un terminador nulo \0.
Ejemplo 2.3
#include <stdio.h>
#include <conio.h>
main()
char nombre[40];
puts("digite su nombre:");
gets(nombre);
puts("BIENVENIDO:");
puts(nombre);
getch();
return 0;
NOTA: No haré mucho énfasis en estas instrucciones, ya que más adelante, veremos las
instrucciones scanf() y printf(), que son mucho más completas.
Yas funciones gets, puts, getch, etc; son utilizadas, en una forma un poco rudimentaria,
sin embargo; C posee otra serie de funciones, que son más completas, las cuales nos
permiten leer e imprimir (en pantalla), datos con un formato determinado, el cual ha
sido definido por el programador.
# =$35>
Se utiliza para imprimir en pantalla cadenas de texto solas, o mandar a pantalla el valor
de alguna variable, o constante, o una combinación de las anteriores. Su formato es el
siguiente:
En donde:
Cadena de control: contiene códigos de formato que se asocian con los tipos de datos
contenidos en las variables.
c <
%d Un entero
%i Un entero
%c Una caracter
%s Una cadena
%f Un real
%ld Entero largo
%u Decimal sin signo
%lf Doble posición
%h Entero corto
%o Octal
%x Hexadecimal
%e Notación Científica
%p untero
%% Imprime orcentaje
TABYA 2.2
Ejemplo:
Int suma=10;
£ &
Declaramos primero la variable como entero, con un valor de 10, luego la función
printf, el mensaje va entre comillas dobles, luego en el lugar que queremos que aparezca
el valor, colocamos el formato de la variable, cerramos comillas, luego una coma y el
nombre de la variable. Es importante recalcar, que en la posición que coloquemos el
formato es donde aparecerá el valor de la variable en este caso, 10.
Ejemplo:
Char nombre[7]="manuel";
NOTA: el número de argumentos que tendrá la función printf() es indefinido, por lo que
se puede transmitir cuantos datos sean necesarios.
Ejemplo:
char z=¶D¶;
float v=10.2563;
printf("%-f", z);
TABYA 2.3
Ejemplos:
2) int x=15;
£
Ejemplo 2.4
Diseñe un programa que guarde y muestre la nota del examen final de 3 alumnos
#include <stdio.h>
#include <conio.h>
main()
scanf("%s", nom1);
scanf("%f", &n1);
scanf("%s", nom2);
scanf("%f", &n2);
scanf("%s", nom3);
scanf("%f", &n3);
getch();
return 0;
£ &
#include <stdio.h>
#include <conio.h>
Con la cual le indicamos al compilador, que de su librería añada a nuestro programa las
funciones estándar de entrada y salida; así como las entradas y salidas por consola
(stadio.h y conio.h, respectivamente).
Yuego declaramos la variables, que contendrán las notas como reales (o de punto
flotante:
Ëa que, las notas pueden ser deciamales, por ejemplo 9.6, 8.5; etc.
Yuego declaramos las variables, que contendrán las notas, caba aclarar que al momento
de las declaraciones las podemos hacer en el orden que deseemos, pueden ser primeros
los tipo char y luego los float, o viceversa, pero teniendo el cuidado que las variables
que contendrán las nombres lleven la longitud máxima entre corchetes, para nuestro
caso, 10. ( [10] ).
scanf("%s", nom1);
como puede notarse, va a leer la cadena de texto que contendrá la variable nom1. cabe
aclarar, que cuando se van a leer cadenas de texto, no es necesario colocar la dirección
(&), lo cual no sucede con los otros tipos de datos:
scanf("%f", &n1);
Después de haber leído los datos, espera a que se presiones cualquier tecla para finalizar
la ejecución del programa.
Ejemplo 2.5
#include <stdio.h>
#include <conio.h>
main()
char cadena[15];
printf("Digite la cadena:\n\n");
scanf("%s", cadena);
printf("*********************************************** \n");
printf("%s\n", cadena);
printf("%s\n", cadena);
printf("*********************************************** \n");
getch();
return 0;
Es importante, que el lector, intente correr, en su máquina estos ejemplos, para que
comprenda con mayor facilidad.
Ejemplo:
Ejemplo:
char cadena[15];
printf("Digite la cadena:\n\n");
scanf("%s", cadena);
c £
Así:
ö=ABC>&A, B y C son los únicos caracteres que puede leer al encontrar uno diferente,
finaliza con un valor nulo.
ö=A-Z >&También pueden ser rangos de carácter en este caso sólo acepta mayúsculas.
Ejemplo:
Ejemplo:
Scanf("%[0-9]s", &edad);
c
£%&
1.? Haciendo uso de las funciones gets y puts, diseñe un programa en C, que se lea
el nombre del usuario y lo muestre en pantalla junto con un saludo.
2.? Diseñe un programa en C, que lea y muestre en pantalla el valor de tres variables
de tipo Entero.
3.? Diseñe un programa que muestre, los diferentes tipos de datos, usados en C.
rimero, debe indicársele al usuario que introduzca un valor, de un tipo dado;
luego y después de haber introducido valores en todas las variables, debe
imprimirse el contenido de ellas, junto con un mensaje que indique, el tipo de
dato:
2x2=4
2x3=6
2x4=8
..
2x10=20
c
£"£
Hasta ahora, prácticamente hemos visto, como el protocolo esencial, para
realizar un programa en C; y algunas funciones muy importantes, como son las
funciones de lectura e impresión (scanf y printf, respectivamente).
Ahora veremos, otros aspectos fundamentales, como lo son los operadores, que
pueden ser: lógicos, matemáticos, relacionales, etc. Yas expresiones, y las
estructuras: de secuenciación, de selección y de iteración.
TABYA 3.1
Yos operandos sobre los que actúan los operadores aritméticos deben ser valores
!es decir datos enteros, punto flotante o de carácter (Int, float y char,
respectivamente).
Una aclaración especial, merece el operador "%", que indica el resto de la división
entera. Veámoslo con un ejemplo:
25%3
Estos Operadores, los podemos dividir, en varios tipos, entre los cuales están:
TABYE 3.2
Ejemplo:
rintf("%d", ++i);
rintf("%d", - -i);
-Si el operador precede al operando el valor del operando se modifica antes de ser
utilizado.
-Si el operador aparece después del operando, este se modifica después de ser utilizado.
Ejemplo 3.1:
#include <stdio.h>
#include <conio.h>
main()
int x=5;
printf("%d\n", ++x);
printf("%d\n", ++x);
printf("%d\n", --x);
printf("%d\n", --x);
printf("%d\n", --x);
printf("%d\n", x++);
printf("%d\n", x++);
printf("%d\n", x--);
printf("%d\n", x--);
getch();
return 0;
TABYA 3.3
Estos Operadores se encuentran dentro del mismo grupo de procedencia, que es menor
que la de los Operadores Unarios y aritméticos.
Ya Asociatividad de éstos es de izquierda a derecha. Cabe mencionar la diferencia entre
los operadores = y ==, el primero (=), se utiliza para asignaciones de valores, mientras
que el otro (==), se usa para comparaciones. Ejemplo: Si x>5, entonces x==6.
3. OERADORES YÓGICOS: Estos son los que nos permiten unir varias
comparaciones: 10>5 y 6==6. Yos operadores lógicos son: AND (&&), OR (||), NOT(!).
Ver el capítulo Sentencias, sección Notas sobre las condiciones para más información.
(Tomado de "Curso de C" por Gorka Urrutia).
$ @4
Donde el identificador representa por lo general una variable y una constante, una
variable o una expresión más compleja.
£%&
*Un valor en coma flotante puede ser truncado, se asigna a un identificador entero.
TABYA 3.4
Yos Operadores de asignación tiene menos procedencia que el resto de los operadores y
tienen asociatividad de izquierda a derecha.
Ejemplo 3.2
#include <stdio.h>
#include <conio.h>
main()
float x, y, z;
clrscr();
scanf("%f", &x);
y=x*x;
z=y+x+1;
printf("************************************** \n");
printf("************************************** \n");
getch();
return 0;
TABYA 3.5
REGYAS DE JERARQUÍA:
£'
£#£#
Ëa han aparecido algunos ejemplos del lenguaje C en las secciones precedentes. Una
£ es una combinación de variables y/o constantes, y operadores. Ya expresión
es equivalente al resultado que proporciona al aplicar sus operadores a sus operandos.
or ejemplo 1 + 5 es una expresión formada por dos operandos (1 y 5)y el operador (el
+); esta expresión es equivalente al valor 6, por lo cual quiere decir que allí donde esta
expresión aparece en el programa, en el momento de la ejecución es evaluada y
sustituida por su resultado. Una expresión puede estar formada por otras expresiones
más sencillas, y puede contener paréntesis de varios niveles agrupando distintos
términos. En C, existen diferentes tipos de expresiones. El cual depende del tipo de
operadores que se estén utilizando. or ejemplo: Expresiones lógicas, aritméticas, etc
primero sumamos 8+5, cuyo resultado es 13, y este lo multiplicamos por nueve, con lo
que la expresión anterior, da cómo resultado: 117.
2*((20/(12-2))+5)
se evalúa la operación 12-2, que da como resultado 10, luego se divide 20, entre el
resultado anterior, es decir 10. el resultado es 2, y a este número se le suma 5,
obteniendo 7. ahora se multiplica por dos, para determinar así que la expresión anterior
es igual a 14.
£
Se les denomina así, por que; son estructuras en un programa, que después de ejecutar
una instrucción o sentencia, continúan con la otra, hasta llegar al final del programa.
Yos ejemplos que hemos visto anteriormente, son ejemplos de estructuras secuenciales.
Veamos otros ejemplos:
Ejemplo 3.3
Diseñe un programa que calcula el cuadrado y el cubo de tres números introducidos por
el usuario.
#include <stdio.h>
#include <conio.h>
main()
clrscr();
scanf("%d", &x);
scanf("%d", &z);
x1=x*x;
x2=x*x*x;
y1=y*y;
y2=y*y*y;
z1=z*z;
z2=z*z*z;
printf("********************************* \n");
printf("**Numero****Cuadrado*****Cubo****\n");
printf("********************************* \n");
getch();
return 0;
£%A.B
Una empresa necesita conocer el sueldo neto a pagar a un empleado. Teniendo como
entrada el salario produzca una salida de sueldo neto. Yos descuentos a aplicar son:
ISSS 5%, AF 7% y Renta 10%, estos descuentos son sobre el salario, y es sueldo neto
es la diferencia entre el salario y el total de las retenciones:
#include <stdio.h>
#include <conio.h>
main()
{
float sueldo, afp, isss, renta, sn;
char nombre[50];
clrscr();
scanf("%s", nombre);
scanf("%f", &sueldo);
afp=sueldo*0.07;
isss=sueldo*0.05;
renta=sueldo*0.10;
sn=sueldo-(afp+isss+renta);
getch();
return 0;
£%A.C
Diseñe un programa que calcule el promedio y la suma de tres números ingresados por
el usuario:
#include <stdio.h>
#include <conio.h>
main()
clrscr();
scanf("%f", &y);
scanf("%f", &z);
sum=x+y+z;
prom=sum/3;
printf("***************************************** \n");
printf("***************************************** \n");
getch();
return 0;
£ #/
Yos pequeños programas que hemos diseñada hasta el momento, han sido del tipo
secuencial, es decir, una sentencia se ejecuta después de otra, hasta el final del
programa.
ero en la vida diaria muchas veces debemos elegir entre un camino y otro para llegar a
nuestro destino. Yo mismo pasa en programación, al realizar alguna actividad, nuestro
programa debe ser capaz de elegir uno u otro camino, a seguir dependiendo del valor de
alguna condición evaluada.
ara ello C, dispone de tres tipos de 3 tipos de estructuras selectivas, la cuales son:
Funciona de la siguiente manera: se evalúa una condición, de ser cierta efectúa una
acción, de lo contrario, continúa con la ejecución normal del programa.
Su sintaxis es la siguiente:
$3condición5 4
O también:
$3Condición5
4
Donde:
£%A.D
En una tienda se venden artículos de primera necesidad, a los cuales se les aplica un
descuento del 20%, de la compra total, si esta es igual o mayor a $50. Diseñe un
programa en C, que a partir del importe total de la compra muestre lo que debe pagar el
cliente.
#include <stdio.h>
#include <conio.h>
main()
float compra;
clrscr();
scanf("%f", &compra);
if(compra>=50)
compra=compra*0.8;
return 0;
Esta estructura, se caracteriza por el hecho que ofrece dos caminos a seguir,
dependiendo si al evaluar la condición resulta cierta o falsa. Su sintaxis es la siguiente:
$3Condición5
-4
14
'
Se debe tener en cuenta la condición puede ser compuesta, es decir haciendo uso de los
operadores && y || ( Ë lógico y No lógico), además que cuando tenemos más de una
sentencia por ejecutar ya sea del lado del cierto o del falso, estas van dentro de llaves.
£%A.E
#include <stdio.h>
#include <conio.h>
main()
int num;
printf("Ingrese el n£mero:\n");
scanf("%d", &num);
if(num%2==0)
printf("ES AR\n\n");
else
printf("ES ImAR\n\n");
getch();
return 0;
£%A.F
#include <stdio.h>
#include <conio.h>
main()
float nota;
scanf("%f", ¬a);
printf("EXCEYENTE\n\n");
else
printf("mUË BUENO\n\n");
else
if(nota >= 7.0)
printf("BUENO\n\n");
else
if(nota >=6.0)
printf("REGUYAR\n\n");
else
printf("NECESITA mEJORAR\n\n");
getch();
return 0;
Este ejemplo, muestra que C, permite hacer anidamientos, es decir, una selección dentro
de otra, ya sea del lado del cierto, o del falso o de ambos.
El lector, puede tratar de hacer sus propias conclusiones, además de buscar otras
posibles solucione para este mismo problema. or ejemplo, ¿que pasaría si iniciamos
con la condición del 6.0?. ¿Qué pasaría si el usuario digita una neta negativa? ¿Cómo
podrías darle solución a este problema?. Como programadores, debemos hacernos
muchas preguntas al momento de diseñar nuestros programas, ya que estos No serán
usados por nosotros, sino por otras personas.
£%A.G
>> Si son varones, y su estatura es mayor a 1.60, y su peso es mayor o igual a 150 lb, su
dosis, serán: 20% de la estatura y 80% de su peso. De lo contrario, la dosis será la
siguiente: 30% de la estatura y 70% de su peso.
>> Si son mujeres, y su estatura es mayor de a 1.50 m y su peso es mayor o igual a 130
lb, su dosis será: 25% de la estatura y 75% de su peso. De lo contrario, la dosis será:
35% de la estatura y 65% de su peso. Ya dosis debe ser expresada en gramos.
#include <stdio.h>
#include <conio.h>
main()
{
float peso, estatura, dosis;
char sexo;
scanf("%c", &sexo);
printf("eso:\n");
scanf("%f", &peso);
scanf("%f", &estatura);
if(sexo=='H' || sexo=='h')
dosis=(0.20*estatura)+(0.8*peso);
else
dosis=(0.3*estatura)+(0.7*peso);
else
{
dosis=(0.25*estatura)+(0.75*peso);
else
dosis=(0.35*estatura)+(0.65*peso);
getch();
return 0;
? SEYECCIÓN m YTIYE
Como su nombre lo indica, permite seleccionar entre varios caminos para llegar al final.
En este caso se pueden elegir un camino o acción a ejecutar de entre varios posibles que
se debe de evaluar, llamada @ Sintaxis:
;3selector5
H
Etiqueta A:
Acción A;
2 I4
Etiqueta B:
Acción B;
2 I4
Etiqueta n:
Acción n;
2 I4
$ &
Excepción;
2 I4
J
En donde:
£6
&Tiene que ser del mismo tipo de datos de selecto. Estas deber ser constantes
únicas y diferentes de otras.
£&Es opcional.
£%A.-K
#include <stdio.h>
#include <conio.h>
main()
int n;
clrscr();
scanf("%d", &n);
switch(n)
case 0: puts("Cero");
break;
case 1: puts("Uno");
break;
case 2: puts("Dos");
break;
case 3: puts("Tres");
break;
break;
getch();
return 0;
c
£%&
1.? Diseñe un programa que dados tres números indique cual es el mayor de ellos.
2.? Diseñe un programa que dados tres números indique cual de ellos es el menor.
3.? En un cine se exhiben, películas para mayores de edad, diseñe un programa que
dada la edad, indique si la persona puede o no ver la película.
4.? En un supermercado, se realizan descuentos por las compras a partir de unas
bolitas de colores. Si el cliente saca una bolita color azul, tiene un descuento del
20%, si la bolita es roja, se aplica un descuento del 30% y si saca una bolita
color blanca, no se aplica ningún descuento. Diseñe un programa que a partir del
importe de la compra y el color de la bolita, muestre lo que debe pagar dicho
cliente.
5.? Se procesan las notas de 5, alumnos, de las cuales se desea saber cual es el
promedio de esas 5 notas, y cual fue la nota mayor y menor, además de imprimir
al final el nombre y la nota de cada alumno en forma de tabla.
6.? un estudiante desea saber cuál fue su promedio en matemática I, para ello
dispone de la siguiente información: tiene 3 exámenes, con una ponderación del
20% cada uno y 2 laboratorios con una ponderación del 30% cada uno. Diseñe
un programa que dadas las notas calcule el promedio del alumno y muestre en
pantalla si el alumno esta reprobado o no (para aprobar esta materia se requiere
de una nota mayor o igual a 6.00).
7.? En un estacionamiento, se cobra de la siguiente manera: los primeros 10 minutos
son gratis, los siguientes 30 minutos tiene un valor de $0.30 y la hora $0.60.
diseñe un programa que reciba tanto minutos como horas y muestre lo que debe
cancelar el cliente. Tomando en cuenta que si es martes y Sábado se hace un
descuento del 12.56% sobre el monto total.
8.? Diseñe un programa que al introducir un dígito del 0 a 9, muestre como se lee.
9.? Diseñe un pequeña calculadora que, al digitar un código realice una operación
específica: si el código es 1, la operación es la suma, si es 2, Resta. 3,
multiplicación y 4 división. Si el usuario a escrito otro código inválido, mostrar
un mensaje de error.
10.?Construya un programa que dado el salario de un empleado, permita aplicarle un
aumento de 10% si el salario es inferior a $500, si es mayor se le aumentará un
8%. Yuego debe aplicar una retención del 0.96% en concepto de Renta a ambos
casos.
11.?Se desea calcular el sueldo de un trabajador, a partir de las horas trabajadas en la
semana y la clase a la que pertenece: Trabajadores Clase "A", se les paga $7 por
hora. Trabajadores clase "B", se paga $5 por hora. Trabajadores clase "C", se les
paga $4 por hora y los de clase "D", $3.5 por hora.
12.?Un comerciante se dedica a la venta de sillas únicamente. Vende tres tipos de
sillas: tipo A, tipo B y Tipo C los precios son $5.00, $7.00 y $10.00
respectivamente. or cada cinco sillas compradas del tipo A, del tipo B o del
tipo C los clientes reciben un descuento de 3%, 5% y 7%, las demás se cobran a
precio normal. Diseñe un programa que imprima en forma de factura, con el
nombre, precio unitario, precio total, nombre de la tienda, etc lo que debe
cancelar cada cliente en concepto de la compra.
#Include <stdio.h>
#incluide <conio.h>
main()
{
float nota;
printf("Digite la nota:\n")
scanf("%f", nota);
if(nota>=6.00)
printf("Aprobado\n\n);
else
printf(Reprobado\n\n);
getch();
return 0;
}
c :c
´´
ara repetir varias veces un proceso determinado haremos uso de los ciclos repetitivos,
a los cuales se les conoce con el nombre de estructura repetitiva, estructura iterativa,
lazo o bucle.
Este ultimo, no está lógicamente estructurado, por tanto no haremos mucho hincapié en
él.
c)
< c
&
c &
Es una variable de tipo entero, que nos ayuda, en el programa a contabilizar el número
de ejecuciones de una misma acción, de un grupo de alumnos etc. Un acumulador tiene
tres valores distintos:
NOTA: el lector no debe confundirse entre las variables tipo acumulador y tipo
contador, estas se diferencian unas de otras en que: los contadores, su valor de cambio
es una constante, ya que aumenta y disminuyen en el mismo valor, mientras que los
acumuladores su valor de cambio no es constante. Un acumulador necesariamente lo
inicializamos con cero (o al menos en la mayoría de los casos). Un contador puede
iniciar con cualquier valor.
&
Yas variables tipo bandera son aquellas que sólo admiten dos valores: cierto o falso, true
o false, hombre o mujer... etc
c£
Ya sintaxis es la siguiente:
;3condición)
Acción4
Hay que tener mucho cuidado, cuando trabajamos con ciclos, ya que podemos caer en
un ciclo infinito, es decir que nunca se sale de él. Yo cual no es un error de sintaxis sino
de lógica. or lo cual en las acciones debemos siempre colocar algo que haga que se
modifique el resultado de la condición, lo cual puede ser una bandera, un contador o un
acumulador.
£%B.-
#include <stdio.h>
#include <conio.h>
main()
getch();
return 0;
£%B.1
Se desea conocer el promedio de los números mayores que cero, en una serie de
números ingresados por el usuario. De los cuales no se sabe la cantidad, haciendo uso
de una bandera, diseñe un programa en el cual el usuario ingrese los números que desee.
#include <stdio.h>
#include <conio.h>
main()
float prom;
while(ban==1)
scanf("%d", &n);
if(n>0)
i=i+1;
sum+=n;
scanf("%d", &ban);
prom=sum/i;
printf("************************************************************ \n");
printf("*** El romedio de los numeros mayores que cero es: %.2f ***\n", prom);
printf("************************************************************ \n");
getch();
return 0;
£%B.A
En un salón se tienen las notas de 14, alumnos; de los cuales se desea saber cual fue el
promedio de todas las notas, cual fue la nota mayor y la nota menor. Así como la
cantidad de aprobados en el curso (ara Aprobar la asignatura se requiere de una nota
mayor o igual a 6.0)
#include <stdio.h>
#include <conio.h>
main()
int i=1,j=0;
while(i<=14)
scanf("%f", ¬a);
scanf("%f", ¬a);
if(nota>=6.00)
j=j+1;
if(nota>mayor)
mayor=nota;
if(nota<menor)
menor=nota;
i=i+1;
suma=suma+nota;
prom=suma/14;
getch();
return 0;
En algunas ocasiones, sabemos a ciencia cierta el número de veces que se tiene que
repetir una misma acción o bloque de acciones. Ë para ello es que nos sirve, esta
estructura. Su sintaxis es la siguiente:
accion;
Donde:
£%B.B&
#include <stdio.h>
#include <conio.h>
main()
int i;
printf("%d\t", i);
getch();
return 0;
£%B.C
Diseñe un programa en C, que calcule las compras totales, realizadas por un grupo de
20 amas de casa. Yuego con esa información obtenga la media.
#include <stdio.h>
#include <conio.h>
main()
int i;
scanf("%f", &compra);
while(compra<0)
scanf("%f", &compra);
}
sum=sum+compra;
prom=sum/12;
getch();
return 0;
Cabe, mencionar que, en el ciclo for, podemos hacer cuentas decrecientes, es decir
asignarle un valor grande a nuestra variable de control y luego irla disminuyendo hasta
un valor determinado.
£%B.D
#include <stdio.h>
#include <conio.h>
main()
clrscr();
printf("\t\tBIENVENIDO(A)\n\n\n");
printf("Ingrese el precio de los boletos 1:\n");
scanf("%f", &preciob1);
while(preciob1<0)
printf("ERROR\n");
scanf("%f", &preciob1);
scanf("%f",&preciob2);
while(preciob2<0)
printf("ERROR\n");
scanf("%f", &preciob2);
scanf("%f",&preciob3);
while(preciob3<0)
printf("ERROR\n");
scanf("%f", &preciob3);
scanf("%d", &n);
while(n<0)
{
printf("ERROR\n");
scanf("%d", &n);
printf("Ingrese el Boleto:\n");
scanf("%d", &boleto);
switch(boleto)
scanf("%d", &boletos1);
sum1+=boletos1;
sum=sum+(boletos1*preciob1);
break;
scanf("%d", &boletos2);
sum2+=boletos2;
sum=sum+(boletos2*preciob2);
break;
scanf("%d", &boletos3);
sum3+=boletos3;
sum=sum+(boletos3*preciob3);
break;
clrscr();
printf("Yos Boletos que se vendieron menos fueron los boletos numero UNO\n\n");
printf("Yos Boletos que se vendieron menos fueron los boletos numero DOS\n\n");
printf("Yos Boletos que se vendieron menos fueron los boletos numero TRES\n\n");
printf("El total recaudado en taquilla, durante este dia fue: %.2f\n\n", sum);
getch();
return 0;
Formato :
{
sentencia;
} ;(<expY>);
Ya diferencia fundamental, entre el ciclo while y do...while, es que en este ultimo, las
sentencias se realizarán por lo menos una vez, en cambio, con while, solo se cumplirán
se cumpla la condición, lo cual puede ser nunca.
£%B.E
rograma que determina si un año es bisiesto o no. Ë un año es bisiesto si es múltiplo
de cuatro, pero excluyendo aquellos que son múltiplos de 100 pero no de 400
#include <stdio.h>
#include <conio.h>
/ main()
anio;
; respuesta;
£()**£*(+
scanf("%d",&anio);
")+!£+, **£*(+
respuesta=getch();
} ;(respuesta=='S' || respuesta=='s');
c
1.? ¿qué es y cómo funciona un
ciclo?____________________________________________________________
________________________________________________________
2.? Cuál es la diferencia entre un contador y un
acumulador:______________________________________________________
_______________________ ________________________________
3.? ¿cuál es la mejor manera de validar
datos?:___________________________________________________________
______________________________________________________
4.? ¿cómo se evita un ciclo
infinito?:________________________________ _________________________
_____________________________________________________
5.? ¿Qué diferencia existe entre un ciclo de entrada asegurada y el do...
while?:______________________________________________________
1^2+2^2+3^2....n^2
#include <stdio.h>
#include <conio.h>
main()
int n i, x, sum=0;
scanf("%d", &n);
while(n<0)
scanf("%d", n);
sum+=n;
getch();
return 0;
£%
1.? Se desea conocer la suma de los números enteros, positivos menores que n, el
cual es un dato dado por el usuario.
2.? muestre un programa en c, que imprima en pantalla los números desde un valor
inicial, hasta un valor final, ingresados por el usuario, tanto en forma
descendente como ascendente.
3.? Diseñe un programa que imprima la serie de Fugonacci, así: 0 1 1 2 3 5 8 13....
hasta un número n dado por el usuario.
4.? Calcule el promedio de edades de un grupo de estudiantes, de los cuales no se
conoce la cantidad.
5.? Diseñe un programa que obtenga, la calificación mayor y la calificación menor,
de un grupo de 40 estudiantes, además de los nombres de dichos alumnos.
6.? En un país hubieron elecciones para elegir al presidente. El país consta de 7
provincias o regiones, de las cuales se han levantado actas que contiene el total
de votos obtenidos por los 4 partidos políticos en dicha región. Diseñe un
programa en c, que lea las actas de las 7 provincias, muestre que partido ganó las
elecciones y en caso de empate, lo especifique con un mensaje.
7.? en un supermercado, hay 3 departamentos (de ropa, comestibles y perfumería),
en lo cuales se realizan un descuento de 5%, 3.5% y 8% respectivamente, por las
compras totales mayores de $100.00. diseñe un programa que dado el monto de
la compra, realice los descuentos pertinentes por departamento, le indique al
usuario a cuanto asciende su nuevo monto e indique, cuanto fue lo recaudado al
final del día.
8.? Ya Empresa, el porvenir s.a de c.v desea conocer lo que debe pagar en concepto
de horas extras aun grupo de n empleados. Se sabe que una hora extra diurna, se
paga el doble que una hora normal. Ë una hora extra nocturna se paga el doble
de una hora normal más el 25%. Además que todos los empleados tiene sueldos
diferentes, muestre el nuevo sueldo de cada uno de ellos y lo que tendrá que
pagar la empresa en concepto de horas extra.
9.? Una compañía de teléfonos, cobra $0.03 por minuto la llamada nacional local,
$0.06 por la llamada de larga distancia nacional y $0.10 la llamada de larga
distancia internacional. Diseñe un programa que calcule las facturas mensuales
de los clientes, sabiendo que, si las llamadas fueron realizadas por la mañana
tienen un doble valor, y si los 10 primeros minutos de llamadas locales son
gratis, en cualquier horario.
c
:&<c
Ya modularización, es una técnica usada por los programadores para hacer sus códigos
más cortos, ya que consiste en reducir un gran problema complejo, en pequeños
problemitas más sencillos, concentrándose en la solución por separado, de cada uno de
ellos.
En las funciones juegan un papel muy importe las variables, ya que como se ha dicho
estas pueden ser locales o globales.
H
J
donde:
? LL
&Es el tipo de dato que devolverá esa función, que puede ser
real, entera, o tipo void(es decir que no devolverá ningún valor).
? 2LL
L$&Es el identificador que le damos a nuestra función, la
cual debe cumplir las reglas que definimos en un principio para los
identificadores.
? "2
&son los parámetros que recibe la función. Yos
argumentos de una función no son más que variables locales que reciben un
valor. Este valor se lo enviamos al hacer la llamada a la función. ueden existir
funciones que no reciban argumentos.
? &Constituye el conjunto de acciones, de sentencias que cumplirá la
función, cuando sea ejecutada. Entre ellas están:
1.? Asignaciones
2.? Yecturas
3.? Impresiones
4.? Cálculos, etc
Una función, termina con la llave de cerrar, pero antes de esta llave, debemos
colocarle la instrucción con la cual devolverá un valor específico. Es
necesario recalcar que si la función no devuelve ningún valor, es decir, es tipo
void, no tiene que ir la sentencia return, ya que de lo contrario, nos dará un error.
ero, es válido que nos hagamos la siguiente pregunta:
8
£%&
A=5;
B=7;
roc1(X, Ë, Z)
Explicación:
or lo tanto sería un grave error el tratar de definir una función dentro de otra.
Una función puede ser llamada desde cualquier parte del programa no sólo una
vez, y cuando es llamada, empieza a ejecutar las acciones que están escritas en
código.
ara mayor comodidad del lector vamos a ver varios ejemplos, del uso de
funciones y a medida que vayamos avanzando se volverán más complejos.
Ejemplo 5.1
Diseñe un programa que dados dos números enteros determine la suma y cual de
ellos es mayor, usando dos funciones diferentes.
#include <stdio.h>
#include <conio.h>
void mayor (int a, int b); /*Tipo de dato, nombre de la funci¢n y el tipo y
nombre de los argumentos*/
main()
int a, b;
scanf("%d", &a);
scanf("%d", &b);
getch();
return 0;
sum=a+b;
if(a==b)
printf("Son iguales\n\n");
else
if(a>b)
else
$ <
Ya función ha sido declarada, ha sido llamada y por lo tanto deber haber sido
definida. Yo cual consta de dos partes, las cuales son:
12.?Cuerpo de la función
Se inicia con una llave "{", y en ella, se pueden realizar asignaciones, cálculos,
impresiones, así como la declaración de las variables locales. uede estar
constituidas por estructuras secuenciales, selectivas, iterativas, anidamientos, se
pueden llamar otras funciones, etc; finaliza con "}". uede devolver uno o
ningún valor.
£%C.1
#include <conio.h>
main()
clrscr();
while(ban==1)
scanf("%d", &numero);
while(numero<0)
scanf("%d", &numero);
primo(numero);
scanf("%d", &ban);
getch();
return 0;
{
int div, primo=1;
if(numero%div==0)
primo=0;
return 0;
else
primo=1;
if(primo!=0)
13.?<6///
Antes de usar una función C debe tener conocimiento acerca del tipo de
dato que regresara y el tipo de los
de C.
int longcad(int n); Yo anterior declara una función llamada longcad que
regresa un valor entero y acepta otro valor entero como parámetro.
£%C.A
#include <stdio.h>
#include <conio.h>
main()
clrscr();
while(ban==1)
scanf("%d", &num);
while(num<0)
scanf("%d", &num);
scanf("%d", &ban);
getch();
return 0;
int sum=1, i;
sum=sum*i;
return (sum);
}
£
&
£%C.B
Diseñe un programa, que dada una cifra entera y mayor que cero, sea
elevada a una potencia introducida por el usuario, la cual. (Ejemplo:
5^2=25).
#include <stdio.h>
#include <conio.h>
main()
clrscr();
scanf("%d", &base);
while (base<0)
scanf("%d", &base);
}
printf("El Exponente es:\n");
scanf("%d", &exponente);
getch();
return 0;
x=base*base;
sum=sum+x;
return (sum);
´< 8
int
atuf(s) Double Convierte la cadena a una cantidad de doble
precisión
atoi(s) int Convierte cadenas a un entero
atol(s) long Convierte cadenas a un entero largo
Hay muchas otras funciones, pero para ahondar más, debes saber cuál es la
versión de C, instalada en tu máquina y así verificar cuáles funcionan
correctamente; pero por lo general, estas funciones son muy estándar para la
mayoría de compiladores.
£%C.C
15.?ó a+b
16.?|a-b|
17.?ab
#include <stdio.h>
#include <conio.h>
#include <math.h>
main()
float a, b;
clrscr();
printf("\t\tBIENVENIDO\n\n");
printf("Ingrese el valor de a, por favor:\n");
scanf("%f", &a);
scanf("%f", &b);
getch();
return 0;
float x;
double y;
x=a+b;
y=sqrt(x);
return (y);
float x;
double y;
x=a-b;
y=fabs(x);
return (y);
}
double x;
x=pow(a,b);
return (x);
18.?<c2
£%C.C
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
/ calculodatos( numero);
/ main(/)
numero;
; respuesta;
{
{
scanf("%d",&numero);
} ; (numero<0);
calculodatos(numero);
respuesta=getch();
system("cls");
printf("\n\n\n\t\tÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ");
printf("\n\t\tÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ\n\n\n"
);
i;
2 e=1.;
$ (i=1;i<=numero;i++) {
e=e+1./factorial(i);
i;
resultado;
Veamos un ejemplo.
£%C.D
#include <stdio.h>
#include <conio.h>
#include <math.h>
void seno (float angulo);
main()
float angulo;
clrscr();
while(ban==1)
printf("\t\tBIENVENIDO/A\n\n");
scanf("%f", &angulo);
printf("******************************************** \n");
printf("******************************************** \n");
scanf("%d", &opcion);
while(opcion<0 || opcion>3)
scanf("%d", &opcion);
}
clrscr();
switch(opcion)
break;
break;
break;
scanf("%d",&ban);
getch();
return 0;
float y;
y=sin (angulo);
float y;
y=cos(angulo);
float y;
y=tan(angulo);
getch();
c
£%
:
Un / es un
@, es decir, solo usa un índice para
referenciar a cada uno de los elementos.
£%&
c #2
Hace más sencillo o más fácil modificar un programa que utiliza arreglos. Ëa
que todas las referencias al tamaño del arreglo pueden ser alteradas, cambiando
el valor de la constante simbólica.
£%D.-
#include <stdio.h>
#include <conio.h>
#define N 10
main()
float x[N];
int i;
scanf("%f", &x[i]);
}
if(x[4]>0)
if(x[0]<0)
if(x[N-1]==0)
getch();
return 0;
£
Así:
Esta es una versión gráfica, de lo que sucedería al llenar nuestro vector con los
valores indicados. Como podemos ver, C empieza a enumerar las casillas desde
el cero, hasta el 9. totalizando de esa manera 10 posiciones. Así que, x[4]=8.
Es por ello, que el for, lo inicializamos con cero, hasta un valor menor que el de
la constante, ya que de lo contrario nos daría un error.
1.-Que el usuario no haya pulsado la tecla ENTER, cuyo código ASCII es -A.
3 =?>P@-A5.
: <
Ô? &
Ô? <
Ô? $ $
£%D.1
#include <conio.h>
#define N 20
void mayor (int [N]); /*Ojo, los argumentos que son vectores solo
necesitan el tipo de dato y la dirección*/
main()
int numeros[N], i;
scanf("%d", &limite);
scanf("%d", &numeros[i]);
getch();
return 0;
int sum=0, i;
for(i=0; i<N; i++)
sum=sum+numeros[i];
return (sum);
if(numeros[i]>mayor)
mayor=numeros[i];
pos=i;
tipo nombre[numero_filas][numero_columnas];
donde tanto las @
como las @
se numeran también a partir de 0. Ya
forma de
En C tanto los vectores como las matrices admiten los de las variables
escalares
cierta forma, una matriz se puede ver como un 1@
. Si una
matriz tiene N
ocupa el lugar:
posición_elemento(0, 0) + i * m + j
£%D.A
Diseñe un programa que lea un matriz de 6*6 y luego determine la suma de cada
una de las filas y la almacene en un vector llamado suma.
#include <stdio.h>
#include <conio.h>
#define F 6
#define C 6
main()
scanf("%d", &matriz[i][j]);
vector[i]=vector[i]+matriz[i][j];
printf("*%d*", matriz[i][j]);
printf("\n");
printf("%d\t", vector[i]);
getch();
return 0;
Creo que no hay mucho por explicar, el uso de una matriz en C, es bastante
parecido al de un vector, pero con las diferencias que en un vector tenemos
únicamente una dimensión y en las matrices tenemos dos.
A continuación desarrollaremos un ejemplo, el cual es bastante significativo
para mi, ya que fue mi primer proyecto, cuando cursé la materia de
rogramación I en la Universidad, espero que les guste:
£%D.B
Ejemplo:
816
357
492
#include <stdio.h>
#include <conio.h>
#define N 11
#define m 11
main()
int cuadrado[N][m];
int dim, f, c, i;
clrscr();
printf("Introduzca la dimenci¢n por favor:\n");
scanf("%d", &dim);
while(dim<3 || dim>11)
scanf("%d", &dim);
while((dim%2)!=1)
scanf("%d", &dim);
cuadrado[f][c]=0;
f=0;
c=dim/2;
cuadrado[f][c]=1;
f--;
c++;
f=1;
c=dim-1;
if(f<0)
f=dim-1;
if(c==dim)
c=0;
if(cuadrado[f][c]!=0)
c--;
f=f+2;
cuadrado[f][c]=i;
impresion(cuadrado, dim);
getch();
return 0;
consmagic=((dim*dim*dim)+dim)/2;
{
sum=0;
sum=sum+cuadrado[f][c];
if(sum!=consmagic)
magic=0;
sum=0;
sum=sum+cuadrado[f][c];
if(sum!=consmagic)
magic=0;
sum=0;
sum=sum+cuadrado[i][i];
if(sum!=consmagic)
magic=0;
sum=0;
j=j+1;
sum=sum+cuadrado[i][j];
}
if(sum!=consmagic)
magic=0;
if(magic==0)
consmagic=0;
return (consmagic);
int f, c;
printf("*%d*", cuadrado[f][c]);
printf("\n");
c
£%
Espero que estas pequeñas y humildes páginas te sean de mucha utilidad, para
esta etapa de tu vida como programador...
Deseo a la Vez dedicar, este pequeño triunfo a mi madre, que siempre está
apoyándome y dándome impulso a pesar de todo...
memeboi27[arroba]hotmail.com