Вы находитесь на странице: 1из 123

CECYT 9 JUAN DE DIOS BTIZ PAREDES IPN

PROGRAMACION EN LENGUAJE C

CAPITULO I
PRINCIPIOS BSICOS DE LA
PROGRAMACIN EN C.

Ing Oscar Garibay Castellanos Pgina 1


CECYT 9 JUAN DE DIOS BTIZ PAREDES IPN
PROGRAMACION EN LENGUAJE 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.

Las computadoras realizan acciones que el usuario solicita, sin embargo el


lenguaje que emplea el usuario no es el mismo que el de la computadora ya que
esta trabaja por medio de combinaciones de 0 y 1, que se conoce como cdigo de
la mquina cdigo binario, de tal manera que los lenguajes de programacin
nos sirven para enlazar el lenguaje del programador con el lenguaje de la
mquina. Los lenguajes de programacin se clasifican en: Lenguajes de alto nivel
y lenguajes de bajo nivel.

1.1.1.-LENGUAJES DE BAJO NIVEL.

En esta categora estn los conocidos como lenguaje mquina y lenguaje


ensamblador, estn relacionados directamente con el diseo y la estructura del
hardware, dependen totalmente de la mquina, es decir que el programa que se
realiza con este tipo de lenguajes no se pueden migrar o utilizar en otras
maquinas.

1.1.2.-LENGUAJES DE ALTO NIVEL.

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.

Ing Oscar Garibay Castellanos Pgina 2


CECYT 9 JUAN DE DIOS BTIZ PAREDES IPN
PROGRAMACION EN LENGUAJE C

1.2.-BREVE HISTORIA DEL LENGUAJE C.


La historia de C parte de un lenguaje anterior, el lenguaje B, escrito por Ken
Thompson en 1970 con el objetivo de recodificar el sistema operativo UNIX, que
hasta el momento se haba programado en ensamblador. La pega del
ensamblador era que lo ligaba a una serie de mquinas concretas, por lo que
conseguir un lenguaje abstrado de cada mquina conseguira una portabilidad del
sistema muchsimo mayor. A su vez B fue inspirado en el BCPL de Martin Richard,
diseado tres aos antes.

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.

/* "Hola mundo" escrito en C */


#include <stdio.h>
void main()
{
printf( "Hola mundo" );
}
Paralelamente, en 1980 surge C++ de la mano de Bjarne Stroustrup (tambin de
Laboratorios Bell de AT&T). Disea este lenguaje con el objetivo de aadir a C
nuevas caractersticas: clases y funciones virtuales (de SIMULA67), tipos
genricos y expresiones (de ADA), la posibilidad de declarar variables en cualquier
punto del programa (de ALGOL68), y sobre todo, un autntico motor de objetos

Ing Oscar Garibay Castellanos Pgina 3


CECYT 9 JUAN DE DIOS BTIZ PAREDES IPN
PROGRAMACION EN LENGUAJE C

con herencia mltiple que permite combinar la programacin imperativa de C con


la programacin orientada a objetos. Estas nuevas caractersticas mantienen
siempre la esencia del lenguaje C: otorgan el control absoluto de la aplicacin al
programador, consiguiendo una velocidad muy superior a la ofrecida por otros
lenguajes.El siguiente hecho fundamental en la evolucin de C++ es sin duda la
incorporacin de la librera STL aos ms tarde, obra de Alexander Stepanov y
Adrew Koening. Esta librera de clases con contenedores y algoritmos genricos
proporciona a C++ una potencia nica entre los lenguajes de alto nivel.

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

/* "Hola mundo" escrito en C++ */


#include <iostream>
void main()
{
std::cout << "Hola mundo";
}
La ltima variante que ha surgido de C es el moderno C#. En el ao 2000,
Microsoft presenta su plataforma .NET junto con un nuevo lenguaje, C# (diseado
por Anders Hejlsberg), que servir de lenguaje principal de la plataforma. C# es un
hbrido de C++ y Java que fusiona, principalmente, la capacidad de combinar
operadores propia del primero (no incorpora la herencia mltiple) con la plena
orientacin a objetos del segundo. La orientacin a objetos es tal que el propio
programa est encapsulado en una clase.Actualmente C# se encuentra entre los
10 lenguajes ms utilizados. A pesar de su corta historia, ha recibido la aprobacin
del estndar de dos organizaciones: en el 2001 se aprueba el ECMA y en el 2003
el ISO.

/* "Hola mundo" escrito en C# */


class HolaMundo
{
static void Main()
{
System.Console.Write( "Hola mundo" );
}
}

En nuestro caso especfico trabajaremos con DEV C++, lo que por razones obvias
nos presentara algunas diferencias en la sintaxis de programacin normalizada

Ing Oscar Garibay Castellanos Pgina 4


CECYT 9 JUAN DE DIOS BTIZ PAREDES IPN
PROGRAMACION EN LENGUAJE C

por ANSI, sin embargo la filosofa y los algoritmos que se emplearan no cambian
el objetivo del curso.

1.3.-PROCEDIMIENTO GENERAL PARA ELABORAR


UN PROGRAMA.
Cuando realizamos una tarea cualquiera que esta sea estructuramos en forma
consciente o inconsciente una serie de pasos que seguimos en forma sistemtica,
un ejemplo es al preparar los alimentos, al practicar algn deporte, o al buscar la
resolucin de un problema tcnico o matemtico, en el ltimo caso requerimos
emplear alguna herramienta como una calculadora o una computadora, si
tomamos la segunda opcin estaremos obligados a estructurar la solucin del
problema a travs de un programa de computacional, que ser desarrollado
siguiendo la secuencia que a continuacin enumeramos:

1.-Planteamiento del problema.

2.-Definicin de un algoritmo.

3.-Codificacin del algoritmo en un lenguaje de programacin.

El planteamiento del problema.-consiste en establecer una problemtica a


resolver, definiendo todos los elementos que intervienen en el mismo.

Algoritmo.-Consiste en determinar la secuencia los de pasos, procedimientos o


acciones en forma ordenada que nos llevaran a la solucin de un problema dado,
el algoritmo deber estar definido en forma lgica y respetando las condiciones del
problema.

Diagrama de flujo.-Es la esquematizacin grfica de un algoritmo, a travs de una


serie de smbolos estandarizados que tienen como caracterstica principal la
equivalencia con una sintaxis especfica del lenguaje en el que se pretende
analizar un proceso, es decir un diagrama de flujo puede corresponder a un
proceso para resolver un problema matemtico con la computadora, un proceso
de produccin o el anlisis de tiempos y movimientos en una compaa, etc.

Ing Oscar Garibay Castellanos Pgina 5


CECYT 9 JUAN DE DIOS BTIZ PAREDES IPN
PROGRAMACION EN LENGUAJE C

Como mencionamos anteriormente los diagramas de flujo cuentan con smbolos


estandarizados con funciones definidas como podemos ver a continuacin:

Inicio

Ingreso de datos.

Proceso suma, resta, divisin, etc

Decisin.

Seleccin mltiple.

Impresin.

Ing Oscar Garibay Castellanos Pgina 6


CECYT 9 JUAN DE DIOS BTIZ PAREDES IPN
PROGRAMACION EN LENGUAJE C

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.

Ahora veamos el primer programa y analicmoslo por partes

Ejemplo 1.1.-Primer programa imprimir un letrero.

#include<stdio.h> /* llamada de la librera estndar de entradas y salida */

#include<conio.h> /* llamada de la librera de consola de entradas y salidas */

int main( ) /* llamada de la funcin main, esta es de suma importancia ya

que es la que se encarga de hacer interactuar a las funciones de

las libreras dentro del programa, el primer */

