programar lenguaje c

98
7/23/2019 Programar Lenguaje C http://slidepdf.com/reader/full/programar-lenguaje-c 1/98 Manual de Programación en el Lenguaje C  Enviado por Br. Manuel Antonio Ortez  Partes: 1 ! " Marco introductorio Lenguaje de Programación Estructurado C Operadores E#presiones $ Estructuras Ciclos %unciones en C Estructuras de &atos Presentación El Presente documento 'a sido ela(orado con la )nalidad de proveer a los estudiantes de un recurso *gil $ +*cil de comprender por a,uellos ,ue inician su estudio en la programación del lenguaje C. -Por ,u decid/ escri(ir este manual0 encillo cuando en la universidad empezamos a estudiar C nos pidieron ,ue si pod/amos compr*ramos un li(ro te#to para apo$ar las clases o (usc*ramos un manual en la 2nternet... $o opt por la segunda opción $a ,ue como todos sa(r*n los li(ros de programación son mu$ caros 3al menos a,u/ en El alvador4 pero me encontr con dos grandes pro(lemas: Los Manuales ,ue (aja(a esta(an incompletos es decir5 las e#plicaciones los ejemplos $ la in+ormación en general era mu$ po(re por no decir escasa. si al dado caso encontra(a alg6n manual ,ue estuviera completo ten/a muc'os errores en sus ejemplo3errores de sinta#is de ejecución $ 'asta de lógica4 o en la e#plicación ,ue se da(a. Lo cual al $o cometer esos ejemplos mis pro+esores me lo 'ac/an sa(er.

Upload: ana

Post on 17-Feb-2018

231 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Programar Lenguaje C

7/23/2019 Programar Lenguaje C

http://slidepdf.com/reader/full/programar-lenguaje-c 1/98

Manual de Programación en el Lenguaje C

 Enviado por Br. Manuel Antonio Ortez

 

Partes: 1 ! "

Marco introductorio

Lenguaje de Programación Estructurado C

Operadores E#presiones $ EstructurasCiclos

%unciones en C

Estructuras de &atos

Presentación

El Presente documento 'a sido ela(orado con la )nalidad de proveer a losestudiantes de un recurso *gil $ +*cil de comprender por a,uellos ,ue inician

