Está en la página 1de 146

CECYT 9 JUAN DE DIOS BTIZ PAREDES IPN

PROGRAMACION EN LENGUAJE C

CAPITULO I
PRINCIPIOS BSICOS DE LA
PROGRAMACIN EN C.

COMPETENCIA PARTICULAR 1

ELABORA PROGRAMAS ESTRUCTURADOS BSICOS EMPLEANDO ESTRUCTURAS DE


SELECCIN Y REPETICIN CONSIDERANDO LOS ESTNDARES ANSI C.

RAP 1.
RECONOCE LAS ESTRUCTURAS DE SELECCIN Y REPETICIN PARA RESOLVER
PROBLEMAS BSICOS EN LENGUAJE C CONSIDERANDO LAS NORMAS ANSI 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 (sintaxis), formando una estructura, con la cual el
usuario instruye a una computadora para que ejecute operaciones definidas.

El lenguaje empleado por el usuario y la computadora no son los mismos, pues


esta ltima procesa la informacin en forma de combinaciones binarias (unos y
ceros), conocido como cdigo de la mquina, por lo tanto el lenguaje de
programacin es una herramienta para enlazar la comunicacin entre el usuario y
la mquina.

En forma general podemos clasificar a los lenguajes de programacin en dos


niveles: alto y bajo, los cuales se revisan a continuacin.

1.1.1.-LENGUAJES DE BAJO NIVEL.

En esta categora encontramos el lenguaje de mquina y ensamblador, los cuales


se relacionan directamente con el diseo y la estructura del hardware, dependen
del diseo y caractersticas de la mquina, por lo tanto los programas difcilmente
podrn migrar o ser utilizados en maquinas para las cuales no fueron
desarrollados.

1.1.2.-LENGUAJES DE ALTO NIVEL.

Son lenguajes estructurados para facilitar al usuario la manipulacin de datos.


Tienen gran variedad de aplicaciones, sin embargo en ingeniera su utilidad mas
comn es en la solucin de problemas matemticos con alto grado de dificultad,
tienen la ventaja de ser independientes de la arquitectura de la mquina,

Ing Oscar Garibay Castellanos Pgina 2


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

permitiendo la migracin entre mquinas con diferente arquitectura sin problema


alguno, por otro lado 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.

1.2.-BREVE HISTORIA DEL LENGUAJE C.


La historia del lenguaje C parte de uno anterior, denominado lenguaje B, el cual
fue desarrollado por Ken Thompson en 1970 con el objeto de recodificar el
sistema operativo UNIX, ya que hasta ese momento haba sido programado en
lenguaje ensamblador.

Para el ao 1972 Dennis Ritchie (de los Laboratorios Bell de AT&T) disea el
lenguaje de programacin C a partir del desarrollado por Thompson. Las
aportaciones mas significativas fueron el diseo de tipos y estructuras de datos,
dando claridad y eficacia al nuevo lenguaje, siendo muy superior a su predecesor.

El lenguaje C emplea la programacin estructurada, la cual nos permite reducir


expresiones que contengan abundancia de operadores y tipos de datos (aunque
los bsicos sean pocos), se codifica en alto y bajo nivel, reemplazando a la
programacin en ensamblador, permite la utilizacin natural de funciones
primitivas del sistema, no est orientado a ningn rea en especial y sobre todo
consigue un cdigo altamente optimizado que repercute en la rapidez de los
programas.

1.2.1.-NORMA ANSI C

Durante aos no existan reglas para el lenguaje, pero en 1983 forma un comit
para crear el estndar ANSI (Instituto Nacional Americano de Estndares). El
proceso dura seis aos y a principios de los 90 el estndar es reconocido por la
ISO (Organizacin Internacional de Estndares) y comienza a comercializarse con
el nombre ANSI C.

En nuestro caso especfico trabajaremos con DEV C++, lo que por razones obvias
nos presentara algunas diferencias en la sintaxis de programacin normalizada
por ANSI, sin embargo la filosofa y los algoritmos que se emplearan no cambian
el objetivo del curso.

Ing Oscar Garibay Castellanos Pgina 3


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

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.
Por ejemplo preparar los alimentos, practicar un deporte, o buscar la solucin de
un problema tcnico o matemtico.

Si el problema en curso corresponde a los dos ltimos casos, a menudo se


requiere el auxilio de alguna herramienta auxiliar, que puede ser una calculadora o
computadora.

La primer opcin nos permite resolver problemas donde se requiere realizar


operaciones relativamente sencillas, la segunda opcin nos permite resolver
situaciones mas complejas, sin embargo presenta una pequea dificultad,el
anlisis y realizacin de un programa computacional, el cual ejecutara todos los
clculos necesarios para presentarnos la solucin a un tipo de problema con
diversas.

Dichos programas debern desarrollarse de acuerdo al siguiente proceso:

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.

Ing Oscar Garibay Castellanos Pgina 4


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

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


una serie de smbolos estandarizados, 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.

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 5


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

1.4.-LAS BIBLIOTECAS.
Las bibliotecas o libreras, son un conjunto de subprogramas que se enlazan e
interactan durante la ejecucin de un programa, estas se declaran al inicio, por lo
que tambin son conocidas como cabeceras.

Algunas de estas libreras propias del lenguaje c son: la librera estndar de


entradas/salidas (stdio.h), la librera de funciones matemticas (math.h), y la
librera estandar (stdlib.h) etc.

Las libreras mnimas que se necesitan para ejecutar un programa son la stdio.h y
la librera stdlib.h, como se puede ver en el ejemplo 1.1.

Ejemplo 1.1.-Primer programa imprimir un letrero.

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

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

int main( ) /* llamada de la funcin main, que es la encargada de hacer


interactuar a las funciones de las libreras dentro del programa */

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

system (PAUSE); /*mantiene la impresin hasta que el usuario presiona la


tecla enter*/

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


conformaremos con esto, ya que en el tema de funciones se
explicara el cmo y por qu*/

Ing Oscar Garibay Castellanos Pgina 6


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

Al Ejecutar este programa se ver como es desplegado el letrero

Nota: Da click en el Hipervinculo y el programa dado como ejemplo ser ejecutado automticamente si cuentas con DEV
C++

1.4.1.-EL COMANDO printf, SALTOS DE RENGLN Y


TABULADOR.

En el ejemplo anterior se debe observar que a la derecha de cada instruccin hay


un comentario que inicia con /* y concluye con */, las diagonales y el asterisco
permiten que el contenido de dicho comentario no tenga inferencia en el programa
y nicamente sirven de gua al usuario para identificar la accin se lleva a cabo en
cada parte del programa.

La librera stdlib.h contiene una serie de comandos, que realiza funciones para
mejorar la apariencia del programa, estos se pueden ver en la tabla 1.1.

TABLA 1.1.

COMANDO FUNCIN

system (CLS); Limpia la pantalla

Da una pausa al programa y lanza un mensaje para dar


system (PAUSE);
continuidad al programar.

Cambia el color de la pantalla y el texto al ejecutar el


system (color A5);
programa.

En la librera stdio.h se encuentra el comando printf, cuya funcin es la de imprimir


(visualizar en la pantalla) los resultados del programa, su sintaxis es la siguiente:

printf (TEXTO A IMPRIMIR);

Para lograr que el texto impreso en la pantalla sea presentado en forma adecuada
contamos con una serie de instrucciones que nos permiten entre otras cosas
desplazar el texto verticalmente, horizontalmente, en forma de tabulador o
presentando un sonido en el momento en que se corre el programa.

Ing Oscar Garibay Castellanos Pgina 7


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

Estas instrucciones se ingresan antes, intercalado o despus del texto que se


presenta entre comillas, afectando nicamente al texto encerrado en estos
smbolos ortogrficos.

En la tabla 1.2 mostramos dichas instrucciones junto con la funcin que ejecutan
dentro del comando.

TABLA 1.2.-INSTRUCCIONES EMPLEADAS EN EL COMANDO printf

INSTRUCCIN FUNCIN

\t .Imprime el letrero tabulando.

\v Imprime el letrero saltando lneas verticalmente.

\n Imprime el letrero saltando una lnea

\h Imprime el letrero saltando lneas horizontalmente.

\a Indica que existe un sonido.

Una vez revisada la tabla de instrucciones aplicadas al comando printf veamos la


forma en que estos operan a travs del ejemplo 1.2, en el cual se despliega un
letrero de presentacin con cambio de color en la pantalla,espacios, sonido y
tabulacin.

Ejemplo 1.2.-El programa despliega un letrero con sus respectivos saltos, asi
como un sonido al presentarse este.

#include<stdio.h>
#include<stdlib.h>
int main( )
{system (color 9A);
printf("\n\a\a\a INSTITUTO POLITECNICO NACIONAL\n\n\t\t CECYT #9JUAN DE
DIOS BATIZ \n\n\t\t PROGRAMACION EN LENGUAJE C\n\n\n\t\t\t ");
system (PAUSE);
return 0;
}

Como se puede ver no es necesario utilizar la instruccin printf para imprimir


varios letreros, basta con manejar las instrucciones de salto, tabulador o
desplazamiento para mejorar la presentacin de los letreros.

Ing Oscar Garibay Castellanos Pgina 8


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

Al Ejecutar el programa se vera el desplegado del letrero y la funcin que ejecuta


cada instruccin

1.4.2.-VARIABLES Y CONSTANTES
Un dato es informacin que se suministra a la computadora por medio del teclado,
esta los almacena y procesa en forma legible, para la solucin de problemas
matemticos.

Existen dos tipos fundamentales de datos que son: los datos simples y los datos
estructurados, su uso depende de las caractersticas del problema a resolver y de
la estructura establecida por el programador.

Para reslover problemas matemticos es necesario el uso de datos conocidos y


desconocidos que reciben el nombre de constantes y variables los cuales
podemos definir como:

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


problema, estas pueden ser de tipo entero, real o caracter.

b) Variables.- Son datos que a lo largo de un proceso va cambiando su valor,


tambin pueden ser de tipo entero, real o caracter.

Los datos numericamente 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).

DECLARACIN DE CONSTANTES Y VARIABLES DE TIPO


ENTERO.

Para declarar constantes o variables de tipo entero debemos conocer inicialmente


el tamao de dicha constante o variable o en su defecto conocer el valor esperado
que pueda tomar en caso de ser una variable que represente un resultado
obtenido por un proceso matemtico, ya que dependiendo de este, utilizaremos un

Ing Oscar Garibay Castellanos Pgina 9


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

identificador que corresponder al tipo de dato, as como a su tamao basndonos


en la siguiente lista de identificadores, donde aparece tambin su rango.

char. Define un nmero entero de 8 bits. Su rango es [-128,127]. 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.

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.

Cuando trabajamos con datos de tipo entero utilizamos las palabras reservadas
int, long, short y char, dependiendo del tamao que tenga dicho dato.

Para declarar las constantes de tipo entero utilizaremos la sintaxis que se muestra
a continuacin:

const int A=5; const int A=20; const char letra=b;

Otra opcin es:

#define A 5 #define B 1 #define letra b

Note que en la segunda forma de declarar las constantes no son empleados los
signos igual, ni el punto y coma, as mismo en las constantes de tipo caracter el
valor que se toma se encierra con una comilla.

La forma en que se declaran las variables de tipo entero bsicamente es una y


puede ser una a la vez o varias en la misma declaracin separadas por una coma,
como se muestra a continuacin:

int a; /*cuando solo es una variable*/ int a,b,c; /*si son dos o mas variables*/

int hora ; /*cuando solo es una variable*/


char carcter ; /*cuando se trata de una variable tipo carcter (letra)*/
unsigned short mes ; /*Unsigned por que no hay meses negativos y short por
ser un numero pequeo (12)*/.

DECLARACIN DE CONSTANTES Y VARIABLES DE TIPO REAL.

Ing Oscar Garibay Castellanos Pgina 10


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

Las constantes y variables de tipo real son declaradas de manera similar a los
datos de tipo entero, lo nico que cambiar es la palabra reservada empleada, la
cual deber ser acorde al valor que adquirir la variable despus de un proceso
matemtico.

Las palabras reservadas utilizadas en la declaracin de datos reales, asi como su


rango se presentan en la siguiente lista:

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.

Podemos declarar las constantes dentro de un programa de diferentes maneras


como se muestra a continuacin.

const float temperatura=36.5; const pi=3.1416;

const double distancia=128e64;

Otra opcin es:

#define temperatura 36.5 #define distancia 128e64

#define pi 3.1416

Las variables se declararn de la siguiente manera:

float a; float b; float c;

Tambin se pueden declarar mas de dos variables de la siguiente manera

float a,b,c;

Como podemos ver tanto los datos simples como los estructurados pueden ser de
tipo caracter, numrico o alfanumrico.

1.4.2.1.-LOS IDENTIFICADORES.

Ing Oscar Garibay Castellanos Pgina 11


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

En los temas anteriores hemos definido varios elementos, entre los que se
encuentran las variables y las constantes, las cuales deben ser claramente
diferenciadas por la computadora durante el procesamiento de la informacin,
para lograr dicha diferenciacin es necesario especificar el tipo de dato, asi como
darle un nombre que de referencia de su funcin en el proceso de calculo, a este
nombre se le conoce como identificador.

Un identificador puede componerse de una letra, una combinacin de letras con


numeros o una palabra que implique la funcin de dicho identificador dentro del
programa.