{ /*Inicio del programa principal*/

printf (BIENVENIDOS AL CECYT # 9 ); /*Funcin printf imprime el letrero

contenido entre las comillas, se inicia al

abrir el parntesis y se concluye

cerrando con punto y coma */

getch(); /*mantiene la impresin hasta que el usuario presiona la tecla enter*/

return ; /*Regresa el valor de a la funcin principal por el momento nos

conformaremos con esto, ya que en el tema de funciones se

Ing Oscar Garibay Castellanos Pgina 7


CECYT 9 JUAN DE DIOS BTIZ PAREDES IPN
PROGRAMACION EN LENGUAJE C

explicara el cmo y por qu*/

1.4.1.-EL COMANDO PRINTF Y EL USO DE SALTOS DE RENGLN


(\n) Y TABULADOR (\t)

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.

El comando getch(); estn contenidos en la librera conio.h y las funciones printf


que se aplica en este programa y scanf que veremos ms adelante estn
contenidos en la librera stdio.h.

Por otro lado la funcin printf adems de imprimir letreros los puede desplazar
dependiendo de la instruccin que se entre ellas tenemos

\n imprime el letrero saltando una lnea

\t imprime el letrero tabulando

\v imprime el letrero saltando lneas verticalmente

\h imprime el letrero saltando lneas horizontalmente.

Ejemplo 1.2.-Aplicacin de saltos de pgina y tabuladores.

#include<stdio.h>

#include<conio.h>

int main( )

printf(\n INSTITUTO POLITECNICO NACIONAL\n\n\t\t CECYT #9JUAN DE DIOS


BATIZ \n\n\t\t PROGRAMACION EN LENGUAJE C );

getch();

Ing Oscar Garibay Castellanos Pgina 8


CECYT 9 JUAN DE DIOS BTIZ PAREDES IPN
PROGRAMACION EN LENGUAJE C

return ; /* En los temas que se vern se empleara el smbolo para evitar

confusiones entre la letra o y el nmero cero ()*/

1.4.2.-USO DE VARIABLES, CONSTANTES Y COMANDO scanf.

Primero que nada definamos que son las constantes y las variables.

Constantes.-Son datos que no cambian su valor durante la ejecucin de un


problema.

Las constantes se dividen en enteras, reales y de tipo carcter, las cuales se


tienen una aplicacin especfica y su uso depende de las caractersticas del
problema a resolver y de la estructura establecida por el programador.

Variables.-Son objetos que cambian su valor durante el proceso .

1.4.2.1.-LOS IDENTIFICADORES.

Al usar variables y constantes en un proceso, es necesario que estas sean


diferenciadas, para tal fin se emplean nombres conocidos como identificadores,
los cuales pueden ser las letras del abecedario (minsculas o maysculas),
combinaciones de estas combinaciones de letras y nmeros, pero siempre
tomando en cuenta que se deben nombrar iniciando con una letra, sin embargo en
lenguaje c, as como en otros lenguajes de programacin, existe un conjunto de
palabras que tienen funciones especficas, y forman parte de la estructura del
mismo, por lo tanto no se pueden emplear como identificadores, estas palabras
reciben el nombre de palabras reservadas.

A continuacin se muestra una tabla donde aparecen estas, es importante


memorizarlas, ya que si por error son empleadas como identificadores nuestro
programa presentara errores de sintaxis, con lo que ser imposible compilar y
ejecutar el programa (correrlo) aunque la estructura del mismo sea la adecuada.

Ing Oscar Garibay Castellanos Pgina 9


CECYT 9 JUAN DE DIOS BTIZ PAREDES IPN
PROGRAMACION EN LENGUAJE C

TABLA 1.1.- PALABRAS RESERVADAS.

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

1.4.2.2.-TIPOS FUNDAMENTALES DE DATOS.


Un dato es informacin que se suministra por medio del teclado a la computadora,
misma que almacena y procesa en forma legible, los datos pueden ser de tipo
numrico o alfanumrico.

Los tipos fundamentales de datos numricos se clasifican en enteros y reales. Los


primeros se utilizan para representar subconjuntos de los nmeros naturales (N) y
enteros (Z). Los segundos se emplean para representar un subconjunto de los
nmeros racionales (Q).

a.-Enteros

Para declarar variables de alguno de los tipos enteros empleamos las palabras
reservadas char, int, long y enum.

char. Define un nmero entero de 8 bits. Su rango es [-128,127]. Tambin se


emplea para representar el conjunto de caracteres ASCII.

int. Define un nmero entero de 16 32 bits (dependiendo del procesador). Su


tamao suele coincidir con el del bus de datos del procesador.

long. Define un nmero entero de 32 64 bits.

Ing Oscar Garibay Castellanos Pgina 10


CECYT 9 JUAN DE DIOS BTIZ PAREDES IPN
PROGRAMACION EN LENGUAJE C

short. Define un numero entero de tamao menor o igual que int

Se debe cumplir que tamao (short) <= tamao(int) <= tamao(long)

Estos cuatro tipos pueden ir precedidos del modificador unsigned para indicar que
el tipo solo representa nmeros positivos o el cero.

La forma de declarar constantes y variables dentro de un programa es a travs de


dichos identificadores como se muestra a continuacin.

Constantes:

const int A=5; #define A 5;

int a; int a,b,c;

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.

Float. Define un nmero en coma flotante de precisin simple. El tamao de este


tipo suele ser 4 bytes (32 bits).

Double. Define un nmero en coma flotante de precisin doble. El tamao de este


tipo suele ser de 8 bytes(64 bits). El tipo double puede ir precedido del modificador
long, lo que indica que su tamao pasa a ser de 10 bytes.

float temperatura = 36.5 ;


double distancia = 128e64 ;

const float pi=3.1416; #define pi 3.1416;

Variables:

Ing Oscar Garibay Castellanos Pgina 11


CECYT 9 JUAN DE DIOS BTIZ PAREDES IPN
PROGRAMACION EN LENGUAJE C

float a; float a,b,c;

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.

Los operadores que se emplean en lenguaje c son:

TABLA 1.2.-OPERADORES ARITMETICOS

Operador. Funcin
+ Suma.
- Resta.
* Multiplicacin.
/ Divisin.
% Modulo (residuo)

1.4.2.4.-LA FUNCIN scanf.

Dentro de la librera estndar de entradas y salidas (stdio.h) existe una funcin


denominada scanf, la cual sirve para que el programa lea los datos que le
introduce el programador, esta funcin tiene una sintaxis muy similar a la de la
funcin printf, con la diferencia que aqu empleamos el signo & (Amperstand),
cuya funcin es la de asignar el valor que se ingresa por medio del teclado a la
variable que se indica, ahora para concretar lo visto hasta ahora realicemos un
ejemplo en cual obtendremos la suma de dos nmeros enteros para que con su
anlisis sea ms clara la explicacin:

Ing Oscar Garibay Castellanos Pgina 12


CECYT 9 JUAN DE DIOS BTIZ PAREDES IPN
PROGRAMACION EN LENGUAJE C

Ejemplo 1.3.-Desarrolla el diagrama de flujo y el cdigo para un programa que


calcule la suma de dos nmeros enteros.

DIAGRAMA DE FLUJO

inicio

fin

Ing Oscar Garibay Castellanos Pgina 13


CECYT 9 JUAN DE DIOS BTIZ PAREDES IPN
PROGRAMACION EN LENGUAJE C

CDIGO

#include <stdio.h>

#include <conio.h>

int main ()

clrscr();

int sum,a,b;

printf(\n\tIngrese el primer nmero=);

scanf(%d,a);

printf(\n\tIngrese el segundo nmero=);

scanf(%d,b);

sum=a+b;

printf(\n\n\n\t\t\tLa suma de los nmeros es =%d,sum);

getch();

return ;

Al capturar este programa notars que en la funcin scanf y printf aparece el


smbolo %d, esta es la instruccin que le indica al programa el tipo de dato que se
emplea que en este caso es entero, as mismo la sintaxis se diferencia nicamente
en que la funcin scanf utiliza el smbolo & para asignarle a a y a b los valores
que se ingresaron por medio del teclado para realizar la operacin.

Ing Oscar Garibay Castellanos Pgina 14


CECYT 9 JUAN DE DIOS BTIZ PAREDES IPN
PROGRAMACION EN LENGUAJE C

Como una prueba compila y corre el programa, posteriormente, asgnale a la


variable a el valor de 4.5 y a la variable b 3.4, veras que el resultado presentado
en la pantalla es 7, cuando debera ser 7.9, la razn es simple declaramos una
variable de tipo entera, por lo que la mquina solo sumara la parte entera
omitiendo los valores que aparecen a la derecha del punto decimal.

Ejemplo 1.4.-Desarrolla el diagrama de flujo y el cdigo para un programa que


calcule la suma de dos nmeros reales.

DIAGRAMA DE FLUJO

inicio

a,b

sum a+b

sum

fin

Ing Oscar Garibay Castellanos Pgina 15


CECYT 9 JUAN DE DIOS BTIZ PAREDES IPN
PROGRAMACION EN LENGUAJE C

CDIGO

#include <stdio.h>

#include <conio.h>

int main ()

float sum,a,b;

printf(\n\tIngrese el primer nmero=);

scanf(%f,a);

printf(\n\tIngrese el segundo nmero=);

scanf(%f,b);

sum=a+b;

printf(\n\n\n\t\t\tLa suma de los nmeros es =%f);

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.

A continuacin se muestra la magnitud de los datos dependiendo su tipo y el


formato para sus variables.

Ing Oscar Garibay Castellanos Pgina 16


CECYT 9 JUAN DE DIOS BTIZ PAREDES IPN
PROGRAMACION EN LENGUAJE C

TABLA 1.3.-TIPO DE DATOS Y ALCANCE.

ESPACIO MEMORIA RANGO


TIPO DATO

unsigned char 8 bits a 255

Char 8 bits -128 a 127

short int 16 bits -32,768 a 32,767

unsigned int 32 bits a 4,294,967,295

Int 32 bits -2,147,483,648 a 2,147,483,647

unsigned long 32 bits a 4,294,967,295

Enum 16 bits -2,147,483,648 a 2,147,483,647

Long 32 bits -2,147,483,648 a 2,147,483,647

Float 32 bits 3.4 x 1 -38 a 3.4 x 10+38(6 dec)

Doubl 64 bits 1.7 x1-38 a 1.7x1+38(15 dec)

long doubl 80 bits 3.4 x 1 -4932 a 1.1 x 1+4932

Void sin valor

Ing Oscar Garibay Castellanos Pgina 17


CECYT 9 JUAN DE DIOS BTIZ PAREDES IPN
PROGRAMACION EN LENGUAJE C

TABLA 1.4.-FORMATOS UTILIZADOS SEGN EL TIPO DE DATO.

FORMATO FUNCIN

%u Escribe enteros sin signo de 2 Bytes (unsigned)

%d %i Escribe enteros de 2 Bytes (int)

%ld Escribe enteros de largo alcance

%f Escribe reales de 4 Bytes (float)

%lf Escribe reales de doble precisin 8 Bytes (doubl float)

%e Escribe en forma exponencial

%g Escribe en %f %e en funcin del tamao del nmero.

%c Escribe caracteres de 1 Byte (char)

%s Escribe una cadena de caracteres

%5d Escribe enteros de 5 dgitos

%5.3f Escribe un nmero real con 5 dgitos y 3 sern decimales.

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.

Ejemplo 1.5.-Elabora un diagrama de flujo y su respectivo cdigo para un


programa que dados los dos catetos calcule el cuadrado de la hipotenusa.

Solucin: Para resolver este problema recordemos que el cuadrado de la


hipotenusa esta dado por H2=CO2 + CA2, pero como an no hemos trabajado mas
que elementos bsicos lo resolveremos utilizando H = (CO*CO) + (CA*CA),
veamos primero como se estructura el diagrama de flujo.

Ing Oscar Garibay Castellanos Pgina 18


CECYT 9 JUAN DE DIOS BTIZ PAREDES IPN
PROGRAMACION EN LENGUAJE C

DIAGRAMA DE FLUJO.

inicio

CO,CA

H(CO*CO) +(CA*CA)

fin

Ing Oscar Garibay Castellanos Pgina 19


CECYT 9 JUAN DE DIOS BTIZ PAREDES IPN
PROGRAMACION EN LENGUAJE C

CDIGO

#include <stdio.h>

#include <conio.h>

Int main()

floatco,ca,h;

printf(\n\tEl programa calcula el cuadrado de la hipotenusa de un triangulo


rectangulo);

printf(\n\tIngrese el valor del cateto opuesto);

scanf(%f,&co);

printf(\n\tIngrese el valor del cateto adyacente);

scanf(%f,&ca);

h=(co*co)+(ca*ca);

printf(\n\tEl cuadrado de la hipotenusa del triangulo rectngulo es: \t %f,h);

getch();

return ;

Ing Oscar Garibay Castellanos Pgina 20


CECYT 9 JUAN DE DIOS BTIZ PAREDES IPN
PROGRAMACION EN LENGUAJE C

Ejemplo 1.6.-Elabora un diagrama de flujo y su respectivo 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 en este para evitar que se dae.

Solucin.-Partamos del conocimiento de la formula para el clculo de la resistencia


de carga en un diodo dada como:

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

Ing Oscar Garibay Castellanos Pgina 21


CECYT 9 JUAN DE DIOS BTIZ PAREDES IPN
PROGRAMACION EN LENGUAJE C

CDIGO

#include<stdio.h>

#include<conio.h>

float RL,vf,vd,Id;

int main()

printf("\n\n\t\tDame el voltaje total");

scanf("%f",&vf);

printf("\n\n\t\tDame el voltaje del diodo");

scanf("%f",&vd);

printf("\n\n\t\tDame la corriente del diodo");

scanf("%f",&Id);

RL=(vf-vd)/Id;

printf("\n\n\t\tEl valor de la resistencia mnima es:\t %2f",RL);

getch();

return ;

Ing Oscar Garibay Castellanos Pgina 22


CECYT 9 JUAN DE DIOS BTIZ PAREDES IPN
PROGRAMACION EN LENGUAJE C

Ejemplo 1.7.-Elabora un diagrama de flujo y cdigo para un programa que al


recibir como datos los valores del voltaje con que se alimenta la base de un
transistor, la corriente que circula por su colector y el factor beta determine la
resistencia de carga mnima a conectarse en la base de este para evitar que se
dae.

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

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

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

getch();

return ;

Ejemplo 1.8.-Elabora un diagrama de flujo y su respectivo cdigo para un


programa que dado el radio de una circunferencia determine su permetro y su
rea.

Ing Oscar Garibay Castellanos Pgina 24


CECYT 9 JUAN DE DIOS BTIZ PAREDES IPN
PROGRAMACION EN LENGUAJE C

Solucin:

Conocemos la formula para calcular el rea y el permetro de una circunferencia.

Area= x r2 o Area= x rxr

Permetro= x d o Permetro= x 2xr;

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

Ing Oscar Garibay Castellanos Pgina 25


CECYT 9 JUAN DE DIOS BTIZ PAREDES IPN
PROGRAMACION EN LENGUAJE C

#include <stdio.h>

#include <conio.h>

#define pi 3.1416;

Int main()

float rad,peri,area;

printf(\n\tEl programa calcula el permetro y el rea de una circunferencia);

printf(\n\tIngrese el valor del radio de la circunferencia);

scanf(%f,rad);

peri=(2*rad)*pi;

area=(rad*rad)*pi;

printf(\n\tEl permetro de la circunferencia es: \t %f, peri);

printf(\n\tEl area de la circunferencia es: \t %f, area);

getch();

return ;

1.4.3.-LA LIBRERA MATEMTICA

Ing Oscar Garibay Castellanos Pgina 26


CECYT 9 JUAN DE DIOS BTIZ PAREDES IPN
PROGRAMACION EN LENGUAJE C

Habrs advertido que en los ejercicios anteriores no empleamos smbolos


ortogrficos, y en este ltimo caso la variable se escribi como pi,la razn es
que al programar en lenguaje c los smbolos - letras griegas, smbolos
ortogrficos, etc- no son reconocidos, generando en algunos casos smbolos
desconocidos, en otros errores de operacin.

El ltimo ejercicio parece ser el ms sencillo, se eligi debido a que si observas se


ha incorporado el uso de una constante que en este caso es pi, como el valor de pi
es conocido, el problema se resuelve de manera relativamente fcil, sin embargo
en algunos casos como las funciones trigonomtricas se presenta el problema de
contener gran cantidad de valores, por lo tanto no es una buena prctica intentar
declararlos todos como constantes, en cambio podemos emplear la librera
matemtica que cuenta con funciones ya definidas y que nos sintetiza la
resolucin de los problemas, las funciones contenidas en esta librera se muestran
a continuacin:

TABLA 1.5.-FUNCIONES DE LA LIBRERA math.h

Funcin Explicacin Funci Explicacin


n
exp(x) Funcin exponencial ex. Eleva sin(x) Obtiene el seno de x.
e(2.718281) a la potencia de x.
cos(x) Obtiene el coseno de x. asin(x) Obtiene el arco seno de
x.
acos(x) Obtiene el arco coseno de x. tan(x) Obtiene la tangente de
x.
atan(x) Obtiene el arco tangente de x. sqrt(x) Obtiene la raz
cuadrada de x, x0.
pow(x,y) Potencia xy, x>0, y0. fabs(x) Devuelve el valor
absoluto de x.
fmod(x1,x2 Obtiene el resto de x1 entre log(x) Devuelve el logaritmo
) x2, con el mismo signo de x1. natural de x, in(x), x>0.

Ejercicio 1.9.-Ahora resolvamos el ltimo ejercicio empleando la biblioteca math.h.

Solucin: Comenzaremos por recordar las formulas aplicadas en el problema


anterior.

Ing Oscar Garibay Castellanos Pgina 27


CECYT 9 JUAN DE DIOS BTIZ PAREDES IPN
PROGRAMACION EN LENGUAJE C

Area= x r2 o Area= x rxr

Permetro= x d o Permetro= x 2xr;

Ahora a diferencia del primer ejercicio vamos a emplear las formulas de la


izquierda, es decir aquellas donde aparece la constante , con lo que tendremos
el siguiente diagrama de flujo.

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

Ing Oscar Garibay Castellanos Pgina 28


CECYT 9 JUAN DE DIOS BTIZ PAREDES IPN
PROGRAMACION EN LENGUAJE C

#include <stdio.h>

#include <conio.h>

#include <math.h>

Int main()

float rad,peri,area;

printf(\n\tEl programa calcula el permetro y el rea de una circunferencia);

printf(\n\tIngrese el valor del radio de la circunferencia);

scanf(%f,&rad);

peri=M_PI*2*rad;

area=M_PI*pow(rad,2);

printf(\n\tEl permetro de la circunferencia es: \t %f, peri);

printf(\n\tEl area de la circunferencia es: \t %f, area);

getch();

return ;

Notars que en este caso el valor de la constante pi no se declara y que se


emplea el comando M_PI, adems el radio al cuadrado (rad*rad) se substituye por
pow(rad,2), que si observas la tabla 1.5 son funciones contenidas en la biblioteca
math.h.

Ejercicio1.10.-Se desea generar un programa que al recibir como datos dos


vectores A y B en su forma polar determine la suma de estos.

Ing Oscar Garibay Castellanos Pgina 29


CECYT 9 JUAN DE DIOS BTIZ PAREDES IPN
PROGRAMACION EN LENGUAJE C

A partir del presente ejercicio consideraremos que conoces el procedimiento para


resolver los problemas, por lo que solamente se dar el diagrama de flujo, as
como la codificacin del mismo.

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.

Ing Oscar Garibay Castellanos Pgina 30


CECYT 9 JUAN DE DIOS BTIZ PAREDES IPN
PROGRAMACION EN LENGUAJE C

#include <stdio.h>

#include <conio.h>

#include <math.h>

int main()

float ra,rb,teta,tetb,xa,ya,xb,yb,x,y,r,tetr;

printf(\n\tEl programa calcula la suma de dos vectores A y B);

printf(\n\tIngrese el valor delamagnitud del vector A);

scanf(%f,&ra);

printf(\n\tIngrese el valor del angulo del vector A);

scanf(%f,&teta);

printf(\n\tIngrese el valor de la magnitud del vector B);

scanf(%f,&rb);

printf(\n\tIngrese el valor del angulo del vector b);

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

Ing Oscar Garibay Castellanos Pgina 31


CECYT 9 JUAN DE DIOS BTIZ PAREDES IPN
PROGRAMACION EN LENGUAJE C

tetr=atan(y/x);

printf(\n\tLa magnitud del vector es:\t %f,r);

printf(\n\tEl angulo del vector en pi radianes es:\t %f,tetr);

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.

Ing Oscar Garibay Castellanos Pgina 32


CECYT 9 JUAN DE DIOS BTIZ PAREDES IPN
PROGRAMACION EN LENGUAJE C

I.-Elabore los programas que muestren en la pantalla los siguientes letreros:

a)

INSTITUTO POLITECNICO NACIONAL

CECYT #9 JUAN DE DIOS BATIZ

PROGRAMACION EN LENGUAJE C

ALUMNO: (aqu debe escribir el nombre del alumno)

GRUPO: NUMERO DE BOLETA:

PROFESOR:

b)

