Está en la página 1de 26

Dr.

Mario Rossainz Lpez

Programacin 1

Cap 1. Conceptos Bsicos

2. INTRODUCCINALLENGUAJE

2.1. HISTORIAYDESARROLLODELLENGUAJE

El lenguaje de programacin C fue desarrollado por Dennis Ritchie en 1972 en los


Laboratorios Bell mejorando el lenguaje B de Thompson, el cual a su vez, deriva del
lenguaje BCPL de Martn Richards. En un principio C sirvi para mejorar el Sistema
OperativoUNIXporloqueseconsiderasulenguajenativo.Apartirdeahyarazdesu
popularidad, empezaron a surgir muchas implementaciones del lenguaje C. Por ese
motivo,sehizonecesariodefinirunestndarqueestrepresentadoporelestndarANSI.

El diseo de C incluye entonces una sintaxis simplificada y de alta portabilidad, la


aritmtica de direcciones de memoria permite al programador manipular bits, bytes y
direcciones de memoria, por lo que se considera no slo un lenguaje de alto nivel, sino
tambin un lenguaje de nivel medio y el concepto de apuntador fue diseado para
generarcdigoseficientesparaproducirunaportabilidadtotal,esdecir,quefueraposible
adaptar el software escrito para un tipo de computadora o sistema operativo en otro.
Logrado los objetivos anteriores C se convirti en el lenguaje preferido por los
programadoresprofesionales.

Una caracterstica importante del lenguaje C, es que ste no lleva comprobaciones de


erroresentiemposdeejecucin,porlotantoelprogramadoreselnicoresponsablede
llevaracaboesascomprobaciones.

Setratadeunlenguajeestructurado,esdecir,tienelacapacidaddeseccionaryesconder
del resto del programa toda la informacin y las instrucciones necesarias para llevar a
cabounadeterminadatarea.Estopermitemodularizarlasdistintaspartesdelprogramay
reutilizarelcdigo.

CaractersticasdeC.
EllenguajeCesunlenguajedeusogeneral,conunasintaxiscortayunjuegode
operadorespotente
C como ya se coment es de nivel medio y explota por tanto los recursos de
harwareascomoelmanejodelasdireccionesylosbits
No posee operaciones de entradasalida, ni mtodos de archivos y tampoco
manejalosobjetoscompuestoscomolascadenasdecaracteres.Estasoperaciones
sehacenpormediodefuncionescontenidasenlibrerasexternasallenguaje
Cesunlenguajeestructurado.LaestructurabsicadeunprogramaenCsehace
alrededor del concepto de funcin la cual puede tener sus propias variables
locales,accederavariablesglobalesdelprogramaydevolvervaloresoninguno.
C es un lenguaje que permite una compilacin separada de los programas y
enlazarlos entre si junto con las bibliotecas externas para formar el programa
ejecutablecompleto.
15

Dr. Mario Rossainz Lpez

Programacin 1

Cap 1. Conceptos Bsicos

CestadefinidobajoelestndarANSI.Sucreacinyusosiguelasnormasdeeste
estndar y por tanto, todo lo expresado en l ser utilizable con cualquier
compiladorqueseadopteycumplaconelestndar.

2.2. IDENTIFICADORESESTANDAR

Losidentificadoressonnombresqueselesdaavarioselementosdeunprograma,tales
comolasvariables,constantes,funciones,tiposyetiquetas.Unidentificadorseformade
letras y dgitos en secuencia, las letras pueden ser maysculas o minsculas (una letra
maysculaesdiferentealamismaletraperoenminsculas)ylosdgitosvandel0al9.
Ademssepuedeutilizarelcarcterespecialdesubrayadooguinbajo(_).Comoregla,
elprimercarcterdeunidentificadordebeserunaletraoelcarcterdesubrayado.Por
ejemplo:
Suma
suma
Calculo_num_primos
Abc123
ab12C3
_ordenar
i
Hayciertaspalabrasreservadasdellenguajedenominadaspalabrasclave,quetienenenC
un significado estndar y por tanto no pueden ser utilizadas como identificadores
definidosporelprogramador.

2.3. PALABRASRESERVADAS