Por otro lado para que estas palabras puedan ser validas como identificadores
deben cumplir dos condiciones, las cuales son:

1.-Deben iniciar con una letra, sin importar si es mayscula o minscula.

2.-No se deben emplear palabras reservadas como constantes o variables.

Para dejar en claro el punto nmero dos en la tabla 1.3 se muestran las palabras
reservadas para el lenguaje c, mismas que deben ser memorizadas, debido a que
si se emplean como identificadores generaremos errores de sintaxis.

TABLA 1.3.- PALABRAS RESERVADAS.

auto extern sizeof double return volatile continue int

break float static else short while default long

case for struct enum signed void do register

char goto switch const if typedef unin unsigned

1.4.2.3.-OPERACIONES BSICA.

Los operadores son smbolos que realizan una funcin definida dentro del
desarrollo de un programa, tenemos operadores lgicos, encargados de realizar

Ing Oscar Garibay Castellanos Pgina 12


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

operaciones de tipo condicional y los aritmticos, que ejecutan las operaciones


bsicas.

Estos ltimos se presentan en la tabla 1.4.

TABLA 1.4.-OPERADORES ARITMETICOS

Operador. Funcin

+ Suma.

- Resta.

* Multiplicacin.

/ Divisin.

% Modulo (residuo)

Hasta aqu hemos visto algunos elemento bsicos de la programacin en c, en los


siguientes temas veremos la aplicacin prctica de las definiciones dadas.

IMPRESIN DE LETREROS QUE CONTIENEN VARIABLES O CONSTANTE.

Hasta ahora hemos aprendido como imprimir un letrero en la programacin con


lenguaje c, sin embargo dichos letreros nicamente involucran palabras o nmeros
que son invariables (constantes), que son conocidos, sin embargo cuando se
desea imprimir una variable la sintaxis se modifica, quedando de la siguiente
manera:

printf(formato de escritura de la variable, nombre de la variable);

Donde:

Formato de escritura de la variable.-depende del tipo de dato que se maneja y


corresponde al que se presenta en la tabla 1.5.

El nombre de la variable corresponde al que se declara al inicio del programa.

A continuacin se presentan algunos ejemplos de impresin para variables.

printf(%f, division);

Ing Oscar Garibay Castellanos Pgina 13


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

printf(%d,mes);

printf(%ld,factorial);

printf(%f,perimetro);

printf(%d,edad);

TABLA 1.5.-FORMATOS DE LECTURA-ESCRITURA.

FORMATO FUNCIN

%u Lee o escribe enteros sin signo de 2 Bytes (unsigned)

%d %i Lee o escribe enteros de 2 Bytes (int)

%ld Lee o escribe enteros de largo alcance

%f Lee o escribe reales de 4 Bytes (float)

%lf Lee o escribe reales de doble precisin 8 Bytes (doubl float)

%e Lee o escribe en forma exponencial

%g Lee o escribe en %f %e en funcin del tamao del nmero.

%c Lee o escribe caracteres de 1 Byte (char)

%s Lee o escribe una cadena de caracteres

%5d Lee o escribe enteros de 5 dgitos

%5.3f Lee o escribe un nmero real con 5 dgitos y 3 sern decimales.

Si observamos la sintaxis para la impresin de las variables, notaremos que los


formatos de escritura para las variables, corresponden al tipo de variable que se
declaro, de otra manera no se imprime resultado alguno al no existir concordancia
entre el formato y el tipo de variable.

Es importante dejar en claro que la computadora marca errores de sintaxis, mas


no de concordancia o lgica, siendo competencia de la persona encargada de
realizar la programacin la revisin y en su caso correccin de los mismos.

Ing Oscar Garibay Castellanos Pgina 14


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

Una vez conocidos los diferentes tipos de operadores,la manera en que se


declaran las variables, constantes y la sintaxis para imprimir estas, procedemos a
ejemplificarlos de manera global a travs del ejemplo 1.3, donde se muestra la
forma en que e declaran las variables suma, resta, multiplicacin y divisin, la
declaracin de dos constantes A=23 y B=10, las operaciones bsicas realizadas
con estas constantes y la forma de imprimir letreros, donde se presentan valores
numricos de las variables involucradas en el proceso.

/*Ejemplo 1.3.-El programa despliega un letrero con la suma, resta, multiplicacin


y divisin (variables) de dos nmeros conocidos A=23 y B=10 (constantes), asi
veremos la aplicacin de la operacin aritmtica sus respectivos saltos, asi como
un sonido al presentarse este.*/

#include<stdio.h>
#include<stdlib.h>
#include <conio.h>
#define A 23
int main( )
{const float B=10;
float suma;
float resta,multiplicacion,division;
suma=A+B;
resta=A-B;
multiplicacion=A*B;
division=A/B;
system("color 9A");
printf("\n\a\a\a\t\tLa suma de los dos numeros es:\t %f",suma);
printf("\n\a\a\a\t\tLa resta de los dos numeros es:\t %f",resta);
printf("\n\a\a\a\t\tLa multiplicacion de los dos numeros es:\t %f",multiplicacion);
printf("\n\a\a\a\t\tLa resta de los dos numeros es:\t %f\n\n\n\t\t\t",resta);
getch();
return 0;
}

Al Ejecutar el programa solo aparecer el letrero con los resultados de cada


operacin realizada

1.4.2.4.-LA FUNCIN scanf.


La librera estndar de entradas y salidas (stdio.h) contiene una funcin
denominada scanf, encargada de leer los datos ingresados por el programador a
travs del teclado, para posteriormente asignrselos a una variable
predeterminada por el proceso e iniciar el calculo correspondiente.

Ing Oscar Garibay Castellanos Pgina 15


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

La sintaxis de la funcin scanf es la siguiente:

scanf (formato de lectura de la variable, &nombre de la variable);

Donde:

Formato de lectura de la variable.-depende del tipo de dato que se maneja y


corresponde al que se presento en la tabla 1.5.

El smbolo &.-E un smbolo de direccin que nos indica hacia que variable se ha
de asignar el numero ingresado por el programado.

El nombre de la variable debera corresponder al tipo de dato que se declaro al


inicio del programa.

A continuacin se muestran algunos ejemplos de la lectura :

scanf(%d,&edad); /*Implica que la variable es de tipo entero y el valor ingresado


se asignara a la variable de nombre edad*/.

scanf(%f,&angulo); /*Implica que la variable es de tipo real y el valor ingresado


se asignara a la variable de nombre angulo*/.

Ahora apliquemos los conocimientos adquiridos hasta el momento por medio de


un ejemplo, en el cual se obtendr el diagrama de flujo y el cdigo para un
programa que calcule la suma de dos nmeros enteros.

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


calcule la suma de dos nmeros enteros.

DIAGRAMA DE FLUJO

INICIO

a,b

sum a+b

sum

FIN

Ing Oscar Garibay Castellanos Pgina 16


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

CDIGO

/*Ejemplo 1.4.-El programa calcula la suma de dos nmeros enteros.*/

#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
int main ()
{int sum,a,b;
printf(\n\tIngrese el primer numero=\t);
scanf(%d,&a);
printf(\n\tIngrese el segundo numero=\t);
scanf(%d,&b);
system (cls);
sum=a+b;
printf(\n\n\n\t\t\tLa suma de los numeros es =\t%d,sum);
getch();
return 0;
}

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 los valores de este tipo y aquellos que
aparecen a la derecha del punto decimal simplemente sern ignorados.

Ejecutar el programa y comprobar que se cumple la condicin mencionada


anteriormente.

Comprobemos que la aseveracin dada en el ejercicio anterior es vlida, para


hacerlo construiremos un programa que realice la misma operacin, solo que en
esta ocasin definiremos las variables como datos de tipo real y veremos que
sucede.

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


calcule la suma de dos nmeros reales.

Como podremos ver en el diagrama de flujo, la estructura es la misma que la


empleada en el problema anterior, las diferencias se manifestaran en el tipo de

Ing Oscar Garibay Castellanos Pgina 17


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

variables a declarar, as como el formato de lectura-escritura, como se ve en la


codificacin del programai.

DIAGRAMA DE FLUJO

INICIO

a,b

sum a+b

sum

FIN

CDIGO

/*El programa calcula la suma de dos nmeros reales.*/

#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
int main ()
{
float sum,a,b;
printf(\n\tIngrese el primer numero =\t);
scanf(%f,&a);
printf(\n\tIngrese el segundo numero =\t);
scanf(%f,&b);
sum=a+b;
system (cls);
printf(\n\n\n\t\t\tLa suma de los numeros es =\t%f,sum);
getch();
return 0;
}

Ing Oscar Garibay Castellanos Pgina 18


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

Al Ejecutar el programa para comprobar que ahora la suma de a=4.5 y b=3.4, nos
presenta como resultado el numero 7.9.

Analizando los dos ejemplos anteriores podemos concluir que al codificar un


programa es necesario conocer al menos dos cosas.

1.-El tipo de datos (entero, real, tipo carcter) que se van a manejar.

2.-La magnitud del resultado que esperamos, ya que este definir el tamao y por
lo tanto la forma en que se declarara la variable.

En la tabla 1.6 mostramos la magnitud de los datos dependiendo su tipo y el


formato para sus variables.

TABLA 1.6.-TIPO DE DATOS Y ALCANCE.

TIPO DATO ESPACIO MEMORIA RANGO

unsigned char 8 bits 0 a 255

Char 8 bits -128 a 127

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

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

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

unsigned long 32 bits 0 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 0-38 a 3.4 x 10+38(6 dec)

doubl 64 bits 1.7 x10-38 a 1.7x10+38(15 dec)

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

Ing Oscar Garibay Castellanos Pgina 19


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

Void sin valor

Ahora que contamos con los conocimientos mas primitivos de la programacin en


lenguaje c, podemos desarrollar algunos programas que den solucin a problemas
matemticos de tipo elemental.

Comenzaremos por elaborar el diagrama de flujo y el cdigo que corresponda a un


programa, que calcule el cuadrado de la hipotenusa una vez conocidos los dos
catetos.

Ejemplo 1.5.-Diagrama de flujo y codificacin para un programa que calcule el


cuadrado de la hipotenusa una vez conocidos los dos catetos.

Solucin: Primero recordemos que la hipotenusa se calcula por medio del teorema
de Pitgoras (H2=CO2 + CA2), adems sabemos que esta expresin es
equivalente a utilizar H = (CO*CO) + (CA*CA).

Estructuremos la solucin comenzando con el diagrama de flujo.

DIAGRAMA DE FLUJO.

Ing Oscar Garibay Castellanos Pgina 20


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

inicio

CO,CA

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

fin

Ahora desarrollamos el cdigo a partir del diagrama de flujo.

CDIGO

#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
int main()
{
float co,ca,h;
printf("\n\tEl programa calcula el cuadrado de la hipotenusa\n\tde un triangulo
rectangulo\n\n\t");
system ("PAUSE");
system ("cls");
printf("\n\tIngrese el valor del cateto opuesto : \t");
scanf("%f",&co);
printf("\n\tIngrese el valor del cateto adyacente : \t");
scanf("%f",&ca);
h=(co*co)+(ca*ca);
system ("cls");
printf("\n\tEl cuadrado de la hipotenusa del triangulo rectangulo es: \t %f",h);
getch();
return 0;
}

Ing Oscar Garibay Castellanos Pgina 21


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

Al ejecutar el programa, comprobaremos que los resultados corresponden a los


clculos deseados.

Ahora veamos otro ejemplo, en el cual se requiere el conocimiento bsico de


circuitos elctricos, dado que se desea conocer la resistencia de carga que se le
conectara a un Diodo Emisor de Luz (LED), para que pueda ser alimentado a una
fuente de tensin, sin que este se dae.

Ejemplo 1.6.-Diagrama de flujo y cdigo para un programa, que dados los valores
del voltaje de una fuente, la corriente de un diodo y su voltaje de alimentacin
determine la resistencia de carga mnima a conectarse a un LED para evitar que
este se dae.

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


de carga en un diodo dada como:

= ( )/

Al igual que en el ejemplo anterior comenzaremos por definir el diagrama de flujo.

DIAGRAMA DE FLUJO

inicio

Vf,Vf,
Ida

RL (Vf-Vd)/Id

)
RL

fin

Ing Oscar Garibay Castellanos Pgina 22


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

Para desarrollar el cdigo comenzaremos por definir las variables a utilizar y de


acuerdo a la expresin determinamos las siguientes:
vf.-Voltaje de la fuente.
vd.-Voltaje del diodo.
Id.-Corriente del diodo.
RL.-Resistencia mnima de carga.

En este caso especficamente notamos que la corriente esta dada en submltiplos


de ampere, por lo tanto generara valores de tipo real, los cuales afectarn a todo
el proceso de calculo, por esta razn declararemos el tipo de variables como
reales, dando como resultado el siguiente cdigo.

CDIGO

#include<stdio.h>
#include<conio.h>
#include <stdlib.h>
float RL,vf,vd,Id;
int main()
{ printf("\n\n\t\tEl programa calcula la resistencia de carga para un LED \n\n\t\t ");
system ("PAUSE");
system ("cls");
printf("\n\n\t\tIngrese el voltaje de la fuente : \t ");
scanf("%f",&vf);
system ("cls");
printf("\n\n\t\tIngrese el voltaje del diodo : \t ");
scanf("%f",&vd);
system ("cls");
printf("\n\n\t\tIngrese la corriente del diodo : \t ");
scanf("%f",&Id);
RL=(vf-vd)/Id;
system ("cls");
printf("\n\n\t\tEl valor de la resistencia minima es:\t %2f",RL);
getch();
return 0;
}