XXX

XXXXX

XXXXXXX

2.-Elabore los diagramas de flujo y cdigos para los siguientes problemas.

a) Restar, multiplicar y dividir dos nmeros enteros.


b) Restar, multiplicar y dividir dos nmeros reales.

Ing Oscar Garibay Castellanos Pgina 33


CECYT 9 JUAN DE DIOS BTIZ PAREDES IPN
PROGRAMACION EN LENGUAJE C

c) Obtenga el permetro y la rea de un rectngulo.


d) Calcular obtener el permetro y la rea de un cuadrado.
e) Determina el permetro y la rea de un triangulo rectngulo.
f) Dado el radio del embolo de un cilindro y la presin aplicada a este.
Determine la fuerza con que sale el vstago.
g) Conversin de pulgadas a centmetros.
h) Conversin de metros a pies.
i) Dados el voltaje, la potencia real y el factor de potencia de un sistema
trifsico. Obtener las potencias aparentes, reactivas y el ngulo de
desplazamiento entre fases.
j) Dado el ngulo de elevacin que tiene una persona que se encuentra en
una embarcacin, y conocida la altura de un faro. Calcular la distancia a la
cual se encuentra el barco de la playa.

Ing Oscar Garibay Castellanos Pgina 34


CECYT 9 JUAN DE DIOS BTIZ PAREDES IPN
PROGRAMACION EN LENGUAJE C

CAPITULO II
ESTRUCTURAS ALGORITMICAS
SELECTIVAS.

Ing Oscar Garibay Castellanos Pgina 35


CECYT 9 JUAN DE DIOS BTIZ PAREDES IPN
PROGRAMACION EN LENGUAJE C

2.1.-ESTRUCTURAS ALGORITMICAS SELECTIVAS.


Una estructura algortmica selectiva es empleada cuando el proceso de solucin
para un problema depende directamente de una condicin previamente
establecida.

2.2.-ESTRUCTURA SELECTIVA DOBLE if-else.

Cuando en la solucin de un problema se desarrolla un proceso que depende de


si la evaluacin realizada a una condicin dada es cierta o falsa, se dice que
tenemos una condicional doble.

Esta condicional es conocida como if-else, y bsicamente opera de la siguiente


manera:

Si la condicin planteada es cierta el programa realizar un proceso definido por el


algoritmo del problema planteado, s esta por el contrario nos da como resultado
de la evaluacin un valor negativo se ejecutarn operaciones determinadas para
dicha situacin, la sintaxis que se debe seguir para esta estructura es la siguiente:

Sintaxis:

..

if(proposicin 1)

Operacin 1; (Cuando se cumple la condicin estas operaciones realiza el


programa)

else