su estudio en la programación del lenguaje C.-Por ,u decid/ escri(ir este manual0

encillo cuando en la universidad empezamos a estudiar C nos pidieron ,uesi pod/amos compr*ramos un li(ro te#to para apo$ar las clases o (usc*ramosun manual en la 2nternet... $o opt por la segunda opción $a ,ue como todossa(r*n los li(ros de programación son mu$ caros 3al menos a,u/ en Elalvador4 pero me encontr con dos grandes pro(lemas:

Los Manuales ,ue (aja(a esta(an incompletos es decir5 las e#plicaciones losejemplos $ la in+ormación en general era mu$ po(re por no decir escasa.

si al dado caso encontra(a alg6n manual ,ue estuviera completo ten/amuc'os errores en sus ejemplo3errores de sinta#is de ejecución $ 'asta delógica4 o en la e#plicación ,ue se da(a. Lo cual al $o cometer esos ejemplosmis pro+esores me lo 'ac/an sa(er.

Page 2: Programar Lenguaje C

7/23/2019 Programar Lenguaje C

http://slidepdf.com/reader/full/programar-lenguaje-c 2/98

Por esas razones decid/ escri(ir mi propio manual para evitar ,ue otrosestudiantes les suceda lo mismo ,ue a m/ $ as/ les evitar gastos enimpresiones innecesarios.

Ca(e recalcar ,ue no so$ un e#perto programador... todav/a sigo estudiandopero ,uiero cola(orar de una manera desinteresada a la +ormación de laspersonas.

Espero ,ue este pe,ue7o manual les sirva de muc'o $ so(re todo le sa,uenmuc'o provec'o.

CAP289LO 2 MA;CO 2<8;O&9C8O;2O

Marco Conceptual

e mu$ (ien ,ue usted ,uerido lector5 est* mu$ ansioso por comenzar aprogramar pero considero ,ue es importante5 conocer un poco del lenguaje C

tanto de sus or/genes como de sus ventajas pero no se preocupen ser (reveen esta introducción teórica. Adem*s ,ue es importante conocer o recordaralgunos conceptos ,ue son importantes al momento de programar.

Computadora

Componentes de 9na Computadora

=emos de)nido una computadora como una m*,uina ,ue reci(e datos $ordenes ,ue al ejecutarlas produce cierta in+ormación5 dic'a in+ormación sepresenta en un idioma codi)cado5 por ,ue 'a de sa(erse ,ue lascomputadoras no entienden nuestro idioma o cual,uier otro en el mundo.&ic'o idioma est* compuesto 6nicamente por dos elementos los ceros $ losunos. Mejor conocido como código Binario con el cual se representan los datos,ue arroja la computadora.

En una +orma m*s general $ creo ,ue m*s sencilla una computadora secomprende por dos grandes grupo: El =ard>are $ el o+t>are.

=ard>are

El =ard>are de un computador es un conjunto de elementos +/sicos ,ue lacomponen.

?e*moslo gr*)camente:

 

Page 3: Programar Lenguaje C

7/23/2019 Programar Lenguaje C

http://slidepdf.com/reader/full/programar-lenguaje-c 3/98

Podr/amos entrar en detalle de cada una de las partes descritas anteriormentepero ese no es el o(jetivo de estas insigni)cantes p*ginas5 sino ,ue esto esuna mera introducción teórica por ello sólo dar una (reve e#plicación.

En la 9nidad Central de Proceso 3o CP9 por sus siglas en ingles @CentralProccessing 9nit4 se contiene la 9nidad de Control ,ue su +unción es organizar$ clasi)car las instrucciones reci(idas5 mientras ,ue la 9nidad Aritmtica $Lógica e encarga de ejecutar dic'as instrucciones. Los Buses son losmecanismos de intercone#ión en el CP9.

La memoria Principal Es el lugar donde se cargan todas las instruccionesprogramas etc ,ue se est*n ejecutando.

o+t>are

&e(emos entender el so+t>are como la parte lógica de la computadora... -unpoco di+/cil de comprender verdad05 es decir ,ue el so+t>are es lo ,ue dota a

los componentes +/sicos de poder realizar tareas determinadas. Ejemplo parapoder utilizar una computadora esta de(e tener instalado un sistemasoperativo. Para poder imprimir alg6n tra(ajo aparte de poseer un impresor enla computadora de(o tener un so+t>are ,ue me permita imprimir dic'a acción3generalmente las impresoras traen un cd son su respectivo so+t>are deinstalación4.

A(urrido0...

Es necesario ,ue empiece con tanta pala(rer/a5 por ,ue es necesario para ellector tener en claro estos conceptos.

A'ora vamos a 'a(lar de algo un poco m*s interesante como lo es el lenguajede programación

9n lenguaje de Programación Es un conjuntos de pala(ras reglas con lascuales se le indica a la computadora las +unciones ,ue de(e realizar. 9nlenguaje de programación puede ser:

Lenguajes M*,uinas: se trata de lenguaje cu$as instrucciones sondirectamente comprendidas por el ordenador o computador en el ,ue seejecuta el programa.

Lenguaje de Bajo <ivel: este tipo de lenguajes al igual ,ue sucede con loslenguajes m*,uinas e#iste una gran dependencia con el e,uipo en el ,ue seva a ejecutar. <o o(stante son algo m*s +*ciles de escri(ir ,uedando u(icadospor tanto seg6n su grado de complejidad5 en un nivel intermedio entre ellenguaje m*,uina $ el de alto nivel.

Page 4: Programar Lenguaje C

7/23/2019 Programar Lenguaje C

http://slidepdf.com/reader/full/programar-lenguaje-c 4/98

Lenguaje de Alto <ivel: &isponen de una sinta#is en lenguaje m*s natural $ unamplio conjunto de +unciones internas ,ue a$udan al programador en distintassituaciones as/ como un n6mero determinado de utilidades $ asistentes ,uea'orran tiempo $ tra(ajo al programador. &entro de estos lenguajes tenemos:?isual %o#pro ?isual Basic. <E8.

Programa:

Es un conjunto de instrucciones ,ue se le dan a la computadora para ,ue starealice una determinada tarea.

Lenguaje C

El lenguaje C +ue dise7ado por &ennies ;itc'ie en 1D en los la(oratoriosBell de Estados 9nidos.

Este lenguaje presenta varias caracter/sticas entre las cuales est*n:

Lenguaje de programación de propósitos generales

Permite la Programación Estructurada

A(undancia de Operadores $ 8ipos de &atos

<o est* asociado a ning6n sistema operativo ni a ninguna m*,uina

Popular $ E)caz

Permite el desarrollo de istemas Operativos $ programas de aplicación

Porta(ilidad

E#isten las li(rer/as en las (i(liotecas

tiene sólo "! pala(ras reservadas

(i(liotecas: es el arc'ivo ,ue contiene código o(jeto de una colección derutinas o +unciones ,ue realizan tareas determinadas $ se pueden utilizar enlos programas.

Enlazador: Programa ,ue convierte las +unciones de la (i(lioteca est*ndar deC con el código ,ue 'a traducido el compilador .

Estructura de 9n programa en C

 Fa estamos apunto de entrar a lo m*s interesante a la programación en s/5pero es necesario primero5 mencionar algunos de los errores t/picos alprogramar para ,ue el lector sepa como identi)carlos $ as/ los pueda corregir.

Page 5: Programar Lenguaje C

7/23/2019 Programar Lenguaje C

http://slidepdf.com/reader/full/programar-lenguaje-c 5/98

E;;O; &E 2<8AG2: Estos errores son producidos cuando se 'ace mal uso delas reglas del lenguaje de programación $ se violan las normas de sinta#is deese lenguaje 3en nuestro caso C45 estos errores son +*ciles de detectar por ,uegeneralmente es el compilador ,ue los identi)ca 3F 'asta muestra la l/neadonde se encuentra dic'o error pero eso depende de la versión del compilador

,ue estemos usando4. En este curso 'e usado 8ur(o C en su versión ! $ ".

E;;O;E &E EHEC9C2I<: Estos errores se producen cuando le indicamos a lacomputadora realizar una determinada acción $ esta la comprende pero nopuede ejecutarla. Por ejemplo indicarle a la computadora una división entrecero sumar dos varia(les a las cuales no se les 'a signado valor alguno etc.

E;;O;E &E LIJ2CA: Muc'as veces cuando estamos programando elcompilador no nos indica errores de sinta#is ni de lógica5 pero el resultado denuestro programa esta +uera del rango esperado esto es producto de un errorde lógica en el código de nuestro programa. Este tipo de errores son mu$

di+/ciles de identi)car $ por supuesto de corregir $a ,ue generalmente 'a$ ,uerevisar l/nea por l/nea de nuestro programa. Ejemplo: El sueldo negativo de unempleado etc.

La estructura de un programa en C consta de algunas partes esenciales: lascuales son uno o m*s módulos llamadas +unciones siendo main34 la primera+unción ,ue es llamada cuando empieza la ejecución del programa .

Cada +unción de(e contener :

K&irectivas de preprocesador 3instrucciones ,ue se le dan al compilador

include antes de compilar4

de)ne

ejemplo:

include stdio.'K

Lo ,ue se le esta indicando es ,ue de las li(rer/as 2nclu$a en nuestroprograma la directiva stdio.' la cual contiene las +unciones de entrada $ salidade datos 3standar input output en ingls4. i necesitamos las +uncionesmatem*ticas de(emos especi)carlo con la declaratoria:

include mat'.'K

i necesitamos las +unciones de cadenas:

inlcude stli(.'K

Page 6: Programar Lenguaje C

7/23/2019 Programar Lenguaje C

http://slidepdf.com/reader/full/programar-lenguaje-c 6/98

Es necesario aclarar ,ue esto se 'ace al inicio del programa $ las declaratoriasde(en llevar el s/m(olo de numeral 34 seguido de la sentencia include $entre signos de ma$or $ menor ,ue 3K4 el nom(re de la directiva.

K&eclaraciones Jlo(ales

pueden ser:

Prototipos de %unciones: 8am(in llamadas declaraciones de +unciones lo cualse tratar* m*s adelante

&eclaraciones de ?aria(les

ca(e destacar ,ue esto se 'ace seguido de los include $ los de)ne.

K%unción Principal main34

Esta es la +unción principal de nuestro programa su cuerpo por ello <9<CA

de(e +altar $a ,ue en ella van contenidas todas las instrucciones de nuestroprograma.

main34

N

declaraciones locales Comentarios

sentencias

la +unción main34 va al inicio luego a(rimos llaves $ dentro de ellas van lasdeclaraciones de varia(les las sentencias de lectura c*lculos asignaciones eimpresiones $ con la 6ltima llave 3 4 le indicamos el )nal del programa.

Ejemplo 1.1

Programa ,ue a partir del radio calcula el *rea de un circulo

include stdio.'K

include conio.'K

main34

N

Qoat radio area5

print+3;adioRSn45

Page 7: Programar Lenguaje C

7/23/2019 Programar Lenguaje C

http://slidepdf.com/reader/full/programar-lenguaje-c 7/98

scan+3T+ Uradio45

areaR".1V1Wradioradio5

print+3El Area es T+SnSn area45

getc'345

return D5

E#plicación:

Le indicamos al compilador ,ue usaremos las (i(liotecas stdio.'K $conio.'K -por ,u conio.'K0 por ,ue esta (i(lioteca contiene las+unciones getc'e34 getc'34 etc $ de una de ellas 'acemos uso en estepe,ue7o ejemplo.

Luego le indicamos a nuestro programa el incio de nuestro programa 3+unciónmain34 4.

&eclaramos como valores reales las varia(les radio $ area 3de esto se 'a(lar*m*s adelante4. Luego con la instrucción print+34 mostramos en pantalla elmensaje 3;adioR4 $ scan+ se encarga de leer el valor digitado por el usuario.Posteriormente area es igual al la multiplicación de pi 3".1V1W4 el radio alcuadrado. e muestra en pantalla ese resultado luego el programa espera ,uese presiones cual,uier tecla 3getc'34 4 $ no retorna ning6n valor 3return D4.

Ejercicios

&e)na los siguientes conceptos:

Programa:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX  XXXXXXX 

 

CP9:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX  XXXXXXXX 

o+t>are:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX  XXXXXXXXXXX 

 

MemoriaPrincipal:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 

 XXXXXXXXXXX 

Page 8: Programar Lenguaje C

7/23/2019 Programar Lenguaje C

http://slidepdf.com/reader/full/programar-lenguaje-c 8/98

Lenguaje deProgramación:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 

 XXXXXXXXXXXXX 

2ndi,ue ,ue tipo de error 3Error de sinta#is error de ejecución o error lógico4en cada uno de los siguientes enunciados

9tilizar una varia(le antes de asignarle un valor:XXXXXXXXXXXXXXXXXXXX 

asignarle un valor real a una varia(le declarada como entero:XXXXXX 

al cometer este error los resultados arrojados por el programa no son los ,uese espera(an:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 

9n programa no puede ser ejecutado por el computador mientras tenga estetipo de errores:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 

estos errores no son detectados por el compilador ni tampoco son errores deejecución:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 

Mencione $ E#pli,ue la estructura general de un programa en C:

Capitulo 22: Lenguaje de Programación Estructurado C

-Por ,u programación estructurada0

i el lector recuerda en el cap/tulo anterior se 'a(la(a de las caracter/sticasdel lenguaje C $ en una de ellas se dec/a ,ue el Lenguaje de Programación Cpermite la programación estructurada. Esto implica ,ue 'aremos uso de una

tcnica llamada Lógica Estructurada $ esto no es m*s ni menos ,ue una de lastcnicas (*sicas $ +undamentales de la programación estructurada su o(jetivoes dise7ar soluciones correctas $ con)a(les a los pro(lemas ignorando alprincipio consideraciones de e)ciencia como la minimización del uso dememoria $ el tiempo de su respuesta.

Lo ,ue signi)ca ,ue 'aremos uso de esa tcnica para crear programascorrectos5 esta es una tcnica ,ue a$uda al programador 3un tanto a la +uerza4a ser ordenado al momento de programar.

Los +rutos de sta tcnica se reQejan cuando ,ueremos darle mantenimiento al

programa es m*s +*cil 'acerlo $a ,ue 'emos programado de una maneralógica $ ordenada. Al igual ,ue al momento de corregir errores de sinta#is $lógica esta tcnica nos +acilita el tra(ajo.

A'ora iniciemos de una vez por todas lo ,ue el lector est* esperando:

inta#is de Algunos Elementos de 9n Programa en C

Page 9: Programar Lenguaje C

7/23/2019 Programar Lenguaje C

http://slidepdf.com/reader/full/programar-lenguaje-c 9/98

como su nom(re lo indica estos son los nom(res con los ,ue identi)camos lasvaria(les constantes +unciones vectores etc de nuestro programa. Para ellode(emos tener presente algunas reglas:

Kpueden tener de 1 'asta un m*#imo de "1 caracteres

K&e(e de iniciar con una letra o su(ra$ado

Ejemplo:

3Correctos4

c!

 Xc!

3 2ncorrectos4

!c

! c

K<o es lo mismo una min6scula ,ue una ma$6scula $a ,ue c distingue deentre ellas. Ejemplo: BE8A Y Beta Y (eta Y Be8a

K<o son v*lidos los identi)cadores de pala(ras reservadas. En un inicio'a(lamos ,ue c posee "! pala(ras reservadas entre ellas est*n:

Qoat c'ar >'ile

int else return

Estas pala(ras no pueden ser utilizadas para identi)car varia(les constantes+unciones etc

identi)cadores:

En todo programa ,ue estemos dise7ando en C 3o en cual,uier otro lenguajede programación45 es necesario insertar ciertos comentarios en el código para,ue en posteriores modi)caciones $ cuando se realice el mantenimientopodamos recordar cosas importantes $a ,ue en los comentarios podemosincluir aspectos importantes del programas e#plicaciones del +uncionamientode las sentencias etc.

El +ormato de los comentarios en C es el siguiente:

este es un comentario en C

Podemos colocar muc'a in+ormación importante

Page 10: Programar Lenguaje C

7/23/2019 Programar Lenguaje C

http://slidepdf.com/reader/full/programar-lenguaje-c 10/98

de nuestro Programa

Comentarios

Permite ,ue el preprocesador inclu$a +unciones proporcionadas por el+a(ricante a nuestro programa. Ejemplo:

include stdio.'K le decimos al compilador ,ue inclu$a la li(rer/a

stdio.'

La &irectiva include

permite de)nir constantes sim(ólicas. Pero 'asta a'ora 'a sido poco lo ,ue'emos 'a(lado acerca de las constantes es por ello ,ue en aprovec'andoeste especio5 dedicar unas cuantas l/neas para aclarar ello.

Las varia(les pueden cam(iar de valor durante la ejecución del programa por

eso es ,ue se llaman varia(les. F las constantes como su nom(re lo indica sonvalores ,ue permanecen constantes durante toda la ejecución del programaun ejemplo de ello es el valor de p 3pi4 ,ue e,uivale a ".1V1W....

En C e#isten di+erentes tipos de varia(les entre ellas tenemos:

1. Constates <umricas:

on valores numricos enteros o de reales 3de punto Qotante4. e permitentam(in constantes octales $ 'e#adecimales.

!. Constantes im(ólicas:

las constantes sim(ólicas tiene un nom(re 3identi)cador4 $ en esto se parecenlas varia(les. in em(argo no pueden cam(iar de valor a lo largo de laejecución del programa. En C se pueden de)nir mediante el preprocesador.

38omado del Manual Aprenda Lenguaje A<2 C como si estuviera en PrimeroEscuela superior de 2ngenieros 2ndustriales. 9niversidad de <avarra. %e(rero de1Z4.

Ejemplo:

de)ne < 1DD

de)ne P2 ".1V1[

de)ne B VW

Esta directiva 3de)ne4 va inmediatamente despus de los include. eescri(e la directiva se deja un espacio $ se escri(e el identi)cador de laconstante otro espacio $ su valor.

Page 11: Programar Lenguaje C

7/23/2019 Programar Lenguaje C

http://slidepdf.com/reader/full/programar-lenguaje-c 11/98

la directiva de)ne

\ T ] U 34 ^ N _` S 5 : K - .

ignos de Puntuación $ de eparación

Al momento de programar en C esta es una regla de oro $ la causa por la cualnuestro programa puede darnos muc'os errores de sinta#is cuando se omiteal )nal de cada sentencia un punto $ coma 354. Fa ,ue con ello le indicamos alcompilador ,ue 'a )nalizado una sentencia.

<O8A: el lector no de(e con+undirse las directivas: include de)ne. Main34no llevan punto $ coma por ,ue no son sentencias.

;ecordemos el ejemplo 1.1 $ vea ,ue al )nal de cada sentencia lleva sucorrespondiente punto $ coma:

include stdio.'K

include conio.'K

main34

N

Qoat radio area5

print+3;adioRSn45

scan+3T+ Uradio45

areaR".1V1Wradioradio5

print+3El Area es T+SnSn area45

getc'345

return D5

 8odas las 2nstrucciones o sentencias del programa terminan con un punto $

coma 354

Esta consideración toma ma$or auge cuando veamos las instruccionesanidadas en condiciones ciclos etc.

Ejemplo:

N

Page 12: Programar Lenguaje C

7/23/2019 Programar Lenguaje C

http://slidepdf.com/reader/full/programar-lenguaje-c 12/98

...

print+3=olaSnS(45

...

 8odo Blo,ue de 2nstrucciones de(e ir entre llaves

En una l/nea se pueden escri(ir m*s de una instrucción separada por un punto$ coma

Esto es posi(les por ,ue con el punto $ coma le estamos indicando alcompilador el )n de una sentencia o instrucción.

Ejemplo:

( R c ^ d5 d R !5

 8ipos de &atos en C

9n tipo de dato se de)ne como un conjunto de valores ,ue puede tener unavaria(les junto con ciertas operaciones ,ue se pueden realizar con ellas.

82PO &E &A8O P;E&E%2<2&O

 8ABLA CO< LO 82PO &E &A8O P;E&E%2<2&O E< C

KE<8E;O: numeros completos $ sus negativos

Pala(ra reservada:

Ejemplo

 8ama7o 3($te4

;ango de valores

int

ZWD

!

"![ a "![

?A;2A<8E &E E<8E;O

s'ort int

1D

Page 13: Programar Lenguaje C

7/23/2019 Programar Lenguaje C

http://slidepdf.com/reader/full/programar-lenguaje-c 13/98

1

1!Z a 1!

unsigned int

VW[Z

!

D a [WW"W

long int

WZZVWZ

V

!1VVZ"[VZ a !1VVZ"[Vunsigned long

!DDDD

V

D a V!V[!W

K;EALE: n6meros con decimales o punto Qotante

Pala(ra reservada:

Ejemplo

 8ama7o 3($te4

;ango de valores

Qoat

ZW

V

".V#1D"Z a ".V#1D"Z

?A;2A<8E &E LO ;EALE

dou(le

D.DDWZ

Page 14: Programar Lenguaje C

7/23/2019 Programar Lenguaje C

http://slidepdf.com/reader/full/programar-lenguaje-c 14/98

Z

1.#1D"DZ a 1.#1D"DZ

long dou(le

1.DDED

1D

".V#1DV"! a 1.1#1DV"!

KCA;bC8E;: letras digitos s/m(olos signos de puntuación.

Pala(ra reservada:

Ejemplo

 8ama7o 3($te4;ango de valores

c'ar

O

1

D ......!WW

 8ABLA !.1

<O8A: El tipo de dato string $ (olean <O e#isten en C. in em(argo m*sadelante veremos una +orma de cómo 'acer uso de las cadenas de te#to.

&eclaración de ?aria(les

9na ?aria(le como su nom(re lo indica es capaz de almacenar di+erentesvalores durante la ejecución del programa su valor var/a. Es un lugar en lamemoria el cual posee un nom(re 3identi)cador4 $ un valor asociado.

La declaración de varia(les en C se 'ace en min6sculas.

%ormato:

 8ipoXdeXdato nom(reXdeXlaXvaria(le5

Ejemplos:

Page 15: Programar Lenguaje C

7/23/2019 Programar Lenguaje C

http://slidepdf.com/reader/full/programar-lenguaje-c 15/98

Page 16: Programar Lenguaje C

7/23/2019 Programar Lenguaje C

http://slidepdf.com/reader/full/programar-lenguaje-c 16/98

Las constantes como su nom(re lo indica son valores ,ue se mantieneinvaria(les durante la ejecución del programa.

u +ormato es el siguiente:

const tipoXdeXdato nom(reR valor5

donde const es una pala(ra reservada para indicarle al compilador ,ue seesta declarando una constante.

Ejemplo:

const int diaR5

const Qoat piR".1V1W5

const c'ar caracterR m5

const c'ar +ec'a_`R!W de diciem(re5

Caso Especial Constantes im(ólicas

Las constantes sim(ólicas se declaran mediante la directiva de)ne como see#plicó anteriormente. %uncionan de la siguiente manera cuando C encuentrael s/m(olo ,ue representa a la constante lo sustitu$e por su respectivo valor.

Ejemplo:

de)ne < 1WD

de)ne P2 ".1V1[

de)ne P WD

<O8A: El lector de(e comprender algunas di+erencias +undamentales entre ladeclaratoria const $ de)ne5 la primera va dentro del programa es decirdentro de la +unción main34 o alguna +unción de)nida por el usuario mientras,ue de)ne va en el enca(ezado despus de los include por eso estas nollevan al )nal el punto $ coma 354.

Entrada $ alida Por Consola

Entrada $ alida por consola: se re)ere a las operaciones ,ue se producen enel teclado $ en la pantalla de la computadora. En C no 'a$ pala(ras claves pararealizar las acciones de Entradaalida estas se 'acen mediante el uso de las+unciones de la (i(lioteca est*ndar 3stadio.'4.

Page 17: Programar Lenguaje C

7/23/2019 Programar Lenguaje C

http://slidepdf.com/reader/full/programar-lenguaje-c 17/98

Para utilizar las +unciones de E de(emos incluir en el programa el arc'ivo deca(ecera stdio.' mediante la declaratoria:

include stdio.'K

Las %unciones de E m*s simples son getc'ar34 ,ue lee un car*cter del

teclado espera un retorno de carro 3- 4 es decir un enter $ el eco aparece. Esdecir la tecla presionada.

putc'ar34: 2mprime un car*cter en la pantalla en la posición actual del cursor.

Algunas variaciones:

getc'e34: Aparece el Eco

getc'34: <o aparece el eco

estas instrucciones se encuentran en la (i(lioteca conio.'

?eamos un ejemplo:

Programa ,ue espera ,ue se presiona una tecla la muestra en pantalla $adem*s muestra el car*cter siguiente:

Ejemplo !.1:

include stdio.'K

include conio.'K

main34

N

c'ar car5

clrscr345 e encarga de (orrar la pantalla por eso se llama claer screen

carRgetc'ar345

putc'ar3car^145

getc'345return D5

Ejemplo !.!:

include stdio.'K

Page 18: Programar Lenguaje C

7/23/2019 Programar Lenguaje C

http://slidepdf.com/reader/full/programar-lenguaje-c 18/98

include conio.'K

main34

N

c'ar #5 &eclaramos # como caracter

print+3Para %inalizar Presione cual,uier 8ecla:45

#R getc'ar345Captura $ muestra el caracter presionado

getc'345Espera a ,ue se presione cual,uier otra tecla para )nalizar

return D5

Entrada alida de Cadenas9na Cadena es una +rase compuesta por varias pala(ras. En C podemos'acer uso de las cadenas mediante la sentencia:

gets34: Lee una cadena de car*cter introducido por el teclado. e puedeintroducir caracteres 'asta ,ue se de un retorno de carro 3enter45 el cual no esparte de la cadena5 en su lugar se coloca un terminador nulo SD.

puts34: 2mprime en pantalla el argumento guardado en la varia(le ,ue semanda a impresión.

Ejemplo !."

&ise7e un programa en C ,ue lea su nom(re5 lo salude $ mande a impresiónsu nom(re usando gets e $ puts

include stdio.'K

include conio.'K

main34

N

c'ar nom(re_VD`5

puts3digite su nom(re:45

gets3nom(re45

puts3B2E<?E<2&O:45

Page 19: Programar Lenguaje C

7/23/2019 Programar Lenguaje C

http://slidepdf.com/reader/full/programar-lenguaje-c 19/98

puts3nom(re45

getc'345

return D5

<O8A: <o 'ar muc'o n+asis en estas instrucciones $a ,ue m*s adelanteveremos las instrucciones scan+34 $ print+34 ,ue son muc'o m*s completas.

Entrada alida Por Consola con %ormato

Las +unciones gets puts getc' etc5 son utilizadas en una +orma un pocorudimentaria sin em(argo5 C posee otra serie de +unciones ,ue son m*scompletas las cuales nos permiten leer e imprimir 3en pantalla4 datos con un+ormato determinado el cual 'a sido de)nido por el programador.

alida =acia Pantalla _print+34`

e utiliza para imprimir en pantalla cadenas de te#to solas o mandar apantalla el valor de alguna varia(le o constante o una com(inación de lasanteriores. u +ormato es el siguiente:

Print+3cadena de control nom(reXdeXvaria(les45

En donde:

Cadena de control: contiene códigos de +ormato ,ue se asocian con los tipos dedatos contenidos en las varia(les.

Código

%ormato

Td

9n entero

Ti

9n entero

Tc

9na caracter

Ts

9na cadena

Page 20: Programar Lenguaje C

7/23/2019 Programar Lenguaje C

http://slidepdf.com/reader/full/programar-lenguaje-c 20/98

T+ 

9n real

Tld

Entero largo

Tu

&ecimal sin signo

Tl+ 

&o(le posición

T'

Entero cortoTo

Octal

T#

=e#adecimal

Te

<otación Cient/)ca

Tp

Puntero

TT

2mprime Porcentaje

 8ABLA !.!

Ejemplo:

2nt sumaR1D5

Print+3La suma es Td suma45

E#plicación:

&eclaramos primero la varia(le como entero con un valor de 1D luego la+unción print+ el mensaje va entre comillas do(les luego en el lugar ,ue

Page 21: Programar Lenguaje C

7/23/2019 Programar Lenguaje C

http://slidepdf.com/reader/full/programar-lenguaje-c 21/98

Page 22: Programar Lenguaje C

7/23/2019 Programar Lenguaje C

http://slidepdf.com/reader/full/programar-lenguaje-c 22/98

Sv

 8a(ulador vertical.

Sa

=ace sonar la alarma del sistema

SS

2mprime un car*cter de diagonal invertida

S0

2mprime el car*cter del signo de interrogación

S

2mprime una do(le comilla 8ABLA !."

Ejemplos:

14 print+3Manuel Sn Antonio Sn OrtezSnSn45

!4 int #R1W5

print+3El ?alor de la varia(le es TdSnSn #45

"4 Qoat #RZ.W[Z piR".1V1[5

print+3El valor de # es T.!+StSn#45

print+3St F el valor de pi es T.!+SnSn pi45

Entrada &esde 8eclado

e realiza mediante la +unción scan+34 su +ormato es:

scan+3Cadena de control &irección $ nom(re de la varia(le45

Ejemplo !.V

&ise7e un programa ,ue guarde $ muestre la nota del e#amen )nal de "alumnos

include stdio.'K

include conio.'K

main34

Page 23: Programar Lenguaje C

7/23/2019 Programar Lenguaje C

http://slidepdf.com/reader/full/programar-lenguaje-c 23/98

N

Qoat n1 n! n"5

c'ar nom1_1D` nom!_1D` nom"_1D`5

print+32ntroduzca el <om(re del Primer alumno:Sn45

scan+3Ts nom145

print+32ntroduzca la nota de este alumno:Sn45

scan+3T+ Un145

print+3&igite el nom(re del segundo alumno:Sn45

scan+3Ts nom!45

print+3u nota es:Sn45scan+3T+ Un!45

print+3%inalmente el ultimo alumno es:Sn45

scan+3Ts nom"45

print+3F su nota es:Sn45

scan+3T+ Un"45

getc'345

return D5

E#plicación:

Primero iniciamos con las directivas del preprocesador:

include stdio.'K

include conio.'K

Con la cual le indicamos al compilador ,ue de su li(rer/a a7ada a nuestroprograma las +unciones est*ndar de entrada $ salida5 as/ como las entradas $salidas por consola 3stadio.' $ conio.' respectivamente4.

Luego declaramos la varia(les ,ue contendr*n las notas como reales 3o depunto Qotante:

Page 24: Programar Lenguaje C

7/23/2019 Programar Lenguaje C

http://slidepdf.com/reader/full/programar-lenguaje-c 24/98

Qoat n1 n! n"5

 Fa ,ue las notas pueden ser deciamales por ejemplo .[ Z.W5 etc.

Luego declaramos las varia(les ,ue contendr*n las notas ca(a aclarar ,ue almomento de las declaraciones las podemos 'acer en el orden ,ue deseemos

pueden ser primeros los tipo c'ar $ luego los Qoat o viceversa pero teniendoel cuidado ,ue las varia(les ,ue contendr*n las nom(res lleven la longitudm*#ima entre corc'etes para nuestro caso 1D. 3 _1D` 4.

Posteriormente mostramos en pantalla un mensaje con el cual le indicamos alusuario ,ue introduzca los datos respectivos:

print+32ntroduzca el <om(re del Primer alumno:Sn45

A continuación va la +unción scan+ primero $ entre comillas el tipo de dato ,ueva a leer:

scan+3Ts nom145

como puede notarse va a leer la cadena de te#to ,ue contendr* la varia(lenom1. ca(e aclarar ,ue cuando se van a leer cadenas de te#to no esnecesario colocar la dirección 3U4 lo cual no sucede con los otros tipos dedatos:

scan+3T+ Un145

&espus de 'a(er le/do los datos espera a ,ue se presiones cual,uier teclapara )nalizar la ejecución del programa.

Ejemplo !.W

Programa ,ue imprime dos veces la cadena de te#to ,ue se 'a introducido:

include stdio.'K

include conio.'K

main34

N

c'ar cadena_1W`5

print+3&igite la cadena:SnSn45

scan+3Ts cadena45

print+3SnSt LA CA&E<A E LA 2J92E<8E:SnSn45

Page 25: Programar Lenguaje C

7/23/2019 Programar Lenguaje C

http://slidepdf.com/reader/full/programar-lenguaje-c 25/98

print+3Sn45

print+3TsSn cadena45

print+3TsSn cadena45

print+3Sn45

getc'345

return D5

Es importante ,ue el lector intente correr en su m*,uina estos ejemplospara ,ue comprenda con ma$or +acilidad.

<O8A: Cuando la entrada es una cadena de car*cter no es necesario el

operador direccional 3U4. El nom(re de la cadena contiene la dirección.

Ejemplo:

scan+34 )naliza la captación de la cadena al encontrar un espacio en (lanco o)n de l/nea.

Ejemplo:

c'ar cadena_1W`5

print+3&igite la cadena:SnSn45

scan+3Ts cadena45

Casos Especiales

H9EJO &E 2<PECC2I<: &e)ne 9n conjunto de caracteres ,ue puede leerseutilizando scan+34.

As/:

T_ABC`s: A B $ C son los 6nicos caracteres ,ue puede leer al encontrar unodi+erente )naliza con un valor nulo.

T_ Af `s: 8am(in pueden ser rangos de car*cter en este caso sólo aceptama$6sculas.

H9EJO 2<?E;O: A,u/ se declaran ,ue caracteres <O puede tomar la +unciónscan+34 se utiliza el circunQejo 3]4 ,ue acepta cual,uiera menos...

Page 26: Programar Lenguaje C

7/23/2019 Programar Lenguaje C

http://slidepdf.com/reader/full/programar-lenguaje-c 26/98

Ejemplo:

T_]Sn`s: Acepta cual,uier car*cter menos un salto de l/nea.

T_]D`s: Acepta cual,uier car*cter menos del D al .

Ejemplo:

can+3T_D`s Uedad45

Cuestionario

Mencione $ E#pli,ue ,ue es la lógicaestructurada:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 

Para ,ue sirven las +unciones getc'34 $putc'ar34:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 

Menciones las di+erencias +undamentales entre las +unciones de entrada $salida por consola con las +unciones de entrada $ salida por consola con+ormato:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 

 XXXXXXXXXXXXXXXXXX 

Escri(a algunas restricciones ,ue de(en cumplir los2denti)cadores:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 

 XXXXXXXXXXXXXXXXXXX 

-Cu*l es la si+erencia entre el tipo de dato Tc $ el tipo de datoTs0:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 

 XXXXXXXXXXXXXXXX 

Para ,ue sirve la directivastdio.'K:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 

-F la directiva conio.'K0 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 

-Para ,ue sirve a declaratoriade)ne0:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 

Para ,ue sirve el punto $ coma 354 en

C:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 

En C no e#iste el tipo de dato string5 sin em(argo podemos 'acer uso de lascadenas de te#to -Por ,u0.E#pli,ue:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 

 XXXXXXXXXXXX 

Ejercicios:

Page 27: Programar Lenguaje C

7/23/2019 Programar Lenguaje C

http://slidepdf.com/reader/full/programar-lenguaje-c 27/98

=aciendo uso de las +unciones gets $ puts dise7e un programa en C ,ue selea el nom(re del usuario $ lo muestre en pantalla junto con un saludo.

&ise7e un programa en C ,ue lea $ muestre en pantalla el valor de tresvaria(les de tipo Entero.

&ise7e un programa ,ue muestre los di+erentes tipos de datos usados en C.Primero de(e indic*rsele al usuario ,ue introduzca un valor de un tipo dado5luego $ despus de 'a(er introducido valores en todas las varia(les de(eimprimirse el contenido de ellas junto con un mensaje ,ue indi,ue el tipo dedato:

V. &ise7e un programa en el cual se introduzcan el nom(re $ el peso $ de unalumno $ luego la muestre en pantalla. El <om(re de(e incluir el apellido $ enel campo del peso solo de(en incluir valores numricos.

W. &ise7e un programe en C en el cual despus de 'a(er introducido unata(la de multiplicación cual,uiera imprima sta en +orma de ta(la:

!#!RV

!#"R[

!#VRZ

. .

.

!#1DR!D

[. ;ealice el ejercicio !.W tal como se muestra luego ejec6talo nuevamentepero ,uit*ndole al código las sentencias: getc'34 $ return D. -u o(servas0;ealiza tus propias conclusiones de ello $ de la importancia de estas dos+unciones.

Capitulo 222 Operadores E#presiones $ Estructuras

=asta a'ora pr*cticamente 'emos visto como el protocolo esencial para

realizar un programa en C5 $ algunas +unciones mu$ importantes como son las+unciones de lectura e impresión 3scan+ $ print+ respectivamente4.

A'ora veremos otros aspectos +undamentales como lo son los operadores,ue pueden ser: lógicos matem*ticos relacionales etc. Las e#presiones $ lasestructuras: de secuenciación de selección $ de iteración.

Operadores

Page 28: Programar Lenguaje C

7/23/2019 Programar Lenguaje C

http://slidepdf.com/reader/full/programar-lenguaje-c 28/98

Page 29: Programar Lenguaje C

7/23/2019 Programar Lenguaje C

http://slidepdf.com/reader/full/programar-lenguaje-c 29/98

<O8A: Este Operador <O puede aplicarse a los datos de tipo Qoat.

9na E#presión Es un conjunto de varia(le constantes $ otras e#presiones m*ssencillas relacionadas por alg6n tipo de operador. &e las cuales 'a(laremoscon m*s detalle posteriormente.

Operadores de ;elaciónales Lógicos $ 9narios

Estos Operadores los podemos dividir en varios tipos entre los cuales est*n:

OPE;A&O;E 9<A;2O: C inclu$e una clase de operadores ,ue act6an so(reun solo operador para producir un nuevo valor. Por eso el nom(re de unariospor ,ue para poder +uncionar solo necesitan de un operador.

Operador

Propósito

Menos 9nario: Es el signo menos ,ue va delante de una varia(le constante oe#presión.

^^

Operador 2ncremento: =ace ,ue la varia(le constante o e#presión se aumenteen uno.

Operador &ecremento: =ace ,ue su varia(le constante o e#presión disminu$aen uno.

 8ABLE ".!

Ejemplo:

2nt iR1 #RW5

Print+3Td ̂ ^i45

Print+3Td i45

Estos operadores el incremento $ el decremento pueden utilizarse de dosmaneras eso depende del orden de aparición de los mismos:

i el operador precede al operando el valor del operando se modi)ca antes deser utilizado.

Page 30: Programar Lenguaje C

7/23/2019 Programar Lenguaje C

http://slidepdf.com/reader/full/programar-lenguaje-c 30/98

Page 31: Programar Lenguaje C

7/23/2019 Programar Lenguaje C

http://slidepdf.com/reader/full/programar-lenguaje-c 31/98

Operador

igni)cado

Menor ,ue

R

Menor o igual ,ue

K

Ma$or ,ue

KR

Ma$or o igual ,ueRR

2gual ,ue 3Para las comparaciones4

\ R

<o igual a

 8ABLA "."

Estos Operadores se encuentran dentro del mismo grupo de procedencia ,ue

es menor ,ue la de los Operadores 9narios $ aritmticos.

La Asociatividad de stos es de iz,uierda a derec'a. Ca(e mencionar ladi+erencia entre los operadores R $ RR el primero 3R4 se utiliza paraasignaciones de valores mientras ,ue el otro 3RR4 se usa paracomparaciones. Ejemplo: i #KW entonces #RR[.

". OPE;A&O;E LIJ2CO: Estos son los ,ue nos permiten unir variascomparaciones: 1DKW $ [RR[. Los operadores lógicos son: A<& 3UU4 O; 3hh4<O83\4.

Operador UU 3A<& en castellano F4: &evuelve un 1 si se cumplen doscondiciones.

print+3 ;esultado: Ti 31DRR1D UU WK! 45

Operador hh 3O; en castellano O4: &evuelve un 1 si se cumple una de las doscondiciones.

Page 32: Programar Lenguaje C

7/23/2019 Programar Lenguaje C

http://slidepdf.com/reader/full/programar-lenguaje-c 32/98

Operador \ 3<O8 negación4: i la condición se cumple <O8 'ace ,ue no secumpla $ viceversa.

?er el cap/tulo entencias sección <otas so(re las condiciones para m*sin+ormación. 38omado de Curso de C por Jora 9rrutia4.

Operadores de Asignación

Los Operadores de Asignación como su nom(re lo indica se encargan deatri(uirle asignarle con)narle etc a una varia(le el resultado de unae#presión o el valor de otra varia(le.

e utilizan en +orma de e#presiones de asignación en los ,ue se asigna en elvalor de una e#presión a un identi)cador. El operador de asignación m*sutilizado es R $ su +ormato es:

identi)cador R e#presión5

&onde el identi)cador representa por lo general una varia(le $ una constanteuna varia(le o una e#presión m*s compleja.

i los dos operandos de la e#presión de asignación son de tipo de datosdi+erentes el valor de la e#presión de la derec'a se convertir*autom*ticamente al tipo de identi)cador de la iz,uierda de sta +orma lae#presión de asignación ser* del mismo tipo de datos.

Ejemplo:

9n valor en coma Qotante puede ser truncado se asigna a un identi)cador

entero.

9n valor de do(le precisión puede ser redondeado si se asigna a unidenti)cador de coma Qotante.

En C est*n permitidas las asignaciones m6ltiples as/:

2denti)cador1 R identi)cador! R identi)cador".....R identi)cadornRe#presión

C posee adem*s los siguientes operadores de asignación:

Operador

E#plicación

^R

E#presión1^Re#presión!. E,uivale a: e#presión1Re#presión1 ^ e#presión!

R

Page 33: Programar Lenguaje C

7/23/2019 Programar Lenguaje C

http://slidepdf.com/reader/full/programar-lenguaje-c 33/98

Page 34: Programar Lenguaje C

7/23/2019 Programar Lenguaje C

http://slidepdf.com/reader/full/programar-lenguaje-c 34/98

return D5

 Herar,u/a de Operadores

Categor/a del Operador

Operador

1. Operadores 9narios

^^ \

!.Operadores Aritmticos:

Multiplicación división $ ;esto entero

uma $ ;esta T

^

". Operadores ;elacionales

R K KR

V. Operadores de 2gualdad

RR \ R

W. Operadores Lógicos

UU 3F Lógico4 hh 3<O Lógico4

[. Operadores de Asignación

R ^R R R 0 TR

 8ABLA ".W

;EJLA &E HE;A;9kA:

e ejecuta primero el operador de m*s alta jerar,u/a

Operadores ,ue tienen igual jerar,u/a se eval6an de iz,uierda a derec'a

si e#isten e#presiones encerradas entre parntesis estas se eval6an primero.

si e#isten parntesis anidados se eval6an primero los parntesis m*s internos.

Page 35: Programar Lenguaje C

7/23/2019 Programar Lenguaje C

http://slidepdf.com/reader/full/programar-lenguaje-c 35/98

Page 36: Programar Lenguaje C

7/23/2019 Programar Lenguaje C

http://slidepdf.com/reader/full/programar-lenguaje-c 36/98

e les denomina as/ por ,ue5 son estructuras en un programa ,ue despus deejecutar una instrucción o sentencia contin6an con la otra 'asta llegar al )naldel programa. Los ejemplos ,ue 'emos visto anteriormente son ejemplos deestructuras secuenciales. ?eamos otros ejemplos:

Ejemplo "."

&ise7e un programa ,ue calcula el cuadrado $ el cu(o de tres n6merosintroducidos por el usuario.

include stdio.'K

include conio.'K

main34

N

int # #1 #! $ $1 $! z z1 z!5

clrscr345

print+3StP;OJ;AMA 9E CALC9LA EL C9A&;A&O F EL C9BO &E "<9ME;OSnSn45

print+32ntroduzaca el primer nmero:Sn45

scan+3Td U#45

print+3A'ora ingrese el siguiente nmero:Sn45

scan+3Td U$45

print+3F el tercer nmero es:Sn45

scan+3Td Uz45

#1R##5

#!R###5

$1R$$5

$!R$$$5

z1Rzz5

z!Rzzz5

print+3Sn45

Page 37: Programar Lenguaje C

7/23/2019 Programar Lenguaje C

http://slidepdf.com/reader/full/programar-lenguaje-c 37/98

print+3<umeroCuadradoCu(oSn45

print+3Td Td Td Sn # #1 #!45

print+3Td Td Td Sn $ $1 $!45

print+3Td Td Td Sn z z1 z!45

print+3Sn45

getc'345

return D5

Ejemplo ".V

9na empresa necesita conocer el sueldo neto a pagar a un empleado. 8eniendocomo entrada el salario produzca una salida de sueldo neto. Los descuentos aaplicar son: 2 WT A%P T $ ;enta 1DT estos descuentos son so(re elsalario $ es sueldo neto es la di+erencia entre el salario $ el total de lasretenciones:

include stdio.'K

include conio.'K

main34

N

Qoat sueldo a+p isss renta sn5

c'ar nom(re_WD`5

clrscr345

print+32ntroduzca el <om(re del empleado:Sn45

scan+3Ts nom(re45

print+3u sueldo es:Sn45scan+3T+ Usueldo45

a+pRsueldoD.D5

isssRsueldoD.DW5

rentaRsueldoD.1D5

Page 38: Programar Lenguaje C

7/23/2019 Programar Lenguaje C

http://slidepdf.com/reader/full/programar-lenguaje-c 38/98

Page 39: Programar Lenguaje C

7/23/2019 Programar Lenguaje C

http://slidepdf.com/reader/full/programar-lenguaje-c 39/98

return D5

Estructuras electivas

Los pe,ue7os programas ,ue 'emos dise7ada 'asta el momento 'an sido deltipo secuencial es decir una sentencia se ejecuta despus de otra 'asta el)nal del programa.

Pero en la vida diaria muc'as veces de(emos elegir entre un camino $ otropara llegar a nuestro destino. Lo mismo pasa en programación al realizaralguna actividad nuestro programa de(e ser capaz de elegir uno u otrocamino a seguir dependiendo del valor de alguna condición evaluada.

Para ello C dispone de tres tipos de " tipos de estructuras selectivas la cualesson:

Estructura electiva imple

Estructura electiva &o(le

Estructura electiva M6ltiple

E8;9C89;A ELEC82?A 2MPLE

%unciona de la siguiente manera: se eval6a una condición de ser cierta e+ect6auna acción de lo contrario contin6a con la ejecución normal del programa.

u sinta#is es la siguiente:

2+3condición4 Acción5

O tam(in:

2+3Condición4

Acción5

&onde:

Condición: Es una e#presión lógica ,ue es evaluada por el compilador

Acción: es la Acción o Acciones ,ue realizar* el programa de resultar cierta lacondición

<O8A: En C no e#iste la sentencia End 2+ como en otros lenguajes deprogramación para indicar ,ue 'a terminado el (lo,ue de selección sino ,ueeste se especi)ca con el punto $ coma al )nal. Adem*s ,ue despus de lacondición <O se escri(e un punto $ coma. i son varias acciones estas de(en

Page 40: Programar Lenguaje C

7/23/2019 Programar Lenguaje C

http://slidepdf.com/reader/full/programar-lenguaje-c 40/98

ir dentro de llaves N para indicarle al compilador ,ue son un solo (lo,ue deacciones ,ue de(en ejecutarse.

Ejemplo ".[

En una tienda se venden art/culos de primera necesidad a los cuales se les

aplica un descuento del !DT de la compra total si esta es igual o ma$or aWD. &ise7e un programa en C ,ue a partir del importe total de la compramuestre lo ,ue de(e pagar el cliente.

include stdio.'K

include conio.'K

main34

N

Qoat compra5

clrscr345

print+32ntroduzca el valor de la compra:Sn45

scan+3T+ Ucompra45

i+3compraKRWD4

compraRcompraD.Z5

print+3El 2mporte de la compra es T.!+SnSn compra45

getc'345

return D5

E8;9C89;A ELEC82?A &OBLE

Esta estructura se caracteriza por el 'ec'o ,ue o+rece dos caminos a seguirdependiendo si al evaluar la condición resulta cierta o +alsa. u sinta#is es la

siguiente:

i+3Condición4

Acción 15

else

Acción !5

Page 41: Programar Lenguaje C

7/23/2019 Programar Lenguaje C

http://slidepdf.com/reader/full/programar-lenguaje-c 41/98

Page 42: Programar Lenguaje C

7/23/2019 Programar Lenguaje C

http://slidepdf.com/reader/full/programar-lenguaje-c 42/98

Page 43: Programar Lenguaje C

7/23/2019 Programar Lenguaje C

http://slidepdf.com/reader/full/programar-lenguaje-c 43/98

Page 44: Programar Lenguaje C

7/23/2019 Programar Lenguaje C

http://slidepdf.com/reader/full/programar-lenguaje-c 44/98

Page 45: Programar Lenguaje C

7/23/2019 Programar Lenguaje C

http://slidepdf.com/reader/full/programar-lenguaje-c 45/98

Page 46: Programar Lenguaje C

7/23/2019 Programar Lenguaje C

http://slidepdf.com/reader/full/programar-lenguaje-c 46/98

Page 47: Programar Lenguaje C

7/23/2019 Programar Lenguaje C

http://slidepdf.com/reader/full/programar-lenguaje-c 47/98

Page 48: Programar Lenguaje C

7/23/2019 Programar Lenguaje C

http://slidepdf.com/reader/full/programar-lenguaje-c 48/98

Page 49: Programar Lenguaje C

7/23/2019 Programar Lenguaje C

http://slidepdf.com/reader/full/programar-lenguaje-c 49/98

Page 50: Programar Lenguaje C

7/23/2019 Programar Lenguaje C

http://slidepdf.com/reader/full/programar-lenguaje-c 50/98

Page 51: Programar Lenguaje C

7/23/2019 Programar Lenguaje C

http://slidepdf.com/reader/full/programar-lenguaje-c 51/98

Page 52: Programar Lenguaje C

7/23/2019 Programar Lenguaje C

http://slidepdf.com/reader/full/programar-lenguaje-c 52/98

getc'345

return D5

Ejemplo V.!

e desea conocer el promedio de los n6meros ma$ores ,ue cero en una seriede n6meros ingresados por el usuario. &e los cuales no se sa(e la cantidad'aciendo uso de una (andera dise7e un programa en el cual el usuario ingreselos n6meros ,ue desee.

include stdio.'K

include conio.'K

main34

N

int iRD sumRD (anR1 n5

Qoat prom5

>'ile3(anRR14

N

print+32ngrese un nmero por %avor:Sn45

scan+3Td Un45

i+3nKD4

N

iRi^15

sum^Rn5

print+3&esea 2ngresar Otro <mero0 3iR1 $ <oRD4Sn45

scan+3Td U(an45

promRsumi5

print+3Sn45

Page 53: Programar Lenguaje C

7/23/2019 Programar Lenguaje C

http://slidepdf.com/reader/full/programar-lenguaje-c 53/98

Page 54: Programar Lenguaje C

7/23/2019 Programar Lenguaje C

http://slidepdf.com/reader/full/programar-lenguaje-c 54/98

Page 55: Programar Lenguaje C

7/23/2019 Programar Lenguaje C

http://slidepdf.com/reader/full/programar-lenguaje-c 55/98

&ise7e un programa ,ue imprima los primeros 1D n6meros:

include stdio.'K

include conio.'K

main34

N

int i5

+or3iR15 iR1D5 i^^4

print+3TdSt i45

getc'345

return D5

Ejemplo V.W

&ise7e un programa en C ,ue calcule las compras totales realizadas por ungrupo de !D amas de casa. Luego con esa in+ormación o(tenga la media.

include stdio.'K

include conio.'K

main34

N

int i5

Qoat compra desvia prom varinza sumRD5

+or3iR15 iR1D5 i^^4

N

print+32ngrese la cantidad ,ue gast la ama de casa Td:Sn i45

scan+3T+ Ucompra45

>'ile3compraD4

N

print+3E;;O; la compra de(e ser ma$or ,ue cero vuelva a intentarlo:Sn45

Page 56: Programar Lenguaje C

7/23/2019 Programar Lenguaje C

http://slidepdf.com/reader/full/programar-lenguaje-c 56/98

Page 57: Programar Lenguaje C

7/23/2019 Programar Lenguaje C

http://slidepdf.com/reader/full/programar-lenguaje-c 57/98

Page 58: Programar Lenguaje C

7/23/2019 Programar Lenguaje C

http://slidepdf.com/reader/full/programar-lenguaje-c 58/98

print+3E;;O;Sn45

scan+3Td Un45

+or3iR15 iRn5 i^^4

N

print+32ngrese el Boleto:Sn45

scan+3Td U(oleto45

s>itc'3(oleto4

N

case 1: print+32ngrese la cantidad de (oletos vendidos:Sn45scan+3Td U(oletos145

sum1^R(oletos15

sumRsum^3(oletos1precio(145

(rea5

case !: print+32ngrese la cantidad de (oletos vendidos:Sn45

scan+3Td U(oletos!45

sum!^R(oletos!5

sumRsum^3(oletos!precio(!45

(rea5

case ": print+32ngrese la cantidad de (oletos vendidos:Sn45

scan+3Td U(oletos"45

sum"^R(oletos"5

sumRsum^3(oletos"precio("45

(rea5

de+ault: print+3E;;O; ?uelva a intentarloSnSn45

(rea5

Page 59: Programar Lenguaje C

7/23/2019 Programar Lenguaje C

http://slidepdf.com/reader/full/programar-lenguaje-c 59/98

clrscr345

i+3sum"sum! UU sum"sum14

print+3Los Boletos ,ue se vendieron menos +ueron los (oletos numero9<OSnSn45

i+3sum!sum" UU sum!sum14

print+3Los Boletos ,ue se vendieron menos +ueron los (oletos numero&OSnSn45

i+3sum1sum! UU sum1sum"4

print+3Los Boletos ,ue se vendieron menos +ueron los (oletos numero 8;ESnSn45

print+3El total recaudado en ta,uilla durante este dia +ue: T.!+SnSn sum45

getc'345

return D5

Ciclo &o... >'ile

Es te ciclo +unciona de la siguiente manera realiza la acción o conjunto deacciones luego eval6a una condición de resultar cierta vuelve a realizar lasacciones. Cuando sea +alsa se sale del ciclo. Esta estructura no est*lógicamente estructurada por ello no 'a(laremos muc'o sin em(argorealizaremos un par de ejemplos de este ciclo.

%ormato :

do N

sentencia5

.

>'ile3e#pLK45

La di+erencia +undamental entre el ciclo >'ile $ do...>'ile es ,ue en esteultimo las sentencias se realizar*n por lo menos una vez en cam(io con

Page 60: Programar Lenguaje C

7/23/2019 Programar Lenguaje C

http://slidepdf.com/reader/full/programar-lenguaje-c 60/98

>'ile solo se cumplir*n mientras se cumpla la condición lo cual puede sernunca.

Ejemplo V.

Programa ,ue determina si un a7o es (isiesto o no. F un a7o es (isiesto si es

m6ltiplo de cuatro pero e#clu$endo a,uellos ,ue son m6ltiplos de 1DD pero node VDD

include stdio.'K

include conio.'K

void main34

N

int anio5

c'ar respuesta5

print+3SnSnSn2<2C2O &EL P;OJ;AMASnSnSn45

print+3SnSnEl programa te pide un anio $ te dice e#actamente si es (isiesto ono45

do

N

E<8;A&A &E &A8O

print+3SnSn2ntroduzca un anio determinado 45

scan+3TdUanio45

P;OCEO F AL2&A &E &A8O

i+ 33anioTVRRD UU anioT1DD\RD4hh3anioTVDDRRD44 print+3SnSnEl anio es(isiesto45

else print+3SnSnEl anio no es (isiesto45

print+3SnSn&esea introducir mas datosSnSn45

respuestaRgetc'345

>'ile3respuestaRR hh respuestaRRs45

print+3SnSnSn%2< &EL P;OJ;AMASnSnSn45

Page 61: Programar Lenguaje C

7/23/2019 Programar Lenguaje C

http://slidepdf.com/reader/full/programar-lenguaje-c 61/98

<O8A: este código 'a sido tomado de Practicas de Programación en C de%ernando Mu7oz Ledesma. Practica " ejercicio W.

Cuestionario

-,u es $ cómo +unciona un ciclo0 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX  XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 

Cu*l es la di+erencia entre un contador $ unacumulador:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 

 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 

-cu*l es la mejor manera de validardatos0:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 

 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 

-cómo se evita un cicloin)nito0:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 

 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 

-u di+erencia e#iste entre un ciclo de entrada asegurada $ el do...>'ile0:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 

&escu(re donde est* el error.

El siguiente código muestra la serie:

1]!^!]!^"]!....n]!

en el cual 'a$ errores de lógica de sinta#is o 'asta de ejecución puedesdescu(rirlos $ corregirlos0

include stdio.'K

include conio.'K

main34

N

int n i # sumRD5

print+32nrtroduzca el valor de n:Sn45

scan+3Td Un45

>'ile3nD4

Page 62: Programar Lenguaje C

7/23/2019 Programar Lenguaje C

http://slidepdf.com/reader/full/programar-lenguaje-c 62/98

N

print+3Error vuelva a digitar el valor de n:Sn45

scan+3Td n45

+or3iR15 iRn i^^4

#Rii5

sum^Rn5

print+3El valor de la suma es:TdSnSn sum4

getc'345

return D5

Ejercicios

e desea conocer la suma de los n6meros enteros positivos menores ,ue n elcual es un dato dado por el usuario.

Muestre un programa en c ,ue imprima en pantalla los n6meros desde unvalor inicial 'asta un valor )nal ingresados por el usuario tanto en +ormadescendente como ascendente.

&ise7e un programa ,ue imprima la serie de %ugonacci as/: D 1 1 ! " W Z 1"....'asta un n6mero n dado por el usuario.

Calcule el promedio de edades de un grupo de estudiantes de los cuales no seconoce la cantidad.

&ise7e un programa ,ue o(tenga la cali)cación ma$or $ la cali)cación menorde un grupo de VD estudiantes adem*s de los nom(res de dic'os alumnos.

En un pa/s 'u(ieron elecciones para elegir al presidente. El pa/s consta de provincias o regiones de las cuales se 'an levantado actas ,ue contiene el

total de votos o(tenidos por los V partidos pol/ticos en dic'a región. &ise7e unprograma en c ,ue lea las actas de las provincias muestre ,ue partido ganólas elecciones $ en caso de empate lo especi),ue con un mensaje.

en un supermercado 'a$ " departamentos 3de ropa comesti(les $per+umer/a4 en lo cuales se realizan un descuento de WT ".WT $ ZTrespectivamente por las compras totales ma$ores de 1DD.DD. dise7e unprograma ,ue dado el monto de la compra realice los descuentos pertinentes

Page 63: Programar Lenguaje C

7/23/2019 Programar Lenguaje C

http://slidepdf.com/reader/full/programar-lenguaje-c 63/98

por departamento le indi,ue al usuario a cuanto asciende su nuevo monto eindi,ue cuanto +ue lo recaudado al )nal del d/a.

La Empresa el porvenir s.a de c.v desea conocer lo ,ue de(e pagar enconcepto de 'oras e#tras aun grupo de n empleados. e sa(e ,ue una 'orae#tra diurna se paga el do(le ,ue una 'ora normal. F una 'ora e#tra nocturnase paga el do(le de una 'ora normal m*s el !WT. Adem*s ,ue todos losempleados tiene sueldos di+erentes muestre el nuevo sueldo de cada uno deellos $ lo ,ue tendr* ,ue pagar la empresa en concepto de 'oras e#tra.

9na compa7/a de tel+onos co(ra D.D" por minuto la llamada nacional localD.D[ por la llamada de larga distancia nacional $ D.1D la llamada de largadistancia internacional. &ise7e un programa ,ue calcule las +acturas mensualesde los clientes sa(iendo ,ue si las llamadas +ueron realizadas por la ma7anatienen un do(le valor $ si los 1D primeros minutos de llamadas locales songratis en cual,uier 'orario.

Leer m*s: 'ttp:>>>.monogra)as.comtra(ajos""programacionlenguajecprogramacionlenguajec!.s'tmli#zz"tljmjLd

Capitulo V: Funciones en C

La modularización, es una técnica usada por los programadores para hacer sus códigos más cortos, ya queconsiste en reducir un gran problema complejo, en pequeños problemitas más sencillos, concentrándose en lasolución por separado, de cada uno de ellos.

En C, se conocen como unciones aquellos trozos de códigos utilizados para dividir un  programa con

el  objetivo que, cada bloque realice una tarea determinada.

En las unciones juegan un papel muy importe las !ariables, ya que como se ha dicho estas pueden serlocales o globales.

Variables Globales: Estas se crean durante toda la ejecución del programa, y son globales, ya que puedenser llamadas, le"das, modiicadas, etc# desde cualquier  unción. $e deinen antes del main%&.

Variables Locales: Estas, pueden ser utilizadas 'nicamente en la unción que hayan sido declaradas.

La sinta(is de una unción es la siguiente)

Tipo_de_datos nombre_de_la_funcion(tipo y nombre de argumentos)

{

Page 64: Programar Lenguaje C

7/23/2019 Programar Lenguaje C

http://slidepdf.com/reader/full/programar-lenguaje-c 64/98

acciones

}

donde)

• Tipo_de_datos: Es el tipo de dato que de!ol!erá esa unción, que puede ser real, entera, o tipo!oid%es decir que no de!ol!erá ning'n !alor &.

• ombre_de_la_funcion: Es el identiicador que le damos a nuestra unción, la cual debe cumplir las

reglas que deinimos en un principio para los identiicadores.

• Tipo y nombre de argumentos: son los parámetros que recibe la unción. Los argumentos de una

unción no son más que !ariables locales que reciben un !alor. Este !alor se lo en!iamos al hacer la llamada a

la unción. *ueden e(istir unciones que no reciban argumentos.

• !cciones: Constituye el conjunto de acciones, de sentencias que cumplirá la unción, cuando sea

ejecutada. Entre ellas están)

+. signaciones

-. Lecturas

. /mpresiones

0. Cálculos, etc

1na unción, termina con la lla!e de cerrar, pero antes de esta lla!e, debemos colocarle lainstrucción return" con la cual de!ol!erá un !alor espec"ico. Es necesario recalcar que si la unción node!uel!e ning'n !alor, es decir, es tipo !oid, no tiene que ir la sentencia return, ya que de lo contrario, nosdará un error.

*ero, es !álido que nos hagamos la siguiente pregunta)

#C$mo es %ue funcionan los &ubprogramas'

  menudo, utilizamos el adjeti!o de 2$ubprogramas2, para reerirnos a las unciones, as" que, el lector debeamiliarizarse también con este término.

Los subprogramas se comunican con el programa principal, que es el que contiene a las unciones, medianteparámetros, que estos pueden ser) *arámetros 3ormales y *arámetros ctuales.

Page 65: Programar Lenguaje C

7/23/2019 Programar Lenguaje C

http://slidepdf.com/reader/full/programar-lenguaje-c 65/98

Page 66: Programar Lenguaje C

7/23/2019 Programar Lenguaje C

http://slidepdf.com/reader/full/programar-lenguaje-c 66/98

Page 67: Programar Lenguaje C

7/23/2019 Programar Lenguaje C

http://slidepdf.com/reader/full/programar-lenguaje-c 67/98

!oid mayor %int a, int b&# G;4ipo de dato, nombre de la unciHn y el tipo y nombre de los argumentos;G

main%&

I

int a, b#

print%2/ngrese el !alor de a)Jn2&#

scan%2Kd2, a&#

print%2/ngrese el !alor de b)Jn2&#

scan%2Kd2, b&#

suma%a,b&# G;Llamado de la unciHn;G

mayor%a,b&# G;1nicamente el nombre de la unciHn y de los par metros;G

getch%&#

return M#

N

!oid suma%int a, int b& G;@einiciHn de la unciHn;G

I G;brimos lla!es al inicio de la deiniciHn;G

int sum# G;@eclaraciHn de las !ariables locales;G

sum6a<b#

print%2El !alor de la suma es Kd)JnJn2, sum&#

N G;3in de la unciHn suma;G

!oid mayor%int a, int b&

I

i%a66b&

print%2$on igualesJnJn2&#

else

I

Page 68: Programar Lenguaje C

7/23/2019 Programar Lenguaje C

http://slidepdf.com/reader/full/programar-lenguaje-c 68/98

Page 69: Programar Lenguaje C

7/23/2019 Programar Lenguaje C

http://slidepdf.com/reader/full/programar-lenguaje-c 69/98

Rhile%ban66+&

I

print%2/ntroduzca el nSmero por a!or)Jn2&#

scan%2Kd2, numero&#

Rhile%numeroM&

I

print%2EAAQA, el !alor del nSmero debe ser mayor que ceroJn2&#

scan%2Kd2, numero&#

N

primo%numero&#

print%2uml#Qtro nSmero %si6+ y To6M&UJn2&#

scan%2Kd2, ban&#

N

getch%&#

return M#

N

!oid primo %int numero&

I

int di!, primo6+#

or%di!6-# di!numero# di!<<&

I

i%numeroKdi!66M&

I

primo6M#

print%2Kd TQ es primoJnJnJn2, numero&#

Page 70: Programar Lenguaje C

7/23/2019 Programar Lenguaje C

http://slidepdf.com/reader/full/programar-lenguaje-c 70/98

return M#

N

else

primo6+#

N

i%primoV6M&

print%2Kd es primoJnJnJn2, numero&#

N

+M. Las unciones que de!uel!en alg'n !alor, se les llama *AQ4Q4/*Q$ @E 31TC/QTE$)

 ntes de usar una unción C debe tener conocimiento acerca del tipo de dato que regresara y el tipo delos

parámetros que la unción espera.

El estándar T$/ de C introdujo una nue!a %mejor& orma de hacer lo anterior respecto a las !ersionespre!ias

de C.

La importancia de usar prototipos de unciones es la siguiente)

$e hace el código mas estructurado y por lo tanto, más ácil de leer.

$e permite al compilador de C re!isar la sinta(is de las unciones llamadas.

Lo anterior es hecho, dependiendo del alcance de la unción. 8ásicamente si una unción ha sido deinidaantes

de que sea usada %o llamada&, entonces se puede usar la unción sin problemas.

$i no es as", entonces la unción se debe declarar. La declaración simplemente maneja el tipo de dato quela

unción regresa y el tipo de parámetros usados por la unción.

Es una práctica usual y con!eniente escribir el prototipo de todas las unciones al principio del programa,sin

embargo esto no es estrictamente necesario.

Page 71: Programar Lenguaje C

7/23/2019 Programar Lenguaje C

http://slidepdf.com/reader/full/programar-lenguaje-c 71/98

Page 72: Programar Lenguaje C

7/23/2019 Programar Lenguaje C

http://slidepdf.com/reader/full/programar-lenguaje-c 72/98

print%2El !alor del actorial es KdJnJn2, actorial %num&&#

print%2Y@esea Aealizar otro calculoU$i6+ y To6MJn2&#

scan%2Kd2, ban&#

N

getch%&#

return M#

N

int actorial %int num&

I

int sum6+, i#

or%i6-# i6num# i<<&

I

sum6sum;i#

N

return %sum&#

N

*4plicaci$n:

Ouizá, lo 'nico nue!o, e importante de e(plicar, radica en la llamada y la deinición de la unción. Cuandouna unción nos de!ol!erá un !alor entero, al identiicador de dicha unción debe precederle el tipo dedato. En el lugar, donde llamamos la unción, es que aparecerá el !alor que nos de!uel!a, como !alor deretorno. En nuestro ejemplo, en una impresión. > al momento de deinirla, no se nos debe ol!idar,colocarle la sentencia return(); ya que, mediante esta declaratoria, está retornando el !alor calculado.

*ero, que sucede cuando se está trabajando, con !alores bastante grandes, al utilizar solamente el int, seproducirá un error lógico# ya que como !alor de retorno podr"a ser un cero o una cira negati!a. *or tantodebemos usar el tipo de dato 2long int2.

*+emplo 105

@iseñe un programa, que dada una cira entera y mayor que cero, sea ele!ada a una potencia introducidapor el usuario, la cual. %Ejemplo) 7Z-6-7&.

Dinclude stdio.hF

Page 73: Programar Lenguaje C

7/23/2019 Programar Lenguaje C

http://slidepdf.com/reader/full/programar-lenguaje-c 73/98

Page 74: Programar Lenguaje C

7/23/2019 Programar Lenguaje C

http://slidepdf.com/reader/full/programar-lenguaje-c 74/98

Page 75: Programar Lenguaje C

7/23/2019 Programar Lenguaje C

http://slidepdf.com/reader/full/programar-lenguaje-c 75/98

atan(d)

atan(d1, d2)

ceil(d)

cos(d)

cosh(d)

exp(d)

fabs(d)

floor(d)

log(d)

log10(d)

 pow(d1, d2)

sin(d)

sinh(d)

sqrt(d)

Page 76: Programar Lenguaje C

7/23/2019 Programar Lenguaje C

http://slidepdf.com/reader/full/programar-lenguaje-c 76/98

Page 77: Programar Lenguaje C

7/23/2019 Programar Lenguaje C

http://slidepdf.com/reader/full/programar-lenguaje-c 77/98

Page 78: Programar Lenguaje C

7/23/2019 Programar Lenguaje C

http://slidepdf.com/reader/full/programar-lenguaje-c 78/98

double raiz%loat a, loat b&

I

loat (#

double y#

(6a<b#

y6sqrt%(&#

return %y&#

N

double !alor]absoluto%loat a, loat b&

I

loat (#

double y#

(6a5b#

y6abs%(&#

return %y&#

N

double e(ponente %loat a, loat b&

I

double (#

(6poR%a,b&#

return %(&#

N

$upongo que, este ejemplo no requiere mayor e(plicación. *ero me gustar"a que el lector, comprenda lagran cantidad de usos que podemos darle, a aquellas unciones matemáticas, junto con las uncionesdeinidas por el usuario, esta es una gran ayuda, ya que _se imaginan la cantidad de código quedeber"amos colocar, para determinar cosas tan elementales como el !alor absolutoU# con estas uncionesmatemáticas, C, nos ahorra mucho trabajo y código.

Page 79: Programar Lenguaje C

7/23/2019 Programar Lenguaje C

http://slidepdf.com/reader/full/programar-lenguaje-c 79/98

+7. ab

  continuación !eremos un ejemplo de un programa en el cual utilizamos dos unciones de dierente tipode dato.

*+emplo 101

El !alor del n'mero e se puede apro(imar sumando n términos de la serie) e 6 + < +G+V < +G-V < +GV < ...Escribir un programa que solicite el n'mero de términos de la serie a sumar e inorme del !alorapro(imado de e. 4éngase en cuenta que el termino i de la anterior serie se obtiene di!idiendo por %i5+&.%La e(clamación es el actorial&.

Dinclude stdio.hF

Dinclude conio.hF

Dinclude stdlib.hF

.oid calculodatos%int numero&#

double actorial%int dato&#

.oid main%.oid&

I

int numero#

c;ar  respuesta#

print%2JnJnJn/T/C/Q @EL *AQ`ABJnJnJn2&#

print%2JnJnEl programa te calcula el !alor del numero e.2&#

do I

do I

print%2JnJn/ntroduzca un numero de terminos de la serie) 2&#

scan%2Kd2,numero&#

Page 80: Programar Lenguaje C

7/23/2019 Programar Lenguaje C

http://slidepdf.com/reader/full/programar-lenguaje-c 80/98

N <;ile %numeroM&#

calculodatos%numero&#

print%2JnJnY@esea introducir mas datosJUJnJn2&#

respuesta6getch%&#

system%2cls2&#

N <;ile %respuesta66s \\ respuesta66$&#

print%2JnJnJnJtJt2&#

print%2JnJtJt 3/T @EL *AQ`AB 2&#

print%2JnJtJtJnJnJn2&#

N

.oid calculodatos%int numero&

I

register  int i#

register  double e6+.#

for  %i6+#i6numero#i<<& I

e6e<+.Gactorial%i&#

N

print%2JnJnEl !alor de e para Kd terminos es K.2,numero,e&#

N

double actorial%int dato&

I

register  int i#

register  double resultado6+#

for  %i6dato#iFM#i55& resultado6resultado;i#

return resultado#

Page 81: Programar Lenguaje C

7/23/2019 Programar Lenguaje C

http://slidepdf.com/reader/full/programar-lenguaje-c 81/98

N

El ejemplo anterior ha sido tomado de 2*racticas de C2, de 3ernando Buñoz Ledesma.ledesmaernandoarrobamsn.com

> as" como este ejemplo, podemos realizar muchas otras combinaciones de unciones, seg'n

necesitemos y lo solicite nuestro programa.

+. Funciones Combinadas

+9. Funciones en las %ue usamos en/

En la práctica, muchas !eces debemos diseñar programas, que nos permitan elegir la acción o acciones arealizar, es decir haciendo uso de un men'. El cual, no es más ni menos que la aplicación de un selectorm'ltiple. 1n switch.

Xeamos un ejemplo.

*+emplo 10=

@iseñe un programa, que dado un ángulo, muestre su seno, coseno o tangente# seg'n lo desee el usuario.

Dinclude stdio.hF

Dinclude conio.hF

Dinclude math.hF

!oid seno %loat angulo&#

!oid coseno %loat angulo&#

!oid tangente %loat angulo&#

main%&

I

loat angulo#

int opcion, ban6+#

clrscr%&#

Rhile%ban66+&

I

print%2JtJt8/ETXET/@QGJnJn2&#

Page 82: Programar Lenguaje C

7/23/2019 Programar Lenguaje C

http://slidepdf.com/reader/full/programar-lenguaje-c 82/98

print%2/ntroduzca el !alor del angulo, por a!or)Jn2&#

scan%2K2, angulo&#

print%2YOue desea hacerU)JnJn2&#

print%2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;Jn2&#

print%2;;;; +. seno del angulo ;;;;Jn2&#

print%2;;;; -. coseno del angulo ;;;;Jn2&#

print%2;;;; . tangente del angulo ;;;;Jn2&#

print%2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;Jn2&#

scan%2Kd2, opcion&#

Rhile%opcionM \\ opcionF&

I

print%2EAAQA, la opcion debe estar entre M y )Jn2&#

scan%2Kd2, opcion&#

N

clrscr%&#

sRitch%opcion&

I

case +) seno %angulo&#

brea#

case -) coseno %angulo&#

brea#

case ) tangente %angulo&#

brea#

N

print%2YWay mas datosU %si6+ y no6M&Jn2&#

Page 83: Programar Lenguaje C

7/23/2019 Programar Lenguaje C

http://slidepdf.com/reader/full/programar-lenguaje-c 83/98

Page 84: Programar Lenguaje C

7/23/2019 Programar Lenguaje C

http://slidepdf.com/reader/full/programar-lenguaje-c 84/98

+:. Bencione y e(plique, las parte en las que se componen las unciones deinidas por elusuario enC)]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]] 

 ]]]]]]]]]]]] 

+P. _Cuál es la dierencia entre las unciones predeinidas en c y las unciones deinidas por el

usuarioU ]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]  ]]]] 

-M. _En que consiste el paso deparámetrosU)]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]] 

-+. _Cuál es la dierencia entre parámetros ormales yactualesU)]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]] 

 ]]]]]]]]]] 

--. En que se dierencias las !ariables locales a las

globales)]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]  ]]]]]]]]]] 

*+ercicios

-. Aealice una pequeña calculadora, utilizando unciones

-0. @iseñe un programa que permita calcular la serie f < +G < < ... +Gn.

-7. @iseñe un programa, que muestre el mayor y el menor de tres introducidos por el usuario.

-. $e desea conocer el logaritmo natural y el logaritmo base +M de una serie de n'meros. s"

como la suma de dichos !alores

-9. $e desea conocer la permutación de dos n'meros distintos. 1sando unciones. @iseñe unprograma que resuel!a dicho problema. %TQ4) 7*67VG%75&V&

-:. $e desea conocer la equi!alencia de dólares a colones %un dólar 6 :.97 de colón&, laequi!alencia de un ilogramos a libras %+g6-.-lb& y la con!ersión de ilómetros a millas%+m6M.-millas&. realice esta solución mediante un men'.

-P. Calcule lo que debe pagar cada cliente en un almacén# si por cada compra el cliente tienederecho a sacar un papelito, y dependiendo del color , se eect'an dierentes descuentos. $i el color esblanco, se realiza un descuento del -.K sobre la cuenta, si es !erde, un descuento de 0.:7K y si esrojo, un descuento de 7.M-K. se sabe además que si es d"a lunes o !iernes, el porcentaje de descuentoes el doble.

M. El seno de un ángulo, puede apro(imarse, de la siguiente manera) sin%(& 6 ( 5 (ZGV <(Z7G7V 5 (Z9G9V < ..., determine este !alor, y usando la unción sin%d&, luego muestre la dierencia entreestos !alores.

+. En una empresa de electricidad, se cobrar las acturas correspondientes al consumo deRh, de la siguiente manera) los primeros +MM Rh, se cobran -.7, lo siguientes -MM Rh, son a 7.MM,

Page 85: Programar Lenguaje C

7/23/2019 Programar Lenguaje C

http://slidepdf.com/reader/full/programar-lenguaje-c 85/98

Page 86: Programar Lenguaje C

7/23/2019 Programar Lenguaje C

http://slidepdf.com/reader/full/programar-lenguaje-c 86/98

Ddeine T +M

main%&

I

loat (T#

int i#

or%i6M# iT# i<<&

I

print%2/ngrese el !alor Kd)Jn2, i&#

scan%2K2, (i&#

N

i%(0FM&

I

print%2La quinta *osiciHn es *ositi!aJnJn2&#

N

i%(MM&

I

print%2La + *osiciHn es Tegati!oJnJn2&#

N

i%(T5+66M&

I

print%2La 1ltima *osiciHn es ceroJnJn2&#

N

getch%&#

return M#

N

Page 87: Programar Lenguaje C

7/23/2019 Programar Lenguaje C

http://slidepdf.com/reader/full/programar-lenguaje-c 87/98

*4plicaci$n

En este ejemplo estamos haciendo uso de la constante simbólica, de cuyos beneicios ya se habló. Ladeinimos con +M posiciones, recordando que C, empieza a contar desde cero. Luego deinimos el !ectorllamado (, como punto lotante, y ojo, que éste !a acompañado de su dimensión. Luego haciendo uso de unor, empezamos a llenar el !ector. Luego preguntamos si la posición cuatro es positi!a. El lector se preguntará

el por que, la instrucción es (0 y no (7, ya que# lo que queremos es a!eriguar, si la posición cinco es lapositi!a. *ues bien, la posición identiicada con el n'mero cuatro, es en eecto la que contiene el quinton'mero.

 s")

Esta es una !ersión gráica, de lo que suceder"a al llenar nuestro !ector con los !alores indicados. Comopodemos !er, C empieza a enumerar las casillas desde el cero, hasta el P. totalizando de esa manera +Mposiciones. s" que, (06:.

Es por ello, que el or, lo inicializamos con cero, hasta un !alor menor que el de la constante, ya que de locontrario nos dar"a un error.

1na particularidad con los !ectores de tipo c;ar  %cadena de caracteres&, es que deberemos indicar en queelemento se encuentra el in de la cadena mediante el carácter  nulo % E@&. Esto no lo controla el compilador, ytendremos que ser nosotros los que insertemos este carácter al inal de la cadena. *or tanto, en un !ector de+M elementos de tipo char  podremos rellenar un má(imo de P, es decir, hasta .ectorA.$i solo rellenamos los7 primeros, hasta .ectorA5, debemos asignar el carácter nulo a .ectorA1. Es muy sencillo) .ectorA16JM#

 hora !eremos un ejemplo de como se rellena un !ector de tipo char . *odemos !er que en el for  seencuentran dos condiciones)

7.5Oue no se hayan rellenado todos los elementos %i7D&.

2.5Oue el usuario no haya pulsado la tecla ET4EA, cuyo código  $C// es 73.

(cadenaA4HiIJ73)0

-so de Vectores dentro de las Funciones

1n !ector, solo puede ser argumento ormal, es decir# por el momento, no podemos en!iarlo como !alor deretorno., digo por el momento por que cuando hablemos de punteros, !eremos que si se pueden en!iar.

> dicho proceso se realiza de la siguiente manera)

+. ,eclaraci$n o rototipo:

4ipo]de]dato nombre de la uncion %tipo]de]dato&#

-. Llamado de la Funci$n

Page 88: Programar Lenguaje C

7/23/2019 Programar Lenguaje C

http://slidepdf.com/reader/full/programar-lenguaje-c 88/98

Tombre]de]la]uncion%nombre del !ector&#

. ,efinici$n de la funci$n

4ipo]de]dato nombre de la uncion %tipo]de]dato nombre&

*+emplo =02

@iseñe un programa en C, que lea un !ector de un má(imo de -M posiciones, y luego determine)

5La suma de todos los !alores

5El mayor de los !alores, as" como la posición del mismo.

se sabe que dichos datos son de tipo entero

Dinclude stdio.hF

Dinclude conio.hF

Ddeine T -M

int suma %int T&# G;@eclaración de la unción;G

!oid mayor %int T&# G;Qjo, los argumentos que son !ectores solo necesitan el tipo de dato y la dirección;G

main%&

I

int numerosT, i#

print%2/ngrese la Cantidad de Xalores)Jn2&#

scan%2Kd2, limite&#

Rhile%limiteM \\ limite FT&

or%i6M# iT# i<<&

I

print%2/ngrese el elemento Kd del !ector)Jn2, i&#

scan%2Kd2, numerosi&#

N

print%2La suma de todos los elementos del !ector es) KdJn2, suma%numeros&&#

Page 89: Programar Lenguaje C

7/23/2019 Programar Lenguaje C

http://slidepdf.com/reader/full/programar-lenguaje-c 89/98

mayor%numeros&# G;Llamado de la unción ;G

getch%&#

return M#

N

int suma %int numeros T& G;@einición de la unción ;G

I

int sum6M, i#

or%i6M# iT# i<<&

sum6sum<numerosi#

return %sum&#

N

!oid mayor %int numeros T&

I

int pos6M, mayor6numerosM, i#

or%i6+# iT# i<<&

I

i%numerosiFmayor&

I

mayor6numerosi#

pos6i#

N

N

print%2El !alor mayor es Kd y esta en la posiciHn KdJnJn2, mayor, pos&#

N

El lector, debe preguntarse, que pasar"a si e(isten dos !alores e(actamente iguales que sean los !aloresmá(imos y que por ende, estén en dierentes posiciones, que solución le dar"as como programadorU... este

Page 90: Programar Lenguaje C

7/23/2019 Programar Lenguaje C

http://slidepdf.com/reader/full/programar-lenguaje-c 90/98

Page 91: Programar Lenguaje C

7/23/2019 Programar Lenguaje C

http://slidepdf.com/reader/full/programar-lenguaje-c 91/98

I

int matriz3C, i,j, !ector 36IM,M,M,M,M,MN#

or%i6M# i3# i<<&

or%j6M# jC# j<<&

I

print%2/ngrese el elemento 36Kd y Columna6Kd de la matriz)Jn2, i,j&#

scan%2Kd2, matrizij&#

!ectori6!ectori<matrizij#

N

print%2La Batriz generada es)JnJn2&#

or%i6M# i3# i<<&

I

or%j6M# jC# j<<&

I

print%2;Kd;2, matrizij&#

N

print%2Jn2&#

N

print%2> el !ector suma de las ilas es)JnJn2&#

or%i6M# i3# i<<&

print%2KdJt2, !ectori&#

getch%&#

return M#

N

Creo que no hay mucho por e(plicar, el uso de una matriz en C, es bastante parecido al de un !ector, perocon las dierencias que en un !ector tenemos 'nicamente una dimensión y en las matrices tenemos dos.

Page 92: Programar Lenguaje C

7/23/2019 Programar Lenguaje C

http://slidepdf.com/reader/full/programar-lenguaje-c 92/98

  continuación desarrollaremos un ejemplo, el cual es bastante signiicati!o para mi, ya que ue miprimer proyecto, cuando cursé la Bateria de *rogramación / en la 1ni!ersidad, espero que les guste)

*+emplo =05

Escriba un programa que !isualice un cuadro mágico de orden impar T, comprendido entre y ++# el usuario

debe elegir el !alor de T. 1n cuadro mágico se compone de n'meros enteros entre + y T, la suma de losn'meros que iguran en cada ila, columna y diagonal son iguales.

Ejemplo)

1n método de generación consiste en situar en el centro de la primera ila, el n'mero siguiente en la casillasituada por encima y a la derecha, y as" sucesi!amente ... el cuadro es c"clico, la l"nea encima de la primera,es de hecho, la 'ltima y la columna a la derecha de la ultima es la primera. En caso de que el n'merogenerado caiga en una casilla ocupada, se elige la casilla situada de bajo del n'mero que acaba de sersituado.

%1n poco complicado de entender... _!erdadU... no te preocupes, a mi me costó un poco

de tiempo entenderlo, para darle solución&

Dinclude stdio.hF

Dinclude conio.hF

Ddeine T ++

Ddeine B ++

int comprueba %int TB, int dim&#

!oid impresion %int TB, int dim&#

main%&

I

int cuadradoTB#

Page 93: Programar Lenguaje C

7/23/2019 Programar Lenguaje C

http://slidepdf.com/reader/full/programar-lenguaje-c 93/98

int dim, , c, i#

clrscr%&#

print%2/ntroduzca la dimenciHn por a!or)Jn2&#

scan%2Kd2, dim&#

Rhile%dim \\ dimF++&

I

print%2EAAQA, el !alor de la dimenciHn debe estar entre y ++)Jn2&#

scan%2Kd2, dim&#

N

Rhile%%dimK-&V6+&

I

print%2EAAQA el !alor de la dimenciHn debe ser /mpar)Jn2&#

scan%2Kd2, dim&#

N

or%6M# dim# <<&

or%c6M# cdim# c<<&

cuadradoc6M#

6M#

c6dimG-#

cuadradoc6+#

or%i6-# i6dim;dim# i<<&

I

55#

c<<#

i%M c66dim&

Page 94: Programar Lenguaje C

7/23/2019 Programar Lenguaje C

http://slidepdf.com/reader/full/programar-lenguaje-c 94/98

I

6+#

c6dim5+#

N

i%M&

6dim5+#

i%c66dim&

c6M#

 

i%cuadradocV6M&

I

c55#

6<-#

N

cuadradoc6i#

N

print%2La constante m gica es) KdJnJn2, comprueba %cuadrado, dim&&#

impresion%cuadrado, dim&#

getch%&#

return M#

N

int comprueba %int cuadrado TB, int dim&

I

int magic6+, ,c, consmagic, sum6M, i, j65+#

consmagic6%%dim;dim;dim&<dim&G-#

Page 95: Programar Lenguaje C

7/23/2019 Programar Lenguaje C

http://slidepdf.com/reader/full/programar-lenguaje-c 95/98

Page 96: Programar Lenguaje C

7/23/2019 Programar Lenguaje C

http://slidepdf.com/reader/full/programar-lenguaje-c 96/98

Page 97: Programar Lenguaje C

7/23/2019 Programar Lenguaje C

http://slidepdf.com/reader/full/programar-lenguaje-c 97/98

0. _Cuáles son los tipos de datos admitidos para losarreglosU)]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]] 

 ]]]]]]]] 

7. _Cuáles son las dierencias undamentales entre un arreglo y una !ariable simpleU ]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]] 

*+ercicios

. En una escuela se tiene el listado de M alumnos con sus respecti!as notos, diseñe unprograma que muestre las notas de los alumnos que tu!ieron una nota mayor que el promedio.

9. @iseñe un programa que dado un !ector de magnitud =, busque y muestre la posición en laque se encuentra un !alor T, dentro del !ector 

:. $e tiene dos !ectores y 8, diseñe una solución, en la cual, en un tercer !ector se guarde lamultiplicación de los !ectores y 8, y luego se impriman los tres !ectores, uno a la par del otro, en orma!ertical

P. @iseñe un programa en C, en el cual guarde un !ector de +MM posiciones, determine lamedia y la des!iación estándar.

+M. lmacenar 7M n'meros en un !ector, ele!ar al cuadrado cada !alor almacenado en el!ector, almacenar el resultado en otro !ector. /mprimir el !ector original y el !ector resultante

++. @iseñe un algoritmo y programa que lea dos !ectores y 8 de -M elementos cada uno ysume el primer elemento de con el ultimo elemento de 8 y luego el segundo elemento de por eldiecinue!ea!o elemento de 8 y as" sucesi!amente hasta llegar al !eintea!o elemento de por el primerelemento de 8. El resultado de la suma almacenarlo en un !ector C.

+-. $e desea conocer la suma de la diagonal mayor y la diagonal menor de una matriz de 3;C,e indique la dierencia matemática entre ambos resultados.

+. En una tiemda, hay : departamentos y se tiene el registro de las !entas del año pasado decada departamento por mes. $e desea conocer) el departamento que tu!o mayores !entas a lo largo deaño. El departamento que tu!o menores !entas en el año. El mes en que se !endió más en eldepartamento n'mero y los meses y el departamento que superó las !entas promedios as" como el totalde lo !endido a lo largo de año.

+0. $e tienen dos Batrices de tamaño 0(0, se pide escriba un programa en el cual,. Bedianteun men', se puedan sumar, multiplicar o di!idir las matrices.

+M. El departamento de polic"a de la ciudad de $an $al!ador ha acumulado inormación reerente a lasinracciones de los l"mites de !elocidad durante un determinado periodo de tiempo. El departamento hadi!idido la ciudad en cuatro cuadrantes y desea realizar una estad"stica de las inracciones a los l"mites de!elocidad en cada uno de ellos. *ara cada inracción se ha preparado una tarjeta que contiene la siguienteinormación)

numero de registro del !eh"culo#

cuadrante en el que se produjo la inracción

Page 98: Programar Lenguaje C

7/23/2019 Programar Lenguaje C

http://slidepdf.com/reader/full/programar-lenguaje-c 98/98