Las palabras reservadas son entonces identificadores predefinidos que tienen un


significado especial para el compilador de C. Un identificador definido por el usuario no
puedetenerelmismonombrequeunapalabrareservada.LAsiguienteesunalistadelas
palabrasclavesdelANSIC:

16

Dr. Mario Rossainz Lpez

Programacin 1

Cap 1. Conceptos Bsicos

AlgunasversionesdecompiladoresparaCpuedentenerpalabrasreservadasadicionales.
EsimportanterecalcarqueellenguajeCqueseestudiasebasaenelestndardelANSI
por lo tanto deberemos utilizar un compilador de C que est basado en ste estndar
independientementedelsistemaoperativoquesetrabaje.

2.4. ESTRUCTURADEUNPROGRAMA

TodoprogramaescritoenlenguajeCconstadeunaomsfuncionesdondeunadeellas
debedellamarsemain()yrepresentaelprogramaprincipaldelaaplicacin,problemao
algoritmo que se pretende resolver. El programa comienza su ejecucin en la funcin
main() desde la cual es posible hacer el llamado a otras funciones escritas fuera del
programaprincipal.
Como todos los lenguajes, siempre es bueno comenzar con un ejemplo sencillo de un
programa, en este caso de C, para entender su estructura. El siguiente programa es el
primer programa tpico, estndar que se utiliza para ejemplificar la estructura de un
programaenC:

#include<stdio.h>/*inclusindeunarchivoolibrera*/

voidmain(void)
{/*iniciaElcuerpodelprog.Principal*/
printf(HolaMundo!\n);/*imprimeenpantalla*/

return;/*regresaumvaloralsistema*/
}
HolaMundo.c

Explicacin:
#include <stdio.h>: #include es una directiva u orden para el compilador que le
dice que tiene que leer un archivo de cabecera o header, en este caso con el nombre
stdio.h,queesdondeestadefinidalafuncin printf()queseutilizaenelejemplo.Este
headercontiene todas las funciones de entrada y salida de C. Cuando un compilador se
encuentraconestadirectiva,losustituyeporelarchivoindicado.

Elcompiladortienevariasmanerasdebuscarunarchivodecabecera:

#include<stdio.h>/*Directoriodeinstalacin*/
#includestdio.h/*Directorioactivoenelmomento*/
#includec:\mi_header.h/*Directorioindicado*/

17

Dr. Mario Rossainz Lpez

Programacin 1

Cap 1. Conceptos Bsicos

void main(void): Es La funcin o programa principal. Todos los programas de C,


debentenerunafuncinllamadamain(),queserlaprimeraqueseejecutealllamarseel
programa.Elprimervoidquetienealprincipiosignificaquelafuncinnovaaregresar
ningn valor cuando sta termine su ejecucin. La palabra reservada void significa sin
tipo o cualquier cosa. El segundo void significa que la funcin no requiere que se le
proporcione ningn argumento para que pueda ejecutarse. Podra tambin haberse
escritocomovoidmain().

{...}:Todafuncindebeiniciarconunallavequeabreyterminaconunallaveque
cierra.Loqueestadentrodelasllavesselellamaelcuerpodelafuncinypuedeincluirel
llamadoafunciones,declaracionesdevariables,constantes,clculosaritmticos,lgicos,
etc.

/*inclusindeunarchivoolibrera*/:Estoesuncomentarioquenose
ejecuta por el compilador. Sirve para describir el programa de forma que tenga ms
claridadalahoradeleerelcdigofuente.UNcomentariopuedeocuparmsdeunalnea:

/*inclusindeun
archivoolibrera*/

Uncomentarioentoncesempiezaconloscaracteres/*yterminacon*/.Cualquiercosa
queseescribaentreestoscaracteres,elcompiladorlointerpretarcomouncomentario.

printf(Hola Mundo!\n); :Esta es la instruccin que el compilador ejecuta para