Ejecute el programa, ingrese valores conocidos y compare los resultados.

A continuacin realizaremos un par de ejercicios, con la finalidad de concretizar


los conocimientos adquiridos hasta el momento.

Ing Oscar Garibay Castellanos Pgina 23


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).
Una vez conocidos estos datos procedemos a desarrollar el diagrama de flujo
correspondiente, a la solucin del problema en cuestin.

DIAGRAMA DE FLUJO

Ing Oscar Garibay Castellanos Pgina 24


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

inicio

Vb,Ic,
beta

,Ida
IbIc/

Rb (Vb-0.7)/Ib
Rb
)

fin

La codificacin del diagrama de flujo queda de la siguiente manera.

#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
float Ic,Vb,Rb,beta,Ib;
int main()
{ printf("\n\n\t\tEl programa calcula la resistencia de base para un transistor\n\n\t\t
");
system ("PAUSE");
system ("cls");
printf("\n\n\t\t Dame el valor de corriente en colector : \t ");
scanf("%f",&Ic);
system ("cls");
printf("\n\n\t\t Dame el valor del voltaje de base : \t");
scanf("%f",&Vb);
system ("cls");
printf("\n\n\t\t Dame el valor del factor beta : \t ");
scanf("%f",&beta);
Ib=Ic/beta;
Rb=(Vb-0.7)/Ib;
system ("cls");
printf("\n\n \t\t La resistencia de base para el transistor es:\t %2f",Rb);
getch();
return 0;

Ing Oscar Garibay Castellanos Pgina 25


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

Ahora ejecute el programa, ingrese valores conocidos y comprelos con


resultados que arroja el programa, con el fin de comprobar su operacin.

En el siguiente ejemplo resolveremos un problema de tipo geomtrico, con la


finalidad de mostrar que en la programacin se pueden resolver problemas de
diferente ndole.

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.

Solucin:

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

Area= * r2 Area= * r*r

Permetro= * d Permetro= * 2*r;

Ahora bien sabemos que = 3.1416 y es una constante, por lo tanto podemos
aplicar directamente la formula para el calculo de el rea y permetro de una
circunferencia, lo que dara como resultado el siguiente diagrama de flujo.

DIAGRAMA DE FLUJO.

Ing Oscar Garibay Castellanos Pgina 26


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

inicio

rad

beta
peri2*rad*pi
,Ida
arearad*rad*pi

Rb (Vb-0.7)/Ib
Peri, area
)

fin

El codigo correspondiente para este ejercicio se muestra a continuacin.

#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#define pi 3.1416;
int main()
{
float rad,peri,area;
printf("\n\tEl programa calcula el perimetro y el area de una circunferencia :\n\n\t
\t");
system ("PAUSE");
system ("cls");
printf("\n\tIngrese el valor del radio de la circunferencia : \t");
scanf("%f",&rad);
peri=(2*rad)*pi;
area=(rad*rad)*pi;
system ("cls");
printf("\n\tEl perimetro de la circunferencia es: \t %f", peri);
printf("\n\tEl area de la circunferencia es: \t %f", area);
getch();
return 0;
}

Ing Oscar Garibay Castellanos Pgina 27


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

Ahora ejecute el programa, ingrese valores conocidos y comprelos con


resultados que arroja el programa, con el fin de comprobar su operacin.

1.4.3.-LA LIBRERA MATEMTICA

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
en la tabla 1.7.

TABLA 1.7.-FUNCIONES DE LA LIBRERAmath.h

Funcin Explicacin Funcin Explicacin

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.

Ing Oscar Garibay Castellanos Pgina 28


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

fmod(x1,x2) Obtiene el resto de x1 entre x2, log(x) Devuelve el logaritmo


con el mismo signo de x1. natural de x, in(x), x>0.

Ahora que conocemos la biblioteca matemtica (math.h), resolvamos problema


anterior, observando la diferencia entre la solucin con esta y aplicando
constantes.

Ejercicio 1.9.-Solucin del ejercicio 1.8 con el uso de la biblioteca math.h.

Solucin: Comenzaremos por recordar las formulas aplicadas en el problema


anterior.

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.

Ing Oscar Garibay Castellanos Pgina 29


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

inicio

Inici
orad
a,b
peri2*rad*M_PI
,Idaa
Ingr
arearad**2*M_PI
,b
eso
sum a+bde
peri,dato
area
)
s.
sum
sum a+b
fin
Proc
eso

La codificacin del problema ser
sumla siguiente.
#include <stdio.h> a,
rest
#include <conio.h>
a,
#include <stdlib.h>
divis
#include <math.h>
in,
int main()
etc
{float perimetro,area,radio,diametro;
printf("\n\n\tEl programa calcula el area y el perimetro de una
circunferencia\n\n\tusando la libreria matematica \"math.h\"\n\n\n\n\t\t");
system ("PAUSE");
system ("cls"); Deci
system ("color 3A"); sin.
printf("\n\n\tingrese el radio de la circunferencia\t");
scanf("%f",&radio);
diametro=2*radio;
perimetro=diametro*M_PI; Sele
Ing Oscar Garibay Castellanos cci Pgina 30
n
mlti
ple.
CECYT 9 JUAN DE DIOS BTIZ PAREDES IPN
PROGRAMACION EN LENGUAJE C

area=M_PI*pow(radio,2);
system ("cls");
system ("color A4");
printf("\n\n\t\tEl perimetro de la circunferencia es:\t%f\n\n\n\t\tEl area de la
circunferencia es:\t%f",perimetro,area);
getch ();
return 0;
}
Ahora ejecute el programa, ingrese valores conocidos y comprelos con
resultados que arroja el programa, con el fin de comprobar su operacin.

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


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

Un detalle particular de la librera matemtica es que las funciones


trascendentales operan con grados Radianes, por lo que en algunos casos el
programador deber realizar una serie de conversiones entre sistemas de
medicin, ya que los resultados no coincidirn, si el usuario del programa
desconoce este detalle y da por asentado que opera con el sistema de grados
sexagesimales.

Para mostrar lo antes expuesto, mediante el ejercicio 1.10 construiremos un


programa en el cual se calculara la suma de dos vectores dados en forma polar.

Ejercicio1.10.-Construya un programa que al recibir como datos dos vectores A y


B en su forma polar determine la suma de estos.

Solucin:

Inicialmente sabemos que un vector dado en forma polar se compone de dos


elementos, la magnitud y el angulo, por lo que daremos nombraremos ra y rb a las
magnitudes del vector A y B respectivamente, tetha a y tetha b, para los angulos
que ingrese el usuario, sin embargo debemos recordar que el usuario piensa en el
sistema sexagesimal, por lo que debemos convertir los angulos a grados radianes.

Posteriormente encontraremos las componentes X e Y para que a partir de esto


encontremos la magnitud resultante de la suma de vectores, asi como el angulo,
dando como resultado el siguiente diagrama de flujo.

Ing Oscar Garibay Castellanos Pgina 31


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

DIAGRAMA DE FLUJO.

inicio

ra,rb,,teta,t
etb

anga=(teta*M_PI)/180
angb=(tetb*M_PI)/180
xa=ra*cos(anga)

ya=ra*sin(anga)

xb=rb*cos(angb)

yb=rb*sin(angb)

x=xb-xa

y=yb-ya

r=sqr(pow(x,2)+pow(y,2))

tetr=atan(y/x)

angr=(tetr*180)/M_PI

r, tetr

fin

El cdigo correspondiente al diagram de flujo se presenta a continuacin.

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

Ing Oscar Garibay Castellanos Pgina 32


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

int main()
{
float ra,rb,teta,tetb,xa,ya,xb,yb,x,y,r,tetr,anga,angb,angr;
printf("\n\tEl programa realiza la suma de dos vectores A y B\n\n\tdados en su
forma polar\n\n\n\t\t");
system ("PAUSE");
system ("CLS");
system ("color 3A");
printf("\n\tIngrese el valor de la magnitud del vector A : \t");
scanf("%f",&ra);
system ("CLS");
printf("\n\tIngrese el valor del angulo del vector A : \t");
scanf("%f",&teta);
system ("CLS");
system ("color A3");
printf("\n\tIngrese el valor delamagnitud del vector B : \t");
scanf("%f",&rb);
system ("CLS");
printf("\n\tIngrese el valor del angulo del vector B : \t");
scanf("%f",&tetb);
system ("CLS");
system ("color 64");
anga=(teta*M_PI)/180;
angb=(tetb*M_PI)/180;
xa=ra*cos(anga);
ya=ra*sin(anga);
xb=rb*cos(angb);
yb=rb*sin(angb);
x=xa+xb;
y=ya+yb;
r=sqrt(pow(x,2)+pow(y,2));
tetr=atan(y/x);
angr=(tetr*180)/M_PI;
printf("\n\tLa magnitud del vector es:\t %f",r);
printf("\n\tEl angulo del vector es:\t %f",angr);
getch();
return 0;
}

Ahora ejecute el programa, ingrese valores conocidos y comprelos con


resultados que arroja el programa, con el fin de comprobar su operacin.

Como puedes ver hasta aqu podemos resolver diferentes tipos de problemas
matemticos simples con la ayuda de la programacin en c, sin embargo esto
Ing Oscar Garibay Castellanos Pgina 33
CECYT 9 JUAN DE DIOS BTIZ PAREDES IPN
PROGRAMACION EN LENGUAJE C

solo es el principio, ya que en ejercicios subsecuentes estos nos servirn solo


como apoyo en la aplicacin de estructuras especificas.

EJERCICIOS DE REFORZAMIENTO.
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

Ing Oscar Garibay Castellanos Pgina 34


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

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.
c) Obtenga el permetro y el rea de un rectngulo.
d) Calcular el permetro y el 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 35


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

CAPITULO II
ESTRUCTURAS ALGORITMICAS
SELECTIVAS.

COMPETENCIA PARTICULAR 1
ELABORA PROGRAMAS ESTRUCTURADOS BSICOS EMPLEANDO ESTRUCTURAS DE
SELECCIN Y REPETICIN CONSIDERANDO LOS ESTNDARES ANSI C.

RAP 2
APLICA LAS ESTRUCTURAS DE SELECCIN Y REPETICIN PARA LA SOLUCIN DE
PROBLEMAS MATEMTICOS BSICOS POR MEDIO DE PROGRAMAS EN LENGUAJE C
CONSIDERANDO LOS ESTNDARES ANSI C.

Ing Oscar Garibay Castellanos Pgina 36


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

2.1.-ESTRUCTURAS ALGORITMICAS SELECTIVAS.


Una estructura algortmica selectiva es una estructura lgica que se utiliza en la
solucin de problemas cuyo proceso de solucin depende directamente de una o
mas condiciones previamente establecidas.

Existen diferentes tipos de estructuras selectivas, la simple if, la doble if-else y la


multiple switch, todas ellas realizan una evaluacin lgica, y de acuerdo al
resultado de esta, se ejecutara una u otra accin.

Cada una de estas estructuras seran revisadas mas adelante, para tal fin es
necesario conocer algunos elementos que se emplearan en el desarrollo de las
mismas.

2.2.1.-OPERADORES DE RELACIN Y LGICOS

Los operadores relacionales (de relacin) y lgicos son empleados en la


formacin de expresiones binarias.

Una expresin binaria puede tomar uno de dos valores posibles: VERDADERO o
FALSO.

En la programacin en lenguajes C, consideramos que una expresin lgica es


FALSA, cuando al evaluarla su resultado este tiene un valor de cero, en su
defecto, se considera verdadero si su valor es 1.

La evaluacin del resultado se da a travs de una comparacin entre dos valores


uno conocido, utilizado como referencia y otro, producto de una operacin
matemtica o simplemente como una variable a la cual se le ha asignado un valor,
el cual ser objeto de comparacin.

OPERADORES RELACIONALES.

Los operadores relacionales son elementos que se emplean para evaluar los
valores que toma una variable contra un valor preestablecido y a partir del
resultado, ejecutar una serie de operaciones acordes al proceso que se sigue.

Los operadores relacionales se presentan en la tabla 2.1.

Ing Oscar Garibay Castellanos Pgina 37


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

TABLA 2.1.-OPERADORES RELACIONALES.

Operador. Funcin

== Igual a.

!= Diferente de.

< Menor que.

> Mayor que.

<= Menor o igual que.

>= Mayor o igual que.

OPERADORES LGICOS.

Los operadores lgicos son elementos que se emplean en las estructuras


selectivas, cuando se desea que que la ejecucin o no, de un proceso dependa de
dos o ms evaluaciones simultaneas.

En la tabla 2.2 se presentan los operadores lgicos empleados en la programacin


en lenguaje c.

TABLA 2.2.-OPERADORES LGICOS.

Operador. Funcin.

! Negacin.

&& Conjuncin.

|| Disyuncin.

Ing Oscar Garibay Castellanos Pgina 38


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

2.2.-ESTRUCTURA SELECTIVA SIMPLE (if).


La estructura selectiva simple if se emplea cuando para resolver un problema el
desarrollo de un proceso esta condicionado a la evaluacin de una condicin
dada, si esta cierta se ejecuta, de lo contrario el programa simplemente no emite
resultado alguno.

La sintaxis que se debe cumplir en este tipo de estructura es la siguiente:

If(<condicin>)

<operacin>;

Para que podamos entender un poco mejor la operacin de esta estructura


revisemos el ejemplo 2.1, en el cual se presenta el diagrama de flujo y el cdigo
del programa que al ingresar el promedio obtenido por un un estudiante en la
preparatoria, si este es minimo de 7 se desplegara el letrero Felicidades cumple
con el requisito de ingreso a la universidad.

Ejemplo 2.1.-Desarrolle el diagrama de flujo y el cdigo del programa que al


ingresar el promedio obtenido por un un estudiante en la preparatoria, determine si
este cumple con el requisito de ingreso a la universidad, el cual deber ser contar
con un promedio mnimo de 7.

Ing Oscar Garibay Castellanos Pgina 39


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

inicio

PRO

PRO7

Felicidades cumple con el requisito


de ingreso a la universidad.

fin

El cdigo correspondiente ser el siguiente:

#include<stdio.h>
#include <conio.h>
#include <stdlib.h>
int main()
{
float PRO;
printf("\n\n\tEste programa determina si un estudiante cumple el requisito\n\n\tde
calificacion para ingresar a la universidad\n\n\n\t\t");
system ("PAUSE");
system("cls");
system ("color 57");
printf("\n\n\t\tEscriba su promedio\n\n\t\t ");
scanf("%f",&PRO);
system("cls");
if(PRO>=7)
{system ("color 47");
printf("\n\n\tFelicidades usted cumple el requisito de ingreso a la universidad");
}
getch();
return 0;
}

Ing Oscar Garibay Castellanos Pgina 40


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

Ahora ejecute el programa, ingrese valores conocidos y comprelos con


resultados que arroja el programa, con el fin de comprobar su operacin.

Por medio del ejemplo 2.2 desarrollaremos un programa, el cual imprimir los
impuestos que debe pagar una persona si sus ingresos rebasan los 15000 pesos
mensuales.

Si alcanza o rebasa esta cantidad en sus ingresos mensuales deber pagar el


10%, de lo contrario no se imprimir impuesto alguno.

Ejemplo 2.2 Elabore un programa, que calcule e imprima los impuestoa a pagar,
por una persona cuyo ingreso es mayor a 15000 pesos mensuales, considerando
que dicho impuesto es de el 10%, del total del ingreso.

Comencemos por desarrollar el diagrama de flujo.

Inicio

ING

ING15000

IMP=ING*0.10

Usted deber pagar IMP pesos.

fin

Ing Oscar Garibay Castellanos Pgina 41


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

Al igual que en ejemplos anteriores continuamos con la codificacin del programa,


la cual quedara de la siguiente manera:

#include<stdio.h>
#include <conio.h>
#include <stdlib.h>
int main()
{
float ING,IMP;
printf("\n\n\tEste programa determina si un trabajador debe pagar impuestos
mensuales\n\n\ty la cantidad a pagar\n\n\n\t\t");
system ("PAUSE");
system("cls");
system ("color 57");
printf("\n\n\t\tIntroduzca su ingreso mensual\n\n\t\t ");
scanf("%f",&ING);
system("cls");
if(ING>=15000)
{system ("color 47");
IMP=ING*0.1;
printf("\n\n\tUsted debera pagar:\t%.2f",IMP);
}
getch();
return 0;
}

Finalmente ejecutamos el programa, ingresamos valores conocidos y


comparamos los resultados arrojados por el programa, con el fin de comprobar su
operacin.

2.2.-ESTRUCTURA SELECTIVA DOBLE (if-else).

La estructura selectiva doble (if-else), es empleada cuando se desea hallar la


solucin de un problema, en el que se evalua una o mas condiciones, si la
condicin planteada es cierta el programa realizar un proceso, definido por el
algoritmo del problema planteado, s por el contrario la evaluacin arroja un
resultado negativo, sern ejecutadas una serie de operaciones, definidas en el
anlisis del problema para dicha situacin.

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

Ing Oscar Garibay Castellanos Pgina 42


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

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)

Si la expresin es VERDADERA (distinta de 0) se ejecuta proposicin1; en caso


contrario, se ejecuta proposicin2.

El primer ejercicio que veremos para concretizar este tema corresponde al


ejemplo 2.1, El cual es un programa que define si una persona puede pertenecer o
no a la liga de futbol femenil, dependiendo de su sexo.

Ejemplo 2.3.-Al teclear una letra para indicar el sexo, la liga de futbol femenil
definir si puede o no pertenecer a la misma.

Primero realizaremos el Diagrama de Flujo.

Ing Oscar Garibay Castellanos Pgina 43


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

inicio

letra

letra=f

Felicidades usted puede


Lastima esta liga es
formar parte de alguno de
exclusiva para mujeres
nuestros equipos

fin

El cdigo correspondiente a este diagrama de flujo se presenta a continuacin.

#include<stdio.h>
#include <conio.h>
#include <stdlib.h>
int main()
{
char letra;
printf("\n\n\tEste programa determina si una persona es candidata a integrar un
equipo\n\n\n\t\t");
system ("PAUSE");
system("cls");
system ("color 57");
printf("\n\n\t\tEscriba su sexo\n\n\t\tmasculino m\n\n\t\tFemenino f\n\n\t\t ");
scanf("%c",&letra);
system("cls");
if(letra=='f')
{system ("color 47");
printf("\n\n\tFelicidades usted puede formar parte de alguno de nuestros equipos");
}
else

Ing Oscar Garibay Castellanos Pgina 44


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

{system ("color 57");


printf("\n\n\tLastima esta liga es exclusiva para mujeres");
}
getch();
return 0;
}

Ejecutar el programa y comprobar su operacin.

En el ejemplo anterior aplicamos una variable de tipo carcter, que como puedes
observar el valor que se le asigna se encierra con una comilla (f), por otro lado en
la sentencia condicional if se abren y cierran los parntesis, pero no se concluye
con el (;), posteriormente se abre una llave y al concluir la operacin se cierra, sin
embargo esto solo se hace cuando hay mas de una instruccin, ya que al existir
una sola lnea de instruccin ( la impresin de un letrero o una operacin
matemtica que no requiere ms de una lnea), no es necesario realizar dicha
operacin, nosotros lo haremos simplemente para crear un hbito, con la intencin
de evitar que se puedan presentar errores de sintaxis al inicio por falta de
prctica.

Ahora Realizaremos un

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

DIAGRAMA DE FLUJO.

Ing Oscar Garibay Castellanos Pgina 45


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

inicio

ing

Ing<=4000

Usted es candidato
Lo sentimos usted
para el crdito
no es candidato
hipotecario
para el crdito.

fin

CDIGO.

#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
float ing;
int main ()
{

Ing Oscar Garibay Castellanos Pgina 46


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

printf("\nEste programa determina si un trabajador es candidato a un credito


hipotecario:\n\n\n\t\t ");
system("PAUSE");
system ("cls");
system("color 3F");
printf("\n \t Ingrese su salario mensual por favor : \t ");
scanf("%f",&ing);
system ("cls");
system ("color 33");
if(ing<4000)
printf("\n \t Lo sentimos no es usted candidato al credito");
else
printf("\n\tFelicidades es usted candidato para el credito");
getch();
return 0;
}
Al ejecutar comprobaremos que el programa realiza su funcin en forma efectiva,
para hacer mas concreto el conocimiento adquirido en este tema es recomendable
que al menos se resuelvan los ejercicios de reforzamiento presentados al final del
capitulo.

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')&&(edad>=18 ) )

if (( (sueldo> 7 ) || ( sexo=='m'))&&(edad>=18 ))

if (( (resistencia<=18)|| ( resistencia>=2))&&(voltaje=12 ))

if ( (ao!=1910)&&(ao>=1912 ))

Ing Oscar Garibay Castellanos Pgina 47


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

En el ejemplo 2.5, se presenta un programa, el cual al recibir tres magnitudes,


determina si estas corresponden a un triangulo y de ser asi determina el tipo de
triangulo que se podr formar de acuerdo a la clasificacin de sus lados

Ejemplo 2.5.-Desarrolle un programa que al capturar tres magnitudes, determine si


se puede formar un tringulo, as como del tipo que se trata.

En este ejercicio solo mostraremos el cdigo, dejando al estudiante la tarea de


desarrollar el diagrama de flujo.

#include<stdio.h>
#include<conio.h>
#include<math.h>
#include <stdlib.h>
int main()
{
float a,b,c;
printf("\n\tEste programa determina el tipo de triangulo que se tiene
conociendo\n\tla magnitud de sus lados\n\n\n\t\t ");
system ("PAUSE");
system ("cls");
system("color 3A");
printf("\n\n\t\tIngrese la longitud del lado A:\t");
scanf("%f",&a);
system ("cls");
printf("\n\n\t\tIngrese la longitud del lado B:\t");
scanf("%f",&b);
system ("cls");
printf("\n\n\t\tIngrese la longitud del lado C:\t");
scanf("%f",&c);
system ("cls");
system ("color 37");
if(a!=0&&b!= 0&&c!=0)

{
if(a==b&&b==c)
{
printf("\n\tEs un triangulo de tipo equilatero");
}
if((a==b&&b!=c)||(b==c&&c!=a))
{
printf("\n\tEs un triangulo de tipo isoceles");
}
if(a!=b&&a!=c&&b!=c)
{
printf("\n\tEs un triangulo de tipo escaleno");

Ing Oscar Garibay Castellanos Pgina 48


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

}
}
else
{
printf("\n\tLa figura no es un triangulo");
}
getch();
return 0;
}

Ejecute el programa, ingrese valores conocidos y compruebe que el programa


cumple con el objetivo del ejercicio.

Antes de comenzar a desarrollar ejercicios donde intervengan operaciones de tipo


matemtico veamos un ejemplo mas donde simplemente se deplega un letrero.

El ejemplo 2.6.-consiste en desarrollar el diagrama de flujo y el cdigo para


discriminar si una persona puede ingresar o no a un club de polo, dependiendo de
los datos que este proporcione.

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

Comenzaremos como en los casos anteriores por el desarrollo del diagrama de


flujo.

inicio

e i s

e>18&i3
0000&s=1
Lo sentimos no puedes ser
Bienvenido al club parte del club

fin

Ing Oscar Garibay Castellanos Pgina 49


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

En base al diagrama de flujo procederemos a la obtencin del cdigo, el cual


queda de la siguiente manera.

#include<stdio.h>
#include<conio.h>
#include <stdlib.h>
int main ()
{int e,i,sexo;
printf("\n\tEl programa determina si una persona puede ingresar a un club de
polo\n\n\t\t ");
system ("PAUSE");
system ("cls");
system ("color CF");
printf("\n \t Ingrese su edad por favor : \t ");
scanf("%d",&e);
system ("cls");
printf("\n \t Ingrese su ingreso mensual por favor : \t ");
scanf("%d",&i);
system ("cls");
printf("\n\n\t\tEscriba su sexo\n\n\t\tmasculino (1)\n\n\t\tFemenino (2)\n\n\t\t ");
scanf("%d",&sexo);
system ("cls");
if((e>=18)&&(i>=30000)&&(sexo==1))
{
printf("\n\n\t\t Bienvenido al club");}
else
{printf("\n\n\t\t Lo sentimos no puedes ser parte del club");}
getch();
return 0;
}

Ejecute el programa, ingrese valores conocidos y compruebe que el programa


cumple con el objetivo del ejercicio.

Finalmente realizaremos una serie de ejercicios con el fin de reforzar los


conocimientos adquiridos hasta este momento.

Comenzaremos por desarrollar un ejercicio el cual divida dos nmeros, arrojando


el resultado, nicamente si si la operacin esta determinada, de lo contrario se
desplegara un letrero que indique la indeterminacin encontrada.

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

Ing Oscar Garibay Castellanos Pgina 50


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

El diagrama de flujo corresponder a la siguiente figura.

inicio

a,b

b0

no se puede r=a/b
realizar la
operacin
r

fin

La codificacin del diagrama de flujo se muestra a continuacin.

#include<stdio.h>
#include<conio.h>
#include <stdlib.h>
int main ()
{
float r,a,b;
printf("\n\tEste programa determina si se puede realizar una division entre\n\tdos
numeros, de ser posible ejecuta la operacion \n\n\t\t ");
system("PAUSE");
system ("cls");
system ("color 47");
printf("\n \t Ingrese el valor del divisor:\n\n\t\t");
scanf("%f",&b);

Ing Oscar Garibay Castellanos Pgina 51


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

system ("cls");
printf("\n \tIngrese el valor del dividendo:\n\n\t\t");
scanf("%f",&a);
if(b==0)
{system ("cls");
printf("\n\tNo se puede realizar la division por estar indeterminada");}
else
{
r=a/b;
system ("cls");printf("\n \t El resultado de la division es: %.2f",r);
}
getch();
return 0;
}

Ejecute el programa, ingrese valores conocidos y compruebe que el programa


cumple con el objetivo del ejercicio.

En el ejemplo 2.8 crearemos un programa que determine los parmetros elctricos


en un circuito constituido por cuatro resistencias.

Ejemplo 2.8.- Dado un circuito elctrico con cuatro 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.

Comencemos por desarrollar el diagrama de flujo correspondiente a la solucin de


este problema.

Ing Oscar Garibay Castellanos Pgina 52


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

inicio

r1,r2,vt.

op=1

reqr1+r2+r3+r4 req1/((1/r1)+(1/r2)+(1/r3)+(1/r4)

Itvt/req

pt vt*it)

req, it,pt

fin

El cdigo correspondiente ser el siguiente.

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

int main ()

Ing Oscar Garibay Castellanos Pgina 53


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

{
float r1,r2,r3,r4,req,vt,it,pt;
int op;
printf("\n\tEste programa calcula para un circuito de cuatro
resistencias\n\tconectadas en serie o paralelo:\n\n\tLa resistencia
total.\n\tCorriente total.\n\tPotencia consumida.\n\n\n\t\t");
system("PAUSE");
system("color 39");
system ("cls");
printf("\n \tIngrese el voltaje de la fuente: \t ");
scanf("%f",&vt);
system ("cls");
printf("\n \t Introduzca el valor de la resistencia uno: \t ");
scanf("%f",&r1);
system ("cls");
printf("\n \t Introduzca el valor de la resistencia dos: \t ");
scanf("%f",&r2);
system ("cls");
printf("\n \t Introduzca el valor de la resistencia tres: \t ");
scanf("%f",&r3);
system ("cls");
printf("\n \t Introduzca el valor de la resistencia cuatro: \t ");
scanf("%f",&r4);
system ("cls");
printf("\n\n\t Elija un tipo de conexion para el circuito\n\t1serie\n\t2paralelo:\n\n\t ");
scanf("%d",&op);
system ("cls");

if(op==1)
{
req=r1+r2+r3+r4;
}

else
{
req=1/((1/r1)+(1/r2)+(1/r3)+(1/r4));
}
it=vt / req;
pt=it*vt;
printf("\n\tLa resistencia total del circuito es:\t%.2f ohms",req);
printf("\n\tLa corriente total del circuito es:\t%.2f Amperes",it);
printf("\n\tLa potencia consumida por el circuito es:\t%.2f Watts",pt);
getch();
return 0;
}

Ing Oscar Garibay Castellanos Pgina 54


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

Ejecute el programa, ingrese valores conocidos y compruebe que el programa


cumple con el objetivo del ejercicio.

Para concluir con la estructura selectiva doble realizaremos un ejercicio con mayor
grado de dificultad, ya que este se resolver a travs de una estructura formada
por mltiples operaciones de la condicional if-else.

Ejemplo 2.9.- Dados tres nmeros alazar el programa los ordenara de mayor a
menor, imprimindolos en ese mismo orden.

En este caso el diagrama de flujo se hace un poco mas complejo, como podemos
ver inicialmente la primer variable se compara con la segunda y la segunda con la
tercera, si se cumplen las condiciones, se procede a imprimir el letrero, de lo
contrario se siguen comparando en forma sucesiva, hasta encontrar una condicin
que cumpla con los criterios establecidos, a este procedimiento se le conoce como
estructura en cascada.

El diagrama de flujo que se obtiene se presenta en forma desarrollada a


continuacin.

Ing Oscar Garibay Castellanos Pgina 55


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

cio

a,b,c

a>b

a>c b>c

c,a,b c,b,a
a>c
b>c

a,b,c a,c,b b,a,c b,c,a

fin

El cdigo correspondiente al diagrama de flujo se presenta a continuacin.

#include<stdio.h>
#include <conio.h>
#include <stdlib.h>
int main()
{
float a,b,c;
printf("\n\n\tEste programa al recibir tres numeros al azar\n\n\tlos imprime en forma
descendente\n\n\n\t\t");
system ("PAUSE");
system("cls");
system ("color 57");
printf("\n\n\t\tIngrese el primer numero:\n\n\t\t ");
scanf("%f",&a);

Ing Oscar Garibay Castellanos Pgina 56


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

system("cls");
printf("\n\n\t\tIngrese el segundo numero:\n\n\t\t ");
scanf("%f",&b);
system("cls");
printf("\n\n\t\tIngrese el tercer numero:\n\n\t\t ");
scanf("%f",&c);
system("cls");
if(a>b)
if (a>c)
if(b>c)
printf ("\n\n\t\tEl orden de los numeros es a,b,c:\n\n\t%.3f\t%.3f\t%.3f",a,b,c);
else
printf ("\n\n\t\tEl orden de los numeros es a,c,b:\n\n\t%.3f\t%.3f\t%.3f",a,c,b);
else
printf ("\n\n\t\tEl orden de los numeros es c,a,b:\n\n\t%.3f\t%.3f\t%.3f",c,a,b);
if(b>c)
if(a>c)
printf ("\n\n\t\tEl orden de los numeros es b,a,c:\n\n\t%.3f\t%.3f\t%.3f",b,a,c);
else
printf ("\n\n\t\tEl orden de los numeros es b,c,a:\n\n\t%.3f\t%.3f\t%.3f",b,c,a);
else
printf ("\n\n\t\tEl orden de los numeros es c,b,a:\n\n\t%.3f\t%.3f\t%.3f",c,b,a);
getch();
return 0;
}

Ejecute el programa, ingrese valores conocidos y compruebe que el programa


cumple con el objetivo del ejercicio.

Con el ejercicio anterior concluimos el tema de estructura selectiva doble, sin


embargo es recomendable la prctica cotidana de este tipo de ejercicios,
apoyndose en la bibliografa que presentamos en la actual obra.

2.4.-ESTRUCTURA SELECTIVA MLTIPLE (switch)

Ing Oscar Garibay Castellanos Pgina 57


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

inicioini

A,B,OP

OP

sum=A+B rest=A-B Mult=A*B B=0

sum rest mult indeterminado div=A/B

div

fin

A partir del presente tema los diagramas de flujo se dejarn como 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
presentamos un men de opciones que el usuario seleccionara solo una, y el
programa ejecuta nicamente esa rama pasando por alto los dems algoritmos.

Ing Oscar Garibay Castellanos Pgina 58


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

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

Ing Oscar Garibay Castellanos Pgina 59


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

inicio

A,B,OP

OP

B=0
No existe
sum=A+B rest=A-B Mult=A*B

sum rest mult indeterminado div=A/B

div

fin

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>
#include <stdlib.h>
int main ()
{int op;
float sum,mult,div,rest,a,b;
printf("\nEste programa realiza las operaciones basicas para dos numeros segun
la eleccion del usuario");
printf("\n\n\n\t\t Teclee enter para continuar:\n\t ");
getch ();
system ("cls");
printf("\n\tIngrese el primer numero=");

Ing Oscar Garibay Castellanos Pgina 60


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

scanf("%d",&a);
printf("\n\tIngrese el segundo numero=");
scanf("%d",&b);
printf("\n\tSeleccione una opcion de calculo \n\n\t1.-Suma.\n\t2.-resta.\n\t3.-
Multiplicacion\n\t4division-:\t");
scanf("%d",op);
system ("cls");
switch (op)
{
case 1:
sum=a+b;
printf("\n\n\n\t\t\tLa suma de los numeros es = %.2f",sum);
break;
case 2:
rest=a-b;
printf("\n\n\n\t\t\tLa resta de los numeros es = %.2f",rest);
break;
case3:
mult=a*b;
printf("\n\n\n\t\t\tLamultiplicacin de los numeros es = %.2f",mult);
break;
case 4:
if(b==0)
printf("\n\tNo se puede dividir");
else
{
div=a/b;
printf("\n\n\n\t\t\tLa division de los nmeros es = %.2f",div);
break;
default:
printf("La opcion no existe");
break;
}}
getch();
return 0;}
Ejemplo 2.8.-Elabora el cdigo para un programa el cual al seleccionar una opcin
calcule el volumen de un prisma triangular, cuadrangular, rectangular, cilndrico, y
hexagonal

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


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

#include <stdio.h>

#include <conio.h>

#include <math.h>

#include <stdlib.h>

float la,lb,lc,altura,peri,area,volumen,apotema;

int op,n;

int main ()

printf("\n\n\t\tSelecione tipo de prisma\n\n\t\t1.-triangular\n\n\t\t2.-


cuadrangular\n\n\t\t3.-rectangular\n\n\t\t4.-cilindrico\n\n\t\t5.-Poligono regular de n
lados\n\t\t\t\t");

scanf("%d",&op);

system("cls");

switch(op)

case 1:printf("\n\n\t\tIngrese la magnitud del lado a:\n\t\t");

scanf("%f",&la);

system("cls");

printf("\n\n\t\tIngrese la magnitud del lado b:\n\t\t");

scanf("%f",&lb);

system("cls");

printf("\n\n\t\tIngrese la magnitud del lado c:\n\t\t");

scanf("%f",&lc);

system("cls");

Ing Oscar Garibay Castellanos Pgina 62


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

printf("\n\n\t\tIngrese la medida de la altura\n\t\t");

scanf("%f",&altura);

system("cls");

peri=(la+lb+lc)/2;

area=sqrt(peri*(peri-la)*(peri-lb)*(peri-lc));

volumen=area*altura;

printf("\n\n\t\tEl area la figura geometrica es = %.2f",area);

printf("\n\n\t\tEl volumen del prisma es = %.2f",volumen);

break;

case 2:printf("\n\n\t\tIngrese la magnitud del lado del cubo:\n\t\t");

scanf("%f",&la);

system("cls");

area=pow(la,2);

volumen=pow(la,3);

printf("\n\n\t\tEl area la figura geometrica es = %.2f",area);

printf("\n\n\t\tEl volumen del prisma es = %.2f",volumen);

break;

case 3:printf("\n\n\t\tIngrese la magnitud de la base del rectangulo:\n\t\t");

scanf("%f",&la);

system("cls");

printf("\n\n\t\tIngrese la magnitud de la altura del rectangulo:\n\t\t");

Ing Oscar Garibay Castellanos Pgina 63


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

scanf("%f",&lb);

system("cls");

printf("\n\n\t\tIngrese la magnitud de la altura del prisma rectangular:\n\t\t");

scanf("%f",&altura);

system("cls");

area=la*lb;

volumen=area*altura;

printf("\n\n\t\tEl area la figura geometrica es = %.2f",area);

printf("\n\n\t\tEl volumen del prisma es = %.2f",volumen);

break;

case 4:printf("\n\n\t\tIngrese la magnitud del radio del cilindro:\n\t\t");

scanf("%f",&la);

system("cls");

printf("\n\n\t\tIngrese la magnitud de la altura del cilindro:\n\t\t");

scanf("%f",&altura);

area=M_PI*pow(la,2);

volumen=area*altura;

system("cls");

printf("\n\n\t\tEl area la figura geometrica es = %.2f",area);

printf("\n\n\t\tEl volumen del prisma es = %.2f",volumen);

break;

Ing Oscar Garibay Castellanos Pgina 64


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

case 5:

printf("\n\n\t\tIngrese el numero de lados del prisma:\n\t\t");

scanf("%d",&n);

system("cls");

printf("\n\n\t\tIngrese la magnitud del lado del prisma:\n\t\t");

scanf("%f",&la);

system("cls");

printf("\n\n\t\tIngrese la magnitud del apotema del prisma:\n\t\t");

scanf("%f",&apotema);

system("cls");

printf("\n\n\t\tIngrese la magnitud de la altura del prisma:\n\t\t");

scanf("%f",&altura);

system("cls");

area=n*la*apotema;

volumen=area*altura;

printf("\n\n\t\tEl area la figura geometrica es = %.2f",area);

printf("\n\n\t\tEl volumen del prisma es = %.2f",volumen);

break;

default:

printf("\n\n\t\tLa opcin no existe");

break;

Ing Oscar Garibay Castellanos Pgina 65


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

getch ();

return 0;

Ejemplo2.9.-Realice el cdigo para un programa en el cual al seleccionar una


opcin calcule los 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>

#include<conio.h>

#include<math.h>

#include<stdlib.h>

int main ()

float RL,vd,id,ic,vb,Rb,beta,ib,r1,r2,req,vt,it,pt,rtot;

int op;

printf("\n\n\tEl programa efectua diferentes calculos, por favor elija una


opcion:\n\n\n\t\t1.-Resistencia de carga para un diodo\n\n\t\t2.-Resistencia de
carga para la base de un transistor\n\n\t\t3.-Corrientotal,resistencia total y potencia
total en un\n\t\tcircuito serie con dos resistencias\n\n\t\t4.-Corriente
total,resistencia total y potencia total en un\n\t\tcircuito paralelo con dos
resistencias\n\t\t\t");

Ing Oscar Garibay Castellanos Pgina 66


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

scanf("%d",&op);

system("cls");

switch(op)

case 1:

printf("\n\n\t\tDame el voltaje de la fuente: \t ");

scanf("%f",&vt);

system("cls");

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

scanf("%f",&vd);

system("cls");

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

scanf("%f",&id);

system("cls");

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

system("cls");

printf("\n\n\t\t Dame el valor del voltaje de base:");

scanf("%f",&vb);

system("cls");

printf("\n\n\t\t Dame el valor del factor beta:");

Ing Oscar Garibay Castellanos Pgina 67


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

scanf("%f",&beta);

ib=ic/beta;

Rb=(vb-0.7)/ib;

system("cls");

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

system("cls");

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

scanf("%f",&r1);

system("cls");

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

scanf("%f",&r2);

req=r1+r2;

it=vt / req;

pt=it*vt;

system("cls");

printf("\n\n\t La resistencia total del circuito es:\t%f ",req);

printf("\n\n\t La corriente total del circuito es:\t%f ",it);

printf("\n\n\t La potencia consumida por el circuito es:\t%f ",pt);

break;

case 4:

printf("\n\tIngrese el voltaje de la fuente: \t ");

Ing Oscar Garibay Castellanos Pgina 68


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

scanf("%f",&vt);

system("cls");

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

scanf("%f",&r1);

system("cls");

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

scanf("%f",&r2);

req=(r1*r2) / (r1+r2);

it=vt / req;

pt=it*vt;

system("cls");

printf("\n\n\t La resistencia total del circuito es:\t%f ",req);

printf("\n\n\t La corriente total del circuito es:\t%f ",it);

printf("\n\n\t La potencia consumida por el circuito es:\t%f ",pt);

break;

default:

printf("\n\n\t La opcin no existe ");

break;

getch ();

return 0;

}#include<stdio.h>

#include<conio.h>

#include<math.h>

#include<stdlib.h>

Ing Oscar Garibay Castellanos Pgina 69


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

int main ()

float RL,vd,id,ic,vb,Rb,beta,ib,r1,r2,req,vt,it,pt,rtot;

int op;

printf("\n\n\tEl programa efectua diferentes calculos, por favor elija una


opcion:\n\n\n\t\t1.-Resistencia de carga para un diodo\n\n\t\t2.-Resistencia de
carga para la base de un transistor\n\n\t\t3.-Corrientotal,resistencia total y potencia
total en un\n\t\tcircuito serie con dos resistencias\n\n\t\t4.-Corriente
total,resistencia total y potencia total en un\n\t\tcircuito paralelo con dos
resistencias\n\t\t\t");

scanf("%d",&op);

system("cls");

switch(op)

case 1:

printf("\n\n\t\tDame el voltaje de la fuente: \t ");

scanf("%f",&vt);

system("cls");

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

scanf("%f",&vd);

system("cls");

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

scanf("%f",&id);

system("cls");

RL=(vt-vd)/id;

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

break;

Ing Oscar Garibay Castellanos Pgina 70


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

case 2:

printf("\n\n\t\t Dame el valor de corriente en colector:");

scanf("%f",&ic);

system("cls");

printf("\n\n\t\t Dame el valor del voltaje de base:");

scanf("%f",&vb);

system("cls");

printf("\n\n\t\t Dame el valor del factor beta:");

scanf("%f",&beta);

ib=ic/beta;

Rb=(vb-0.7)/ib;

system("cls");

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

system("cls");

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

scanf("%f",&r1);

system("cls");

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

scanf("%f",&r2);

req=r1+r2;

it=vt / req;

Ing Oscar Garibay Castellanos Pgina 71


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

pt=it*vt;

system("cls");

printf("\n\n\t La resistencia total del circuito es:\t%f ",req);

printf("\n\n\t La corriente total del circuito es:\t%f ",it);

printf("\n\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);

system("cls");

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

scanf("%f",&r1);

system("cls");

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

scanf("%f",&r2);

req=(r1*r2) / (r1+r2);

it=vt / req;

pt=it*vt;

system("cls");

printf("\n\n\t La resistencia total del circuito es:\t%f ",req);

printf("\n\n\t La corriente total del circuito es:\t%f ",it);

printf("\n\n\t La potencia consumida por el circuito es:\t%f ",pt);

break;

default:

printf("\n\n\t La opcin no existe ");

Ing Oscar Garibay Castellanos Pgina 72


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

break;

getch ();

return 0;

}#include<stdio.h>

#include<conio.h>

#include<math.h>

#include<stdlib.h>

int main ()

float RL,vd,id,ic,vb,Rb,beta,ib,r1,r2,req,vt,it,pt,rtot;

int op;

printf("\n\n\tEl programa efectua diferentes calculos, por favor elija una


opcion:\n\n\n\t\t1.-Resistencia de carga para un diodo\n\n\t\t2.-Resistencia de
carga para la base de un transistor\n\n\t\t3.-Corrientotal,resistencia total y potencia
total en un\n\t\tcircuito serie con dos resistencias\n\n\t\t4.-Corriente
total,resistencia total y potencia total en un\n\t\tcircuito paralelo con dos
resistencias\n\t\t\t");

scanf("%d",&op);

system("cls");

switch(op)

case 1:

printf("\n\n\t\tDame el voltaje de la fuente: \t ");

scanf("%f",&vt);

system("cls");

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

Ing Oscar Garibay Castellanos Pgina 73


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

scanf("%f",&vd);

system("cls");

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

scanf("%f",&id);

system("cls");

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

system("cls");

printf("\n\n\t\t Dame el valor del voltaje de base:");

scanf("%f",&vb);

system("cls");

printf("\n\n\t\t Dame el valor del factor beta:");

scanf("%f",&beta);

ib=ic/beta;

Rb=(vb-0.7)/ib;

system("cls");

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

Ing Oscar Garibay Castellanos Pgina 74


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

system("cls");

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

scanf("%f",&r1);

system("cls");

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

scanf("%f",&r2);

req=r1+r2;

it=vt / req;

pt=it*vt;

system("cls");

printf("\n\n\t La resistencia total del circuito es:\t%f ",req);

printf("\n\n\t La corriente total del circuito es:\t%f ",it);

printf("\n\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);

system("cls");

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

scanf("%f",&r1);

system("cls");

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

scanf("%f",&r2);

req=(r1*r2) / (r1+r2);

it=vt / req;

Ing Oscar Garibay Castellanos Pgina 75


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

pt=it*vt;

system("cls");

printf("\n\n\t La resistencia total del circuito es:\t%f ",req);

printf("\n\n\t La corriente total del circuito es:\t%f ",it);

printf("\n\n\t La potencia consumida por el circuito es:\t%f ",pt);

break;

default:

printf("\n\n\t La opcin no existe ");

break;

getch ();

return 0;

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

#include <string.h>

int main()

char letra; /*Declaracin de variables tipo carcter*/

printf("\n\n\t\tDame una letra:\n\n\t\t ");

letra = getchar(); /*asignacin del carcter ingresado a la variable letra*/

Ing Oscar Garibay Castellanos Pgina 76


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

getchar();

system("cls");

switch (letra)

case 'a': puts("\n\n\t\tAguila");

break;

case 'b':

puts("\n\n\t\tVaca");

break;

case 'c':

puts("\n\n\t\tCaballo ");

puts("\n\n\t\tCamello");

break;

default:

puts("no hay");

break;

getchar();

Ing Oscar Garibay Castellanos Pgina 77


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

EJERCICIOS DE REFORZAMIENTO.

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 78


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

CAPITULO III

ESTRUCTURAS REPETITIVAS

COMPETENCIA PARTICULAR 1
ELABORA PROGRAMAS ESTRUCTURADOS BSICOS EMPLEANDO ESTRUCTURAS DE
SELECCIN Y REPETICIN CONSIDERANDO LOS ESTNDARES ANSI C.

RAP 2
APLICA LAS ESTRUCTURAS DE SELECCIN Y REPETICIN PARA LA SOLUCIN DE
PROBLEMAS MATEMTICOS BSICOS POR MEDIO DE PROGRAMAS EN LENGUAJE C
CONSIDERANDO LOS ESTNDARES ANSI C.

Ing Oscar Garibay Castellanos Pgina 79


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


Hasta ahora hemos realizado ejercicios sencillos, en los cuales operamos con una
cantidad de variables conocidas, sin embargo al intentar ejecutar una suma con
varios nmeros por ejemplo, sera necesario inicialmente realizan operaciones
bsicas.

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.

Ing Oscar Garibay Castellanos Pgina 80


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

Id=incremento positivo o negativo-.

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>

#include<stdlib.h>

int main ()

int i;

float calif,prom,sum;

sum=0;

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

printf("\n\n\tIngrese la calificacion %d: \t",i);

Ing Oscar Garibay Castellanos Pgina 81


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

scanf("%f",&calif);

sum=sum+calif;

prom=sum/7;

system("cls");

printf("\n\t Tu promedio es: \t%.2f ",prom);

getch();

return 0;

3.2.1.-EXPRESIONES ABREVIADAS.
En algunos casos los programadores presentan ejercicios de estructuras
repetitivas con expresiones abreviadas que pueden confundir a las personas
cuando inician en el estudio de la programacin, estas expresiones tienen su
equivalencia como se muestra a continuacin:

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

Ing Oscar Garibay Castellanos Pgina 82


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

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

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 %d: \t",i);
scanf("%f",&calif);
sum+=calif;
}
prom=sum/7;
printf(""\n \t Tu promedio es: \t%.2f ",prom);
getch();
return 0;
}

Ing Oscar Garibay Castellanos Pgina 83


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

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=;
printf(""\n \tIngrese el nmero de calificaciones en el grupo: \t");
scanf("%f",&n);
for(i=1;i<=n;i++)
{
printf(""\n \tIngrese la calificacin %d: \t",i);
scanf("%f",&calif);
sum=sum+calif;
}
prom=sum/n;
printf(""\n \t Tu promedio es: \t%.2f ",prom);
getch();
return ;
}

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;
Ing Oscar Garibay Castellanos Pgina 84
CECYT 9 JUAN DE DIOS BTIZ PAREDES IPN
PROGRAMACION EN LENGUAJE C

for(i=1;i<=n;i++)
{
printf(""\n \tIngrese la calificacin %d: \t",i);
scanf("%f",&calif);
sum+=calif;
}
prom=sum/n;
printf(""\n \t Tu promedio es: \t%.2f ",prom);
getch();
return ;
}

Como podrs ver adems de la expresin abreviada, se tienen otros dos detalles:
primero la variable n es empleada como un lmite que cambia de acuerdo a las
necesidades del usuario, la segunda es que la variable sum ahora se igualo a cero
dese que esta se declaro y no posteriormente, lo cual tambin es comn sin
afectar el programa y reduciendo el nmero de lneas obteniendo un programa
ms flexible.

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

Ing Oscar Garibay Castellanos Pgina 85


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

{
fact=fact*I;
}
printf(""\n \tEl factoriaI de %d es: \t%lf",num,fact);
getch();
return ;
}

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

Ing Oscar Garibay Castellanos Pgina 86


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

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

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>

#include <stdlib.h>

int main()

{int n,i,numero;

long par,impar;

par=0;

impar=0;

printf("\n\n\t\tDado un numero el programa determina si este es par\n\n\t\t o


impar y los suma por separado");

Ing Oscar Garibay Castellanos Pgina 87


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

printf("\n\n\n\t\t\tTeclee enter para continuar");

getch();

system("cls");

printf("\n\n\t\tIngrese la cantidad de numeros a sumar:\n\n\t\t");

scanf("%d",&n);

system ("cls");

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

{printf("\n\n\t\tIngrese el %d numero a sumar:\n\n\t\t",i);

scanf("%d",&numero);

if((numero%2)==0)

{par=par+numero;}

else

{impar=impar+numero;}}

printf("\n \tLa suma de los numeros pares es \t%ld",par);

printf("\n \tLa suma de los numeros impares es \t%ld",impar);

getch();

return 0;

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.

Ing Oscar Garibay Castellanos Pgina 88


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

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

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.

Ing Oscar Garibay Castellanos Pgina 89


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

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

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.

Ing Oscar Garibay Castellanos Pgina 90


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

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

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

Ing Oscar Garibay Castellanos Pgina 91


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

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.

3.3.-ESTRUCTURA REPETITIVA WHILE

Ing Oscar Garibay Castellanos Pgina 92


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

Serie
#include <stdio.h>

#include <conio.h>

#include<stdlib.h>

int main()

int i,n;

float resist,req,it,vt,pt;

printf("\n\n\t\tEl programa calcula la resistencia total,el voltaje total\n\t\tla corriente


total y la potencia consumida en un circuito\n\t\tde resistencias en serie:\t");

printf("\n\n\n\n\t\tTeclee enter para continuar:\n\n\t\t\t");

getch ();

system ("cls");

printf("\n\n\n\n\t\tIngrese el valor de la fuente de voltaje\n\n\t\t\t");

scanf("%f",&vt);

req=0;

system ("cls");

printf("\n\n\n\n\t\tIngrese el valor de la primera resistencia\n\n\t\t\t");

scanf("%f",&resist);

system ("cls");

while(resist)

{req=req+resist;

Ing Oscar Garibay Castellanos Pgina 93


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

printf("\n\n\n\n\t\tIngrese el valor de la siguiente resistencia:\n\n\t\t\t");

scanf("%f",&resist);

system ("cls");

it=vt/req;

pt=vt*it;

printf("\n\n\n\n\t\tLa resistencia total del circuito es:\t%.2f",req);

printf("\n\n\n\n\t\tEl voltaje total del circuito es:\t%.2f",vt);

printf("\n\n\n\n\t\tLa corriente total del circuito es:\t%.2f",it);

printf("\n\n\n\n\t\tLa potencia total del circuito es:\t%.2f",pt);

getch();

return 0;

Paralelo

#include <stdio.h>

#include <conio.h>

#include<stdlib.h>

int main()

float resist,req,it,vt,pt,rtotal;

printf("\n\n\t\tEl programa calcula la resistencia total,el voltaje total\n\t\tla corriente


total y la potencia consumida en un circuito\n\t\tde resistencias en serie:\t");

printf("\n\n\n\n\t\tTeclee enter para continuar:\n\n\t\t\t");

Ing Oscar Garibay Castellanos Pgina 94


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

getch ();

system ("cls");

printf("\n\n\n\n\t\tIngrese el valor de la fuente de voltaje\n\n\t\t\t");

scanf("%f",&vt);

system ("cls");

printf("\n\n\n\n\t\tIngrese el valor de la primera resistencia\n\n\t\t\t");

scanf("%f",&resist);

req=0;

system ("cls");

while(resist)

{req=req+(1/resist);

printf("\n\n\n\n\t\tIngrese el valor de la siguiente resistencia:\n\n\t\t\t");

scanf("%f",&resist);

system ("cls");

rtotal=1/req;

it=vt/rtotal;

pt=vt*it;

printf("\n\n\n\n\t\tLa resistencia total del circuito es:\t%.2f",rtotal);

printf("\n\n\n\n\t\tEl voltaje total del circuito es:\t%.2f",vt);

printf("\n\n\n\n\t\tLa corriente total del circuito es:\t%.2f",it);

printf("\n\n\n\n\t\tLa potencia total del circuito es:\t%.2f",pt);

Ing Oscar Garibay Castellanos Pgina 95


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

getch();

return 0;

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>

#include <conio.h>

#include <stdlib.h>

Ing Oscar Garibay Castellanos Pgina 96


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

int main()

float num,snum;

snum=0;

printf("\n\n\t\tIngrese el primer numero:\t");

scanf("%f",&num);

system ("cls");

while(num)

snum=snum+num;

printf("\n\n\t\tIngrese el siguiente numero:\t");

scanf("%f",&num);

system ("cls");

printf("\n\n\t\tLa suma de los numeros es:\t%f",snum);

getch();

return 0;

#include <stdio.h>

#include <conio.h>

#include <stdlib.h>

int main()

{int i=0;

float num,snum,promedio=0;

Ing Oscar Garibay Castellanos Pgina 97


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

snum=0;

printf("\n\n\t\tEl programa calcula el promedio de las calificaciones\n\t\tobtenidas


por un alumno:\t");

printf("\n\n\n\n\t\tteclee enter para continuar:\n\n\t\t\t");

getch ();

system ("cls");

printf("\n\n\t\tIngrese la primera calificacion:\t");

scanf("%f",&num);

system ("cls");

while(num)

snum=snum+num;

printf("\n\n\t\tIngrese la siguiente calificacion:\t");

scanf("%f",&num);

i=i+1;

system ("cls");

promedio=snum/i;

printf("\n\n\t\tEl promedio del alumno es:\t%f",promedio);

getch();

return 0;

Ing Oscar Garibay Castellanos Pgina 98


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

Ejemplo 3.11.-Se desea obtener la suma de los gastos realizados por una
compaa, el programa deber sumar los gastos hasta que el contador no tenga
otro gasto que ingresar.

#include <stdio.h>

#include <conio.h>

#include <stdlib.h>

int main()

float egre,segre;

segre=0;

printf("\n\n\t\tIngrese el primer gasto:\t");

scanf("%f",&egre);

system ("cls");

while(egre)

segre=segre+egre;

printf("\n\n\t\tIngrese el siguiente gasto:\t");

scanf("%f",&egre);

system ("cls");

system ("cls");

printf("\n\n\t\t\a\a\aEl valor de los gastos totales de la compania


es:\n\n\t\t\t\t%.2f",segre);

getch();

return 0;

Ing Oscar Garibay Castellanos Pgina 99


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>

#include <math.h>

#include <stdlib.h>

int main()

int num;

float sum,raiz;

sum=0;

printf("\n\n\t\tIngrese un numero entero positivo \"0 para terminar\":\t");

scanf("%d",&num);

system ("cls");

while(num)

raiz=sqrt(num);

printf("\n\n\t\tLa raiz cuadrada de %d es:\t%f",num,raiz);

sum=sum+raiz;

printf("\n\n\n\n\n\n\t\t\t\tTeclee enter para continuar");

getch ();

system("cls");

Ing Oscar Garibay Castellanos Pgina 100


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

printf("\n\n\t\tIngrese un numero entero positivo \"0 para terminar\"\t");

scanf("%d",&num);

system("cls");

system("cls");

printf("\n\n\t\t\aLa suma de las raices es:\t%f",sum);

getch();

return 0;

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)

Ing Oscar Garibay Castellanos Pgina 101


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

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=0;
float sum,prom;
printf(" \t\nIngrese el numero de pinos derribados en el primer tiro:\t);
scanf(%d&tiro);
do
{
sum=sum+tiro;
i=i+1;
printf(" \t\nCuantos pinos derribados en el siguiente tiro 0 para terminar-:\t);
scanf(%d&tiro);

}
while(tiro);
prom=sum/I;
printf(" \t\nEl promedio del jugador es de:\t%f,prom);
getch();
return ;
}

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.

Ing Oscar Garibay Castellanos Pgina 102


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

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

do
{

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;

Ing Oscar Garibay Castellanos Pgina 103


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

case 2 :
printf("\nTomar en cuenta que es un triangulo rectangulo:");
printf("\nIngrese cateto opuesto:");
scanf("%f",&a);
printf("Ingrese cateto adyacente:");
scanf("%f",&b);
printf("Ingrese la altura del Prisma:");
scanf("%f",&ce);
printf("La hipotenusa es:%f",d);
abase=(a*b)/2;
d=sqrt((pow(a,2)+pow(b,2)));
asup=2*abase+(a*ce)+(b*ce)+(d*ce);
vol=abase*ce;
printf("\n\n\a El rea de la Base es =%f",abase);
printf("\n\n El rea superficial es =%f",asup);
printf("\n\n El volumen es =%f",vol);
break;

case 3 :
printf("\nIngrese el radio:");
scanf("%f",&a);
printf("Ingrese la altura del cilindro:");
scanf("%f",&b);
abase=M_PI*(pow(a,2));
asup=(2*abase)+(2*a*M_PI*ce);
vol=abase*b;
printf("\n\n\a El rea de la Base es =%f",abase);
printf("\n\n El rea superficial es =%f",asup);
printf("\n\n El volumen es =%f",vol);
break;

Ing Oscar Garibay Castellanos Pgina 104


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

case 4 :
printf("\nIngrese el ancho de la base:");
scanf("%f",&a);
printf("Ingrese la altura del prisma:");
scanf("%f",&b);
abase=pow(a,2);
asup=(2*abase)+(4*a*b);
vol=abase*b;
printf("\n\n\a El rea de la Base es =%f",abase);
printf("\n\n El rea superficial es =%f",asup);
printf("\n\n El volumen es =%f",vol);
break;

case 5 :
printf("\nIngrese el radio de la base:");
scanf("%f",&a);
printf("Ingrese la longitud de un lado de la base:");
scanf("%f",&b);
printf("Ingrese la altura del prisma:");
scanf("%f",&ce);
abase=((sqrt(pow(a,2)+pow((b/2),2)))*6*b)/2;
asup=2*abase+(6*b*ce);
vol=abase*ce;
printf("\n\n\a El rea de la Base es =%f",abase);
printf("\n\n El rea superficial es =%f",asup);
printf("\n\n El volumen es =%f",vol);
break;
}

Ing Oscar Garibay Castellanos Pgina 105


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

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

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

Ing Oscar Garibay Castellanos Pgina 106


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

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

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)

Ing Oscar Garibay Castellanos Pgina 107


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

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

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

Ing Oscar Garibay Castellanos Pgina 108


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

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
aumentarle un segundo y verificar si ese cambio afecta los otros dos, es decir, a
los minutos y a las horas.

CAPITULO
IV

Ing Oscar Garibay Castellanos Pgina 109


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

FUNCIONES.

COMPETENCIA PARTICULAR 2.
RESUELVE PROBLEMAS LGICOS Y MATEMTICOS UTILIZANDO LAS FUNCIONES DE LA
BIBLIOTECA Y/ O LAS PROPIAS.

RAP1.
RESUELVE PROBLEMAS LGICOS Y MATEMTICOS UTILIZANDO LAS FUNCIONES DE LA
BIBLIOTECA INTERNA Y O LAS PROPIAS.
RAP 2.
APLICA LAS FUNCIONES EN LA PROGRAMACIN EN LENGUAJE C PARA LA SOLUCIN DE
PROBLEMAS LGICOS Y MATEMTICOS.

4.1.-DEFINICIONES.
Para resolver un problema cuya solucin es demasiado tediosa, y que se puede
dividir en pequeas partes que despus se integren para resolver el mismo se
emplean, funciones.

El uso de funciones nos da varias ventajas entre las que podemos contar las
siguientes:

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.

Ing Oscar Garibay Castellanos Pgina 110


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

Variables globales.

4.1.1.-TIPOS DE VARIABLES.

Hasta este momento hemos utilizado variables que se declaran en forma indistinta
antes o despus de la funcin principal, sin embargo para tratar el tema de
funciones es importante diferenciar el tipo de variables que existen y la forma en
que estas se declaran, as como la posicin que guardan dentro del desarrollo de
un programa.

Primero mencionaremos que las variables son objetos que pueden cambiar su
valor durante la ejecucin de un programa, las variables se dividen en:

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 111


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<=20;i++)
{
cua=cuadrado(); /*llamada a la funcin cuadrado*/
printf(\nEl cuadrado de %d es:\t%d,i,cua);
}
getch();
}
int cuadrado(void) /*Declaracin de la funcin*/
{ /*La funcin calcula el cuadrado de la variable global i */
return (i*i);
}

Ejecutar el programa y comprobar que se desplegiega la siguiente pantalla.

Ing Oscar Garibay Castellanos Pgina 112


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

Ejemplo 4.1.-Resolver el ejercicio anterior, pero declarando una variable local con
el mismo nombre que una variable local.

#include <stdio.h>
#include <conio.h>
int cuadrado(void); /*Prototipo de funcin*/
int i; /*Variable global*/
int main()
{
int cua;
for(i=1;i<=20;i++)
{
cua=cuadrado(); /*llamada a la funcin cuadrado*/
printf(\nEl cuadrado de %d es:\t%d,i,cua);
}
getch();
}
int cuadrado(void) /*Declaracin de la funcin*/
{ /*La funcin calcula el cuadrado de la variable global i */
int i=4; /*La variable local tiene el mismo nombre */
return (i*i); /*Regresa el resultado obtenido al programa principal*/
}

Ing Oscar Garibay Castellanos Pgina 113


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

Ejecutar el programa y comprobar que se desplegiega la siguiente pantalla.

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 localicomo veremos a
continuacin.

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

#include <stdio.h>
#include <conio.h>
intfuncion1(void); /*Prototipo de funcin*/
int i=3; /*Variable global*/
int main()
{
int con;
for(con=1;con<=5;con++)

Ing Oscar Garibay Castellanos Pgina 114


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

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

Ejecutar el programa y comprobar que se desplegiega la siguiente pantalla.

Ejemplo 4.3.-A continuacin se muestra otra Aplicacin 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++)
{

Ing Oscar Garibay Castellanos Pgina 115


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

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


printf("\nEl resultado de la funcion 2 es: %d",funcion2());
printf("\nEl resultado de la funcion 3 es: %d",funcion3());
printf("\nEl resultado de la funcion 4 es: %d",funcion4());
}
getch ();
}
int funcion1(void)
{
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);
}

Ejecutar el programa y comprobar que se desplegiega la siguiente pantalla.

Ing Oscar Garibay Castellanos Pgina 116


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

Ing Oscar Garibay Castellanos Pgina 117


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

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;
for(i=1;i<=20;i++)
{
printf(\nEl cuadrado de %d es:\t%d,i,cuadrado(i)); /*escribe el resultado de la
funcin, observa que el parmetro que se utiliza es
una copia de la variable i.*/
}
printf (\n\n);
system(PAUSE);
}
int cuadrado(int a) /*Declaracin de la funcin*/
{
return (a*a); /*Regresa el resultado obtenido a la funcin principal*/
}

Ejecutar el programa y compruebe que la siguiente pantalla es desplegada.

Ing Oscar Garibay Castellanos Pgina 118


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

Ejemplo 4.4.-La siguiente funcin emplea parmetros por referencia, observa las
diferencias en su estructura, y corre el programa para analizar los resultados.

#include <stdio.h>
#include <conio.h>
int f1(int*); /*Prototipo de funcin. El parmetro es entero y por referencia
-observa que existe el smbolo de indireccin *- */
int main(void)
{
int i,k=4;
for(i=1;i<=3;i++)
{
printf("\n\n\n\tEl valor de k antes de llamar a la funcion es:\t%d",++k);

printf("\n\n\tEl valor de k despues de llamar a la funcion es:\t%d",f1(&k));


}
getch();
}
int f1(int *r) /*Declaracin de la funcin*/
{
*r+=*r;
}

Ejecutar el programa y compruebe que la siguiente pantalla es desplegada.

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


por valor.

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

Ing Oscar Garibay Castellanos Pgina 119


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

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++)
{
printf("\n\n\n\tEl valor de k antes de llamar a la funcion es:\t\t%d",++k);

printf("\n\n\tEl valor de k despus de llamar a la funcion es:\t%d",f1(k));


}
getch();
}
int f1(int r) /*Declaracin de la funcin*/
{
r+=r;
return (r);
}
Ejecutar el programa y compruebe que la siguiente pantalla es desplegada.

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.

Ing Oscar Garibay Castellanos Pgina 120


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

Los dos parmetros son por referencia */


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

int main(void)
{
int a;

a=1;
b=2;
c=3;
d=4;
printf("\n%d %d %d %d",a,b,c,d);
f1(&b, &c);
printf("\n%d %d %d %d",a,b,c,d);
a=f2(c,&d);
printf("\n%d %d %d %d",a,b,c,d);
getch();
}
int f1(int *b,int *c)
{
int d;
a=5;
d=3;
(*b)++;
(*c)+=2;
printf("\n%d %d %d %d",a,*b,*c,d);
}
int f2(int c,int *d)
{
int b;
a++;
b=7;
c+=3;
(*d)+=2;
printf("\n%d %d %d %d",a,b,c,*d);
return (c);
}

Ejecutar el programa y compruebe que la siguiente pantalla es desplegada.

Ing Oscar Garibay Castellanos Pgina 121


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

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

Ing Oscar Garibay Castellanos Pgina 122


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

return (X-Y);

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

Los dos parmetros son por referencia */

int res;

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

return (res);

int main(void)

{int r1,r2;

r1=control(suma,15,5);

r2=control(resta,10,4);

printf("\n Los resultados para la suma y la resta son:\n");

printf("\nResultado 1 : %d",r1);

printf("\nResultado 2 : %d",r2);

getch();

Ejecutar el programa y compruebe que la siguiente pantalla es desplegada.

Ing Oscar Garibay Castellanos Pgina 123


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

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=5X2 + 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.

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

Ing Oscar Garibay Castellanos Pgina 124


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

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
ARREGLOS
UNIDIMENSIONALES

COMPETENCIA PARTICULAR 3

MANEJA INFORMACIN APLICANDO LA TCNICA DE ARREGLOS EN LA SOLUCIN DE


PROBLEMAS CON UNA GRAN CANTIDAD DE DATOS.

RAP 1

Ing Oscar Garibay Castellanos Pgina 125


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

RECONOCE LA TCNICA DE ARREGLOS DE SUBNDICES SIMPLE Y MLTIPLE DE


ACUERDO A LAS CONDICIONES DEL PROBLEMA A RESOLVER.

RAP 2

APLICA LA TCNICA DE ARREGLOS DE SUBNDICES SMPLES Y MULTIPLES EN LA


SOLUCIN DE PROBLEMAS CON UNA GRAN CANTIDAD DE DATOS.

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] float arreglo[6];

5 arreglo[4]

6 arreglo[5]

5.1.1.-NDICE DE UN ARREGLO.

Ing Oscar Garibay Castellanos Pgina 126


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

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

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

Ing Oscar Garibay Castellanos Pgina 127


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

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 elvalor 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 esadyacente 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 arreglopuede 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*/.

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>

Ing Oscar Garibay Castellanos Pgina 128


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

#include <stdlib.h>
int main ()
{
int i,num,cont=0;
int ele[50];
for (i=0; i<10;i++)
{
printf("\n\tIngrese el elemento %d del arreglo:\t",i+1);
scanf("%d",&ele[i]);
system ("CLS");
}
printf("\n\tIngrese el numero que se va a buscar en el arreglo:\t");
scanf("%d",&num );
for (i=0;i<=50;i++)
{if (ele[i]==num)
cont=cont+1;}
system ("CLS");
printf("\n\tEl %d se encuentra %d veces en el arreglo\n\n\t ",num,cont);
system("PAUSE");
return 0;
}
Ejecutar

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


se denominan a 5 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>
#include <stdlib.h>
int main ()
{
int JUG[5]={0}; /*Declaracin del arreglo entero jug de 5 elementos, cada uno
empieza desde cero*/
int i,vot; /*Declaracin del contador i y de la variable vot*/
printf("\n\tIngrese el primer voto -0 para terminar- :");
scanf("%d",&vot );
system("CLS");
while (vot)
{
if ((vot>0) && (vot<6)) /* Verifica que el voto sea correcto*/
JUG[vot - 1]++; /*Se resta el uno debido a que el arreglo almacena los datos
desde el registro cero y de esa manera inicia el conteo, nosotros lo

Ing Oscar Garibay Castellanos Pgina 129


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

hacemos

al contar*/

else

printf("\n\tVoto invalido elija otro candidato ");


printf("\n\tIngrese elsiguiente voto \" 0 para terminar\"\t");
scanf("%d",&vot );
system("CLS");
}
printf("\n\tEl resultado de la eleccion es:");
for (i=0;i<=4;i++)
{printf("\n\n\n\tEl candidato %d: obtuvo %d votos\n\n\t ",i+1,JUG[i] );
}
system ("PAUSE");
return 0;
}

Ejecutar

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[0]=%d \tz[1]=%d \tz[3]=%d \tz[4]=%d,x,y, z[0], z[1],
z[3], z[4]);

Ing Oscar Garibay Castellanos Pgina 130


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[0]=%d\tz[1]=%d\tz[3]=%d\tz[4]=%d,x,y,z[0], 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[0]=%d\tz[1]=%d\tz[3]=%d\tz[4]=%d,x,y,z[0], 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[0]=%d\tz[1]=%d\tz[3]=%d\tz[4]=%d,x,y,z[0], 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[0]=%d\tz[1]=%d\tz[3]=%d\tz[4]=%d,x,y,z[0], 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[0]=%d\tz[1]=%d\tz[3]=%d\tz[4]=%d,x,y,z[0], 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[0]=%d\tz[1]=%d\tz[3]=%d\tz[4]=%d,x,y,z[0], 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*/.
printf(\n\tx=%d\ty=%d\t z[0]=%d\tz[1]=%d\tz[3]=%d\tz[4]=%d,x,y,z[0], z[1], z[3],
z[4]);

Ing Oscar Garibay Castellanos Pgina 131


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

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[0]=%d\tz[1]=%d\tz[3]=%d\tz[4]=%d,x,y,z[0], z[1], z[3],
z[4]);

getch();
return 0;
}
Ejecutar

5.4.-ARREGLOS Y FUNCIONES.
En la resolucin de cierto tipo de problemas nos veremos en la necesidad de
emplear funciones que utilizan arreglos, estos son llamados utilizando parmetros
por referencia, as cada modificacin hecha en el arreglo afectara el valor original
de la funcin.

Cuando llamamos un arreglo a una funcin solo incluimos el nombre que en este
caso es un apuntador, sin incluir los corchetes, ya que esto generara un error de
sintaxis.

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>
#include <stdlib.h>
const int max=10; /*Con esta constante definimos el tamano del arreglo*/
int lectura(int vec[ ],int T);
int impresion(int vec[ ],int T);
int producto(int *x, int*y, int *z, int T); /* En los parmetros se puede escribir vec[
], o
*vec*/
int main ()
{
system("COLOR 08");
int ve1[max], ve2[max], ve3[max]; /* Declaracin de los 3 arreglos a emplear */
lectura (ve1,max); /*En la llamada de la funcin lect (lectura), solo se incluye el
nombre del arreglo */
Ing Oscar Garibay Castellanos Pgina 132
CECYT 9 JUAN DE DIOS BTIZ PAREDES IPN
PROGRAMACION EN LENGUAJE C

lectura (ve2,max);
producto (ve1, ve2, ve3, max); /*llamada de la funcin prod (producto), observe
que
se pasan los nombres de los tres arreglos. */
printf("\n\tProducto de los vectores");
impresion(ve3, max);
getch ();
}
int lectura(int vec[ ],int T)
{
int i;
printf("\n");
for(i=0;i<T;i++)
{
printf("\n\tIngrese el elemento %d:\t",i+1);
scanf ( "%d" , &vec [ i ] );
system ("CLS");
}
}

int impresion(int vec[ ],int T)

{system("COLOR A2");
int i;
for( i=0;i<T;i++)
{
printf("\n\tvec [ %d ]: %d" ,i+1, vec [ i ] );
}}

int producto (int *x,int *y,int *z,int T)


{
int i;
for(i= 0;i<T;i++)
{
z [ i ] = x [ i ] * y [ i ];
}}
Ejecutar.

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.

Ing Oscar Garibay Castellanos Pgina 133


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

#include <stdio.h>
#include <conio.h>
const int tam=50; /*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] ={0}; /*Declaracin de los arreglos. */
lec(cal,tam); /* Llamada a la funcin lec (lectura)*/
frec (cal,tam,frec,6); ); /* Llamada a la funcin frec (frecuencia), se pasan
ambos arreglos*/
printf(\n\tFrecuencia de calificaciones);
imp(frec,6);
may(frec,6);
getch ();
}
int lec(int vec[],int t);
{
int i;
for( i= 0; i<t;i++);
{
printf(\n\tIngrese la calificacin del alumno: %d: , i+1);
scanf ( %d , &vec [ i ] );
}
}
int imp(int vec[],int t);
{
int i;
for( i= 0; i<t;i++);
{
printf(\n\tvec [ %d ]: %d ,i, vec [ i ] );
}
int frec ( int a [ ], int p, int b [ ], int t)
{
int I;
for( i= 0; i<t;i++);
if(( a [ i ]>=0) &&( a [ i ]<6)) /*Se valida que la calificacin es correcta.*/
b [a [ i ] ]++; /*Aqu se almacenan las frecuencias*/

Ing Oscar Garibay Castellanos Pgina 134


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

{
int I, mfre= 0, mval [ ]
int prod (int *x, int*y, int *z, int t);
int i;
}
int may (int *x, int t) /*Esta funcin obtiene la primera ocurrencia de la
frecuencia ms alta.*/
{
int i, mfre=0, mval =x [0 ];
for( i= 0; i<t;i++);
if ( mval<x[ i ] )
{
mfre =I;
mval= x[ i ];
printf(\n\n \tMayor frecuencia de calificaciones: %d \tValor: %d, mfre, mval);
}

Ejecutar.

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

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.

Ing Oscar Garibay Castellanos Pgina 135


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

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.

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 136


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

CAPITULO
VI
ARREGLOS MULTIDIMENSIONALES.

COMPETENCIA PARTICULAR 3

MANEJA INFORMACIN APLICANDO LA TCNICA DE ARREGLOS EN LA SOLUCIN DE


PROBLEMAS CON UNA GRAN CANTIDAD DE DATOS.

RAP 1

RECONOCE LA TCNICA DE ARREGLOS DE SUBNDICES SIMPLE Y MLTIPLE DE


ACUERDO A LAS CONDICIONES DEL PROBLEMA A RESOLVER.

RAP 2

APLICA LA TCNICA DE ARREGLOS DE SUBNDICES SMPLES Y MULTIPLES EN LA


SOLUCIN DE PROBLEMAS CON UNA GRAN CANTIDAD DE DATOS.

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.

Ing Oscar Garibay Castellanos Pgina 137


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

Para resolver problemas matemticos, donde se tiene mas de una ecuacin y dos
o ms incgnitas es conveniente usar mtodos numricos, desarrollados con un
objetivo especfico.

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

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

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

Ing Oscar Garibay Castellanos Pgina 138


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

#include <stdlib.h>

const int tam=10; /*Con esta constante definimos el tamano 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= 0; i<f;i++)

for( j= 0; j<f; j++)

printf("\n\tIngrese el elemento %d %d :\t", i+1, j+1);

scanf ( "%d" , &a [ i ][ j ] );

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

Ing Oscar Garibay Castellanos Pgina 139


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

{system("CLS");

int i,j;

for( i= 0; i<f;i++)

for( j= 0; j<tam; j++)

if ( i ==j )

printf("\n\tDiagonal %d %d :\t\t%d" ,i+1, j+1, a[i][j]);

Ejecutar

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

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]

Ing Oscar Garibay Castellanos Pgina 140


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

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.

Una forma similar 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}

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>

Ing Oscar Garibay Castellanos Pgina 141


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

#include <stdlib.h>

const int max=50; /*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 );

system ("CLS");

while (fil>max ||fil<1);

do

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

scanf ( "%d" , &col );

system ("CLS");

Ing Oscar Garibay Castellanos Pgina 142


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

while (col>max ||col<1);

printf("\n\tLectura de la matriz 1");

lec(ma,fil,col);

printf("\n\tLectura de la matriz 2");

lec(mb,fil,col);

sum (ma,mb,mc,fil,col);

printf("\n\tResultado de la suma de matrices");

imp (mc, fil,col);

getch ( );

int lec(int a [ ][max], int f, int c)

int i,j;

for( i= 0; i<f;i++)

for( j= 0; j<c; j++)

printf("\n\tIngrese el elemento %d %d :\t", i+1, j+1);

scanf ( "%d" , &a [ i ][ j ] );

system ("CLS");

int sum (int m1 [ ] [max],int m2 [ ] [max], int m3[ ] [max], int f, int c)

Ing Oscar Garibay Castellanos Pgina 143


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

int i,j;

for( i= 0; i<f;i++)

for( j= 0; 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= 0; i<f;i++)

for( j= 0 ; j<c; j++)

printf("\n\tElemento %d %d : %d" , i+1, j+1, a[ i ] [ j ]);

Ejecutar

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.

Ing Oscar Garibay Castellanos Pgina 144


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

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

BIBLIOGRAFIA

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


Pearson Education.

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

Ing Oscar Garibay Castellanos Pgina 145


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

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, Mc Graw Hill.

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

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

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

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

Ing Oscar Garibay Castellanos Pgina 146

También podría gustarte