{
Operacin 2; (Cuando no se cumple la condicin estas operaciones realiza el programa)

Ing Oscar Garibay Castellanos Pgina 36


CECYT 9 JUAN DE DIOS BTIZ PAREDES IPN
PROGRAMACION EN LENGUAJE C

Si la expresin es VERDADERA (distinta de ) se ejecuta proposicin 1; en caso


contrario, se ejecuta proposicin 2.

Para resolver problemas en los cuales se involucran las estructuras selectivas es


necesario auxiliarse de operadores relacionales y operadores lgicos, los cuales
nos sirven para darle sentido a la condicin establecida, estos operadores se
muestran en las siguientes tablas.

2.2.1.-OPERADORES DE RELACIN Y LGICOS

Los operadores de relacin y los operadores lgicos se emplean para formar


expresiones booleanas. Una expresin booleana slo puede tomar dos valores :
VERDADERO o FALSO.

En C, se considera que una expresin equivale a una expresin booleana FALSA,


cuando al evaluarla su resultado es cero. Si el resultado de una expresin es
distinto de 0, se considera que tiene un valor lgico de verdad.

TABLA 2.1.-OPERADORES RELACIONALES.

Operador. Funcin
== Igual a.
!= Diferente de.
< Menor que.
> Mayor que.
<= Menor o igual que.
>= Mayor o igual que.

TABLA 2.2.-OPERADORES LGICOS.

Operador. Funcin.
! Negacin.
&& Conjuncin.
|| Disyuncin.

Ing Oscar Garibay Castellanos Pgina 37


CECYT 9 JUAN DE DIOS BTIZ PAREDES IPN
PROGRAMACION EN LENGUAJE C

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

Felicidades usted puede formar parte de alguno de nuestros equipos


Lastima esta liga es exclusiva

fin

CDIGO

#include<stdio.h>

#include <conio.h>

int main()
{

Ing Oscar Garibay Castellanos Pgina 38


CECYT 9 JUAN DE DIOS BTIZ PAREDES IPN
PROGRAMACION EN LENGUAJE C

char letra;
clrscr();

printf("Escriba su sexo\nmasculino-m-\nFemenino f- ");


scanf("%c",&letra);

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.

Ejemplo 2.2.- Desarrolle el diagrama de flujo y el cdigo para un programa en el


que al ingresar el salario mensual de un trabajador se determine si este es
aspirante, o no a la obtencin de un crdito hipotecario, el requisito es contar con
un ingreso mensual mnimo de 40000 pesos.

Ing Oscar Garibay Castellanos Pgina 39


CECYT 9 JUAN DE DIOS BTIZ PAREDES IPN
PROGRAMACION EN LENGUAJE C

DIAGRAMA DE FLUJO.

Ing Oscar Garibay Castellanos Pgina 40


CECYT 9 JUAN DE DIOS BTIZ PAREDES IPN
PROGRAMACION EN LENGUAJE C

ing

Usted es candidato para el crdito hipotecario

Ing<=4000

Ing Oscar Garibay Castellanos Pgina 41


CECYT 9 JUAN DE DIOS BTIZ PAREDES IPN
PROGRAMACION EN LENGUAJE C

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

Ing Oscar Garibay Castellanos Pgina 42


CECYT 9 JUAN DE DIOS BTIZ PAREDES IPN
PROGRAMACION EN LENGUAJE C

2.3.-CONDICIONES COMPUESTAS.

Una condicin compuesta se define como dos o ms condiciones simples unidas


por los llamados operadores lgicos.

Ejemplo:
if ( (sueldo> 7 ) && ( sexo=='m') ) etc, etc, etc.

Ejemplo 2.3.-Desarrolle un programa que al capturar el tres valores indique si con


ellos se puede formar un triangulo equiltero.

CDIGO.

#include<stdio.h>
#include<conio.h>
#include<math.h>

int main()
{

float a,b,c;

printf("dame el valor de A:");


scanf("%f",&a);
printf("dame el valor de B:");
scanf("%f",&b);
printf("dame el valor de C:");
scanf("%f",&c);

Ing Oscar Garibay Castellanos Pgina 43


CECYT 9 JUAN DE DIOS BTIZ PAREDES IPN
PROGRAMACION EN LENGUAJE 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");

Ing Oscar Garibay Castellanos Pgina 44


CECYT 9 JUAN DE DIOS BTIZ PAREDES IPN
PROGRAMACION EN LENGUAJE C

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

Ing Oscar Garibay Castellanos Pgina 45


CECYT 9 JUAN DE DIOS BTIZ PAREDES IPN
PROGRAMACION EN LENGUAJE C

En el ejercicio anterior no se desarrolla el diagrama de flujo debido a que se


pretende que el estudiante lo desarrolle durante la clase con la ayuda del profesor,
para poner en prctica los conocimientos adquiridos hasta este momento.

Ejemplo 2.4.-Desarrolla un diagrama de flujo y el respectivo cdigo para un


programa que limite el acceso a un club de polo donde los miembros deben ser
mayores de 18 aos, ser hombres y tener como mnimo un ingreso de 3,
pesos mensuales.

DIAGRAMA DE FLUJO.

inicio

e i s

e>18&i30000&s=1

Lo sentimos no puedes ser parte del club


Bienvenido al club

fin

CDIGO.

#include<stdio.h>
#include<conio.h>
float ing;
int main ()
{
Int e,i,s;

Ing Oscar Garibay Castellanos Pgina 46


CECYT 9 JUAN DE DIOS BTIZ PAREDES IPN
PROGRAMACION EN LENGUAJE C

printf(""\n \t Ingrese su edad por favor : \t ");


scanf("%d",&e);
printf(""\n \t Ingrese su ingreso mensual por favor : \t ");
scanf("%d",&i);
printf(""\n \t Ingrese su sexo -1 masculino 2 femenino- por favor : \t ");
scanf("%d",&s);
if(e>=18 & i>=3)
printf("\n \t Bienvenido al club");
else
printf("\n\t Lo sentimos no puedes ser parte del club");
getch();
return ;
}

Ejemplo 2.5.-Desarrolla un diagrama de flujo y el respectivo cdigo para un


programa que divida dos nmeros reales, cuando el denominador tenga un valor
diferente a cero, y que mande al usuario el mensaje no se puede realizar la
operacin en caso de que el denominador sea cero.

DIAGRAMA DE FLUJO.

Ing Oscar Garibay Castellanos Pgina 47


CECYT 9 JUAN DE DIOS BTIZ PAREDES IPN
PROGRAMACION EN LENGUAJE C

inicio

a,b

b0

no se puede realizar la operacin r=a/b

fin

CDIGO

#include<stdio.h>
#include<conio.h>
int main ()
{
float r,a,b;

Ing Oscar Garibay Castellanos Pgina 48


CECYT 9 JUAN DE DIOS BTIZ PAREDES IPN
PROGRAMACION EN LENGUAJE C

printf(""\n \t Dame el numero divisor: ");


scanf("%f",&b);
printf(""\n \t Dame el numero dividendo: ");
scanf("%f",&a);
if(b== )
printf(("\n \tNo se puede dividir");
else
{
r=a/b;
printf(""\n \t El resultado es: %.2f",r);
}
getch();
return ;
}

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.

Ing Oscar Garibay Castellanos Pgina 49


CECYT 9 JUAN DE DIOS BTIZ PAREDES IPN
PROGRAMACION EN LENGUAJE C

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

Ing Oscar Garibay Castellanos Pgina 50


CECYT 9 JUAN DE DIOS BTIZ PAREDES IPN
PROGRAMACION EN LENGUAJE C

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

2.4.-ESTRUCTURA SELECTIVA MLTIPLE switch


A partir del presente tema los diagramas de flujo se dejarn cono actividad al
estudiante, por lo tanto no se presentaran mas.

Esta estructura de seleccin nos permite generar un programa en el cual se


encuentran algoritmos para diferentes tipos de ejercicios, de tal manera que

Ing Oscar Garibay Castellanos Pgina 51


CECYT 9 JUAN DE DIOS BTIZ PAREDES IPN
PROGRAMACION EN LENGUAJE C

presentamos un men de opciones que el usuario seleccionara solo una, y el


programa ejecuta nicamente esa rama pasando por alto los dems algoritmos.

La sintaxis que se debe seguir para esta estructura es la siguiente:

..
switch(op)
{
case 1:
operaciones;
break;
case 2:
operaciones;
break;
case 3:
operaciones;
break;

case n:
operaciones;
break;

default:
operaciones;
break;
}

Ejemplo 2.7.-Desarrolle el cdigo para un programa que realice las 4 operaciones


bsicas (suma, resta, multiplicacin y divisin), segn la opcin que elija el
usuario.

#include <stdio.h>
#include <conio.h>
int main ()
{
clrscr();
int op;

Ing Oscar Garibay Castellanos Pgina 52


CECYT 9 JUAN DE DIOS BTIZ PAREDES IPN
PROGRAMACION EN LENGUAJE C

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

*Para evitar confusiones en algunos prismas como el rectangular donde existen


dos alturas una en la base y la otra propiamente del prisma se emplearn las
variables W para indicar el ancho de la base, D para la altura de la base y H para
la altura del prisma.

Ing Oscar Garibay Castellanos Pgina 53


CECYT 9 JUAN DE DIOS BTIZ PAREDES IPN
PROGRAMACION EN LENGUAJE C

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

Ing Oscar Garibay Castellanos Pgina 54


CECYT 9 JUAN DE DIOS BTIZ PAREDES IPN
PROGRAMACION EN LENGUAJE C

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

Ejemplo 2.9.-Realice el cdigo para un programa en el cual al seleccionar una


opcin calcule loas resistencias de carga cuando se tiene un diodo, la resistencia
mnima de la base en un transistor, los parmetros elctricos en un arreglo con
dos resistencias en serie y paralelo.

#include<stdio.h>

Ing Oscar Garibay Castellanos Pgina 55


CECYT 9 JUAN DE DIOS BTIZ PAREDES IPN
PROGRAMACION EN LENGUAJE C

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

Ing Oscar Garibay Castellanos Pgina 56


CECYT 9 JUAN DE DIOS BTIZ PAREDES IPN
PROGRAMACION EN LENGUAJE C

printf(""\n \t Introduzca el valor de la resistencia dos: \t ");


scanf("%f",&r2);
req=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);
break;
case 4:
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);
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);
break;
default:
printf("\n \t La opcin no existe ");
break;
}
getch ();
return ;
}

Ejemplo 2.10.-Realice el cdigo para un programa en el cual al seleccionar una


letra (opcin) despliegue la palabra guila para la letra a, la palabra vaca para la
letra , las palabras caballo y camello para la letra c, y para cualquier otra letra la
palabra no hay ( emplee las funciones getchar y puts).

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

Ing Oscar Garibay Castellanos Pgina 58


CECYT 9 JUAN DE DIOS BTIZ PAREDES IPN
PROGRAMACION EN LENGUAJE C

Elabora los diagramas de flujo y los respectivos cdigos para los siguientes
programas.

1.-Al recibir la calificacin de un alumno le indique si puede o no ingresar a la


universidad.

2.-Al recibir un nmero indique si este es submltiplo de dos o no.

3.-Dado un dato realizar la conversin de centmetros a pulgadas o de pulgadas a


centmetros segn sea el caso.

4.-Dado un dato realizar la conversin de grados centgrados a grados farenhei


segn sea el caso

5.-Al ingresar la edad y el grado de estudios define si es apto o no para trabajar en


una empresa manufacturera como supervisor.

6.-Al recibir 4 nmeros, los compare y los imprima en orden descendente.

7.-Sume, reste, divida y multiplique dos vectores, segn la opcin seleccionada,


independientemente de que los vectores estn en su forma polar o rectangular.

8.-Calcule velocidad, longitud y aceleracin en cada libre, tiro parablico y


movimiento rectilneo uniformemente acelerado, segn la opcin elegida.

9.- Al introducir la fecha de nacimiento imprima el signo zodiacal de la persona.

10.-Conversin de pesos a dlares, de dlares a pesos, de euros a pesos, de


pesos a euro, de dlares a euros y de euros a dlares (considera el tipo de cambio
como: 1 Dlar-12 pesos, 1 Euro-18 pesos).

Ing Oscar Garibay Castellanos Pgina 59


CECYT 9 JUAN DE DIOS BTIZ PAREDES IPN
PROGRAMACION EN LENGUAJE C

CAPITULO III

ESTRUCTURAS REPETITIVAS

Ing Oscar Garibay Castellanos Pgina 60


CECYT 9 JUAN DE DIOS BTIZ PAREDES IPN
PROGRAMACION EN LENGUAJE C

3.1.-ESTRUCTURAS REPETITIVAS

Al plantear la solucin de algunos problemas matemticos nos encontramos que


una operacin se repite varias veces, es obvio que bajo estas condiciones los
datos que se utilizan se modifican en forma gradual de acuerdo al nmero de
veces que se repite la operacin, a esta accin se le conoce como ciclo.

En algunos casos se puede definir el nmero de ciclos o repeticiones que se


ejecutan en la operacin, en otros no, a las operaciones que se repiten
cclicamente y que tienen un control del nmero de ciclos se les conoce como
estructuras repetitivas, estas nos ayudarn a resolver problemas tales como
calcular el factorial de un nmero (que es la multiplicacin de un numero por todos
los que le anteceden hasta llegar al uno), o una suma de n nmeros.

3.2.-ESTRUCTURA REPETITIVA for

Esta es la estructura repetitiva que se emplea para aquellos problemas en que el


nmero de veces que se repite una operacin es conocido, la sintaxis que se debe
seguir es la siguiente:

for (v=vi;v(<,<=,>,>=)vf;v=v(+,-)ID)

proceso;

Donde vi= inicializacin valor inicial.

vf=condicin valor final.

Id=incremento positivo o negativo-.

Ing Oscar Garibay Castellanos Pgina 61


CECYT 9 JUAN DE DIOS BTIZ PAREDES IPN
PROGRAMACION EN LENGUAJE C

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

La condicin es una expresin relacional que evala la variable de control de ciclo


contra un valor final o de parada que determina cuando debe acabar el ciclo, de
igual manera es un lmite superior, es decir el nmero mximo de eventos que se
deben contar (ciclos.

El incremento define la manera en que la variable de control de ciclo debe cambiar


cada vez que el computador repite un ciclo.

Estos argumentos deben ser separados con un punto y coma (;)

Ejemplo 3.1.-Elabore un programa que al recibir como datos las 7 calificaciones


que obtuvo un estudiante durante un curso de fsica, y determine su promedio.

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

Ing Oscar Garibay Castellanos Pgina 62


CECYT 9 JUAN DE DIOS BTIZ PAREDES IPN
PROGRAMACION EN LENGUAJE C

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:

TABLA 3.1.-OPERACIONES ABREVIADAS.

Expresin Abreviada Expresin Equivalente

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

Ing Oscar Garibay Castellanos Pgina 63


CECYT 9 JUAN DE DIOS BTIZ PAREDES IPN
PROGRAMACION EN LENGUAJE C

Ejemplo 3.2.-Tomando como referencia el ejercicio anterior ahora lo resolveremos


con la expresin abreviada, y para su mejor comprensin los siguientes ejercicios
se harn de las dos forma sin y con expresiones abreviadas-.

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

Ejemplo 3.3.-Resolver el problema anterior, sin expresin abreviada considerando


el nmero de calificaciones definido por el grupo al que se le imparti la clase.

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

Ing Oscar Garibay Castellanos Pgina 64


CECYT 9 JUAN DE DIOS BTIZ PAREDES IPN
PROGRAMACION EN LENGUAJE C

}
prom=sum/n;
printf(""\n \t Tu promedio es: \t%.2f ",prom);
getch();
return ;
}

Ejemplo 3.4.-Resolver el problema anterior, con expresin abreviada considerando


el nmero de calificaciones definido por el grupo al que se le imparti la clase.

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

Ing Oscar Garibay Castellanos Pgina 65


CECYT 9 JUAN DE DIOS BTIZ PAREDES IPN
PROGRAMACION EN LENGUAJE C

Ejemplo 3.4.-Elabora el cdigo para un programa que calcule el factorial de


cualquier nmero.

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

Ing Oscar Garibay Castellanos Pgina 66


CECYT 9 JUAN DE DIOS BTIZ PAREDES IPN
PROGRAMACION EN LENGUAJE C

Ejemplo 3.5.-El presente programa calcula el factorial de cualquier nmero, pero


el incremento o decremento i++ i se indica de la manera i+1 i-1, segn sea
el caso.

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

Ing Oscar Garibay Castellanos Pgina 67


CECYT 9 JUAN DE DIOS BTIZ PAREDES IPN
PROGRAMACION EN LENGUAJE C

Ejemplo 3.6.-Elabora el cdigo para un programa que al ingresar una cantidad de


nmeros cualquiera sume por un lado los pares y por el otro los impares,
imprimiendo las respectivas sumas.

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

Ing Oscar Garibay Castellanos Pgina 68


CECYT 9 JUAN DE DIOS BTIZ PAREDES IPN
PROGRAMACION EN LENGUAJE C

Ejemplo 3.7.- Resolver el ejemplo anterior utilizando la forma abreviada, as como


para la nueva forma de ver el incremento en i, solo que ahora cuando este es
negativo, es decir i-1.

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

Ing Oscar Garibay Castellanos Pgina 69


CECYT 9 JUAN DE DIOS BTIZ PAREDES IPN
PROGRAMACION EN LENGUAJE C

Ejemplo 3.8.-Dado un circuito elctrico con n resistencias conectadas en serie el


programa calcula la resistencia total, la corriente total y la potencia total del
sistema.

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

Ing Oscar Garibay Castellanos Pgina 70


CECYT 9 JUAN DE DIOS BTIZ PAREDES IPN
PROGRAMACION EN LENGUAJE C

Ejemplo 3.9.- Dado un circuito elctrico con n resistencias conectadas en paralelo


el programa calcula la resistencia total, la corriente total y la potencia total del
sistema.

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

Ing Oscar Garibay Castellanos Pgina 71


CECYT 9 JUAN DE DIOS BTIZ PAREDES IPN
PROGRAMACION EN LENGUAJE C

Generalmente el ciclo for empieza en uno y se incrementa de uno en uno, sin


embargo hay casos en que este tiene particularidades como las que se indican a
continuacin

1.-El valor inicial puede ser diferente de uno, ejemplo:

for(x=5;x<=15;x=x+1){ etc.};

2.-El valor inicial puede ser negativo, ejemplo:

for (x = -3 ;x<= 8; 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:

El valor inicial de la variable debe ser mayor que el valor final.

Cambiar el sentido de la condicin.


ejemplo:
for (x= 5; x>= 1; x= x-4 ) { etctera };

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.

Ing Oscar Garibay Castellanos Pgina 72


CECYT 9 JUAN DE DIOS BTIZ PAREDES IPN
PROGRAMACION EN LENGUAJE C

3.3.-ESTRUCTURA REPETITIVA WHILE

Esta estructura la empleamos cuando desconocemos totalmente el nmero de


ciclos que ejecuta una operacin, de tal manera que cada vez que se ejecuta el
ciclo se evala una condicin, si esta existe se ejecuta el ciclo, de lo contrario el
ciclo no es ejecutado y se da trmino a este .

La estructura algortmica repetitiva WHILE al igual que las estructuras anteriores


emplea una sintaxis que se presenta a continuacin:

pi=Proposicin Inicial;

while (pi)

proceso;

pi=Modificacin de pi;

..

Ejemplo 3.10.-Se desea obtener la suma de una serie de nmeros al azar, el


programa deber contarlos en forma indefinida hasta que el usuario concluya con
el total de los nmeros.

#include <stdio.h>

Ing Oscar Garibay Castellanos Pgina 73


CECYT 9 JUAN DE DIOS BTIZ PAREDES IPN
PROGRAMACION EN LENGUAJE C

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

Ing Oscar Garibay Castellanos Pgina 74


CECYT 9 JUAN DE DIOS BTIZ PAREDES IPN
PROGRAMACION EN LENGUAJE C

Ejemplo 3.12.-Se desea obtener la suma de la raz cuadrada de un conjunto de


nmeros que se ingresan en forma no definida.

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

Ing Oscar Garibay Castellanos Pgina 75


CECYT 9 JUAN DE DIOS BTIZ PAREDES IPN
PROGRAMACION EN LENGUAJE C

3.4.-ESTRUCTURA REPETITIVA do-while.


Esta estructura al igual que la while se emplea para resolver problemas donde no
sabemos el nmero de veces que se debe repetir un ciclo, pero conocemos que al
menos este se debe realizar una vez.

A continuacin presentamos la sintaxis de esta estructura repetitiva.

do

Proceso;

..

modificacin de p;

while (p)

Ejemplo 3.12.-El programa calcula el promedio de un jugador de boliche durante


un torneo.

#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

Ing Oscar Garibay Castellanos Pgina 76


CECYT 9 JUAN DE DIOS BTIZ PAREDES IPN
PROGRAMACION EN LENGUAJE C

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

Ejemplo 3.13.-Utilizando la combinacin de las estructuras algortmica repetitiva


do-while y la estructura algortmica selectiva mltiple switch, realizar un programa
donde el usuario elija una figura geomtrica de la cual desea calcular el rea de la
base, el rea superficie y el volumen.

#include<stdio.h>
#include<conio.h>
#include<math.h>
int main ()
{
float a,b,ce,d,abase,asup,vol;
int op,e;

do
{

Ing Oscar Garibay Castellanos Pgina 77


CECYT 9 JUAN DE DIOS BTIZ PAREDES IPN
PROGRAMACION EN LENGUAJE C

printf(" \t Calcular el Area de la Base, AreaSuperficial y Volumen de


Prismast\t\t\nIngrese una opcin\n\n\t 1.-Poligono Rectangular \n\n\t 2.-Prisma
Tringular \n\n\t 3.-Cilindro\n\n\t 4.-Prisma Cuadrangular \n\n\t 5.-Prisma
Hexagonal \n\n\t\t\t\t\t\t");
scanf("%d",&op);
switch (op)
{
case 1 :
printf("\nIngrese el ancho de la base:");
scanf("%f",&a);
printf("Ingrese el largo de la base:");
scanf("%f",&b);
printf("Ingrese la altura del Prisma:");
scanf("%f",&ce);
abase=a*b;
asup=(2*(a*b))+(2*(a*ce))+(2*(b*ce));
vol=a*b*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 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;

Ing Oscar Garibay Castellanos Pgina 78


CECYT 9 JUAN DE DIOS BTIZ PAREDES IPN
PROGRAMACION EN LENGUAJE C

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

Ing Oscar Garibay Castellanos Pgina 79


CECYT 9 JUAN DE DIOS BTIZ PAREDES IPN
PROGRAMACION EN LENGUAJE C

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

printf("\n\t\t\tDesea realizar otro calculo? \n\t SI-Presiona 1 \n\t NO---Presiona 0


\n\t\t\t");
scanf("%d",&e);

}
while(e==1);
getch ();
return ;
}

Ing Oscar Garibay Castellanos Pgina 80


CECYT 9 JUAN DE DIOS BTIZ PAREDES IPN
PROGRAMACION EN LENGUAJE C

Ejemplo 3.14.-Utilizando la estructura algortmica selectiva if/else en combinacin


con la estructura algortmica repetitiva do-while realizar un programa que divida a
dos nmeros, y que enve un mensaje de error si el denominador es cero.

# 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== )

printf("\a\n\t\tLa divisin entre cero es una indeterminacin \n\n");

else

printf("\n\n\t\tEl resultado de la divisin es =%f\n\n",c);


printf("\n\t\t Sidesea realizar otra divisin presione 1\n\n\t\t");
scanf("%d",&d);

}
while(d==1);
getch ();
return ;
}

Ing Oscar Garibay Castellanos Pgina 81


CECYT 9 JUAN DE DIOS BTIZ PAREDES IPN
PROGRAMACION EN LENGUAJE C

EJERCICIOS DE REFORZAMIENTO
I.-Utilizando la estructura repetitiva for desarrolle los programas que realicen
las siguientes operaciones (funciones).

1.- Despliegue los nmeros del 20 al 30.

2.- Desplegar los enteros entre 30 y 50 acompaados de su potencia cuadrada y


raz cbica respectivamente (revisar el tema de operadores aritmticos).

3.- Desplegar los mltiplos de 5 contenidos entre el nmero 10 y el 50 con su


factorial y logaritmo respectivo (revisar el tema de operadores aritmticos
tambin).

4.- Desplegar la tabla de multiplicar que el usuario indique.

5.- Evaluar la funcin Y=5X2 + 3X + 8 CUANDO X--> -3...10 (rango de -3 hasta


10)

II.-Utilizando la estructura repetitiva while desarrolle los programas que


realicen las siguientes operaciones (funciones).

1.- Despliegue los nmeros enteros entre 50 y 80.

2.- Desplegar los mltiplos de 4 contenidos entre el nmero 20 y el 60 con su


logaritmo de base 10 y su logaritmo de base e (revisar el tema de operadores
aritmticos).

3.- Desplegar la tabla de multiplicar que el usuario indique.

4.- Evaluar una funcin cualesquiera para el rango de valores de x de -3 a +5

Ing Oscar Garibay Castellanos Pgina 82


CECYT 9 JUAN DE DIOS BTIZ PAREDES IPN
PROGRAMACION EN LENGUAJE C

III.-Utilizando la estructura repetitiva do-while desarrolle los programas que


realicen las siguientes operaciones (funciones).

1.- Capturar un nmero cualesquiera e informar si es o no es mayor de 100

2.- Capturar un numero entero cualesquiera e informar si es o no es mltiplo de 4 (


recordar el operador mod(%), analizado en el tema de operadores aritmticos).

3.- Capturar 3 nmeros y ordenarlos de manera descendente y ascendente.

4.- Capturar los cinco datos ms importantes de un Empleado, incluyendo el


sueldo diario y los das trabajados , desplegarle su cheque semanal solo si gan
ms de $500.00 en la semana, en caso contrario desplegarle un bono de
despensa semanal de $150.00 .

5.- Capturar los datos ms importantes de un estudiante incluyendo tres


calificaciones, una pgina que contiene una boleta de calificaciones es llamada si
el estudiante es de la carrera de medicina, en caso contrario otra pagina despliega
un oficio citando a los padres del estudiante a una pltica amistosa con los
maestros de la escuela.

6.- Capturar los datos mas importantes de un producto cualesquiera, incluyendo


cantidad, precio, etc., desplegar una orden de compra, solo si el producto es de
origen nacional, en caso contrario no hacer nada.

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

8.- Construir un programa que capture un deporte y despliegue dos implementos


deportivos apropiados.

9.- Evaluar cualquier funcin vista para cuando x = 3, -4, 5

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

Ing Oscar Garibay Castellanos Pgina 83


CECYT 9 JUAN DE DIOS BTIZ PAREDES IPN
PROGRAMACION EN LENGUAJE C

aumentarle un segundo y verificar si ese cambio afecta los otros dos, es decir, a
los minutos y a las horas.

CAPITULO
IV

FUNCIONES.

Ing Oscar Garibay Castellanos Pgina 84


CECYT 9 JUAN DE DIOS BTIZ PAREDES IPN
PROGRAMACION EN LENGUAJE C

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:

1. Facilitan la lectura y escritura de los programas.

2. Permiten el trabajo en paralelo se asigna a una persona el desarrollo de


una funcin en especfico- , por lo que se divide la responsabilidad.

3. El cdigo para funciones se escribe una vez y se emplea las que sea
necesario.

4. Facilitan el mantenimiento de los programas.

Un programa puede contener una o varias funciones las cuales interactan por
medio de:

Parmetros por valor.

Parmetros por referencia.

Variables globales.

4.1.1.-TIPOS DE VARIABLES.

Ing Oscar Garibay Castellanos Pgina 85


CECYT 9 JUAN DE DIOS BTIZ PAREDES IPN
PROGRAMACION EN LENGUAJE C

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:

a) Variables Locales.- Son objetos definidos tanto en el programa principal


como en las funciones, su alcance est limitado por el programa principal o
por la funcin en la cual estn definidas, es decir una variable local
comienza a existir en una funcin cuando se llama a dicha funcin, y
desaparece cuando el control regresa al programa principal.

b) Variables Globales.-Son objetos definidos antes del inicio del programa


principal, su alcance es amplio ya que tienen influencia tanto en el
programa principal como en todas sus funciones.

c) Variables Estticas.-Son similares a las locales pero conservan su valor


durante la ejecucin del programa, es decir comienzan a existir cuando se
llama a la funcin y conservan su valor an cuando el control regresa al
programa principal.

4.2.-SINTAXIS PARA LAS FUNCIONES.


Tipo de resultado Nombre de la funcin (parmetros)

Instrucciones; /*Cuerpo de la funcin*/

Ing Oscar Garibay Castellanos Pgina 86


CECYT 9 JUAN DE DIOS BTIZ PAREDES IPN
PROGRAMACION EN LENGUAJE C

Donde:

Tipo de resultado.-Tipo de resultado que devuelve la funcin (entero, real,


carcter, cadena de caracteres, etc).

Nombre de la funcin.-El cual se recomienda sea uno que tenga relacin con lo
que realiza dicha funcin.

Parmetros.-Se utiliza para indicar la lista de parmetros que recibe la funcin.

Instrucciones.-Son las instrucciones que pertenecen a la funcin.

Ejemplo 4.1.-La siguiente funcin calcula el cuadrado de los primeros 20 nmeros.

#include <stdio.h>

#include <conio.h>

int cuadrado(void); /*Prototipo de funcin*/

int i; /*Variable global*/

int main()

int cua;

for(i=1;i<=2 ;i++)

cua=cuadrado(); /*llamada a la funcin cuadrado*/

printf(\nEl cuadrado de %d es: \t%d.i,cua);

getch();

Ing Oscar Garibay Castellanos Pgina 87


CECYT 9 JUAN DE DIOS BTIZ PAREDES IPN
PROGRAMACION EN LENGUAJE C

int cuadrado(void) /*Declaracin de la funcin*/

{ /*La funcin calcula el cuadrado de la variable global i */

return (i*i);

Al ejecutar el programa desplegar la pantalla el siguiente resultado.

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

El cuadrado de 10 es: 100

El cuadrado de 11 es: 121

El cuadrado de 12 es: 144

El cuadrado de 13 es: 169

El cuadrado de 14 es: 196

Ing Oscar Garibay Castellanos Pgina 88


CECYT 9 JUAN DE DIOS BTIZ PAREDES IPN
PROGRAMACION EN LENGUAJE C

El cuadrado de 15 es: 225

El cuadrado de 16 es: 256

El cuadrado de 17 es: 289

El cuadrado de 18 es: 324

El cuadrado de 19 es: 361

El cuadrado de 20 es: 400

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<=2 ;i++)

cua=cuadrado(); /*llamada a la funcin cuadrado*/

printf(\nEl cuadrado de %d es: \t%d.i,cua);

getch();

Ing Oscar Garibay Castellanos Pgina 89


CECYT 9 JUAN DE DIOS BTIZ PAREDES IPN
PROGRAMACION EN LENGUAJE C

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

Al ejecutar el programa se desplegara el siguiente resultado

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

Ing Oscar Garibay Castellanos Pgina 90


CECYT 9 JUAN DE DIOS BTIZ PAREDES IPN
PROGRAMACION EN LENGUAJE C

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 notaras el programa da resultados que no concuerdan con el clculo que


se realiza previamente, esto se debe a que la variable local tiene preferencia sobre
la global y solo considera este valor para realizar la operacin, por lo tanto siempre
dar como resultado 16 (El cuadrado de 4).

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.

Ejemplo 4.2.-Aplicacn de variables globales y variables locales.

#include <stdio.h>

#include <conio.h>

int funcion1(void); /*Prototipo de funcin*/

int i=3; /*Variable global*/

Ing Oscar Garibay Castellanos Pgina 91


CECYT 9 JUAN DE DIOS BTIZ PAREDES IPN
PROGRAMACION EN LENGUAJE C

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

Al ejecutar el programa lograras ver la diferencia de resultados con el ejemplo


donde se genero el conflicto entre variables locales y globales.

Ing Oscar Garibay Castellanos Pgina 92


CECYT 9 JUAN DE DIOS BTIZ PAREDES IPN
PROGRAMACION EN LENGUAJE C

Ejemplo 4.3.-A continuacin se muestra otra Aplicacn de variables globales y


variables locales.

#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++)

printf(\nEl resultado de la funcin 1 es: %d,funcion1());

printf(\nEl resultado de la funcin 2 es: %d,funcion2());

printf(\nEl resultado de la funcin 3 es: %d,funcion3());

printf(\nEl resultado de la funcin 4 es: %d,funcion4());

getch ();

Int funcion1(void);

Ing Oscar Garibay Castellanos Pgina 93


CECYT 9 JUAN DE DIOS BTIZ PAREDES IPN
PROGRAMACION EN LENGUAJE C

a+=a;

return (a);

int funcion2(void)

int a=2;

a++;

return (a);

int funcion3(void)

static int a=6;

a+=2;

return (a);

Int funcion4(void);

Int a= 3;

a=a+::a;

return (a);

Ing Oscar Garibay Castellanos Pgina 94


CECYT 9 JUAN DE DIOS BTIZ PAREDES IPN
PROGRAMACION EN LENGUAJE C

4.3.-PARAMETROS POR VALOR Y POR


REFERENCIA

Como ya mencionamos anteriormente la comunicacin entre las funciones y el


programa principal, o bien entre las mismas funciones, se lleva a cabo mediante
variables globales y parmetros por valor parmetros por referencia, como ya
vimos la comunicacin por variables ahora veremos la comunicacin por
parmetros.

PARAMETROS POR VALOR.-Permiten pasar datos entre el programa principal y


las funciones, incluso entre las mismas funciones. En el parmetro se escribe una
copia de la variable original, si el parmetro sufre una alteracin en la funcin que
lo recibe, la variable original no se ve afectada.

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.

Ejemplo 4.4.-La siguiente funcin calcula el cuadrado de los primeros 20 nmeros,


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

Ing Oscar Garibay Castellanos Pgina 95


CECYT 9 JUAN DE DIOS BTIZ PAREDES IPN
PROGRAMACION EN LENGUAJE C

for(i=1;i<=2;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.*/

getch();

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;

Ing Oscar Garibay Castellanos Pgina 96


CECYT 9 JUAN DE DIOS BTIZ PAREDES IPN
PROGRAMACION EN LENGUAJE C

for(i=1;i<=3;i++)

printf(\nValor de k antes de llamar a la funcin es %d es: \t%d,++k);

printf(\nValor de k despus de llamar a la funcin es %d es: \t%d,f1(&k));

getch();

void f1(int *r) /*Declaracin de la funcin*/

*r+=*r;

Ejemplo 4.5.-Ahora resolvamos el mismo problema pero empleando parmetros


por valor.

#include <stdio.h>

#include <conio.h>

int f1(int); /* Prototipo de funcin. El parmetro es entero y por valor. */

int main(void)

int I, k=4;

for(i=1;i<=3;i++)

Ing Oscar Garibay Castellanos Pgina 97


CECYT 9 JUAN DE DIOS BTIZ PAREDES IPN
PROGRAMACION EN LENGUAJE C

printf(\nValor de k antes de llamar a la funcin es %d es: \t%d,++k);

printf(\nValor de k despus de llamar a la funcin es %d es: \t%d,f1(k));

getch();

int f1(int r) /*Declaracin de la funcin*/

r+=r;

return (r)

Ejemplo 4.6.-El programa combina variables locales y globales, as como


parmetros por valor y por referencia.

#include <stdio.h>

#include <conio.h>

Int a,b,c,d; /* Variables globales */

int f1(int*, int*); /* Prototipo de funcin.

Los dos parmetros son por referencia */

int f2(int, int*); /* Prototipo de funcin.Aqui un parmetro es por valor y el

Otro por referencia */

Ing Oscar Garibay Castellanos Pgina 98


CECYT 9 JUAN DE DIOS BTIZ PAREDES IPN
PROGRAMACION EN LENGUAJE C

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 f1(int b*, int c*)

int d;

a=5;

d=3;

(*b)++;

Ing Oscar Garibay Castellanos Pgina 99


CECYT 9 JUAN DE DIOS BTIZ PAREDES IPN
PROGRAMACION EN LENGUAJE C

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

4.4.-PASO DE FUNCIONES COMO PARAMETROS.


Muchos de los problemas que se resuelven por medio de la programacin en
lenguaje C pueden resolverse de manera ms sencilla si una funcin es empleada
dentro de otra como si se tratara de una variable, estas llamadas se realizan por
medio de un apuntador, el cual no es ms que una variable que contiene a otra
variable o en su caso una funcin, y se representa por los signos de direccin (&)
e indireccin (*).

Ejemplo 4.7.-El siguiente programa muestra la forma en que una funcin es


empleada dentro de otra como variable (paso de una funcin como parmetro).

#include <stdio.h>

#include <conio.h>

Ing Oscar Garibay Castellanos Pgina 100


CECYT 9 JUAN DE DIOS BTIZ PAREDES IPN
PROGRAMACION EN LENGUAJE C

int suma (int X, int Y) /* Prototipo de funcin.

Los dos parmetros son por referencia */

return (X+Y);

int resta (int X, int Y) /* Prototipo de funcin.

Los dos parmetros son por referencia */

return (X-Y);

int control(int (*apf)(int,int), int X,int Y) /* Prototipo de funcin.

Los dos parmetros son por referencia */

res;

res=(*apf)(X,Y);

return (res);

int main(void)

int r1,r2;

r1=control(suma,15,5);

Ing Oscar Garibay Castellanos Pgina 101


CECYT 9 JUAN DE DIOS BTIZ PAREDES IPN
PROGRAMACION EN LENGUAJE C

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.

1. Dado el radio y la altura calcule el volumen y el rea superficial de un cono.

2. Calcule el factorial de un nmero cualquiera.

3. Desplegar los enteros entre 30 y 50 acompaados de su potencia cuadrada


y raz cbica respectivamente (revisar el tema de operadores aritmticos).

4. Desplegar la tabla de multiplicar que el usuario indique.

5. Evaluar la funcin Y=5X 2 + 3X + 8 CUANDO X--> -3...10 (rango de -3 hasta


10)

6. Calcule el binomio de Newton para un nmero cualquiera.

7. Determina los parmetros elctricos para un circuito elctrico con


resistencias conectadas en serie.

8. Determina los parmetros elctricos para un circuito elctrico con


resistencias conectadas en serie.

9. Al ingresarle el da y mes de nacimiento determine el signo zodiacal del


usuario.

Ing Oscar Garibay Castellanos Pgina 102


CECYT 9 JUAN DE DIOS BTIZ PAREDES IPN
PROGRAMACION EN LENGUAJE C

10. Al ingresar una serie de nmeros el programa determinara si son primos o


no y en caso de serlo los imprimir al final.

11. Capturar un nmero cualesquiera e informar si es o no es mayor de 100.

12. Capturar los cinco datos ms importantes de un Empleado, incluyendo el


sueldo diario y los das trabajados , desplegarle su cheque semanal solo si
gan ms de $500.00 en la semana, en caso contrario desplegarle un bono
de despensa semanal de $150.00.

13. Capturar los datos ms importantes de un estudiante incluyendo tres


calificaciones, una pgina que contiene una boleta de calificaciones es
llamada si el estudiante es de la carrera de medicina, en caso contrario otra
pagina despliega un oficio citando a los padres del estudiante a una pltica
amistosa con los maestros de la escuela.

14. Capturar 3 nmeros y ordenarlos de manera descendente y ascendente.

CAPITULO V

Ing Oscar Garibay Castellanos Pgina 103


CECYT 9 JUAN DE DIOS BTIZ PAREDES IPN
PROGRAMACION EN LENGUAJE C

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

Ing Oscar Garibay Castellanos Pgina 104


CECYT 9 JUAN DE DIOS BTIZ PAREDES IPN
PROGRAMACION EN LENGUAJE C

5.1.1.-NDICE DE UN ARREGLO.

Los arreglos estn compuestos por un nmero definido de elementos, de tal


manera que para indicar la posicin de estos en el arreglo, se utiliza un ndice
como elemento de correlacin. Los ndices en C van desde la posicin 0 hasta la
posicin tamao 1.

5.1.2.-ELEMENTOS DE UN ARREGLO.

Un elemento de un arreglo es un valor particular dentro de la estructura del


arreglo. Para acceder a un elemento del arreglo es necesario indicar la posicin a
travs del ndice dentro del arreglo.

Ejemplo 5.1

arreglo[] /*Primer elemento del arreglo*/

arreglo[3] /*Cuarto elemento del arreglo*/

5.2.-ARREGLOS UNIDIMENSIONALES

Un arreglo de una dimensin es una lista de variables, todas de un mismo tipo a


las que se hace referencia por medio de un nombre comn. Una variable individual
del arreglo se llama elemento del arreglo. Para declarar un arreglo de una sola
dimensin se usa el formato general:

tipo_dato identificador[tamao];

int A[1];

Ing Oscar Garibay Castellanos Pgina 105


CECYT 9 JUAN DE DIOS BTIZ PAREDES IPN
PROGRAMACION EN LENGUAJE C

float B[18];

doubl C[5];

Para ingresar un elemento especfico del arreglo se teclea el nmero del


elemento. En C todos los arreglos empiezan en 0, esto quiere decir que si se
desea acceder al primer elemento del arreglo debe usar el ndice igual a . Para
ingresar un arreglo se especifica el ndice del elemento que interesa dentro de un
corchete, por ejemplo: valor= A[1];

Los arreglos empiezan en , de manera que el ndice 1 se refiere al segundo


elemento. Para asignar el valor a un elemento de un arreglo, escribimos el
elemento en el lado izquierdo de una sentencia de asignacin por ejemplo:

A[] =1;

C almacena arreglos de una sola dimensin en una localizacin de memoria


contigua con el primer elemento en la posicin mas baja. De esta manera, A[0] es
adyacente a A[1], que es adyacente a A[2], y as sucesivamente, como se puede
ver a continuacin.


A[] A[1] A[2] A[3] A[4] A[5] A[6] A[7]

El valor de un elemento perteneciente a un arreglo puede ser empleado en


sustitucin de una variable sencilla o una constante. A continuacin se muestra la
forma en que se declara un arreglo de una dimensin y el significado de cada una
de sus partes.

int cuad[3]; /* forma un arreglo de una dimensin y de tres elementos, con el

nombre :cuad, y cuyos elementos son:

cuad[0] primer elemento

cuad[1] segundo elemento

cuad[2] tercer elemento*/.

Ing Oscar Garibay Castellanos Pgina 106


CECYT 9 JUAN DE DIOS BTIZ PAREDES IPN
PROGRAMACION EN LENGUAJE C

Ejemplo 5.2.-El programa al recibir un arreglo unidimensional de tipo entero y un


nmero entero, determina cuntas veces se encuentra el entero en el arreglo.

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

Ejemplo 5.3.-En la eleccin para determinar al mejor jugador de futbol en un pas


se denominan a 3 candidatos.

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

printf(\n\tIngrese el primer voto - para terminar- :);


scanf(%d,&vot );
while (vot)
{
If ((vot> ) && (vot<5)) /* Verifica que el voto sea correcto*/

Ing Oscar Garibay Castellanos Pgina 107


CECYT 9 JUAN DE DIOS BTIZ PAREDES IPN
PROGRAMACION EN LENGUAJE C

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 apuntador es una variable que tiene la direccin de otra variable y se


representa por los signos de direccin (&) e indireccin (*).

El smbolo & sirve para proporcionar la direccin de un objeto.

El smbolo * sirve para accesar al objeto del cual se tiene la direccin.

Un arreglo se puede pasar a una funcin indicando el nombre del arreglo que es
representado por un apuntador.

Ejemplo 5.3.-Aplicacin de apuntadores y arreglos.

#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]);

Ing Oscar Garibay Castellanos Pgina 108


CECYT 9 JUAN DE DIOS BTIZ PAREDES IPN
PROGRAMACION EN LENGUAJE C

int *ix; /* ix representa un apuntador a un entero*/


ix=&x; /* ix apunta a x, ix tiene la direccin de ix*/
y=*ix; /* y toma el valor de x, ahora vale 3 */
*ix=1; /* x se modifica, ahora vale 1*/
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]);

ix=&z[2]; /*ix apunta al tercer elemento del arreglo z. */


y=*ix; /* y toma el valor de z[2], ahora vale 6 */
*ix=15; ; /* z[2] se modifica ahora vale 15 */
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]);

x=*ix+5; /*x se modifica, ahora vale z[2] + 5 =20;


*ix=*ix 5; /*z[2] se modifica ahora vale 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]);
++*ix; /*z[2] se modifica, se incrementa en 1, ahora vale 11.*/
*ix+=1; /*z[2] se vuelve a modificar, ahora vale 12.*/
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]);

x=*(ix+1); /* x se modifica el apuntador ix accede temporalmente a z[3], por lo


tanto x toma este valor (8). Observa que ix no se reasigna*/
y=*ix; /* y se modifica, toma el valor de z[2] (12)*/
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]);