queelprogramarealicealgunaaccin.Enestecasolafuncinprintf()muestraelmensaje
Hola Mundo en la pantalla. Este mensaje es una cadena de caracteres que se escribe
entrecomillasdobles.Dentrodeestacadenaalfinalapareceelsmbolo\nqueprovoca
que despus de imprimir el mensaje, el cursor de la pantalla pase a la siguiente lnea.
TodaslasinstruccionesosentenciasdeCdebenterminarconunpuntoycoma,puesesla
manera en que el compilador sabe cuando termina una instruccin y cuando empieza
otra. Se pueden poner varias instrucciones en la misma lnea siempre que vayan
separadasorsuscorrespondientespuntosycomas.

return; :Es la instruccin que hace que las funciones regresen algn valor al sistema
cuyo tipo depende del tipo declarado en la funcin. En el caso del ejemplo, como la
funcin main() es una funcin sin tipo, es decir, no devuelve nada, entonces el uso del
returnsinregresarningnvalor,nossirvepararetornaralsistema.

18

Dr. Mario Rossainz Lpez

Programacin 1

Cap 1. Conceptos Bsicos

2.5. TIPOSDEDATOSESTANDAR(PRIMITIVOS)

ExistencincotiposdedatosatmicosenC:

charcarcter
intentero
floatrealdepuntoflotante
doublerealdedobleprecisin
voidsinvalor

Existen modificadores de tipos que se utilizan para alterar los tipos base (short, long,
unsigned,signed).Estosmodificadoresseaplicanalostiposbaseintychar,noobstante
longtambinsepuedeaplicaradouble.

LasiguientetablamuestratodoslostiposdedatosestandarenCylascombinacionesque
sepuedendarconlosmodificadoresdetipos:

A reserva de trabajar las cadenas ms adelante, definiremos una cadena como una
secuenciadecaracteresentrecomillasdobles.Silascomillastienenqueaparecercomo
partedeunacadena,elcarcterdelascomillasdebeirprecedidoporelcarcter\.

19

Dr. Mario Rossainz Lpez

Programacin 1

Cap 1. Conceptos Bsicos

2.6. DECLARACINDECONSTANTESYVARIABLES

2.6.1. VARIABLES

Una variable es un identificador o posicin de memoria representada mediante un


nombrequeseusaparamantenerunvalorquepuedesermodificadoporelprograma.
Todas las variables en C deben ser declaradas antes de ser utilizadas y su sintaxis es la
siguiente:

tiponombre_variable[,nombre_variable,...,nombre_variable];

dondetipodeterminaeltipodelavariable:int,char,etc.
nombre_variableindicaelnombredelavariableconlasreglasparadefiniridentificadores
Los corchetes [ ] indican que se puede definir en lnea ms de una variable del mismo
tiposeparadasporcomasyterminandoconunpuntoycoma.

Porejemplo:
inti,j,k;
floatlargo,ancho;
charc;

EliniciodeunprogramaenCsevedelasiguientemanera:

main()
{
declaracindevariables;

proposiciones;

return;
}

Las llaves {} encierran un bloque de proposiciones y se usan para enmarcar


declaraciones y proposiciones. Toda declaracin debe ir antes de las proposiciones. Las
declaracionestienendosobjetivos:

1. Pidenalcompiladorqueseparelacantidaddememorianecesariaparaalmacenar
losvaloresasociadosconlasvariables.
2. Debidoaqueseespecificanlostiposdedatos asociadosconlasvariables,stas
permitenalcompiladorinstruiralamquinaparaquedesempeecorrectamente
ciertasoperaciones.

20

Dr. Mario Rossainz Lpez

Programacin 1

Cap 1. Conceptos Bsicos

mbitodelasvariables
Segn el lugar donde se declaren las variables, tendrn un mbito. Dentro de las
funciones,esdecir,variableslocales,enladefinicindelosparmetrosdelasfuncioneso
parmetrosformalesyfueradetodaslasfuncionesllamadasvariablesglobales.

Variables Locales: Son aquellas que se declaran dentro de una funcin. Las variables
localesslopuedenserreferenciadas(utilizadas)porsentenciasoinstruccionesqueestn
dentro de la funcin que han sido declaradas. No son conocidas fuera de la funcin.
Pierden su valor cuando se sale y se entra en la funcin. Una variable local tambin es
aquella que est siendo referenciada slo por sentencias que estn dentro del bloque
dondeestndeclaradas.Unbloqueesaquelqueestencerradoentredosllaves.

