Sunteți pe pagina 1din 17

PROGRAMACINENC

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.

S-ar putea să vă placă și