ix=ix+1; /*ix se modifica. Observa la forma de mover el apuntador. Ahora ix


apunta al cuarto elemento de z (z[3]).*/
y=*ix; /* y se modifica ahora vale z[3] (8).*/
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]);

ix=ix+4; /*ix se modifica.Observa que el apuntador se mueve 4 posiciones y cae


en una direccin fuera del arreglo. Esto ocasionara un error.*/
y=*ix; /* y se modifica y toma un valor de error, es un error que no marca el
compilador*/.

Ing Oscar Garibay Castellanos Pgina 109


CECYT 9 JUAN DE DIOS BTIZ PAREDES IPN
PROGRAMACION EN LENGUAJE C

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]);
ix=&x; /*ix apunta a la variable entera x.*/
ix=ix+1; /*ix se mueve en una posicin y cae en una celda incorrecta*/
x=*ix; /* x toma el valor (basura) de la celda a la que apunta ix */
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.

Ejemplo 5.4.-El programa Obtiene el producto de dos vectores utilizando la tcnica


de arreglos unidimensionales , los vectores son de tipo entero y contienen cada
uno 1 elementos, los arreglos estn definidos como: ve1[10], ve2[10] y ve3[10],
donde los dos servirn para ingresar los elementos de cada vector y el tercero se
usara para el resultado de la operacin].

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