voidfunc1(void)//lavariablexdeclaradaenfunc1()
{//noeslamismaqueladeclaradaenfunc2()
intx=10;
}

voidfunc2(void)//Lavariableydeclaradaenfunc2()
{//secreasoloalentrarenelfragmento
intx=20;//delprogramaydesaparecealsalirdel
{
inty;
y=2;
}
}

Parmetros Formales: Son los argumentos de una funcin. La declaracin de stas


variablessehaceentrelosparntesisdeunafuncin.Sucomportamientoesigualquelas
variableslocalesdecualquierfuncin,esdecir,desaparecenalterminarsuejecucin.

Floatmul(floatx,floaty)//Losparmetrosformalesde
{//lafunctionmul()sonxey
Return(x*y);
}

VariablesGlobales:Sonconocidasalolargodetodoelprograma,porlotantosepueden
usarencualquierpartedelcdigo.Mantienensusvaloresdurantetodalaejecucin.Las
variablesglobalessedeclaranporlogeneralalprincipiodelprograma,fueradetodaslas
funciones,incluidalafuncinmain().Inicialmentetomanelvalorceroonulosegneltipo.

intx;//lavariablexesglobal,puesest
//declaradafueradetodas
voidfun1()//lasfunciones
{

21

Dr. Mario Rossainz Lpez

Programacin 1

Cap 1. Conceptos Bsicos

y=x;//enlafunctionfun1()seaccedeala
x=10;//variableglobalx
}

voidfun2()//enlafunctionfun2(),xserefierea
{//lavariablelocal
intx;
x=3;
}

EspecificadoresdeAlmacenamiento:
Existencuatrotiposdeespecificadoresdealmacenamiento:extern,static,register.Estos
especificadoresindicanalcompiladorcmodebealmacenarlasvariables.Susintaxises:

especificadortiponombre_variable[,nombre_variable,...,nombre_variable];

extern:DadoqueenCesnormallacompilacinporseparadodemdulosquecomponen
unprogramacompleto,guardadoscadaunoensucorrespondientearchivo,puededarse
elcasodequesedebautilizarunavariableglobalqueseconoczcaenlosmdulosquenos
interesesinperdersuvalor.Lapalabraexternindicaalcompiladorquelasvariablesque
siguen ya han sido declaradas en alguna otra parte y por tanto, no se crea una nueva
variable.

intx,y;
charc;
...
fun1()
{
x=10;
}
Archivo1

externintx,y;
externcharc;//Lasvariablesx,y,cdeclaradaseneste
...//archivo2sonexactamentelasdeclaradasen
fun11()//elarchivo1
{
x=y;
}
Archivo2

static: Si se quiere mantener el valor de una variable local entre una llamada y otra sin
perder por ello su mbito, sta tendr que ser declarada como static. Cuando se aplica
static a una variable local, su valor se retiene entre llamadas de funciones y se crea un

22

Dr. Mario Rossainz Lpez

Programacin 1

Cap 1. Conceptos Bsicos

almacenamientopermanenteigualquelasvariablesglobales(aunquesiguedesconocida
fueradesumbito).Cuandoseaplicastaticaunavariableglobal,seindicaalcompilador
que cree una variable conocida nicamente en el archivo. Ninguna funcin de otros
archivospuedeteneraccesoaella.

serie(void)//Cadallamadaalafuncinserie1()produce
{//unNuevovalorn,basndoseenelnmero
staticintn;//anterior
n=n+23;
}

serie2(void)//enlasegundafuncinserie2(),elvalorde
{//nseinicializaa10,peronocadavezquese
staticint=10;//llamealafunctionserie2(),comoeselcaso
n=n+23;//delasvariableslocales
}

register:Envezdequeunavariableseamantenidadentrodeunaposicindememoriade
lacomputadora,seguardaenregistrosinternosdelmicroprocesador.Deestamanerael
acceso a ellas es ms rpido y directo. Se aplica nicamente para las variables locales y
nunca para las variables globales. Se suele usar para almacenar los contadores de los
ciclos(for,while,repeat).

