Tip:
Highlight text to annotate it
X
[Powered by Google Translate] TOMMY MacWilliam: Imos falar sobre loops, un dos común
construcións de programación, imos ver ao longo CS50.
Nós imos empregar loops cando queremos realizar unha
tarefa máis que dunha vez.
Por exemplo, podemos querer imprimir "Ola!" 100 veces ou impresión
todas as letras do alfabeto.
En ambos os casos, temos unha cousa que queremos facer
varias veces, imprimir algo.
Con todo, o que imprimir cada tempo pode variar.
Así, podemos facer algo un pouco diferente en cada
iteração, ou percorrer, do loop.
Imos ver tres diferentes tipos de loops en C, mentres que
loops, loops, e facer mentres loops.
Aínda que estes tres tipos de tirantes teñen unha sintaxe distinta,
as ideas detrás delas son o mesmo.
Imos definir un bloque de código dentro de chaves,
chamada o corpo do loop, que desexamos ser executado
un determinado número de veces.
Ao cambiar os valores de variables usadas no corpo,
pode facer o noso lazo facer algo diferente cada vez que se executa.
Con calquera lazo que escribimos, imos tamén precisa decidir cando o
loop pode deixar de correr.
Se non facemos iso, entón o noso fiel ordenador vai seguir
para realizar este ciclo ata que matar o programa.
En Scratch, poderiamos usar a repetición n veces
bloque para crear un loop.
Todos os anacos dentro dun bloque que dixo repetición 10
sería executado 10 veces.
E entón, a xente pasar as pezas despois de que o loop.
Polo tanto, a nosa condición de parada foi simplemente, este bloque foi
executar 10 veces.
Entón, imos recrear iso C. Para cero para garantir
que as pezas no interior do bloque de repetición son executados
exactamente 10 veces, Scratch precisa manter o control de cada
execución do bloque de repetición.
Para manter o control de cantas veces o noso corpo do lazo foi
executado, imos crear unha variable chamada i.
Imos comezar i off en cero, xa que o noso circuíto
non foi executado aínda.
Ok
Agora imos usar a palabra clave, mentres que para comezar a nosa loop.
Agora necesitamos descubrir cando o noso loop pode parar, pero
imos deixar isto por agora e despois volver a el.
Todo ben.
Dentro do noso lazo, imos imprimir unha mensaxe, como
"Ola". Podemos usar a función printf para iso.
Todo ben.
Entón agora imos rexistrar que unha iteração do loop ten corpo
foi executado.
Podemos facelo engadindo unha ou incremento, o noso contador
variable, i.
Para iso, podemos dicir i é igual a i + 1, ou máis
simplemente, i máis aló.
Grande.
Entón agora podemos ver que cada vez que o loop é executado, o noso
variable de contador vai ata a un.
Entón, nós sabemos exactamente cantas iterações nós funcionamos ata agora.
Despois dunha iteração do loop, o noso valor
i será 1.
Despois de dúas iterações, vou ser 2.
E despois de 10 iterações, vou ser 10.
Polo tanto, se quere executar este loop exactamente 10 veces, entón
é dicir, cando queremos parar.
Entón, nós queremos facer esta loop while i é inferior a 10, e
que é o que vou escribir, mentres eu
é inferior a 10.
Esta condición parece, como as condicións que usan en si
bloques máis.
Despois de que o corpo do noso lazo foi executado, o noso programa
vai ir de volta para a condición de lazos.
Se a condición é certa, entón o corpo da
lazo será executado de novo.
Se a condición non é verdade, entón o noso lazo non será
correr máis e vai pasar á seguinte liña de código
debaixo do noso loop.
Todo ben.
Entón, imos dar un ollo a un segundo tipo de
loop, o loop for.
Ao lado da palabra clave, mentres, entre parénteses, tivemos unha cousa,
a condición de que precisaba para ser verdade para o
corpo do lazo ser executado.
Isto significa que tivemos de crear a nosa variable de contador fóra
do circuíto e lembre de incrementa-lo nalgún punto
no interior do lazo.
A cabeceira para o noso loop for, por outro lado, ten tres
partes, cada unha das cales vai ser separados cun punto e coma.
No noso primeiro terzo, podemos declarar calquera mostrador ou axudante
variables que quere usar no noso loop.
Na práctica, isto pode ser realmente útil.
Nós realmente non precisa desa variable, i, despois do noso tempo
lazo foi executado, entón nós realmente non debería ter que declara-lo
fóra do circuíto.
O segundo terzo será condición que debe ser certa
para o corpo a ser executada unha vez máis, como
no noso loop while.
No noso último terzo, podemos executar unha instrución que será
executado despois de cada iteração do loop, entón non temos
para constrúe-lo no corpo do lazo.
Entón imos escribir un loop for que conta atrás de 5 a 1.
Imos comezar coa palabra clave para.
Podemos crear unha variable de contador en primeiro lugar, que imos
definido para 5 neste momento, xa que estamos en conta atrás,
seguido por un punto e coma.
A continuación é a nosa condición, que imos volver.
En terceiro lugar, quere diminuír a nosa variable contador logo
cada iteração do loop.
Entón, en vez de dicir que eu máis máis, imos dicir que eu menos menos.
Todo ben.
Entón, queremos que o corpo do lazo sexa executado mentres i é aínda
maior que 0.
No corpo do lazo, imos imprimir o valor de i.
Para iso, imos utilizar a función printf, usando o% d
espazo reservado.
Lembre, este marcador de posición será substituído co
valor de i.
Finalmente, imos engadir unha declaración despois do noso loop for.
Cando executar este loop, eu vou comezar a 5,
so 5 serán impresos.
Unha vez que eu comeza a 0, a condición de continuación, i é
maior que 0, non vai máis soster.
Así, o noso ciclo vai deixar de realizar, e imos ver o
instrución tras o loop.
Entón, imos realizar este código.
En primeiro lugar, imos compilar un
countdown.c con facer conta atrás.
Agora, podemos executar este código con. Conta atrás /.
En ambos os circuítos, mentres e loops, a continuación
condición comprobarase antes de o corpo
do lazo execútase.
Isto significa que, se a nosa condición non é, inicialmente,
verdade, entón o corpo do noso lazo nunca será executado.
Entón, ás veces é útil para verificar a condición tras a
corpo do lazo, en vez de antes.
Entón imos escribir un loop para avisar o usuario para un número
ata que un número positivo é subministrado.
Se o usuario introduce un número negativo, imos querer preguntar-lles
a outro número.
Entón, nós imos querer esta solicitude para estar dentro do
corpo fóra do loop.
Con todo, cando o lazo execútase por primeira vez, o usuario
non nos deu o seu número aínda.
Polo tanto, non ten sentido para comprobar que é positivo.
En vez diso, vai querer comprobar o número tras o corpo
o loop é executado.
Podemos facelo con un do while.
En primeiro lugar, imos crear unha variable, n, que realizará
de entrada do usuario.
Agora imos usar a palabra clave do, seguido de claves que
vai comezar o corpo do noso loop.
No corpo, o que pode levar o usuario a un número co
GetInt función.
Agora, imos querer o corpo deste loop para realizar novamente se
o usuario inseriu un número negativo, así que imos dicir mentres n
é menor que 0.
Teña en conta o punto e coma aquí despois da declaración de tempo.
Entón, imos realizar este código.
En primeiro lugar, imos compilar este con make positivo.
Agora podemos executar o programa con. / Positivo.
Se dar a este programa un número negativo, como negativa
4, entón imos ser solicitado de novo para un número sempre que o
condición do noso loop Do While era verdade.
Unha vez que dan un número positivo, como 8, entón o
condición do noso loop Do While non será máis certo.
Así, o loop non será executado de novo.
E é que para os tres tipos de loops que usaremos en C.
O meu nome é Tommy, e este é o CS50.