Академический Документы
Профессиональный Документы
Культура Документы
PROGRAMACION EN LENGUAJE C
CAPITULO I
PRINCIPIOS BSICOS DE LA
PROGRAMACIN EN C.
COMPETENCIA PARTICULAR 1
RAP 1.
RECONOCE LAS ESTRUCTURAS DE SELECCIN Y REPETICIN PARA RESOLVER
PROBLEMAS BSICOS EN LENGUAJE C CONSIDERANDO LAS NORMAS ANSI C.
1.1.-LENGUAJES DE PROGRAMACIN.
Lenguaje de programacin.- es un cdigo formado por smbolos y palabras
reservadas que siguen un orden (sintaxis), formando una estructura, con la cual el
usuario instruye a una computadora para que ejecute operaciones definidas.
Para el ao 1972 Dennis Ritchie (de los Laboratorios Bell de AT&T) disea el
lenguaje de programacin C a partir del desarrollado por Thompson. Las
aportaciones mas significativas fueron el diseo de tipos y estructuras de datos,
dando claridad y eficacia al nuevo lenguaje, siendo muy superior a su predecesor.
1.2.1.-NORMA ANSI C
Durante aos no existan reglas para el lenguaje, pero en 1983 forma un comit
para crear el estndar ANSI (Instituto Nacional Americano de Estndares). El
proceso dura seis aos y a principios de los 90 el estndar es reconocido por la
ISO (Organizacin Internacional de Estndares) y comienza a comercializarse con
el nombre ANSI C.
En nuestro caso especfico trabajaremos con DEV C++, lo que por razones obvias
nos presentara algunas diferencias en la sintaxis de programacin normalizada
por ANSI, sin embargo la filosofa y los algoritmos que se emplearan no cambian
el objetivo del curso.
2.-Definicin de un algoritmo.
Inicio
Ingreso de datos.
Decisin.
Seleccin mltiple.
Impresin.
1.4.-LAS BIBLIOTECAS.
Las bibliotecas o libreras, son un conjunto de subprogramas que se enlazan e
interactan durante la ejecucin de un programa, estas se declaran al inicio, por lo
que tambin son conocidas como cabeceras.
Las libreras mnimas que se necesitan para ejecutar un programa son la stdio.h y
la librera stdlib.h, como se puede ver en el ejemplo 1.1.
Nota: Da click en el Hipervinculo y el programa dado como ejemplo ser ejecutado automticamente si cuentas con DEV
C++
La librera stdlib.h contiene una serie de comandos, que realiza funciones para
mejorar la apariencia del programa, estos se pueden ver en la tabla 1.1.
TABLA 1.1.
COMANDO FUNCIN
Para lograr que el texto impreso en la pantalla sea presentado en forma adecuada
contamos con una serie de instrucciones que nos permiten entre otras cosas
desplazar el texto verticalmente, horizontalmente, en forma de tabulador o
presentando un sonido en el momento en que se corre el programa.
En la tabla 1.2 mostramos dichas instrucciones junto con la funcin que ejecutan
dentro del comando.
INSTRUCCIN FUNCIN
Ejemplo 1.2.-El programa despliega un letrero con sus respectivos saltos, asi
como un sonido al presentarse este.
#include<stdio.h>
#include<stdlib.h>
int main( )
{system (color 9A);
printf("\n\a\a\a INSTITUTO POLITECNICO NACIONAL\n\n\t\t CECYT #9JUAN DE
DIOS BATIZ \n\n\t\t PROGRAMACION EN LENGUAJE C\n\n\n\t\t\t ");
system (PAUSE);
return 0;
}
1.4.2.-VARIABLES Y CONSTANTES
Un dato es informacin que se suministra a la computadora por medio del teclado,
esta los almacena y procesa en forma legible, para la solucin de problemas
matemticos.
Existen dos tipos fundamentales de datos que son: los datos simples y los datos
estructurados, su uso depende de las caractersticas del problema a resolver y de
la estructura establecida por el programador.
Estos cuatro tipos pueden ir precedidos del modificador unsigned para indicar que
el tipo solo representa nmeros positivos o el cero.
Cuando trabajamos con datos de tipo entero utilizamos las palabras reservadas
int, long, short y char, dependiendo del tamao que tenga dicho dato.
Para declarar las constantes de tipo entero utilizaremos la sintaxis que se muestra
a continuacin:
Note que en la segunda forma de declarar las constantes no son empleados los
signos igual, ni el punto y coma, as mismo en las constantes de tipo caracter el
valor que se toma se encierra con una comilla.
int a; /*cuando solo es una variable*/ int a,b,c; /*si son dos o mas variables*/
Las constantes y variables de tipo real son declaradas de manera similar a los
datos de tipo entero, lo nico que cambiar es la palabra reservada empleada, la
cual deber ser acorde al valor que adquirir la variable despus de un proceso
matemtico.
#define pi 3.1416
float a,b,c;
Como podemos ver tanto los datos simples como los estructurados pueden ser de
tipo caracter, numrico o alfanumrico.
1.4.2.1.-LOS IDENTIFICADORES.
En los temas anteriores hemos definido varios elementos, entre los que se
encuentran las variables y las constantes, las cuales deben ser claramente
diferenciadas por la computadora durante el procesamiento de la informacin,
para lograr dicha diferenciacin es necesario especificar el tipo de dato, asi como
darle un nombre que de referencia de su funcin en el proceso de calculo, a este
nombre se le conoce como identificador.
Por otro lado para que estas palabras puedan ser validas como identificadores
deben cumplir dos condiciones, las cuales son:
Para dejar en claro el punto nmero dos en la tabla 1.3 se muestran las palabras
reservadas para el lenguaje c, mismas que deben ser memorizadas, debido a que
si se emplean como identificadores generaremos errores de sintaxis.
1.4.2.3.-OPERACIONES BSICA.
Los operadores son smbolos que realizan una funcin definida dentro del
desarrollo de un programa, tenemos operadores lgicos, encargados de realizar
Operador. Funcin
+ Suma.
- Resta.
* Multiplicacin.
/ Divisin.
% Modulo (residuo)
Donde:
printf(%f, division);
printf(%d,mes);
printf(%ld,factorial);
printf(%f,perimetro);
printf(%d,edad);
FORMATO FUNCIN
#include<stdio.h>
#include<stdlib.h>
#include <conio.h>
#define A 23
int main( )
{const float B=10;
float suma;
float resta,multiplicacion,division;
suma=A+B;
resta=A-B;
multiplicacion=A*B;
division=A/B;
system("color 9A");
printf("\n\a\a\a\t\tLa suma de los dos numeros es:\t %f",suma);
printf("\n\a\a\a\t\tLa resta de los dos numeros es:\t %f",resta);
printf("\n\a\a\a\t\tLa multiplicacion de los dos numeros es:\t %f",multiplicacion);
printf("\n\a\a\a\t\tLa resta de los dos numeros es:\t %f\n\n\n\t\t\t",resta);
getch();
return 0;
}
Donde:
El smbolo &.-E un smbolo de direccin que nos indica hacia que variable se ha
de asignar el numero ingresado por el programado.
DIAGRAMA DE FLUJO
INICIO
a,b
sum a+b
sum
FIN
CDIGO
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
int main ()
{int sum,a,b;
printf(\n\tIngrese el primer numero=\t);
scanf(%d,&a);
printf(\n\tIngrese el segundo numero=\t);
scanf(%d,&b);
system (cls);
sum=a+b;
printf(\n\n\n\t\t\tLa suma de los numeros es =\t%d,sum);
getch();
return 0;
}
DIAGRAMA DE FLUJO
INICIO
a,b
sum a+b
sum
FIN
CDIGO
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
int main ()
{
float sum,a,b;
printf(\n\tIngrese el primer numero =\t);
scanf(%f,&a);
printf(\n\tIngrese el segundo numero =\t);
scanf(%f,&b);
sum=a+b;
system (cls);
printf(\n\n\n\t\t\tLa suma de los numeros es =\t%f,sum);
getch();
return 0;
}
Al Ejecutar el programa para comprobar que ahora la suma de a=4.5 y b=3.4, nos
presenta como resultado el numero 7.9.
1.-El tipo de datos (entero, real, tipo carcter) que se van a manejar.
2.-La magnitud del resultado que esperamos, ya que este definir el tamao y por
lo tanto la forma en que se declarara la variable.
Solucin: Primero recordemos que la hipotenusa se calcula por medio del teorema
de Pitgoras (H2=CO2 + CA2), adems sabemos que esta expresin es
equivalente a utilizar H = (CO*CO) + (CA*CA).
DIAGRAMA DE FLUJO.
inicio
CO,CA
H(CO*CO) +(CA*CA)
fin
CDIGO
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
int main()
{
float co,ca,h;
printf("\n\tEl programa calcula el cuadrado de la hipotenusa\n\tde un triangulo
rectangulo\n\n\t");
system ("PAUSE");
system ("cls");
printf("\n\tIngrese el valor del cateto opuesto : \t");
scanf("%f",&co);
printf("\n\tIngrese el valor del cateto adyacente : \t");
scanf("%f",&ca);
h=(co*co)+(ca*ca);
system ("cls");
printf("\n\tEl cuadrado de la hipotenusa del triangulo rectangulo es: \t %f",h);
getch();
return 0;
}
Ejemplo 1.6.-Diagrama de flujo y cdigo para un programa, que dados los valores
del voltaje de una fuente, la corriente de un diodo y su voltaje de alimentacin
determine la resistencia de carga mnima a conectarse a un LED para evitar que
este se dae.
= ( )/
DIAGRAMA DE FLUJO
inicio
Vf,Vf,
Ida
RL (Vf-Vd)/Id
)
RL
fin
CDIGO
#include<stdio.h>
#include<conio.h>
#include <stdlib.h>
float RL,vf,vd,Id;
int main()
{ printf("\n\n\t\tEl programa calcula la resistencia de carga para un LED \n\n\t\t ");
system ("PAUSE");
system ("cls");
printf("\n\n\t\tIngrese el voltaje de la fuente : \t ");
scanf("%f",&vf);
system ("cls");
printf("\n\n\t\tIngrese el voltaje del diodo : \t ");
scanf("%f",&vd);
system ("cls");
printf("\n\n\t\tIngrese la corriente del diodo : \t ");
scanf("%f",&Id);
RL=(vf-vd)/Id;
system ("cls");
printf("\n\n\t\tEl valor de la resistencia minima es:\t %2f",RL);
getch();
return 0;
}
Solucin:
Sabemos que el factor beta esta dada por la siguiente expresin:
=Ic/Ib, por lo tanto Ib =Ic/.
Aplicando la ley de ohm vemos que Vb=(Ib*Rb) + 0.7.
As que Rb = (Vb-0.7) / IbFloyd,1999 que es el parmetro que deseamos calcular.
Notemos que necesitamos conocer 3 variables (Vb,Ic, ) y calcularemos solo una
(Rb).
Una vez conocidos estos datos procedemos a desarrollar el diagrama de flujo
correspondiente, a la solucin del problema en cuestin.
DIAGRAMA DE FLUJO
inicio
Vb,Ic,
beta
,Ida
IbIc/
Rb (Vb-0.7)/Ib
Rb
)
fin
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
float Ic,Vb,Rb,beta,Ib;
int main()
{ printf("\n\n\t\tEl programa calcula la resistencia de base para un transistor\n\n\t\t
");
system ("PAUSE");
system ("cls");
printf("\n\n\t\t Dame el valor de corriente en colector : \t ");
scanf("%f",&Ic);
system ("cls");
printf("\n\n\t\t Dame el valor del voltaje de base : \t");
scanf("%f",&Vb);
system ("cls");
printf("\n\n\t\t Dame el valor del factor beta : \t ");
scanf("%f",&beta);
Ib=Ic/beta;
Rb=(Vb-0.7)/Ib;
system ("cls");
printf("\n\n \t\t La resistencia de base para el transistor es:\t %2f",Rb);
getch();
return 0;
Solucin:
Ahora bien sabemos que = 3.1416 y es una constante, por lo tanto podemos
aplicar directamente la formula para el calculo de el rea y permetro de una
circunferencia, lo que dara como resultado el siguiente diagrama de flujo.
DIAGRAMA DE FLUJO.
inicio
rad
beta
peri2*rad*pi
,Ida
arearad*rad*pi
Rb (Vb-0.7)/Ib
Peri, area
)
fin
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#define pi 3.1416;
int main()
{
float rad,peri,area;
printf("\n\tEl programa calcula el perimetro y el area de una circunferencia :\n\n\t
\t");
system ("PAUSE");
system ("cls");
printf("\n\tIngrese el valor del radio de la circunferencia : \t");
scanf("%f",&rad);
peri=(2*rad)*pi;
area=(rad*rad)*pi;
system ("cls");
printf("\n\tEl perimetro de la circunferencia es: \t %f", peri);
printf("\n\tEl area de la circunferencia es: \t %f", area);
getch();
return 0;
}
DIAGRAMA DE FLUJO.
inicio
Inici
orad
a,b
peri2*rad*M_PI
,Idaa
Ingr
arearad**2*M_PI
,b
eso
sum a+bde
peri,dato
area
)
s.
sum
sum a+b
fin
Proc
eso
La codificacin del problema ser
sumla siguiente.
#include <stdio.h> a,
rest
#include <conio.h>
a,
#include <stdlib.h>
divis
#include <math.h>
in,
int main()
etc
{float perimetro,area,radio,diametro;
printf("\n\n\tEl programa calcula el area y el perimetro de una
circunferencia\n\n\tusando la libreria matematica \"math.h\"\n\n\n\n\t\t");
system ("PAUSE");
system ("cls"); Deci
system ("color 3A"); sin.
printf("\n\n\tingrese el radio de la circunferencia\t");
scanf("%f",&radio);
diametro=2*radio;
perimetro=diametro*M_PI; Sele
Ing Oscar Garibay Castellanos cci Pgina 30
n
mlti
ple.
CECYT 9 JUAN DE DIOS BTIZ PAREDES IPN
PROGRAMACION EN LENGUAJE C
area=M_PI*pow(radio,2);
system ("cls");
system ("color A4");
printf("\n\n\t\tEl perimetro de la circunferencia es:\t%f\n\n\n\t\tEl area de la
circunferencia es:\t%f",perimetro,area);
getch ();
return 0;
}
Ahora ejecute el programa, ingrese valores conocidos y comprelos con
resultados que arroja el programa, con el fin de comprobar su operacin.
Solucin:
DIAGRAMA DE FLUJO.
inicio
ra,rb,,teta,t
etb
anga=(teta*M_PI)/180
angb=(tetb*M_PI)/180
xa=ra*cos(anga)
ya=ra*sin(anga)
xb=rb*cos(angb)
yb=rb*sin(angb)
x=xb-xa
y=yb-ya
r=sqr(pow(x,2)+pow(y,2))
tetr=atan(y/x)
angr=(tetr*180)/M_PI
r, tetr
fin
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <math.h>
int main()
{
float ra,rb,teta,tetb,xa,ya,xb,yb,x,y,r,tetr,anga,angb,angr;
printf("\n\tEl programa realiza la suma de dos vectores A y B\n\n\tdados en su
forma polar\n\n\n\t\t");
system ("PAUSE");
system ("CLS");
system ("color 3A");
printf("\n\tIngrese el valor de la magnitud del vector A : \t");
scanf("%f",&ra);
system ("CLS");
printf("\n\tIngrese el valor del angulo del vector A : \t");
scanf("%f",&teta);
system ("CLS");
system ("color A3");
printf("\n\tIngrese el valor delamagnitud del vector B : \t");
scanf("%f",&rb);
system ("CLS");
printf("\n\tIngrese el valor del angulo del vector B : \t");
scanf("%f",&tetb);
system ("CLS");
system ("color 64");
anga=(teta*M_PI)/180;
angb=(tetb*M_PI)/180;
xa=ra*cos(anga);
ya=ra*sin(anga);
xb=rb*cos(angb);
yb=rb*sin(angb);
x=xa+xb;
y=ya+yb;
r=sqrt(pow(x,2)+pow(y,2));
tetr=atan(y/x);
angr=(tetr*180)/M_PI;
printf("\n\tLa magnitud del vector es:\t %f",r);
printf("\n\tEl angulo del vector es:\t %f",angr);
getch();
return 0;
}
Como puedes ver hasta aqu podemos resolver diferentes tipos de problemas
matemticos simples con la ayuda de la programacin en c, sin embargo esto
Ing Oscar Garibay Castellanos Pgina 33
CECYT 9 JUAN DE DIOS BTIZ PAREDES IPN
PROGRAMACION EN LENGUAJE C
EJERCICIOS DE REFORZAMIENTO.
I.-Elabore los programas que muestren en la pantalla los siguientes letreros:
a)
PROGRAMACION EN LENGUAJE C
PROFESOR:
b)
XXX
XXXXX
XXXXXXX
CAPITULO II
ESTRUCTURAS ALGORITMICAS
SELECTIVAS.
COMPETENCIA PARTICULAR 1
ELABORA PROGRAMAS ESTRUCTURADOS BSICOS EMPLEANDO ESTRUCTURAS DE
SELECCIN Y REPETICIN CONSIDERANDO LOS ESTNDARES ANSI C.
RAP 2
APLICA LAS ESTRUCTURAS DE SELECCIN Y REPETICIN PARA LA SOLUCIN DE
PROBLEMAS MATEMTICOS BSICOS POR MEDIO DE PROGRAMAS EN LENGUAJE C
CONSIDERANDO LOS ESTNDARES ANSI C.
Cada una de estas estructuras seran revisadas mas adelante, para tal fin es
necesario conocer algunos elementos que se emplearan en el desarrollo de las
mismas.
Una expresin binaria puede tomar uno de dos valores posibles: VERDADERO o
FALSO.
OPERADORES RELACIONALES.
Los operadores relacionales son elementos que se emplean para evaluar los
valores que toma una variable contra un valor preestablecido y a partir del
resultado, ejecutar una serie de operaciones acordes al proceso que se sigue.
Operador. Funcin
== Igual a.
!= Diferente de.
OPERADORES LGICOS.
Operador. Funcin.
! Negacin.
&& Conjuncin.
|| Disyuncin.
If(<condicin>)
<operacin>;
inicio
PRO
PRO7
fin
#include<stdio.h>
#include <conio.h>
#include <stdlib.h>
int main()
{
float PRO;
printf("\n\n\tEste programa determina si un estudiante cumple el requisito\n\n\tde
calificacion para ingresar a la universidad\n\n\n\t\t");
system ("PAUSE");
system("cls");
system ("color 57");
printf("\n\n\t\tEscriba su promedio\n\n\t\t ");
scanf("%f",&PRO);
system("cls");
if(PRO>=7)
{system ("color 47");
printf("\n\n\tFelicidades usted cumple el requisito de ingreso a la universidad");
}
getch();
return 0;
}
Por medio del ejemplo 2.2 desarrollaremos un programa, el cual imprimir los
impuestos que debe pagar una persona si sus ingresos rebasan los 15000 pesos
mensuales.
Ejemplo 2.2 Elabore un programa, que calcule e imprima los impuestoa a pagar,
por una persona cuyo ingreso es mayor a 15000 pesos mensuales, considerando
que dicho impuesto es de el 10%, del total del ingreso.
Inicio
ING
ING15000
IMP=ING*0.10
fin
#include<stdio.h>
#include <conio.h>
#include <stdlib.h>
int main()
{
float ING,IMP;
printf("\n\n\tEste programa determina si un trabajador debe pagar impuestos
mensuales\n\n\ty la cantidad a pagar\n\n\n\t\t");
system ("PAUSE");
system("cls");
system ("color 57");
printf("\n\n\t\tIntroduzca su ingreso mensual\n\n\t\t ");
scanf("%f",&ING);
system("cls");
if(ING>=15000)
{system ("color 47");
IMP=ING*0.1;
printf("\n\n\tUsted debera pagar:\t%.2f",IMP);
}
getch();
return 0;
}
Sintaxis:
..
if(<proposicin 1>)
else
{
Operacin 2; (Cuando no se cumple la condicin estas operaciones realiza el programa)
Ejemplo 2.3.-Al teclear una letra para indicar el sexo, la liga de futbol femenil
definir si puede o no pertenecer a la misma.
inicio
letra
letra=f
fin
#include<stdio.h>
#include <conio.h>
#include <stdlib.h>
int main()
{
char letra;
printf("\n\n\tEste programa determina si una persona es candidata a integrar un
equipo\n\n\n\t\t");
system ("PAUSE");
system("cls");
system ("color 57");
printf("\n\n\t\tEscriba su sexo\n\n\t\tmasculino m\n\n\t\tFemenino f\n\n\t\t ");
scanf("%c",&letra);
system("cls");
if(letra=='f')
{system ("color 47");
printf("\n\n\tFelicidades usted puede formar parte de alguno de nuestros equipos");
}
else
En el ejemplo anterior aplicamos una variable de tipo carcter, que como puedes
observar el valor que se le asigna se encierra con una comilla (f), por otro lado en
la sentencia condicional if se abren y cierran los parntesis, pero no se concluye
con el (;), posteriormente se abre una llave y al concluir la operacin se cierra, sin
embargo esto solo se hace cuando hay mas de una instruccin, ya que al existir
una sola lnea de instruccin ( la impresin de un letrero o una operacin
matemtica que no requiere ms de una lnea), no es necesario realizar dicha
operacin, nosotros lo haremos simplemente para crear un hbito, con la intencin
de evitar que se puedan presentar errores de sintaxis al inicio por falta de
prctica.
Ahora Realizaremos un
DIAGRAMA DE FLUJO.
inicio
ing
Ing<=4000
Usted es candidato
Lo sentimos usted
para el crdito
no es candidato
hipotecario
para el crdito.
fin
CDIGO.
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
float ing;
int main ()
{
2.3.-CONDICIONES COMPUESTAS.
Ejemplo:
if ( (sueldo> 7 ) && ( sexo=='m')&&(edad>=18 ) )
if (( (sueldo> 7 ) || ( sexo=='m'))&&(edad>=18 ))
if (( (resistencia<=18)|| ( resistencia>=2))&&(voltaje=12 ))
if ( (ao!=1910)&&(ao>=1912 ))
#include<stdio.h>
#include<conio.h>
#include<math.h>
#include <stdlib.h>
int main()
{
float a,b,c;
printf("\n\tEste programa determina el tipo de triangulo que se tiene
conociendo\n\tla magnitud de sus lados\n\n\n\t\t ");
system ("PAUSE");
system ("cls");
system("color 3A");
printf("\n\n\t\tIngrese la longitud del lado A:\t");
scanf("%f",&a);
system ("cls");
printf("\n\n\t\tIngrese la longitud del lado B:\t");
scanf("%f",&b);
system ("cls");
printf("\n\n\t\tIngrese la longitud del lado C:\t");
scanf("%f",&c);
system ("cls");
system ("color 37");
if(a!=0&&b!= 0&&c!=0)
{
if(a==b&&b==c)
{
printf("\n\tEs un triangulo de tipo equilatero");
}
if((a==b&&b!=c)||(b==c&&c!=a))
{
printf("\n\tEs un triangulo de tipo isoceles");
}
if(a!=b&&a!=c&&b!=c)
{
printf("\n\tEs un triangulo de tipo escaleno");
}
}
else
{
printf("\n\tLa figura no es un triangulo");
}
getch();
return 0;
}
inicio
e i s
e>18&i3
0000&s=1
Lo sentimos no puedes ser
Bienvenido al club parte del club
fin
#include<stdio.h>
#include<conio.h>
#include <stdlib.h>
int main ()
{int e,i,sexo;
printf("\n\tEl programa determina si una persona puede ingresar a un club de
polo\n\n\t\t ");
system ("PAUSE");
system ("cls");
system ("color CF");
printf("\n \t Ingrese su edad por favor : \t ");
scanf("%d",&e);
system ("cls");
printf("\n \t Ingrese su ingreso mensual por favor : \t ");
scanf("%d",&i);
system ("cls");
printf("\n\n\t\tEscriba su sexo\n\n\t\tmasculino (1)\n\n\t\tFemenino (2)\n\n\t\t ");
scanf("%d",&sexo);
system ("cls");
if((e>=18)&&(i>=30000)&&(sexo==1))
{
printf("\n\n\t\t Bienvenido al club");}
else
{printf("\n\n\t\t Lo sentimos no puedes ser parte del club");}
getch();
return 0;
}
inicio
a,b
b0
no se puede r=a/b
realizar la
operacin
r
fin
#include<stdio.h>
#include<conio.h>
#include <stdlib.h>
int main ()
{
float r,a,b;
printf("\n\tEste programa determina si se puede realizar una division entre\n\tdos
numeros, de ser posible ejecuta la operacion \n\n\t\t ");
system("PAUSE");
system ("cls");
system ("color 47");
printf("\n \t Ingrese el valor del divisor:\n\n\t\t");
scanf("%f",&b);
system ("cls");
printf("\n \tIngrese el valor del dividendo:\n\n\t\t");
scanf("%f",&a);
if(b==0)
{system ("cls");
printf("\n\tNo se puede realizar la division por estar indeterminada");}
else
{
r=a/b;
system ("cls");printf("\n \t El resultado de la division es: %.2f",r);
}
getch();
return 0;
}
inicio
r1,r2,vt.
op=1
reqr1+r2+r3+r4 req1/((1/r1)+(1/r2)+(1/r3)+(1/r4)
Itvt/req
pt vt*it)
req, it,pt
fin
#include <stdio.h>
#include<conio.h>
#include<stdlib.h>
int main ()
{
float r1,r2,r3,r4,req,vt,it,pt;
int op;
printf("\n\tEste programa calcula para un circuito de cuatro
resistencias\n\tconectadas en serie o paralelo:\n\n\tLa resistencia
total.\n\tCorriente total.\n\tPotencia consumida.\n\n\n\t\t");
system("PAUSE");
system("color 39");
system ("cls");
printf("\n \tIngrese el voltaje de la fuente: \t ");
scanf("%f",&vt);
system ("cls");
printf("\n \t Introduzca el valor de la resistencia uno: \t ");
scanf("%f",&r1);
system ("cls");
printf("\n \t Introduzca el valor de la resistencia dos: \t ");
scanf("%f",&r2);
system ("cls");
printf("\n \t Introduzca el valor de la resistencia tres: \t ");
scanf("%f",&r3);
system ("cls");
printf("\n \t Introduzca el valor de la resistencia cuatro: \t ");
scanf("%f",&r4);
system ("cls");
printf("\n\n\t Elija un tipo de conexion para el circuito\n\t1serie\n\t2paralelo:\n\n\t ");
scanf("%d",&op);
system ("cls");
if(op==1)
{
req=r1+r2+r3+r4;
}
else
{
req=1/((1/r1)+(1/r2)+(1/r3)+(1/r4));
}
it=vt / req;
pt=it*vt;
printf("\n\tLa resistencia total del circuito es:\t%.2f ohms",req);
printf("\n\tLa corriente total del circuito es:\t%.2f Amperes",it);
printf("\n\tLa potencia consumida por el circuito es:\t%.2f Watts",pt);
getch();
return 0;
}
Para concluir con la estructura selectiva doble realizaremos un ejercicio con mayor
grado de dificultad, ya que este se resolver a travs de una estructura formada
por mltiples operaciones de la condicional if-else.
Ejemplo 2.9.- Dados tres nmeros alazar el programa los ordenara de mayor a
menor, imprimindolos en ese mismo orden.
En este caso el diagrama de flujo se hace un poco mas complejo, como podemos
ver inicialmente la primer variable se compara con la segunda y la segunda con la
tercera, si se cumplen las condiciones, se procede a imprimir el letrero, de lo
contrario se siguen comparando en forma sucesiva, hasta encontrar una condicin
que cumpla con los criterios establecidos, a este procedimiento se le conoce como
estructura en cascada.
cio
a,b,c
a>b
a>c b>c
c,a,b c,b,a
a>c
b>c
fin
#include<stdio.h>
#include <conio.h>
#include <stdlib.h>
int main()
{
float a,b,c;
printf("\n\n\tEste programa al recibir tres numeros al azar\n\n\tlos imprime en forma
descendente\n\n\n\t\t");
system ("PAUSE");
system("cls");
system ("color 57");
printf("\n\n\t\tIngrese el primer numero:\n\n\t\t ");
scanf("%f",&a);
system("cls");
printf("\n\n\t\tIngrese el segundo numero:\n\n\t\t ");
scanf("%f",&b);
system("cls");
printf("\n\n\t\tIngrese el tercer numero:\n\n\t\t ");
scanf("%f",&c);
system("cls");
if(a>b)
if (a>c)
if(b>c)
printf ("\n\n\t\tEl orden de los numeros es a,b,c:\n\n\t%.3f\t%.3f\t%.3f",a,b,c);
else
printf ("\n\n\t\tEl orden de los numeros es a,c,b:\n\n\t%.3f\t%.3f\t%.3f",a,c,b);
else
printf ("\n\n\t\tEl orden de los numeros es c,a,b:\n\n\t%.3f\t%.3f\t%.3f",c,a,b);
if(b>c)
if(a>c)
printf ("\n\n\t\tEl orden de los numeros es b,a,c:\n\n\t%.3f\t%.3f\t%.3f",b,a,c);
else
printf ("\n\n\t\tEl orden de los numeros es b,c,a:\n\n\t%.3f\t%.3f\t%.3f",b,c,a);
else
printf ("\n\n\t\tEl orden de los numeros es c,b,a:\n\n\t%.3f\t%.3f\t%.3f",c,b,a);
getch();
return 0;
}
inicioini
A,B,OP
OP
div
fin
A partir del presente tema los diagramas de flujo se dejarn como actividad al
estudiante, por lo tanto no se presentaran mas.
..
switch(op)
{
case 1:
operaciones;
break;
case 2:
operaciones;
break;
case 3:
operaciones;
break;
case n:
operaciones;
break;
default:
operaciones;
break;
}
inicio
A,B,OP
OP
B=0
No existe
sum=A+B rest=A-B Mult=A*B
div
fin
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
int main ()
{int op;
float sum,mult,div,rest,a,b;
printf("\nEste programa realiza las operaciones basicas para dos numeros segun
la eleccion del usuario");
printf("\n\n\n\t\t Teclee enter para continuar:\n\t ");
getch ();
system ("cls");
printf("\n\tIngrese el primer numero=");
scanf("%d",&a);
printf("\n\tIngrese el segundo numero=");
scanf("%d",&b);
printf("\n\tSeleccione una opcion de calculo \n\n\t1.-Suma.\n\t2.-resta.\n\t3.-
Multiplicacion\n\t4division-:\t");
scanf("%d",op);
system ("cls");
switch (op)
{
case 1:
sum=a+b;
printf("\n\n\n\t\t\tLa suma de los numeros es = %.2f",sum);
break;
case 2:
rest=a-b;
printf("\n\n\n\t\t\tLa resta de los numeros es = %.2f",rest);
break;
case3:
mult=a*b;
printf("\n\n\n\t\t\tLamultiplicacin de los numeros es = %.2f",mult);
break;
case 4:
if(b==0)
printf("\n\tNo se puede dividir");
else
{
div=a/b;
printf("\n\n\n\t\t\tLa division de los nmeros es = %.2f",div);
break;
default:
printf("La opcion no existe");
break;
}}
getch();
return 0;}
Ejemplo 2.8.-Elabora el cdigo para un programa el cual al seleccionar una opcin
calcule el volumen de un prisma triangular, cuadrangular, rectangular, cilndrico, y
hexagonal
#include <stdio.h>
#include <conio.h>
#include <math.h>
#include <stdlib.h>
float la,lb,lc,altura,peri,area,volumen,apotema;
int op,n;
int main ()
scanf("%d",&op);
system("cls");
switch(op)
scanf("%f",&la);
system("cls");
scanf("%f",&lb);
system("cls");
scanf("%f",&lc);
system("cls");
scanf("%f",&altura);
system("cls");
peri=(la+lb+lc)/2;
area=sqrt(peri*(peri-la)*(peri-lb)*(peri-lc));
volumen=area*altura;
break;
scanf("%f",&la);
system("cls");
area=pow(la,2);
volumen=pow(la,3);
break;
scanf("%f",&la);
system("cls");
scanf("%f",&lb);
system("cls");
scanf("%f",&altura);
system("cls");
area=la*lb;
volumen=area*altura;
break;
scanf("%f",&la);
system("cls");
scanf("%f",&altura);
area=M_PI*pow(la,2);
volumen=area*altura;
system("cls");
break;
case 5:
scanf("%d",&n);
system("cls");
scanf("%f",&la);
system("cls");
scanf("%f",&apotema);
system("cls");
scanf("%f",&altura);
system("cls");
area=n*la*apotema;
volumen=area*altura;
break;
default:
break;
getch ();
return 0;
#include<stdio.h>
#include<conio.h>
#include<math.h>
#include<stdlib.h>
int main ()
float RL,vd,id,ic,vb,Rb,beta,ib,r1,r2,req,vt,it,pt,rtot;
int op;
scanf("%d",&op);
system("cls");
switch(op)
case 1:
scanf("%f",&vt);
system("cls");
scanf("%f",&vd);
system("cls");
scanf("%f",&id);
system("cls");
RL=(vt-vd)/id;
break;
case 2:
scanf("%f",&ic);
system("cls");
scanf("%f",&vb);
system("cls");
scanf("%f",&beta);
ib=ic/beta;
Rb=(vb-0.7)/ib;
system("cls");
break;
case 3:
scanf("%f",&vt);
system("cls");
scanf("%f",&r1);
system("cls");
scanf("%f",&r2);
req=r1+r2;
it=vt / req;
pt=it*vt;
system("cls");
break;
case 4:
scanf("%f",&vt);
system("cls");
scanf("%f",&r1);
system("cls");
scanf("%f",&r2);
req=(r1*r2) / (r1+r2);
it=vt / req;
pt=it*vt;
system("cls");
break;
default:
break;
getch ();
return 0;
}#include<stdio.h>
#include<conio.h>
#include<math.h>
#include<stdlib.h>
int main ()
float RL,vd,id,ic,vb,Rb,beta,ib,r1,r2,req,vt,it,pt,rtot;
int op;
scanf("%d",&op);
system("cls");
switch(op)
case 1:
scanf("%f",&vt);
system("cls");
scanf("%f",&vd);
system("cls");
scanf("%f",&id);
system("cls");
RL=(vt-vd)/id;
break;
case 2:
scanf("%f",&ic);
system("cls");
scanf("%f",&vb);
system("cls");
scanf("%f",&beta);
ib=ic/beta;
Rb=(vb-0.7)/ib;
system("cls");
break;
case 3:
scanf("%f",&vt);
system("cls");
scanf("%f",&r1);
system("cls");
scanf("%f",&r2);
req=r1+r2;
it=vt / req;
pt=it*vt;
system("cls");
break;
case 4:
scanf("%f",&vt);
system("cls");
scanf("%f",&r1);
system("cls");
scanf("%f",&r2);
req=(r1*r2) / (r1+r2);
it=vt / req;
pt=it*vt;
system("cls");
break;
default:
break;
getch ();
return 0;
}#include<stdio.h>
#include<conio.h>
#include<math.h>
#include<stdlib.h>
int main ()
float RL,vd,id,ic,vb,Rb,beta,ib,r1,r2,req,vt,it,pt,rtot;
int op;
scanf("%d",&op);
system("cls");
switch(op)
case 1:
scanf("%f",&vt);
system("cls");
scanf("%f",&vd);
system("cls");
scanf("%f",&id);
system("cls");
RL=(vt-vd)/id;
break;
case 2:
scanf("%f",&ic);
system("cls");
scanf("%f",&vb);
system("cls");
scanf("%f",&beta);
ib=ic/beta;
Rb=(vb-0.7)/ib;
system("cls");
break;
case 3:
scanf("%f",&vt);
system("cls");
scanf("%f",&r1);
system("cls");
scanf("%f",&r2);
req=r1+r2;
it=vt / req;
pt=it*vt;
system("cls");
break;
case 4:
scanf("%f",&vt);
system("cls");
scanf("%f",&r1);
system("cls");
scanf("%f",&r2);
req=(r1*r2) / (r1+r2);
it=vt / req;
pt=it*vt;
system("cls");
break;
default:
break;
getch ();
return 0;
#include <stdio.h>
#include <conio.h>
#include<stdlib.h>
#include <string.h>
int main()
getchar();
system("cls");
switch (letra)
break;
case 'b':
puts("\n\n\t\tVaca");
break;
case 'c':
puts("\n\n\t\tCaballo ");
puts("\n\n\t\tCamello");
break;
default:
puts("no hay");
break;
getchar();
EJERCICIOS DE REFORZAMIENTO.
Elabora los diagramas de flujo y los respectivos cdigos para los siguientes
programas.
CAPITULO III
ESTRUCTURAS REPETITIVAS
COMPETENCIA PARTICULAR 1
ELABORA PROGRAMAS ESTRUCTURADOS BSICOS EMPLEANDO ESTRUCTURAS DE
SELECCIN Y REPETICIN CONSIDERANDO LOS ESTNDARES ANSI C.
RAP 2
APLICA LAS ESTRUCTURAS DE SELECCIN Y REPETICIN PARA LA SOLUCIN DE
PROBLEMAS MATEMTICOS BSICOS POR MEDIO DE PROGRAMAS EN LENGUAJE C
CONSIDERANDO LOS ESTNDARES ANSI C.
3.1.-ESTRUCTURAS REPETITIVAS
for (v=vi;v(<,<=,>,>=)vf;v=v(+,-)ID)
proceso;
La inicializacin o valor inicial es una instruccin que asigna un valor inicial a una
variable que servir como control del ciclo, lo podemos interpretar tambin como
un lmite inferior, es decir es el valor del cual va a partir el contador de eventos
(ciclos).
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
int main ()
int i;
float calif,prom,sum;
sum=0;
for(i=1;i<=7;i++)
scanf("%f",&calif);
sum=sum+calif;
prom=sum/7;
system("cls");
getch();
return 0;
3.2.1.-EXPRESIONES ABREVIADAS.
En algunos casos los programadores presentan ejercicios de estructuras
repetitivas con expresiones abreviadas que pueden confundir a las personas
cuando inician en el estudio de la programacin, estas expresiones tienen su
equivalencia como se muestra a continuacin:
x+=y x=x+y
x-=y x=x-y
x*=y x=x*y
x/=y x=x/y
x&=y x=x&y
x|=y x=x|y
x^=y x=x^y
x<<=y x=x<<y
x>>=y x=x>>y
#include<stdio.h>
#include<conio.h>
int main ()
{
int i;
float calif,prom,sum;
sum=;
for(i=1;i<=7;i++)
{
printf(""\n \tIngrese la calificacin %d: \t",i);
scanf("%f",&calif);
sum+=calif;
}
prom=sum/7;
printf(""\n \t Tu promedio es: \t%.2f ",prom);
getch();
return 0;
}
#include<stdio.h>
#include<conio.h>
int main ()
{
Int i,n;
float calif,prom,sum;
sum=;
printf(""\n \tIngrese el nmero de calificaciones en el grupo: \t");
scanf("%f",&n);
for(i=1;i<=n;i++)
{
printf(""\n \tIngrese la calificacin %d: \t",i);
scanf("%f",&calif);
sum=sum+calif;
}
prom=sum/n;
printf(""\n \t Tu promedio es: \t%.2f ",prom);
getch();
return ;
}
#include<stdio.h>
#include<conio.h>
int main ()
{
Int i,n;
float calif,prom,sum=0;
Ing Oscar Garibay Castellanos Pgina 84
CECYT 9 JUAN DE DIOS BTIZ PAREDES IPN
PROGRAMACION EN LENGUAJE C
for(i=1;i<=n;i++)
{
printf(""\n \tIngrese la calificacin %d: \t",i);
scanf("%f",&calif);
sum+=calif;
}
prom=sum/n;
printf(""\n \t Tu promedio es: \t%.2f ",prom);
getch();
return ;
}
Como podrs ver adems de la expresin abreviada, se tienen otros dos detalles:
primero la variable n es empleada como un lmite que cambia de acuerdo a las
necesidades del usuario, la segunda es que la variable sum ahora se igualo a cero
dese que esta se declaro y no posteriormente, lo cual tambin es comn sin
afectar el programa y reduciendo el nmero de lneas obteniendo un programa
ms flexible.
#include<stdio.h>
#include<conio.h>
int main ()
{
Int i,n,num;
double fact;
printf(""\n \tIngrese un numero entero positivo: \t%d");
scanf("%d",&num);
if(num== || num==1)
{
fact=1;
}
else
{
fact=1;
for(i=1;i<=n;i++)
{
fact=fact*I;
}
printf(""\n \tEl factoriaI de %d es: \t%lf",num,fact);
getch();
return ;
}
#include<stdio.h>
#include<conio.h>
int main ()
{
Int i,n,num;
double fact;
printf(""\n \tIngrese un numero entero positivo: \t%d");
scanf("%d",&num);
if(num== || num==1)
{
fact=1;
}
else
{
fact=1;
for(i=1;i<=n;i+1)
{
fact=fact*i;
}
printf(""\n \tEl factoriaI de %d es: \t%lf",num,fact);
getch();
return ;
}
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
int main()
{int n,i,numero;
long par,impar;
par=0;
impar=0;
getch();
system("cls");
scanf("%d",&n);
system ("cls");
for(i=1;i<=n;i++)
scanf("%d",&numero);
if((numero%2)==0)
{par=par+numero;}
else
{impar=impar+numero;}}
getch();
return 0;
#include<stdio.h>
#include<conio.h>
int main ()
{
int i,n,num,sum1,sum2;
double sum1,sum2;
printf(""\n \tIngrese la cantidad de nmeros a sumar: \t%d");
scanf("%d",&n);
sum1=;
sum2=;
for( i=n;i>=1;i-1)
{
printf(""\n \tIngrese el dato numero %d:\t",i);
scanf("%d",&num);
if((num%2)==)
{
sum1+=num;
}
else
{
sum2+=num;
}
}
printf(""\n \tLa suma de los nmeros pares es \t%lf",sum1);
printf(""\n \tLa suma de los nmeros impares es \t%lf",sum2);
getch();
return ;
}
#include <stdio.h>
#include <conio.h>
int main()
int i,n,;
float resist,req,it,vt,pt;
printf(\n\tIngrese el numero de resistencias en el circuito);
scanf(%d,&n);
printf(\n\tIngrese el valor del voltaje de la fuente en el circuito);
scanf(%f,&vf);
req=;
for(i=1;i<=n;i+1)
{
printf(\n\tIngrese el valor de la resistencia %d,i);
scanf(%f,&resist);
req=req+resist;
}
it=vt/req;
pt=vt*it;
printf(\n\tLa resistencia total del circuito es:\t%.2f,req);
printf(\n\tEl voltaje total del circuito es:\t%.2f,vt);
printf(\n\tLa corriente total del circuito es:\t%.2f,it);
printf(\n\tLa potencia total del circuito es:\t%.2f,pt);
getch();
return ;
}
#include <stdio.h>
#include <conio.h>
int main()
int i,n,r;
float resist,req,it,vt,pt;
printf(\n\tIngrese el numero de resistencias en el circuito);
scanf(%d,&n);
printf(\n\tIngrese el valor del voltaje de la fuente en el circuito);
scanf(%f,&vf);
req=;
{
printf(\n\tIngrese el valor de la resistencia %d,i);
scanf(%f,&resist);
req=req + (1/resist);
}
it=vt/req;
pt=vt*it;
printf(\n\tLa resistencia total del circuito es:\t%.2f,req);
printf(\n\tEl voltaje total del circuito es:\t%.2f,vt);
printf(\n\tLa corriente total del circuito es:\t%.2f,it);
printf(\n\tLa potencia total del circuito es:\t%.2f,pt);
getch();
return ;
}
for(x=5;x<=15;x=x+1){ etc.};
3.- Los incrementos tambin pueden ser diferentes al de uno en uno, ej.;
for (x=1; x<= 2 ; x=x+3){ etc. };
4.- Incluso pueden ser decrementos, solo que en este caso, recordar:
5.- Solo para los casos de incrementos y decrementos de una en una unidad se
puede sustituir en el for, x = x + 1 por x++, y x = x - 1 por x--.
*Una buena prctica seria construir los diferentes ejercicios mostrados como
ejemplo de todas las formas posibles.
Serie
#include <stdio.h>
#include <conio.h>
#include<stdlib.h>
int main()
int i,n;
float resist,req,it,vt,pt;
getch ();
system ("cls");
scanf("%f",&vt);
req=0;
system ("cls");
scanf("%f",&resist);
system ("cls");
while(resist)
{req=req+resist;
scanf("%f",&resist);
system ("cls");
it=vt/req;
pt=vt*it;
getch();
return 0;
Paralelo
#include <stdio.h>
#include <conio.h>
#include<stdlib.h>
int main()
float resist,req,it,vt,pt,rtotal;
getch ();
system ("cls");
scanf("%f",&vt);
system ("cls");
scanf("%f",&resist);
req=0;
system ("cls");
while(resist)
{req=req+(1/resist);
scanf("%f",&resist);
system ("cls");
rtotal=1/req;
it=vt/rtotal;
pt=vt*it;
getch();
return 0;
pi=Proposicin Inicial;
while (pi)
proceso;
pi=Modificacin de pi;
..
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
int main()
float num,snum;
snum=0;
scanf("%f",&num);
system ("cls");
while(num)
snum=snum+num;
scanf("%f",&num);
system ("cls");
getch();
return 0;
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
int main()
{int i=0;
float num,snum,promedio=0;
snum=0;
getch ();
system ("cls");
scanf("%f",&num);
system ("cls");
while(num)
snum=snum+num;
scanf("%f",&num);
i=i+1;
system ("cls");
promedio=snum/i;
getch();
return 0;
Ejemplo 3.11.-Se desea obtener la suma de los gastos realizados por una
compaa, el programa deber sumar los gastos hasta que el contador no tenga
otro gasto que ingresar.
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
int main()
float egre,segre;
segre=0;
scanf("%f",&egre);
system ("cls");
while(egre)
segre=segre+egre;
scanf("%f",&egre);
system ("cls");
system ("cls");
getch();
return 0;
#include <stdio.h>
#include <conio.h>
#include <math.h>
#include <stdlib.h>
int main()
int num;
float sum,raiz;
sum=0;
scanf("%d",&num);
system ("cls");
while(num)
raiz=sqrt(num);
sum=sum+raiz;
getch ();
system("cls");
scanf("%d",&num);
system("cls");
system("cls");
getch();
return 0;
do
Proceso;
..
modificacin de p;
while (p)
#include<stdio.h>
#include<conio.h>
Int main()
{
Int tiro,i;
i=0;
float sum,prom;
printf(" \t\nIngrese el numero de pinos derribados en el primer tiro:\t);
scanf(%d&tiro);
do
{
sum=sum+tiro;
i=i+1;
printf(" \t\nCuantos pinos derribados en el siguiente tiro 0 para terminar-:\t);
scanf(%d&tiro);
}
while(tiro);
prom=sum/I;
printf(" \t\nEl promedio del jugador es de:\t%f,prom);
getch();
return ;
}
#include<stdio.h>
#include<conio.h>
#include<math.h>
int main ()
{
float a,b,ce,d,abase,asup,vol;
int op,e;
do
{
case 2 :
printf("\nTomar en cuenta que es un triangulo rectangulo:");
printf("\nIngrese cateto opuesto:");
scanf("%f",&a);
printf("Ingrese cateto adyacente:");
scanf("%f",&b);
printf("Ingrese la altura del Prisma:");
scanf("%f",&ce);
printf("La hipotenusa es:%f",d);
abase=(a*b)/2;
d=sqrt((pow(a,2)+pow(b,2)));
asup=2*abase+(a*ce)+(b*ce)+(d*ce);
vol=abase*ce;
printf("\n\n\a El rea de la Base es =%f",abase);
printf("\n\n El rea superficial es =%f",asup);
printf("\n\n El volumen es =%f",vol);
break;
case 3 :
printf("\nIngrese el radio:");
scanf("%f",&a);
printf("Ingrese la altura del cilindro:");
scanf("%f",&b);
abase=M_PI*(pow(a,2));
asup=(2*abase)+(2*a*M_PI*ce);
vol=abase*b;
printf("\n\n\a El rea de la Base es =%f",abase);
printf("\n\n El rea superficial es =%f",asup);
printf("\n\n El volumen es =%f",vol);
break;
case 4 :
printf("\nIngrese el ancho de la base:");
scanf("%f",&a);
printf("Ingrese la altura del prisma:");
scanf("%f",&b);
abase=pow(a,2);
asup=(2*abase)+(4*a*b);
vol=abase*b;
printf("\n\n\a El rea de la Base es =%f",abase);
printf("\n\n El rea superficial es =%f",asup);
printf("\n\n El volumen es =%f",vol);
break;
case 5 :
printf("\nIngrese el radio de la base:");
scanf("%f",&a);
printf("Ingrese la longitud de un lado de la base:");
scanf("%f",&b);
printf("Ingrese la altura del prisma:");
scanf("%f",&ce);
abase=((sqrt(pow(a,2)+pow((b/2),2)))*6*b)/2;
asup=2*abase+(6*b*ce);
vol=abase*ce;
printf("\n\n\a El rea de la Base es =%f",abase);
printf("\n\n El rea superficial es =%f",asup);
printf("\n\n El volumen es =%f",vol);
break;
}
}
while(e==1);
getch ();
return ;
}
# include<stdio.h>
# include<conio.h>
int main ()
{
int d;
float a,b,c;
printf("\t\t\tPrograma divisor, excepto cero \n\n");
do
{
printf("\n\tIngrese el dividendo:");
scanf("%f",&a);
printf("\n\tIngrese el divisor:");
scanf("%f",&b);
c=a/b;
if(b== )
else
}
while(d==1);
getch ();
return 0;
}
EJERCICIOS DE REFORZAMIENTO
I.-Utilizando la estructura repetitiva for desarrolle los programas que realicen
las siguientes operaciones (funciones).
5.- Evaluar la funcin Y=5X2 + 3X + 8 CUANDO X--> -3...10 (rango de -3 hasta 10)
7.- Construir una pgina que contenga el siguiente men conversin de pesos a
dlares
conversin de libras a kilogramos conversin de kilmetros a millas
10.- Realizar un programa que capture 3 datos, los segundos, los minutos y las
horas, y una vez que han sido capturados al dato de hora que se capturo
aumentarle un segundo y verificar si ese cambio afecta los otros dos, es decir, a
los minutos y a las horas.
CAPITULO
IV
FUNCIONES.
COMPETENCIA PARTICULAR 2.
RESUELVE PROBLEMAS LGICOS Y MATEMTICOS UTILIZANDO LAS FUNCIONES DE LA
BIBLIOTECA Y/ O LAS PROPIAS.
RAP1.
RESUELVE PROBLEMAS LGICOS Y MATEMTICOS UTILIZANDO LAS FUNCIONES DE LA
BIBLIOTECA INTERNA Y O LAS PROPIAS.
RAP 2.
APLICA LAS FUNCIONES EN LA PROGRAMACIN EN LENGUAJE C PARA LA SOLUCIN DE
PROBLEMAS LGICOS Y MATEMTICOS.
4.1.-DEFINICIONES.
Para resolver un problema cuya solucin es demasiado tediosa, y que se puede
dividir en pequeas partes que despus se integren para resolver el mismo se
emplean, funciones.
El uso de funciones nos da varias ventajas entre las que podemos contar las
siguientes:
3. El cdigo para funciones se escribe una vez y se emplea las que sea
necesario.
Un programa puede contener una o varias funciones las cuales interactan por
medio de:
Variables globales.
4.1.1.-TIPOS DE VARIABLES.
Hasta este momento hemos utilizado variables que se declaran en forma indistinta
antes o despus de la funcin principal, sin embargo para tratar el tema de
funciones es importante diferenciar el tipo de variables que existen y la forma en
que estas se declaran, as como la posicin que guardan dentro del desarrollo de
un programa.
Primero mencionaremos que las variables son objetos que pueden cambiar su
valor durante la ejecucin de un programa, las variables se dividen en:
Donde:
Nombre de la funcin.-El cual se recomienda sea uno que tenga relacin con lo
que realiza dicha funcin.
#include <stdio.h>
#include <conio.h>
int cuadrado(void); /*Prototipo de funcin*/
int i; /*Variable global*/
int main()
{
int cua;
for(i=1;i<=20;i++)
{
cua=cuadrado(); /*llamada a la funcin cuadrado*/
printf(\nEl cuadrado de %d es:\t%d,i,cua);
}
getch();
}
int cuadrado(void) /*Declaracin de la funcin*/
{ /*La funcin calcula el cuadrado de la variable global i */
return (i*i);
}
Ejemplo 4.1.-Resolver el ejercicio anterior, pero declarando una variable local con
el mismo nombre que una variable local.
#include <stdio.h>
#include <conio.h>
int cuadrado(void); /*Prototipo de funcin*/
int i; /*Variable global*/
int main()
{
int cua;
for(i=1;i<=20;i++)
{
cua=cuadrado(); /*llamada a la funcin cuadrado*/
printf(\nEl cuadrado de %d es:\t%d,i,cua);
}
getch();
}
int cuadrado(void) /*Declaracin de la funcin*/
{ /*La funcin calcula el cuadrado de la variable global i */
int i=4; /*La variable local tiene el mismo nombre */
return (i*i); /*Regresa el resultado obtenido al programa principal*/
}
Como puedes ver al trabajar con funciones debemos diferenciar entre el uso de
variables locales y variables globales, sin embargo a veces es necesario emplear
variables con el mismo nombre en un proceso, y para lograrlo utilizaremos el
smbolo :: como predecesor de la variable global, lo que permitir al programa
diferenciar entre una variable global ::i y una variable localicomo veremos a
continuacin.
#include <stdio.h>
#include <conio.h>
intfuncion1(void); /*Prototipo de funcin*/
int i=3; /*Variable global*/
int main()
{
int con;
for(con=1;con<=5;con++)
funcion1();
getch ();
}
void funcion1(void)
{
int i=7;
i+=i;
printf(\nEl valor de la variable local es :\t%d,i);
::i=::i+i;
printf(\nEl valor de la variable global es :\t%d,::i);
}
#include <stdio.h>
#include <conio.h>
int funcion1(void); /*Prototipo de funcin*/
int funcion2(void);
int funcion3(void);
int funcion4(void);
int a=4; /*Variable global*/
int main()
{
int i;
for(i=1;i<=5;i++)
{
Ahora veamos un ejemplo de su uso tomando como base el primer ejercicio que
realizamos en el tema de funciones, y advertiremos la diferencia ntrelas llamadas
por variables y por parmetros por valor.
#include <stdio.h>
#include <conio.h>
int cuadrado(int); /*Prototipo de funcin que informa al compilador que el
parmetro que se utilizara ser por valor y de tipo entero*/
int main(void)
{
int i;
for(i=1;i<=20;i++)
{
printf(\nEl cuadrado de %d es:\t%d,i,cuadrado(i)); /*escribe el resultado de la
funcin, observa que el parmetro que se utiliza es
una copia de la variable i.*/
}
printf (\n\n);
system(PAUSE);
}
int cuadrado(int a) /*Declaracin de la funcin*/
{
return (a*a); /*Regresa el resultado obtenido a la funcin principal*/
}
Ejemplo 4.4.-La siguiente funcin emplea parmetros por referencia, observa las
diferencias en su estructura, y corre el programa para analizar los resultados.
#include <stdio.h>
#include <conio.h>
int f1(int*); /*Prototipo de funcin. El parmetro es entero y por referencia
-observa que existe el smbolo de indireccin *- */
int main(void)
{
int i,k=4;
for(i=1;i<=3;i++)
{
printf("\n\n\n\tEl valor de k antes de llamar a la funcion es:\t%d",++k);
#include <stdio.h>
#include <conio.h>
#include <stdio.h>
#include <conio.h>
int a,b,c,d; /* Variables globales */
int f1(int*, int*); /*Prototipo de funcin.
int main(void)
{
int a;
a=1;
b=2;
c=3;
d=4;
printf("\n%d %d %d %d",a,b,c,d);
f1(&b, &c);
printf("\n%d %d %d %d",a,b,c,d);
a=f2(c,&d);
printf("\n%d %d %d %d",a,b,c,d);
getch();
}
int f1(int *b,int *c)
{
int d;
a=5;
d=3;
(*b)++;
(*c)+=2;
printf("\n%d %d %d %d",a,*b,*c,d);
}
int f2(int c,int *d)
{
int b;
a++;
b=7;
c+=3;
(*d)+=2;
printf("\n%d %d %d %d",a,b,c,*d);
return (c);
}
#include <stdio.h>
#include <conio.h>
return (X+Y);
return (X-Y);
int res;
res=(*apf)(X,Y);
return (res);
int main(void)
{int r1,r2;
r1=control(suma,15,5);
r2=control(resta,10,4);
printf("\nResultado 1 : %d",r1);
printf("\nResultado 2 : %d",r2);
getch();
EJERCICIOS DE REFORZAMIENTO
I.-Utilizando funciones desarrolle los siguientes programas.
CAPITULO V
ARREGLOS
UNIDIMENSIONALES
COMPETENCIA PARTICULAR 3
RAP 1
RAP 2
5.1.-ARREGLOS
Un arreglo o array (en ingls) es una coleccin de variables relacionadas a las que
se hace referencia por medio de un nombre comn. Otra definicin valida es que
un arreglo es un conjunto de datos que se almacenan en memoria de manera
contigua con el mismo nombre y para diferenciar los elementos de un arreglo se
utiliza un ndice. En el lenguaje C los arreglos son datos compuestos, que pueden
tener una o varias dimensiones, a continuacin se muestra como ejemplo la
representacin grfica de un arreglo unidimensional (Arreglo de una dimensin).
1 arreglo[]
2 arreglo[1]
3 arreglo[2]
5 arreglo[4]
6 arreglo[5]
5.1.1.-NDICE DE UN ARREGLO.
5.1.2.-ELEMENTOS DE UN ARREGLO.
Ejemplo 5.1
5.2.-ARREGLOS UNIDIMENSIONALES
tipo_dato identificador[tamao];
int A[1];
float B[18];
doubl C[5];
A[] =1;
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
int main ()
{
int i,num,cont=0;
int ele[50];
for (i=0; i<10;i++)
{
printf("\n\tIngrese el elemento %d del arreglo:\t",i+1);
scanf("%d",&ele[i]);
system ("CLS");
}
printf("\n\tIngrese el numero que se va a buscar en el arreglo:\t");
scanf("%d",&num );
for (i=0;i<=50;i++)
{if (ele[i]==num)
cont=cont+1;}
system ("CLS");
printf("\n\tEl %d se encuentra %d veces en el arreglo\n\n\t ",num,cont);
system("PAUSE");
return 0;
}
Ejecutar
Construya un programa que lea los votos de los candidatos y emita la cantidad
que obtuvo cada uno de ellos.
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
int main ()
{
int JUG[5]={0}; /*Declaracin del arreglo entero jug de 5 elementos, cada uno
empieza desde cero*/
int i,vot; /*Declaracin del contador i y de la variable vot*/
printf("\n\tIngrese el primer voto -0 para terminar- :");
scanf("%d",&vot );
system("CLS");
while (vot)
{
if ((vot>0) && (vot<6)) /* Verifica que el voto sea correcto*/
JUG[vot - 1]++; /*Se resta el uno debido a que el arreglo almacena los datos
desde el registro cero y de esa manera inicia el conteo, nosotros lo
hacemos
al contar*/
else
Ejecutar
5.3.-APUNTADORES Y ARREGLOS.
Un arreglo se puede pasar a una funcin indicando el nombre del arreglo que es
representado por un apuntador.
#include <stdio.h>
#include <conio.h>
int main ()
{
Int x=3,y=7,z[5] ={2,4,6,8,10} ;
printf(\n\tx=%d \ty=%d \t z[0]=%d \tz[1]=%d \tz[3]=%d \tz[4]=%d,x,y, z[0], z[1],
z[3], z[4]);
getch();
return 0;
}
Ejecutar
5.4.-ARREGLOS Y FUNCIONES.
En la resolucin de cierto tipo de problemas nos veremos en la necesidad de
emplear funciones que utilizan arreglos, estos son llamados utilizando parmetros
por referencia, as cada modificacin hecha en el arreglo afectara el valor original
de la funcin.
Cuando llamamos un arreglo a una funcin solo incluimos el nombre que en este
caso es un apuntador, sin incluir los corchetes, ya que esto generara un error de
sintaxis.
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
const int max=10; /*Con esta constante definimos el tamano del arreglo*/
int lectura(int vec[ ],int T);
int impresion(int vec[ ],int T);
int producto(int *x, int*y, int *z, int T); /* En los parmetros se puede escribir vec[
], o
*vec*/
int main ()
{
system("COLOR 08");
int ve1[max], ve2[max], ve3[max]; /* Declaracin de los 3 arreglos a emplear */
lectura (ve1,max); /*En la llamada de la funcin lect (lectura), solo se incluye el
nombre del arreglo */
Ing Oscar Garibay Castellanos Pgina 132
CECYT 9 JUAN DE DIOS BTIZ PAREDES IPN
PROGRAMACION EN LENGUAJE C
lectura (ve2,max);
producto (ve1, ve2, ve3, max); /*llamada de la funcin prod (producto), observe
que
se pasan los nombres de los tres arreglos. */
printf("\n\tProducto de los vectores");
impresion(ve3, max);
getch ();
}
int lectura(int vec[ ],int T)
{
int i;
printf("\n");
for(i=0;i<T;i++)
{
printf("\n\tIngrese el elemento %d:\t",i+1);
scanf ( "%d" , &vec [ i ] );
system ("CLS");
}
}
{system("COLOR A2");
int i;
for( i=0;i<T;i++)
{
printf("\n\tvec [ %d ]: %d" ,i+1, vec [ i ] );
}}
#include <stdio.h>
#include <conio.h>
const int tam=50; /*Con esta constante definimos el tamao del arreglo*/
int main ()
{
int cal[tam],frec[6] ={0}; /*Declaracin de los arreglos. */
lec(cal,tam); /* Llamada a la funcin lec (lectura)*/
frec (cal,tam,frec,6); ); /* Llamada a la funcin frec (frecuencia), se pasan
ambos arreglos*/
printf(\n\tFrecuencia de calificaciones);
imp(frec,6);
may(frec,6);
getch ();
}
int lec(int vec[],int t);
{
int i;
for( i= 0; i<t;i++);
{
printf(\n\tIngrese la calificacin del alumno: %d: , i+1);
scanf ( %d , &vec [ i ] );
}
}
int imp(int vec[],int t);
{
int i;
for( i= 0; i<t;i++);
{
printf(\n\tvec [ %d ]: %d ,i, vec [ i ] );
}
int frec ( int a [ ], int p, int b [ ], int t)
{
int I;
for( i= 0; i<t;i++);
if(( a [ i ]>=0) &&( a [ i ]<6)) /*Se valida que la calificacin es correcta.*/
b [a [ i ] ]++; /*Aqu se almacenan las frecuencias*/
{
int I, mfre= 0, mval [ ]
int prod (int *x, int*y, int *z, int t);
int i;
}
int may (int *x, int t) /*Esta funcin obtiene la primera ocurrencia de la
frecuencia ms alta.*/
{
int i, mfre=0, mval =x [0 ];
for( i= 0; i<t;i++);
if ( mval<x[ i ] )
{
mfre =I;
mval= x[ i ];
printf(\n\n \tMayor frecuencia de calificaciones: %d \tValor: %d, mfre, mval);
}
Ejecutar.
EJERCICIOS DE REFORZAMIENTO
I.-Utilizando arreglos unidimensionales desarrolle los siguientes programas.
CAPITULO
VI
ARREGLOS MULTIDIMENSIONALES.
COMPETENCIA PARTICULAR 3
RAP 1
RAP 2
Para resolver problemas matemticos, donde se tiene mas de una ecuacin y dos
o ms incgnitas es conveniente usar mtodos numricos, desarrollados con un
objetivo especfico.
8 3 7 6 -9
-3 -16 -9 5
4 5 67 7 5
int A[5][1]; /*Declaracin del arreglo A de tipo entero con 5 filas y 1 columnas.*/
float B[5][5]; /*Declaracin del arreglo A de tipo real con 5 filas y 5 columnas.*/
}
Ejemplo 6.1.-A continuacin realizaremos un ejercicio en el que al introducir los
nmeros de una matriz cuadrada de 1 elementos, el programa nos imprime la
diagonal principal de la matriz (recordemos que al ser una matriz cuadrada su
dimensin ser de 1 filas por 1 columnas).
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
const int tam=10; /*Con esta constante definimos el tamano del arreglo*/
int main ()
getch ( );
int i,j;
for( i= 0; i<f;i++)
{system("CLS");
int i,j;
for( i= 0; i<f;i++)
if ( i ==j )
Ejecutar
Int b[3][5]={1,5,7,9];
1 5 7 9
Una forma similar de declarar una matriz cuando se debe iniciar con valores
predeterminados diferentes en cada uno de los elementos ser.
Aqu la asignacin se realiza fila a fila, otra manera que evita confusiones es:
1 9 7 56
3 3 43
1 3 6 15 23
Ejemplo 6.2.-Elabora un programa que al recibir dos matrices las sume y presente
el resultado en una tercer matriz.
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
const int max=50; /*Con esta constante definimos el tamao del arreglo*/
int main ()
int fil,col;
do
system ("CLS");
do
system ("CLS");
lec(ma,fil,col);
lec(mb,fil,col);
sum (ma,mb,mc,fil,col);
getch ( );
int i,j;
for( i= 0; i<f;i++)
system ("CLS");
int sum (int m1 [ ] [max],int m2 [ ] [max], int m3[ ] [max], int f, int c)
int i,j;
for( i= 0; i<f;i++)
m3[i][j]=m1[i][j] +m2[i][j];
int i,j;
for( i= 0; i<f;i++)
Ejecutar
EJERCICIOS DE REFORZAMIENTO
I.-Utilizando arreglos multidimensionales desarrolle los siguientes
programas.
BIBLIOGRAFIA