Академический Документы
Профессиональный Документы
Культура Документы
PROGRAMACION EN LENGUAJE C
CAPITULO I
PRINCIPIOS BSICOS DE LA
PROGRAMACIN EN C.
1.1.-LENGUAJES DE PROGRAMACIN.
Lenguaje de programacin.- es un cdigo formado por smbolos y palabras
reservadas que siguen un orden conocido como sintaxis ,(que es la manera
correcta de escribir dicho cdigo, con reglas gramaticales), con el cual se instruye
a una computadora para realizar tareas especificas.
Son lenguajes que estn estructurados de manera tal que le facilitan al usuario la
manipulacin de datos, generalmente son empleados para la resolucin de
problemas matemticos de alto grado de dificultad mediante EDD's (Estructuras
Dinmicas de Datos), tienen la ventaja de ser independientes de la arquitectura de
la mquina, con lo que un programa desarrollado en un tipo de mquina puede
migrar otra sin problema alguno, por otro lado el no es necesario conocer la
operacin de la mquina, algunos lenguajes de alto nivel empleados en la
ingeniera son: BASIC, FORTRAN, PASCLA, COBOL, C, TURBOC, GWBASIC,
LOGO.
En 1972 es Dennis Ritchie (de los Laboratorios Bell de AT&T) quien disea
finalmente C a partir del B de Thompson, aportando un diseo de tipos y
estructuras de datos que consiguen una claridad y eficacia en el lenguaje muy
superior. Es un lenguaje que permite realizar una programacin estructurada
economizando las expresiones, con abundancia de operadores y tipos de datos
(aunque los bsicos sean pocos), codificando en alto y bajo nivel
simultneamente, reemplazando ventajosamente la programacin en ensamblador
y permitiendo una utilizacin natural de las funciones primitivas del sistema.
Adems, no est orientado a ningn rea en especial y sobre todo consigue un
cdigo objeto altamente optimizado que repercute en que los programas son muy
rpidos.
Durante muchos aos no existen reglas estndar para el lenguaje, pero en 1983
se decide formar un comit con el objetivo de 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.
Debido al xito del lenguaje, en 1990 se renen las organizaciones ANSI e ISO
para definir un estndar que formalice el lenguaje. El proceso culmina en 1998 con
la aprobacin del 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 son un conjunto de subprogramas que se enlazan e interactan a
lo largo de un programa, debido a que en la programacin estas bibliotecas
siempre se llaman al inicio se le da el nombre muy comn de cabeceras, por
ejemplo en lenguaje c tenemos la librera estndar (stdio.h), la de funciones
matemticas (math.h), la de consola de entradas salidas (conio.h) etc.
Note que a la derecha de cada instruccin hay un comentario que inicia con /* y
concluye con */, estos comentarios no afectan en ningn sentido el programa, y
este los reconoce como comentarios para que el usuario sepa que accin se lleva
a cabo en cada parte del programa.
Por otro lado la funcin printf adems de imprimir letreros los puede desplazar
dependiendo de la instruccin que se entre ellas tenemos
#include<stdio.h>
#include<conio.h>
int main( )
getch();
Primero que nada definamos que son las constantes y las variables.
1.4.2.1.-LOS IDENTIFICADORES.
Continu
Auto Extern Sizeof Doubl Return Volatile Int
e
Break Flota Static Else Short While Default Long
Case For Struct Enum signed Void Do register
Unsigne
Char Goto Switch Const If Typedef Unin
d
a.-Enteros
Para declarar variables de alguno de los tipos enteros empleamos las palabras
reservadas char, int, long y enum.
Estos cuatro tipos pueden ir precedidos del modificador unsigned para indicar que
el tipo solo representa nmeros positivos o el cero.
Constantes:
int hora ;
char carcter ;
unsigned short mes ;
b.-Reales
Para declarar variables de alguno de los tipos reales emplearemos las palabras
reservadas float y double.
Variables:
Como ya se vio anteriormente int indica que es una variable o constante de tipo
entero y float indica que son de tipo real.
1.4.2.3.-OPERACIONES BSICA.
Ahora veamos que con las variables y las constantes podemos realizar
operaciones bsicas para dar solucin a problemas bien definidos.
Operador. Funcin
+ Suma.
- Resta.
* Multiplicacin.
/ Divisin.
% Modulo (residuo)
DIAGRAMA DE FLUJO
inicio
fin
CDIGO
#include <stdio.h>
#include <conio.h>
int main ()
clrscr();
int sum,a,b;
scanf(%d,a);
scanf(%d,b);
sum=a+b;
getch();
return ;
DIAGRAMA DE FLUJO
inicio
a,b
sum a+b
sum
fin
CDIGO
#include <stdio.h>
#include <conio.h>
int main ()
float sum,a,b;
scanf(%f,a);
scanf(%f,b);
sum=a+b;
getch();
return ;
Como podemos notar el diagrama de flujo y el programa son casi iguales con la
diferencia que ahora se han empleados datos reales por lo que al declarar las
variables se emplea float en lugar de int, y en la funcin scanf y printf se cambia
%d por %f, si ingresamos los nmeros del ejemplo anterior a=4.5 y b=3.4, ahora
nos dar como resultado el 7.9.
De lo anterior vemos que es necesario saber primero el tipo de dato (entero, real,
tipo carcter) y segundo la magnitud del resultado que esperamos, ya que
dependiendo de esta se definir si se declara la variable de una u otra forma.
FORMATO FUNCIN
Con lo que conocemos hasta aqu podemos resolver algunos ejercicios simples
donde utilizamos nicamente nmero enteros o reales , y dado que conocemos las
operaciones bsicas de la matemticas veremos algunos ejercicios prcticos.
DIAGRAMA DE FLUJO.
inicio
CO,CA
H(CO*CO) +(CA*CA)
fin
CDIGO
#include <stdio.h>
#include <conio.h>
Int main()
floatco,ca,h;
scanf(%f,&co);
scanf(%f,&ca);
h=(co*co)+(ca*ca);
getch();
return ;
RL=(Vf Vd )/Id
Donde:
vf.-Voltaje de la fuente.
vd.-Voltaje del diodo.
Id.-Corriente del diodo.
RL.-Resistencia mnima de carga.
Todos estos parmetros tienen valores reales, por lo tanto se declararn como
variables de tipo real.
DIAGRAMA DE FLUJO
inicio
Vf,Vf,Ida
RL (Vf-Vd)/Id
)
RL
fin
CDIGO
#include<stdio.h>
#include<conio.h>
float RL,vf,vd,Id;
int main()
scanf("%f",&vf);
scanf("%f",&vd);
scanf("%f",&Id);
RL=(vf-vd)/Id;
getch();
return ;
Solucin:
DIAGRAMA DE FLUJO
inicio
Vb,Ic, beta
,Ida
IbIc/
Rb (Vb-0.7)/Ib
)
Rb
fin
CDIGO.
Ing Oscar Garibay Castellanos Pgina 23
CECYT 9 JUAN DE DIOS BTIZ PAREDES IPN
PROGRAMACION EN LENGUAJE C
#include<stdio.h>
#include<conio.h>
float Ic,Vb,,Rb,beta,Ib;
int main()
scanf("%f",&Ic);
scanf("%f",&Vb);
scanf("%f",&beta);
Ib=Ic/beta;
Rb=(Vb-0.7)/Ib;
getch();
return ;
Solucin:
Ahora bien sabemos que = 3.1416 y al emplear la segunda formula para el rea
y el permetro nuestro diagrama de flujo quedara como sigue:
DIAGRAMA DE FLUJO.
inicio
rad
beta
,Ida
peri2*rad*pi
arearad*rad*pi
Rb (Vb-0.7)/Ib
)
Peri, area
fin
CDIGO
#include <stdio.h>
#include <conio.h>
#define pi 3.1416;
Int main()
float rad,peri,area;
scanf(%f,rad);
peri=(2*rad)*pi;
area=(rad*rad)*pi;
getch();
return ;
DIAGRAMA DE FLUJO.
inicio
Inicio
rad
Ingreso de datos.
a,b
,Idaa,b divisin, etc
Procesoperi2*rad*M_PI
suma, resta,
arearad**2*M_PI
sum a+b
Decisin.
)
sum a+b
peri, area
sum
Seleccin mltiple.
fin
Impresin.
CDIGO
#include <stdio.h>
#include <conio.h>
#include <math.h>
Int main()
float rad,peri,area;
scanf(%f,&rad);
peri=M_PI*2*rad;
area=M_PI*pow(rad,2);
getch();
return ;
DIAGRAMA DE FLUJO.
inicio
ra,rb,teta,tetb
beta
,Ida
xa=ra*cos(teta);
ya=ra*sin(teta);
xb=rb*cos(tetb);
yb=rb*sin(tetb);
x=xb-xa;
y=yb-ya;
r=sqr(pow(x,2)+pow(y,2));
tetr=atan(y/x);
r, tetr
fin
CDIGO.
#include <stdio.h>
#include <conio.h>
#include <math.h>
int main()
float ra,rb,teta,tetb,xa,ya,xb,yb,x,y,r,tetr;
scanf(%f,&ra);
scanf(%f,&teta);
scanf(%f,&rb);
scanf(%f,&tetb);
xa=ra*cos(teta);
ya=ra*sin(teta);
xb=rb*cos(tetb);
yb=rb*sin(tetb);
x=xb-xa;
y=yb-ya;
r=sqr(pow(x,2)+pow(y,2));
tetr=atan(y/x);
getch();
return ;
Como puedes ver hasta aqu podemos resolver diferentes tipos de problemas
matemticos simples con la ayuda de la programacin en c, sin embargo esto
solo es el principio, ya que en ejercicios subsecuentes estos nos servirn solo
como apoyo en la aplicacin de estructuras especificas.
EJERCICIOS DE REFORZAMIENTO.
a)
PROGRAMACION EN LENGUAJE C
PROFESOR:
b)
XXX
XXXXX
XXXXXXX
CAPITULO II
ESTRUCTURAS ALGORITMICAS
SELECTIVAS.
Sintaxis:
..
if(proposicin 1)
else
{
Operacin 2; (Cuando no se cumple la condicin estas operaciones realiza el programa)
Operador. Funcin
== Igual a.
!= Diferente de.
< Menor que.
> Mayor que.
<= Menor o igual que.
>= Mayor o igual que.
Operador. Funcin.
! Negacin.
&& Conjuncin.
|| Disyuncin.
Ejemplo 2.1.-Al teclear una letra para indicar el sexo, la liga de futbol femenil
definir si puede o no pertenecer a la misma.
DIAGRAMA DE FLUJO.
inicio
letra
letra=f
fin
CDIGO
#include<stdio.h>
#include <conio.h>
int main()
{
char letra;
clrscr();
if(letra=='f')
{
printf("\nFelicidades usted puede formar parte de alguno de nuestros equipos");
}
else
{
printf("\nLastima esta liga es exclusiva para mujeres");
}
getch();
return ;
}
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.
DIAGRAMA DE FLUJO.
ing
Ing<=4000
CDIGO.
#include<stdio.h>
#include<conio.h>
float ing;
int main ()
{
printf(""\n \t Ingrese su salario mensual por favor : \t ");
scanf("%f",&ing);
if(b<4)
printf("\n \t Lo sentimos no es candidato al crdito");
else
printf("\n\t Usted es candidato para el crdito");
getch();
return ;
}
2.3.-CONDICIONES COMPUESTAS.
Ejemplo:
if ( (sueldo> 7 ) && ( sexo=='m') ) etc, etc, etc.
CDIGO.
#include<stdio.h>
#include<conio.h>
#include<math.h>
int main()
{
float a,b,c;
if(a!=&&b!= &&c!=)
{
if(a==b&&b==c)
{
printf("es un triangulo equilatero");
}
if(a!=b&&b!=c&&c!=a&&c*c!=a*a+b*b&&c>a&&c>b)
{
printf("es un triangulo escaleno");
}
if(a!=b&&b!=c&&c!=a&&a*a!=c*c+b*b&&a>c&&a>b)
{
printf("es un triangulo escaleno");
}
if(a!=b&&b!=c&&c!=a&&b*b!=a*a+c*c&&b>a&&b>c)
{
printf("es un triangulo escaleno");
}
if(a!=b&&b!=c&&c!=a&&c*c==a*a+b*b&&c>a&&c>b)
{
printf("es un triangulo Escaleno-rectangulo");
}
if(a!=b&&b!=c&&c!=a&&a*a==c*c+b*b&&a>c&&a>b)
{
printf("es un triangulo Escaleno-rectangulo");
}
if(a!=b&&b!=c&&c!=a&&b*b==a*a+c*c&&b>a&&b>c)
{
printf("es un triangulo Escaleno-rectangulo");
}
if(a==b&&b!=c&&c*c==a*a+b*b&&c>a&&c>b)
{
printf("es un triangulo Rectangulo-Isoseles");
}
if(c==b&&b!=a&&a*a==c*c+b*b&&a>c&&a>b)
{
printf("es un triangulo Rectangulo-Isoseles");
}
if(a==c&&b!=c&&b*b==a*a+c*c&&b>a&&b>c)
{
printf("es un triangulo Rectangulo-Isoseles");
}
if(a==b&&b!=c&&c*c!=a*a+b*b&&c>a&&c>b)
{
printf("este triangulo no se pude formar");
}
if(c==b&&b!=a&&a*a!=c*c+b*b&&a>c&&a>b)
{
printf("este triangulo no se pude formar");
}
if(a==c&&b!=c&&b*b!=a*a+c*c&&b>a&&b>c)
{
printf("este triangulo no se pude formar");
}
if(a==b&&b!=c&&c*c!=a*a+b*b&&a>c&&b>c)
{
printf("es un triangulo isoseles");
}
if(c==b&&b!=a&&a*a!=c*c+b*b&&c>a&&b>a)
{
printf("es un triangulo isoseles");
}
if(a==c&&b!=c&&b*b!=a*a+c*c&&a>b&&c>b)
{
printf("es un triangulo isoseles");
}
}
else
{
printf("este triangulo no se puede formar");
}
getch();
return ;
}
DIAGRAMA DE FLUJO.
inicio
e i s
e>18&i30000&s=1
fin
CDIGO.
#include<stdio.h>
#include<conio.h>
float ing;
int main ()
{
Int e,i,s;
DIAGRAMA DE FLUJO.
inicio
a,b
b0
fin
CDIGO
#include<stdio.h>
#include<conio.h>
int main ()
{
float r,a,b;
Ejemplo 2.6.- Dado un circuito elctrico con dos resistencias el programa calcula
la resistencia total, la corriente total y la potencia total del sistema, el usuario
puede elegir entre una configuracin en serie o en paralelo.
DIAGRAMA DE FLUJO.
inicio
r1,r2,vt.
op=1
reqr1+r2a/b req(r1*r2)/(r1+r2)
Itvt/req
pt vt*it)
req, it,pt
fin
CDIGO.
#include <stdio.h>
#include<conio.h>
int main ()
{
float r1,r2,req,vt,it,pt;
int op;
printf(""\n \tIngrese el voltaje de la fuente: \t ");
scanf("%f",&vt);
printf(""\n \t Introduzca el valor de la resistencia uno: \t ");
scanf("%f",&r1);
printf(""\n \t Introduzca el valor de la resistencia dos: \t ");
scanf("%f",&r2);
printf(""\n \t Elija un tipo de conexin para el circuito-1serie 2paralelo: \t ");
scanf("%d",&op);
if(op==1)
{
req=r1+r2;
}
else
{
req=(r1*r2) / (r1+r2);
}
it=vt / req;
pt=it*vt;
printf(""\n \t La resistencia total del circuito es:\t%f ",req);
printf(""\n \t La corriente total del circuito es:\t%f ",it);
printf(""\n \t La potencia consumida por el circuito es:\t%f ",pt);
getch();
return ;
}
..
switch(op)
{
case 1:
operaciones;
break;
case 2:
operaciones;
break;
case 3:
operaciones;
break;
case n:
operaciones;
break;
default:
operaciones;
break;
}
#include <stdio.h>
#include <conio.h>
int main ()
{
clrscr();
int op;
float sum,mult,div,rest,a,b;
printf(\n\tIngrese el primer nmero=);
scanf(%d,a);
printf(\n\tIngrese el segundo nmero=);
scanf(%d,b);
printf(\n\tSeleccione una opcin -1suma 2resta 3multiplicacin 4divisin-:\t);
scanf(%d,op);
switch (op)
{
case 1:
sum=a+b;
printf(\n\n\n\t\t\tLa suma de los nmeros es =%f,sum);
break;
case 2:
rest=a-b;
printf(\n\n\n\t\t\tLa resta de los nmeros es =%f,rest);
break;
case3:
mult=a*b;
printf(\n\n\n\t\t\tLamultiplicacin de los nmeros es =%f,mult);
break;
case 4:
if(b== )
printf(("\n \tNo se puede dividir");
else
{
div=a/b;
printf(\n\n\n\t\t\tLa divisin de los nmeros es =%f,div);
break;
default;
printf(La opcin no existe);
break;
}
getch();
return ; }
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>
float W,D,H,tri,cua,rec,cil,hex;
int op;
int main ()
{
printf("selecione tipo de prisma (1.-triangular 2.-cuadrangular 3.-rectangular 4.-
cilindrico 5.-hexagonal)");
scanf("%d",&op);
switch(op)
{
case 1:printf("ingrese la medida de la base");
scanf("%f",&W);
printf("Ingrese la medida de la altura");
scanf("%f",&D);
printf("ingrese el largo del prisma");
scanf("%f",&H);
tri=((W*D)/2)*H;
printf("el volumen del prisma es = %2f",tri);
break;
case 2:printf("ingrese la medida de la base");
scanf("%f",&D);
printf("ingrese el largo del prisma");
scanf("%f",&H);
cua=(D*D)*H;
printf("el volumen del prisma es = %2f",cua);
break;
case 3:printf("ingrese la medida de la base");
scanf("%f",&W);
printf("Ingrese la medida de la altura");
scanf("%f",&D);
printf("ingrese el largo del prisma");
scanf("%f",&H);
rec=(W*D)*H;
printf("el volumen del prisma es = %2f",rec);
break;
case 4:printf("ingrese la medida del radio");
scanf("%f",&W);
printf("ingrese el largo del prisma");
scanf("%f",&H);
cil=M_PI*pow(W,2)*H;
printf("el volumen del prisma es = %2f",cil);
break;
case 5:printf("ingrese la medida del perimetro");
scanf("%f",&W);
printf("Ingrese la medida del apotema");
scanf("%f",&D);
printf("ingrese el largo del prisma");
scanf("%f",&H);
hex=(W*D)*H;
printf("el volumen del prisma es = %2f",hex);
break;
default;
printf(La opcin no existe);
break;
}
getch ();
return ;
}
#include<stdio.h>
#include<conio.h>
#include<math.h>
int main ()
{
float RL,vd,id,ic,vb,,Rb,beta,ib,r1,r2,req,vt,it,pt,rtot;
int op;
printf("seleccione tipo de calculo a realizar -1resistencia de carga para un diodo 2
resistencia de carga para la base de un transistor 3Corrientotal,resistencia total y
potencia total en un circuito serie con dos resistencias 4 Corriente total, resistencia
total y potencia total en un circuito paralelo con dos resistencias-");
scanf("%d",&op);
switch(op)
{
case 1:
printf("\n\n\t\tDame el voltaje de la fuente: \t ");
scanf("%f",&vt);
printf("\n\n\t\tDame el voltaje del diodo: \t ");
scanf("%f",&vd);
printf("\n\n\t\tDame la corriente del diodo: \t ");
scanf("%f",&id);
RL=(vt-vd)/id;
printf("\n\n\t\tEl valor de la resistencia mnima es:\t %.2f",RL);
break;
case 2:
printf("\n\n\t\t Dame el valor de corriente en colector:");
scanf("%f",&ic);
printf("\n\n\t\t Dame el valor del voltaje de base:");
scanf("%f",&vb);
printf("\n\n\t\t Dame el valor del factor beta:");
scanf("%f",&beta);
ib=ic/beta;
Rb=(vb-0.7)/ib;
printf("\n\n\t\t La resistencia de base para un transistor es:\t %.2f",Rb);
break;
case 3:
printf(""\n \tIngrese el voltaje de la fuente: \t ");
scanf("%f",&vt);
printf(""\n \t Introduzca el valor de la resistencia uno: \t ");
scanf("%f",&r1);
#include <stdio.h>
#include <conio.h>
#include <string.h>
void main()
Ing Oscar Garibay Castellanos Pgina 57
CECYT 9 JUAN DE DIOS BTIZ PAREDES IPN
PROGRAMACION EN LENGUAJE C
{
char letra; /*Declaracin de variables tipo carcter*/
printf("\n \tdame una letra : ");
letra = getchar(); /*asignacin del carcter ingresado a la variable letra*/
getchar();
switch (letra)
{
case 'a': puts("\n \tguila");
break;
case 'b':
puts("\n \tvaca");
break;
case 'c':
puts("\n \tcaballo ");
puts("\n \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
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>
int main ()
{
int i;
float calif,prom,sum;
sum= ;
for(i=1;i<=7;i++)
{
printf(""\n \tIngrese la calificacin: \t%d",i);
scanf("%f",&calif);
sum=sum+calif;
}
prom=sum/7;
printf(""\n \t Tu promedio es: \t%.2f ",prom);
getch();
return ;
}
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: \t%d",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= ;
for(i=1;i<=n;i++)
{
printf(""\n \tIngrese la calificacin: \t%d",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;
for(i=1;i<=n;i++)
{
printf(""\n \tIngrese la calificacin: \t%d",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>
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=1;i<=n;i++)
{
printf(""\n \tIngrese el dato numero %d:\t",i);
scanf("%d",&num);
if((num%2)== )
{
sum1=sum1+num;
}
else
{
sum2=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,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.
pi=Proposicin Inicial;
while (pi)
proceso;
pi=Modificacin de pi;
..
#include <stdio.h>
#include <conio.h>
Int main()
{
float num,snum;
snum= ;
printf(" \t\nIngrese el primer numero:\t);
scanf(%f&num);
while(num)
{
snum=snum+num;
printf(" \t\nIngrese el siguiente numero:\t);
scanf(%f&num);
}
printf(" \t\nLa suma de los nmeros es:\t%f,snum);
getch();
return ;
}
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>
Int main()
{
floategre,segre;
segre= ;
printf(" \t\nIngrese el primer gasto:\t);
scanf(%f&egre);
while(egre)
{
segre=segre+egre;
printf(" \t\nIngrese el siguiente gasto:\t);
scanf(%f&egre);
}
printf(" \t\nEl valor de los gastos totales de la compaaes:\t%f,segre);
getch();
return ;
#include <stdio.h>
#include <conio.h>
Int main()
{
Int num;
float sum,raiz;
sum= ;
printf(" \t\nIngrese un numero entero positivo -0 para terminar-:\t);
scanf(%d&num);
while(num)
{
raz=sqrt(num);
printf(" \t\nLa raz cuadrada de %d es:\t%f,num,raiz);
sum=sum+raiz;
scanf(%d&num);
printf(" \t\nIngrese un numero entero positivo -0 para terminar-:\t);
scanf(%d&num);
}
printf(" \t\nLa suma de las races es:\t%f,sum);
getch();
return ;
}
do
Proceso;
..
modificacin de p;
while (p)
#include<stdio.h>
#include<conio.h>
Int main()
{
Int tiro,i;
i= ;
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 ;
}
EJERCICIOS DE REFORZAMIENTO
I.-Utilizando la estructura repetitiva for desarrolle los programas que realicen
las siguientes operaciones (funciones).
7.- Construir una pgina que contenga el siguiente men conversin de pesos a
dlares
conversin de libras a kilogramos conversin de kilmetros a millas
fin de men seleccionar opcin [ ]? Este es el edit del switch().
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.
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 main()
int cua;
for(i=1;i<=2 ;i++)
getch();
return (i*i);
El cuadrado de 1 es: 1
El cuadrado de 2 es: 4
El cuadrado de 3 es: 9
El cuadrado de 4 es: 16
El cuadrado de 5 es: 25
El cuadrado de 6 es: 36
El cuadrado de 7 es: 49
El cuadrado de 8 es: 64
El cuadrado de 9 es: 81
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 main()
int cua;
for(i=1;i<=2 ;i++)
getch();
El cuadrado de 1 es: 16
El cuadrado de 2 es: 16
El cuadrado de 3 es: 16
El cuadrado de 4 es: 16
El cuadrado de 5 es: 16
El cuadrado de 6 es: 16
El cuadrado de 7 es: 16
El cuadrado de 8 es: 16
El cuadrado de 9 es: 16
El cuadrado de 10 es: 16
El cuadrado de 11 es: 16
El cuadrado de 12 es: 16
El cuadrado de 13 es: 16
El cuadrado de 14 es: 16
El cuadrado de 15 es: 16
El cuadrado de 16 es: 16
El cuadrado de 17 es: 16
El cuadrado de 18 es: 16
El cuadrado de 19 es: 16
El cuadrado de 20 es: 16
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 local i como veremos a
continuacin.
#include <stdio.h>
#include <conio.h>
int main()
int con;
for(con=1;con<=5;con++)
funcion1();
getch ();
void funcion1(void)
int i=7;
i+=i;
::i=::i+i;
#include <stdio.h>
#include <conio.h>
int funcion2(void);
int funcion3(void);
int funcion4(void);
int main()
int i;
for(i=1;i<=5;i++)
getch ();
Int funcion1(void);
a+=a;
return (a);
int funcion2(void)
int a=2;
a++;
return (a);
int funcion3(void)
a+=2;
return (a);
Int funcion4(void);
Int a= 3;
a=a+::a;
return (a);
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 main(void)
int i;
for(i=1;i<=2;i++)
getch();
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 main(void)
int I, k=4;
for(i=1;i<=3;i++)
getch();
*r+=*r;
#include <stdio.h>
#include <conio.h>
int main(void)
int I, k=4;
for(i=1;i<=3;i++)
getch();
r+=r;
return (r)
#include <stdio.h>
#include <conio.h>
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);
int d;
a=5;
d=3;
(*b)++;
(*c)+=2;
printf(\n%d %d %d %d,a,*b,*c,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);
res;
res=(*apf)(X,Y);
return (res);
int main(void)
int r1,r2;
r1=control(suma,15,5);
r2=control(resta,10,4);
printf(\n%d %d %d %d,a,b,c,d);
f1(&b, &c);
printf(\nResultado 1 : %d,r1);
printf(\nResultado 2 : %d,r2);
EJERCICIOS DE REFORZAMIENTO
I.-Utilizando funciones desarrolle los siguientes programas.
CAPITULO V
ARREGLOS
UNIDIMENSIONALES
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]
4 arreglo[3]
5 arreglo[4]
6 arreglo[5] float arreglo[6];
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;
A[] A[1] A[2] A[3] A[4] A[5] A[6] A[7]
#include <stdio.h>
#include <conio.h>
int main ()
{
int i,num,cont= ;
int ele[5];
for i=; i<5;i++)
{
printf(\n\tIngrese el elemento %d del arreglo: ,i);
scanf(%d,&ele[i] );
}
printf(\n\tIngrese el nmero que se va a buscar en el arreglo: );
scanf(%d,&num );
for i=; i<5;i++)
if ( ele[i] ==num);
cont++;
printf(\n\tEl %d se encuentra %d veces en el arreglo ,num,cont );
getch();
return ;
}
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>
int main ()
{
int i,vot; /*Declaracin del contador i y de la variable vot*/
int jug[3 ]=; /*Declaracin del arreglo entero jug de 30 elementos, cada uno
empieza desde cero*/
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 nosotros al contar*/
else
printf(\n\tVoto invlido elija otro candidato );
printf(\n\tIngrese el siguiente voto - para terminar-);
scanf(%d,&vot );
}
printf(\n\tEl resultado de la eleccin );
for i= ; i<29;i++)
if ( ele[i] ==num);
cont++;
printf(\n\tEl candidato %d: obtuvo %d votos ,i+1, jug[i] );
getch();
return ;
}
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[]=%d \tz[1]=%d \tz[3]=%d \tz[4]=%d,x,y, z[], z[1],
z[3], z[4]);
getch();
return ;
}
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>
const int max=1 ; /*Con esta constante definimos el tamao del arreglo*/
int lec(int vec[ ],int t);
int imp(int vec[ ],int t);
int prod (int *x, int*y, int *z, int t); /* En los parmetros se puede escribir vec[ ], o
*vec */
int main ()
{
int ve1[max], ve2[max], ve3[max]; /* Declaracin de los 3 arreglos a emplear */
lect (ve1,max); /*En la llamada de la funcin lect (lectura), solo se incluye el
nombre del arreglo */
lect (ve1,max
prod (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);
imp(ve3, max);
getch ();
}
int lec(int vec[ ],int t);
{
int i;
printf(\n\t);
for( i= ; i<t;i++);
{
printf(\n\tIngrese el elemento %d: , i+1);
scanf ( %d , &vec [ i ] );
}
}
int imp(int vec[ ],int t);
{
int i;
for( i= ; i<t;i++);
{
printf(\n\tvec [ %d ]: %d ,i+1, vec [ i ] );
}
int prod (int *x, int*y, int *z, int t);
int i;
for( i= ; i<t;i++);
{
z [ i ] = x [ i ] * y [ i ];
}
#include <stdio.h>
#include <conio.h>
const int tam=5 ; /*Con esta constante definimos el tamao del arreglo*/
int main ()
{
int cal[tam], frec[6] ={ }; /*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= ; 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= ; 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= ; 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*/
{
EJERCICIOS DE REFORZAMIENTO
I.-Utilizando arreglos unidimensionales desarrolle los siguientes programas.
CAPITULO
VI
ARREGLOS MULTIDIMENSIONALES.
Para resolver problemas matemticos, donde se tiene mas de una ecuacin y dos
o mas 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.*/
#include <stdio.h>
#include <conio.h>
const int tam=1 ; /*Con esta constante definimos el tamao del arreglo*/
int main ()
{
int mat[tam] [tam];
lec(mat, tam); /* Llamada a la funcin lec (lectura)*/
imp (mat, tam); /* Llamada a la funcin imp (imprime) */
getch ( );
}
}
Otra manera de asignar los valores a un arreglo es la siguiente:
Int b[3][5]={1,5,7,9];
1 5 7 9
Otra manera 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>
const int max=5; /*Con esta constante definimos el tamao del arreglo*/
int main ()
{
int ma[max] [max], mb[max] [max], mc[max] [max];
int fil,col;
do
{
printf(\n\tIngrese el numero de filas de los arreglos:);
scanf ( %d , &fil );
}
while (fil>max ||fil<1);
do
{
Ing Oscar Garibay Castellanos Pgina 119
CECYT 9 JUAN DE DIOS BTIZ PAREDES IPN
PROGRAMACION EN LENGUAJE C
int sum (int m1 [ ] [max], int m2 [ ] [max], int m3[ ] [max], int f, int c);
{
int i,j;
for( i= ; i<f; i++);
for( j= ; j<c; j++);
m3[i][j]=m1[i][j] +m2[i][j];
}
EJERCICIOS DE REFORZAMIENTO
I.-Utilizando arreglos multidimensionales desarrolle los siguientes
programas.
BIBLIOGRAFIA