2.6.2. CONSTANTES

Unaconstanteesunvalorfijoquenopuedesermodificadoporelprograma.Puedeserde
cualquiertipodedatosbsicos.Lasconstantesdecarctervanencerradasentrecomillas
simples, Las constantes enteras se especifican con nmeros sin parte decimal y las de
punto flotante con su parte entera separada por un punto de su parte decimal. Las
cadenasdecaracteresirnencerradasentrecomillasdobles.Porejemplo:

Flotantes
Enteros
Cadenas
Caracter
3.10
10
HolaMundo
a
0.987
1234

UnaconstanteenCsedefinedelasiguientemanera:

#defineidentificadorvalor

Donde#defineesladirectivadeCqueseutilizaparadefinirconstantes.
identificadoreselnombredelaconstantey
valoreselvalorasociadoalaconstante.

23

Dr. Mario Rossainz Lpez

Programacin 1

Cap 1. Conceptos Bsicos

Ejemplos:

#define
entero
10
#define
real
1.09982
#define
cad
Estoesunacadena
#define
car
a

2.7. EXPRESIONES,PROPOSICIONESYASIGNACIONES

Las expresiones son combinaciones de contantes, variables, operadores y llamadas a


funciones.Algunosejemplosson:

tan(1.8)
a+b*3.0*9.3242
3.77+sen(3.14*98.7)

Un operador es un smbolo que indica al compilador que se lleven a cabo especficas


manipulaciones matemticas o lgicas. En C se tienen tres clases de operadores:
aritmticos,relacionesylgicosincluyendoalosdebits.

Elsignode=eseloperadorbsicodeasignacinenC.Cuandounaexpresinvaseguida
deunpuntoycomaentoncesstaseconvierteenunaproposicin.Lasproposicionesde
asignacintienenlasiguientesintaxis:

variable=expresin;

Porejemplo:
x=Tan(1.8);
r=a+b*3.0*9.3242;
3.77+sen(3.14*98.7);

OperadoresAritmticosBinarios:

24

Dr. Mario Rossainz Lpez

Programacin 1

Cap 1. Conceptos Bsicos

PrioridaddelosOperadoresAritmticos:

OperadoresRelacionales:

OperadoresLgicos:

25

Dr. Mario Rossainz Lpez

Programacin 1

Cap 1. Conceptos Bsicos

OperadoresdemanejodeBits
Losoperadoresparaestetipodeoperacionestienenqueserdetipoenterodeunoodos
bytesochar,nopuedenserreales.

OperadoresdeAsignacin:

26

Dr. Mario Rossainz Lpez

Programacin 1

Cap 1. Conceptos Bsicos

Tabladeprioridadesdelosoperadores:

Otrosoperadores:
El operador de indireccin (*) accede a un valor indirectamente a travs de un
apuntador.Elresultadoeselvalordireccionadoporeloperando.

Eloperadordedireccin(&)indicaladireccindesuoperando.Esteoperadornose
puedeaplicarauncampodebitspertenecienteaunaestructuraoaunidentificador
declaradoconelespecificadorregister.

2.8. ENTRADAYSALIDABSICA

LasoperacionesdeentradaydesalidanoformanpartedelconjuntodesentenciasdeC,
sinoquepertenecenalconjuntodefuncionesdelalibreraestndardeentradaydesalida
deC,esdecir,estndefinidasenelarchivostdio.h.Cuandoseempleaalgunafuncinde
entrada y salida, se debe incluir ste archivo al comienzo del programa mediante la
directiva: #include <stdio.h> y el compilador inserta el cdigo fuente al comienzo del
archivodenuestroprograma.
Lassiguientesfuncionessonalgunasdelasmsutilizadasparalaentradaysalidadedatos
enC:printf,scanf,getch,getchar,puts,gets.Todasycadaunadeellastieneunasintaxis
quelasidentifica.

2.8.1.Salidadedatosconformato(usodeprintf)
Para visualizar los datos por la pantalla se dispone de la funcin printf() que permite
formatearlasalida.Estafuncinpuedevisualizarunacombinacindevaloresnumricos,
caracteresycadenasdecaracteres.Susintaxiseslasiguiente:

printf(cadena_de_control,arg1,arg2,...,argn);

27

Dr. Mario Rossainz Lpez

Programacin 1

Cap 1. Conceptos Bsicos

La cadena de control especifica cmo va a ser la salida. Es una cadena delimitada por
comillas, por caracteres ordinarios, secuencias de escape y especificaciones de formato
bajoelcualserequierelasalidadelainformacinhaciapantalla.

Lalistadeargumentosarg1,arg2,...argnrepresentaelvalorovaloresaescribirenla
pantalla.Unaespecificacindeformatoestcompuestapor:

%[flags][width][.prec][F|N|h|l|L]tipo_de_dato

Cadaunodelosdatosquesedeseemandaraimprimirdebeirantecedidoporelcarcter
%ydespusdebedevenir(eneseorden)losiguiente(noesnecesarioponertodo,loque
seencuentraentrecorchetesesopcional):

COMPONENTE ESPECIFICACIN
flags
Justificacin,etc.
width
Nmerodedgitossignificativosparteentera
.prec
Nmerodedgitossignificativospartereal
F|N|h|l|L
ModificadoresdeSalida
N=Nearapuntador
F=farApuntador
h=enterocorto
l=enterolargo
L=reallargo
Tipo_de_dato c=imprimeuncarcter
d=imprimeunentero
e=notacincientfica
s=imprimeunacadena
f=decimalenpuntoflotante

Ejemplo:

printf(holaPueblasonlas%d\n,tiempo);

Otroejemplo:

n1=5;
n2=6.7;
printf(Eldato1es:%dyeldato2es%f\n,n1,n2);

28

Dr. Mario Rossainz Lpez

Programacin 1

SecuenciasdeescapeenlenguajeC

Cap 1. Conceptos Bsicos

2.8.2. Entradadedatosconformato(usodescanf)

Lafuncinscanf()leelosdatosdesdeeltecladoconformato.Susintaxises:

scanf(cadena_de_control,arg1,arg2,...,argn);

La cadena de control contiene informacin sobre el formato de las entradas y son


idnticosalosformatosvistosenlafuncinprintf().Esdecir,seformaporcdigosde
formatodeentrada,queestnprecedidosporunsignode%yencerradosentrecomillas.

29

Dr. Mario Rossainz Lpez

Programacin 1

Cdigosdeformatodescanf()

Cap 1. Conceptos Bsicos

Losargumentosarg1,arg2,arg3,...,argnsondireccionesdelasvariablesyparaellosse
debe utilizar el operador de direcciones (&). La lista de valores por tanto representa el
valor o valores a escribir en pantalla. Una especificacin de formato para scanf() esta
compuestapor:

30

Dr. Mario Rossainz Lpez

Programacin 1

Cap 1. Conceptos Bsicos

Ejemplo:
printf(Daunnumero:);
scanf(%d,&n);

Cuando se especifica ms de un argumento, los valores correspondientes en la entrada


hayquesepararlosporunoomsespaciosenblanco,tabuladoresycambiosdelnea.La
funcin scanf() devuelve un entero correspondiente al nmero de datos ledos de la
entrada:

Otroejemplo:

main()
{
inta,r;
floatb;
charc;
printf(Introducirunvalorentero,unrealyuncaracter\n=>);
r=scanf(%d%f%c\n,&a,&b,&c);
printf(Numerodedatosleidos:%d\n,r);
Printf(datosleidos:%d%f%c\n,a,b,c);
}

Para leer datos de tipo cadena no lleva el operador de direccin &. Y tenemos que
cambiarelformato%spor%[^\n].Porejemplo:

charnombre[40];
31

Dr. Mario Rossainz Lpez

Programacin 1

Cap 1. Conceptos Bsicos

scanf(%[^\n],nombre);
printf(%s,nombre);

Entrada:FranciscoJavier
Salida:FranciscoJavier

Si en lugar de especificar el formato %[^\n] se hubiera especificado el formato %s, el


resultadohubierasido:Francisco.

2.8.3.EntradaySalidasinformato

Paraleeruncarcterdesdeeltecladooimprimirloenpantalla,seempleanlassiguientes
funciones:

En la tabla anterior se encuentran tambin las instrucciones para leer o escribir una
cadenadecaracteres.Estasson:gets()yputs()respectivamente.Acontinuacinunos
ejemplos.

32

Dr. Mario Rossainz Lpez

Programacin 1

Cap 1. Conceptos Bsicos

2.9. ESTRUCTURASDECONTROL

Cuandoseresuelvenproblemasgenerandoprogramasdecomputadora,enestecasoen
lenguaje C, lo ms probable es que necesitemos de algn tipo de elementos de control
lgicoocomprobacionesdecondicionesqueseanciertasofalsas(seleccinodecisin).
Adems los programas pueden requerir que un grupo de instrucciones se ejecute
repetidamenteundeterminadonmerodeveces,ohastaquesesatisfagaunacondicin
lgica(cicloderepeticin).
En el lenguaje C se incluyen entonces la instrucciones de decisin if y switch y las
sentenciasderepeticin,for,while,do/while.

2.9.1.LaProposicinif
Lasintaxisdelaproposicinifeslasiguiente:

if(expresin)
{
proposiciones;/*bloque*/
}
proposicinsiguiente;

Dondeexpresindebeserunaexpresinnumrica,relacionalolgica.
Si se tiene una sola proposicin, no es necesario introducir las llaves. Si tenemos varias
proposicionesarealizar,estasirnseparadasconsusrespectivospuntosycomas.
Si el resultado de la expresin es verdadero (cualquier valor diferente de cero), se
ejecutar la proposicin o proposiciones. Si el resultado es falso entonces no se realiza
ningunaaccinycontinuaelflujodelprogramaalasiguientelneadecdigodespusdel
if(proposicin_siguiente).

33

Dr. Mario Rossainz Lpez

Programacin 1

Cap 1. Conceptos Bsicos

Porejemplo:

if(grado>=90)
printf(\nFELICIDADES);
printf(\nsugradoes%d,grado);

LaProposicinelse
Elelseesoptativoysuaplicacinresultaenlaejecucindeunaounaseriedesentencias
(bloque) en el caso de que el resultado de la expresin del if sea falso. La sintaxis de la
proposicinifelseeslasiguiente:

if(expresin)
{
proposicin_1;/*bloque1*/
}
else{
proposicin_2;/*bloque2*/
}
proposicin_siguiente;

Porejemplo:

if(x<=y)
min=x;
else
min=y;

Las sentencias ifelse pueden estar anidadas, es decir, como proposicin_1 o


proposicin_2puedeescribirseotrasentenciaif.

34

Dr. Mario Rossainz Lpez

Programacin 1

Cap 1. Conceptos Bsicos

Porejemplo:

if(a>b)
printf(%desmayorque%d,a,b);
elseif(a<b)
printf(%desmenorque%d,a,b);
elseprintf(%desigualque%d,a,b);

Enlassentenciasdeseleccinenlasquehayslounelse,sepuedenreescribirmediante
eloperadorcondicional(?:)cuyasintaxiseslasiguiente:

(condicin)?(expresin1):(expresin2);

Lasexpresionesdebensersimplesynodebenformargruposdeinstrucciones.Primerose
evala la condicin y si sta es verdadera se ejecuta la expresin1, sino se ejecuta la
expresin2.

2.9.2. LaProposicinswitch

sta proposicin permite ejecutar una de varias acciones, en funcin del valor de una
expresin.Lasintaxisdeestaproposicines:

switch(expresintest)
{
caseconstante1:sentencia;
caseconstante2:sentencia;
caseconstante3:sentencia;
...
caseconstanten:sentencia;
default:sentencia;
}

35

Dr. Mario Rossainz Lpez

Programacin 1

Cap 1. Conceptos Bsicos

Expresintest es una constante entera, una constante de caracteres, o una expresin


constante. El valor es convertido a tipo int. Sentencia es una sentencia simple o
compuesta.
El switch empieza con la evaluacin de la expresin, y luego se compara sucesivamente
con todas las etiquetas. Cuando se iguala con alguna de ellas se ejecutan las sentencias
correspondientes. Se suele utilizar la palabra reservada break dentro de las etiquetas
(case:) la cual provoca que termine la ejecucin del switch despus de ejecutar las
sentenciasdealgunaetiqueta.Alfinalapareceunaetiquetaoptativallamadadefault:que
quieredecirque,sinosehacumplidoningncaseseejecuteloquesigue.