Ing Oscar Garibay Castellanos Pgina 110


CECYT 9 JUAN DE DIOS BTIZ PAREDES IPN
PROGRAMACION EN LENGUAJE C

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

Ejemplo 5.5.-El siguiente programa calcula las calificaciones de un grupo de 50


alumnos, obtiene la frecuencia de cada una de ellas e imprime la ms alta.

#include <stdio.h>

Ing Oscar Garibay Castellanos Pgina 111


CECYT 9 JUAN DE DIOS BTIZ PAREDES IPN
PROGRAMACION EN LENGUAJE C

#include <conio.h>
const int tam=5 ; /*Con esta constante definimos el tamao del arreglo*/

int lec (int *, int);


int frec ( int, int, int, int); /* Prototipo de Funciones */
int imp (int *,int );
int may (int*, int);

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*/
{

Ing Oscar Garibay Castellanos Pgina 112


CECYT 9 JUAN DE DIOS BTIZ PAREDES IPN
PROGRAMACION EN LENGUAJE C

int I, mfre= , 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= , mval =x [ ];
for( i= ; i<t;i++);
if ( mval< x [ i ] )
{
mfre =I;
mval= x [ i ];
printf(\n\n \tMayor frecuencia de calificaciones: %d \t Valor: %d, mfre, mval);
}

EJERCICIOS DE REFORZAMIENTO
I.-Utilizando arreglos unidimensionales desarrolle los siguientes programas.

1. Dado un arreglo de nmeros desordenados, el programa imprimir los


nmeros en forma ordenada, pero sin nmeros repetidos.

2. Escriba un programa que al ingresarle un arreglo unidimensional de


nmeros enteros determine cuntos positivos, negativos y nulos existen.

3. Construya un programa empleando arreglos unidimensionales, que al


ingresar las calificaciones de un grupo determine el promedio general de
este, el porcentaje de aprobados y reprobados.

4. Se desea determinar la produccin agrcola de trigo en la zona del bajo,


elabora un programa que desplegu El promedio anual de toneladas
cosechadas por estado, Los aos donde la produccin fue mayor y Los
aos donde fue menor.

Ing Oscar Garibay Castellanos Pgina 113


CECYT 9 JUAN DE DIOS BTIZ PAREDES IPN
PROGRAMACION EN LENGUAJE C

5. Al recibir un arreglo ordenado en forma ascendente el programa imprimir


el mismo arreglo pero en forma descendente.

6. Calcule la suma de dos vectores cualquiera.

7. Escribe un programa que determine la media y la moda de una serie de


datos.

8. Al recibir un arreglo unidimensional de nmeros reales, obtendr como


resultado la sume del cuadrado de los nmeros.

9. Al recibir una serie de nmeros almacenados en un arreglo unidimensional


el programa imprimir los primeros 100 nmeros primos.

10. Al recibir una serie de nmeros almacenados en un arreglo unidimensional


el programa imprimir lo nmeros que son mltiplos de 3,7 y 9
respectivamente.

Ing Oscar Garibay Castellanos Pgina 114


CECYT 9 JUAN DE DIOS BTIZ PAREDES IPN
PROGRAMACION EN LENGUAJE C

CAPITULO
VI
ARREGLOS MULTIDIMENSIONALES.

6.1.-DEFINICIN DE ARREGLOS MULTIDIMENSIONALES


Un arreglo bidimensional es una coleccin finita, homognea y ordenada de
datos, en la que se hace referencia a cada elemento del arreglo por medio de dos
ndices. El primero se emplea para indicar la fila y el segundo indica la columna.

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.

Uno de los mtodos numricos ms empleados es el de resolucin de matrices.

Recordemos que una matriz es un conjunto de nmeros ordenados (conocidos


como elementos) e identificados por subndices que indican la posicin de la fila y

Ing Oscar Garibay Castellanos Pgina 115


CECYT 9 JUAN DE DIOS BTIZ PAREDES IPN
PROGRAMACION EN LENGUAJE C

la columna correspondiente donde se encuentra el elemento como se ve en la


tabla 6.1, y por lo tanto es un arreglo de tipo bidimensional, as que en el presente
captulo trabajaremos en la mayora de las veces con matrice.

A[ ][ ] A[ ][1] A[ ][2] A[ ][3] A[ ][4]

8 3 7 6 -9
-3 -16 -9 5
4 5 67 7 5

A[2][ ] A[2][1] A[2][2] A[2][3] A[2][4]


Tabla 6.1.-Representacin de una matriz.

6.2.-DECLARACIN DE ARREGLOS BIDIMENSIONALES.


El espacio de memoria que ocupara nuestro arreglo se reserva en el momento en
que lo declaramos, veamos como declararlos.

Int main (void)

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

Ing Oscar Garibay Castellanos Pgina 116


CECYT 9 JUAN DE DIOS BTIZ PAREDES IPN
PROGRAMACION EN LENGUAJE C

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>
const int tam=1 ; /*Con esta constante definimos el tamao del arreglo*/

int lec (int [ ], [tam], int);


int imp (int [ ], [tam], int);

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

int lec(int a[ ][tam], int f)


{
int i,j;
for( i= ; i<f; i++);
for( j= ; j<f; j++);
{
printf(\n\tIngrese el elemento %d %d :, i+1, j+1);
scanf ( %d , &a [ I ][ j ] );
}
}
int imp(int a[ ] [ tam ], intf)
{
Int i,j;
for( i= ; i<f; i++);
for( j= ; j<tam; j++);
if ( i ==j )
printf(\n\tDiagonal %d %d : %d , i, j, a[ i ] [ j ])

}
Otra manera de asignar los valores a un arreglo es la siguiente:

Ing Oscar Garibay Castellanos Pgina 117


CECYT 9 JUAN DE DIOS BTIZ PAREDES IPN
PROGRAMACION EN LENGUAJE C

Int a[3] [6] ={ };

En este caso todos los elementos de la matriz inician en cero como se ve en la


siguiente tabla.

A[ ][ ] A[ ][1] A[ ][2] A[ ][3] A[ ][4]

A[2][ ] A[2][1] A[2][2] A[2][3] A[2][4]


Tabla 6.2.-representacin grfica de la declaracin de un arreglo bidimensional.

en la siguiente declaracin del arreglo veras que los cuatro componentes de la


primera fila toman como valores iniciales 1, 5,7, y 9 respectivamente, mientras que
los dems tendrn el valor inicial cero.

Int b[3][5]={1,5,7,9];

A[ ][ ] A[ ][1] A[ ][2] A[ ][3] A[ ][4]

1 5 7 9

A[2][ ] A[2][1] A[2][2] A[2][3] A[2][4]

Tabla 6.3.-representacin grfica de la declaracin de un arreglo bidimensional.

Otra manera de declarar una matriz cuando se debe iniciar con valores
predeterminados diferentes en cada uno de los elementos ser.

Int c[3][5]={1,9,7,56, ,3,3,43, , 11 , 12, 43, , , 1 ,3, 6, 15,23}

Aqu la asignacin se realiza fila a fila, otra manera que evita confusiones es:

Int c[3][5]={1,9,7,56, },{3,3,43, , 11 , 12, 43, , }, {1 ,3, 6, 15,23}


Ing Oscar Garibay Castellanos Pgina 118
CECYT 9 JUAN DE DIOS BTIZ PAREDES IPN
PROGRAMACION EN LENGUAJE C

Ambas formas las puedes relacionar a travs del siguiente grfico.

A[ ][ ] A[ ][1] A[ ][2] A[ ][3] A[ ][4]

1 9 7 56

3 3 43

1 3 6 15 23

A[2][ ] A[2][1] A[2][2] A[2][3] A[2][4]


Tabla 6.4.-representacin grfica de la declaracin de un arreglo bidimensional.

Ahora resolvamos algunos ejercicios prcticos para mostrar la aplicacin de los


arreglos bidimensionales

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 lec (int [ ], [max], int, int);


int sum (int [ ], [max], int [ ], [max], int [ ], [max], int, int);
int imp (int [ ], [max], int, int);

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

printf(\n\tIngrese el numero de columnas de los arreglos:);


scanf ( %d , &col );
}
while (col>max ||col<1);

