Documente Academic
Documente Profesional
Documente Cultură
INFORMTICAPARAINGENIERA
ControldeFlujo
1. Sentencias
2. Tiposdesentencias
Sentencias
Lasexpresiones deCsonunidadeso
componenteselementalesdeunasentidades
derangosuperiorquesonlassentencias.
Lassentenciassonunidadescompletas,
ejecutablesensmismas.
Yaseverquemuchostiposdesentencias
incorporanexpresionesaritmticas,lgicaso
generalescomocomponentesdedichas
sentencias.
ConjuntosdeSentencias
SentenciaSimple
Unasentenciasimpleesunaexpresinqueterminaconel
carcter(;).
Porejemplo:
float real;
Posicion = p_inicial + velocidad*tiempo;
SentenciaVaca
Enmuchasocasionesesnecesariointroducirenelprograma
unasentenciaquenorealizaningunatarea.
Aestasentenciaseledenominasentenciavaca
Porejemplo:
;
{ }
ConjuntosdeSentencias
Sentenciascompuestas
Unasentenciacompuestaesunconjuntodedeclaracionesyde
sentenciasagrupadasdentrodellaves{...}.
Tambinseconocenconelnombredebloques.
Unejemplodesentenciacompuestaeselsiguiente:
// Inicio de bloque
int i = 1, j = 3, k;
double masa = 3.0;
k = i + j;
}
// Fin de bloque. No necesita ;
TiposdeSentencias
Secuencial:Construidaporunaseriedesentenciasquese
ejecutansegnelordenenelquehansidoescritas.Esla
estructuramssimpleylapiezabsicaalahoradecomponer
sentencias.
Seleccin:Constadeunasentenciadedecisin(Test)ydeun
conjuntodeseleccindeinstrucciones.Segnelresultadode
unadecisin,seejecutarunadelassecuenciasde
instruccin.
Iteracin:Constadeunasentenciaespecialdedecisinyde
unasentenciadeinstrucciones.Lasecuenciadeinstrucciones
seejecutaradeformaiterativamientraslacondicinsea
verdadera.
TiposdeSentencias:
Esquema
Secuencia
Seleccin
Iteracin
Sent1
Verdadero
Sent2
Falso
cond
cond
Falso
Verdadero
Sent...
Sent_A
Sent_B
Sent_s
SentN
Sentenciaif:Bifurcacinsimple
Estasentenciapermiteejecutaronounasentencia
dependiendodelresultadodelaevaluacindeunacondicin.
Tienelasiguienteformageneral:
if (condicion)
sentencia;
Explicacin:
Seevalacondicion .
Sielresultadoestrue(0),seejecutasentencia.
Sielresultadoesfalse(=0),sesaltasentenciayprosigue
enlalneasiguiente.
Recordarquesentenciapuedeserunasentenciasimpleo
compuesta(bloque{...}).
Sentenciaif:Bifurcacindoble
Estasentenciapermiterealizarunabifurcacin,ejecutando
unaparteuotradelprogramasegnsecumplaonouna
ciertacondicin.Laformagenerales:
if (expresion)
sentencia_1;
else
sentencia_2;
Explicacin:
Seevalaexpresion.
Sielresultadoestrue(0),seejecutasentencia_1yseprosigueenla
lneasiguienteasentencia_2.
Sielresultadoesfalse(=0),sesaltasentencia_1,seejecuta
sentencia_2
Hayqueindicaraqutambinquesentencia_1ysentencia_2pueden
sersentenciassimplesocompuestas(bloques{...}).
Problemadelanidamientodelif
if(expresion1)
if(expresion2)
sentencia_1;
else
senetencia_2;
Pregunta:Aquienperteneceelelse?
Opcin1:elelsepertenecealifdeexpresion1.
Opcin2:elelsepertenecealifdeexpresion2.
Estaesunabuenaraznparasangrar
convenientementeelcdigo!!
Problemadelanidamientodelif
if(exp1)
if(exp2)
sen1;
else
sent2;
V
V
exp2
exp1
if(exp1)
if(exp2)
sent1;
else
sent2;
exp1
F
exp2
sent2
sent1
sent1
sent2
Anidamientodeif
Encasodedecisionesmltiples,escomnelusode
anidamientoselseifdelaformaindicada:
V
exp1
exp2
V
V
sent1
sent2
exp2
V
sent3
sent4
Sentenciaswitch
Conelswitch,elprogramadortienelaposibilidaddeconstruir
deformasencillaunifmltiple,puestoquepermitetomar
decisionesparamsde2posibilidades.
Suusonospermiteevitarlargosyconfusosanidamientosde
elseif.
Sintaxis:
switch (expresin) {
case constante1: sentencia_1;
break;
case constante2: sentencia_2;
break;
default: sentencia_n;
}
DiagramadeFlujodeswitch
exp1
=c_a
=c_b
=c_c
=c
=c_n
sent1
sent2
sent3
Sent
sentn
Ejemplo:
Segmentodecdigoque
guardaenlavariable
diasmeselnumerode
dasquetieneunmes.
mes
Serecomiendaquetodos
losswitchtenganopcin
default,aunquenoes
obligatoria.
Ejemplo
PasarunanotadeformanumricaaTexto:
0X<5
5X<7.5
7.5X<9.0
9X<10.0
Suspenso
Aprobado
Notable
Sobresaliente
PasarunanotadeformaAmericanaatextoEuropeo.
A
B
C
F
D
E
Sobresaliente
Notable
Aprobado
Suspenso
Solucinnotasnumricas
Solucin notasformatoamericano(v1)
Solucinnotasformatoamericano(v2)
Sentenciasderepeticin:
LassentenciasderepeticinqueellenguajeCnos
proporcionason:
Buclefor
Seutilizacuandosesabedeantemanoelnumeroderepeticiones
quehayquehacer.
Buclewhile
Seutilizacuandonosesabedeantemanoelnumerode
repeticionesquehayquehacer.Inclusopudiendonoejecutar
ningunaiteracin.
Bucledowhile
Seutilizacuandonosesabedeantemanoelnumerode
repeticionesquehayquehacer.Perocomomnimoserealizauna
iteracin.
Buclesfor
Sintaxis:
for(inicializacin; condicin; incremento)
sentencia;
Inicializaci
n
Ejemplo:
cond
Terminar
Seguir
Sentencia
Incremento
Ejemplo
Programaquemuestraporpantallalosnumerospares
positivosmenoresque100.
Cuidadoconelbuclefor
Bucleinfinito:
for( ; ; ) ;
//bucle infinito.
Elfor enCesmuchomsgeneralencomparacinaotros
lenguajes.
Lostrescampospuedennotenerningnvnculoentre
ellos.
Inclusopuedennoexistir.
Ejercicio:
Hacerunprogramaquemuestrelatablade
multiplicardeunnumeroenconcretoledo
porteclado.
Ejemplo:
Tabladel:4(pedidoalusuario)
0*4=0
1*4=4
2*4=8
3*4=12
....
9*4=36
10*4=40
Buclesanidados
Losbuclestambinsepuedenanidar.
Losbuclesinternosyexternosnonecesitan
sergeneradosporelmismotipodeestructura
decontrol.Sinembargoesesencialqueun
bucleseencuentrecompletamenteincluido
dentrodelotro.
Cadabucledebesercontroladoporunndice
diferente.
Ejemplobuclesanidados
Escribirunprogramaqueimprimaelsiguientetexto:
1
1
1
1
.
1
2
2
2
2
.
2
3
3
3
3
.
3
4
4
4
4
.
4
5
5
5
5
.
5
6
6
6
6
.
6
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
n
n
n
n
.
n
Escribirunprogramaqueimprimaestepatrn.
1
1
1
.
1
2
2
2
.
2
3
3 4
. . . . . .
3 4 5 . . . . n
Solucin.
VerdaderoFalsoenC.
EnCnoexistenvariabledetipoBooleano(olgico)
Ensudefecto,cualquiervariablediscretapuedefuncionarcon
variablelgica.Deformaque:
0(cero):esfalso.
0(distintodecero):esverdadero.
Ejemplodeverdaderoyfalsoson:
inta=0;
//falso
//verdadero
charc=a;
longl=10028374;
//verdadero
charch=0;
//falso
Buclewhile
Permiteejecutarunaseriedesentenciasmientrassecumpla
unacondicin.
Sintaxis:
while(condicion)
sentencia;
Ejemplo:
Sentenciawhile
while(expresion)
sentencia;
Primeroseevalalaexpresion
sistaesfalsaelcontrolpasadirectamentealainstruccinsiguiente
(terminaelbucle).
siesverdaderaentoncesseejecutaelcuerpodelwhile(seejecuta
sentencia)devolviendoelcontrolalprincipiodelmismo.
Unadelasaccionesinternasdelbuclewhiledebemodificar
enunmomentodadounadelasvariablesqueintervienenen
laexpresinparaquelacondicinsehagafalsaysepueda
abandonarelbucle.
Sielcuerpodelbucleestaformadopormsdeuna
instruccin,senecesitanlasllavesquedelimitanelcuerpodel
bucle.
ElCuerpodelasentencia,puedenoejecutarsenunca!
Sentenciadowhile
Conlasentenciawhile,eltestdeterminacindelbuclese
realizaalcomienzodecadaiteracin.
Conlasentencia,dowhile eltestserealizaalfinaldecada
iteracin.
formato:
do
sentencia
while(condicion);
Ntesequelasentenciaseejecutaralmenosunavez.
Lasentenciapuedesersimpleocompuesta
Sentenciasbreakycontinue
Lainstruccinbreakfinalizaunbucledeformaincondicional
independientementedelvalordelacondicin.
Lainstruccincontinuehacequeelprogramasalteala
siguienteiteracinaunquenohayallegadoalfinaldelcuerpo
delbucle
for(;;){
scanf(%d, &i);
if (i < 0) continue;
if (i == 0) break;
printf ("%d",i);
}
Sentencia goto
Lasentenciagotoetiquetahacesaltaralprogramaa
lasentenciadondesehayaescritolaetiqueta
correspondiente.
NOTA:Lasentenciagotoesttotalmente
prohibida.