2.9.3. LaProposicindeiteracinfor

Cuandosedeseaejecutarunaaccinsimpleounbloquedeinstrucciones,repetidamente
unnmerodevecesconocido,esrecomendableutilizarlaproposicinfor,cuyasintaxises
lasiguiente:

for(inicializacin;condicin;incremento)
{
sentencia1;
sentencia2;
.....
sentencia_n;
}

36

Dr. Mario Rossainz Lpez

Programacin 1

Cap 1. Conceptos Bsicos

donde:

inicializacinesunaproposicindeasignacinparaestablecerelvalorinicialdelavariable
decontrol.Sepuedenestablecervariasvariablesdecontrolenunciclofor.

Condicinesunaexpresinrelacionalolgicaquedeterminacuandoterminarelciclode
repeticin.

Incremento define cmo cambiar la variable de control o las variables de control, cada
vezquecambiaeste.

2.9.4. LaProposicindeIteracinwhile

Esta proposicin ejecuta una sentencia simple o compuesta, cero o ms veces


dependiendodelvalordeunaexpresin.Susintaxiseslasiguiente:

while(expresin)
{
sentencia1;
sentencia2;
.....
sentencia_n;
}

Una proposicin while se ejecuta mientras la expresin sea verdadera (cualquier valor
distinto de cero). En el momento en que la expresin sea falsa, entonces se ejecuta la
siguientelneadespusdelfindelciclo.Porejemplo:

37

Dr. Mario Rossainz Lpez

Programacin 1

Cap 1. Conceptos Bsicos

charca;
ca=0;
while(ca!=A)
{
ca=getchar();
putchar(ca);
}

2.9.5. LaProposicindowhile

Estaproposicinejecutaunasentenciaovarias,unaomsvecesdependiendodelvalor
deunaexpresin.Susintaxises:

do{
sentencia1;
sentencia2;
.....
sentencia_n;
}while(expresin);

Enlasentenciadowhileseejecutaprimerolasentenciaobloquedesentenciasqueestan
dentrodeldo.Despusseevalalaexpresinysistaesfalsaterminalaproposicindo
while,sinoserepotelasentenciaosentenciasqueestndentrodeldo.Porejemplo:

intn;
do{
printf(\ndaunnmero:);
scanf(%d,&n);
}while(n>100);

2.9.6.Lassentenciasbreak,continueylafuncinexit()

La sentencia break: Esta sentencia ya descrita en el uso del switch, tambin sirve para
terminar ciclos producidos por el for, while y dowhile, antes de que se cumpla la
condicinnormaldeterminacin.Porejemplo:

38

Dr. Mario Rossainz Lpez

Programacin 1

Cap 1. Conceptos Bsicos

for(t=0;t<100;t++)
{
contador1;
do{
Printf(%d,contador);
contador++;
ifcontador(==10)
break;
}while(1);
}

Lasentenciacontinue:Comestasentencia,envezdeterminarumciclo,terminaconLa
realizacin de La iteracin en curso saltando El resto de la pasada, ES decir, todas las
sentenciasqueseencuentrandespusdecontinue,parairalasiguienteiteracin.Igual
quebreak,sepuedeutilizarenlosciclosfor,whileydowhile.

Porejemplo:

do{
printf(Daunnumero:);
scanf(%d,&x);
if(x<0)continue;
printf(Elnumeroes%d,x);
}while(x!=100);

39

Dr. Mario Rossainz Lpez

Programacin 1

Cap 1. Conceptos Bsicos

Lafuncinexit():Otraformadeterminaruncicloderepeticindesdedentroesutilizarla
funcin exit(). A diferencia con el break, la funcin exit() terminar con la ejecucin del
programayregresarelcontrolalsistemaoperativo.

Porejemplo:

for(i=0;i<=1000;i++)
{
printf(Elvalordeies%d,i);
if(i>10)exit();
}

40