printf(\n\tLectura del arreglo ma);


lec(ma,fil,col);
printf(\n\tLectura del arreglo mb);
lec(mb,fil,col);
sum (ma,mb,mc,fil,col);
printf(\n\tImpresin del arreglo mc);
imp (mc, fil,col);
getch ( );
}
int lec (int a [ ], [max], int f, int c);
int i,j;
for( i= ; i<f; i++);
for( j= ; j<c; j++);
{
printf(\n\tIngrese el elemento %d %d :, i+1, j+1);
scanf ( %d , &a [ i ][ j ] );
}
}

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

int imp (int a[ ] [max], int f, int c);


{
Int i,j;
for( i= ; i<f; i++);
for( j= ; j<c; j++);
printf(\n\tElemento %d %d : %d , i, j, a[ i ] [ j ])

Ing Oscar Garibay Castellanos Pgina 120


CECYT 9 JUAN DE DIOS BTIZ PAREDES IPN
PROGRAMACION EN LENGUAJE C

EJERCICIOS DE REFORZAMIENTO
I.-Utilizando arreglos multidimensionales desarrolle los siguientes
programas.

1. Dada una matriz determine si esta es simtrica.

2. Al recibir una matriz determina si es simtrica y obtiene la diagonal principal


de la misma.

3. Dadas dos matrices de m filas por n columnas, determine si se pueden


multiplicar.

4. Dadas dos matrices A y B realice un programa que obtenga la resta A-B de


las matrices.

5. Desarrolla un programa que obtenga la matriz traspuesta de un arreglo


cualquiera.

6. Escriba un programa que al ingresarle dos matrices las evalue y si es


posible las multiplique, de lo contrario mande un mensaje del por que no se
puede realizar la operacin.

7. Escriba una matriz que genere un cuadrado mgico ( recuerda que un


cuadrado mgico la suma de los elementos en cualquier fila, columna y
diagonales da el mismo resultado).

Ing Oscar Garibay Castellanos Pgina 121


CECYT 9 JUAN DE DIOS BTIZ PAREDES IPN
PROGRAMACION EN LENGUAJE C

BIBLIOGRAFIA

1. Cair Osvaldo, Fundamentos de Programacin piensa en c, Mxico,


Pearson Education.

2. Hekmatpour Sharam,Gua para Programadores en C, Mxico, Prentice Hall.

3. Reisdorph Kent, Aprendiendo Borland C++ en 21 das, Mxico, Prentice


Hall.

4. Microsoft Corporation, Introducction to C++, USA, Microsoft Corporation.

5. IBM, C set ++ for AIX6000 C language reference, Canada, IBM.

6. Pappas Chris,Turbo C++ Professional Hand Book, USA, M c Graw Hill.

7. Baldor Aurelio, Algebra,Mxico, Publicaciones Cultural.

Ing Oscar Garibay Castellanos Pgina 122


CECYT 9 JUAN DE DIOS BTIZ PAREDES IPN
PROGRAMACION EN LENGUAJE C

8. Hayt William, Anlisis de Circuitos en Ingeniera, Mxico, M c Graw Hill.

9. Floyd Thomas, Dispositivos Electrnicos, Mxico, Trillas.

10. Ayres Frank, Matrices, Mxico, Mc Graw Hill.

Ing Oscar Garibay Castellanos Pgina 123

Вам также может понравиться