O tutorial de linguagem C mais forte da história ---- branch and loop (1)

contente

prefácio

Preparação antes da aula

Visão geral do conteúdo:

1. O que é uma declaração?

2. Declaração da filial (estrutura de seleção)

2.1 declaração se

2.1.1 Pendurado mais

2.1.2 Comparação de formulários de escrita


prefácio

Para um novato na linguagem C, é sem dúvida uma pena dizer essas palavras, mas tenho a confiança e a capacidade de falar a linguagem C para todos, e guiá-lo sistematicamente para a linguagem C. Também espero que todos possam acreditar em mim, apoiar me, e responda Nos próximos meses, continuarei atualizando esta série, claro, minhas notas serão atualizadas de forma síncrona, obrigado pelo apoio! Se você acha que o conteúdo é bom, por favor, dê um pequeno like e apoie!

Preparação antes da aula

Visão geral do conteúdo:

declaração de ramificação

E se

trocar

instrução de loop

enquanto

por

fazer enquanto

Acredito que todo mundo já ouviu uma frase: a linguagem C é uma linguagem de programação estruturada, mas por que você diz isso? Pense no que fazemos em nossa vida, existem três situações, a expressão da linguagem não é muito boa, deixe-me mostrar uma foto primeiro!

 Esta imagem não é muito boa, mas acho que todos deveriam entender o que quero dizer. Esses três métodos de fazer coisas ou resolver problemas também correspondem às três estruturas da linguagem C (tenho que suspirar a linguagem de design de programação original . Habilidade de generalização abstrata), este lugar precisa lhe dizer que existem apenas essas três estruturas na linguagem C , e estamos falando sobre instruções branch and loop hoje, que correspondem a estruturas branch and loop, então por que não falo sobre estruturas sequenciais?

Porque no computador, sem a participação da estrutura branch and loop, todos os programas são a estrutura sequencial padrão, ou seja, o programa é executado sequencialmente, então a estrutura sequencial não é necessária. A base da programação também é a lógica interna básica do Até certo ponto, no processo de ramificação e seleção de estruturas, a estrutura de sequência também está sendo realizada.

1. O que é uma declaração?

As instruções da linguagem C podem ser divididas nas cinco categorias a seguir:

(1) Declaração de expressão (por exemplo, y=x+3; assumindo que as variáveis ​​y e x são definidas)

(2) Instrução de chamada de função (MAX(x,y); assumindo que a função MAX() foi definida)

(3) Declaração de Controle

(4) Declaração composta (uma declaração formada pela composição de várias declarações)

(5) Declaração vazia (por exemplo, um ponto e vírgula em si pode ser usado como uma declaração, chamada de declaração vazia. Quanto ao papel de uma declaração vazia, falaremos sobre isso mais tarde)

Qualquer uma das instruções acima deve terminar com um ponto e vírgula!

As instruções branch e loop introduzidas hoje são instruções de controle.

As instruções de controle são usadas para controlar o fluxo de execução do programa para realizar vários modos estruturais do programa.Elas são compostas de definidores de instruções específicas.Existem nove instruções de controle na linguagem C.

Ele pode ser dividido nas três categorias a seguir:

1. Instrução de julgamento condicional (também chamada de instrução de ramificação): instrução if , instrução switch ;

2. Instruções de execução em loop: instrução do while , instrução while , instrução for ;

3. Vá para a instrução: instrução break , instrução goto , instrução continue , instrução de retorno .

2. Declaração da filial (estrutura de seleção)

Você conhece uma garota que você gosta, se você confessar, ela se torna sua namorada e você fica com ela;

Se você não confessar, ela se torna a namorada de outra pessoa, e você a observa deitada nos braços de outra pessoa e se arrepende.

Esta é a escolha!

 

 É claro que também existem várias opções. Se sua confissão for bem sucedida, ela se torna sua namorada; pelo contrário, se você não confessar, ela diz: Você é uma boa pessoa, se você não confessar, ela eventualmente torna-se namorada de outra pessoa. (Se você conhecer alguém que você gosta, você deve ser corajoso e confessar!!)

2.1 declaração se

Qual é a estrutura gramatical da instrução if?

Se a expressão entre colchetes de if() for verdadeira, a instrução a seguir será executada; se for falsa, a instrução a seguir não será executada e a instrução após o else será executada, então o que é verdade? O que é falso?

De acordo com a linguagem C, 0 é falso e não-0 é verdadeiro.

Deixe-me mostrar o código abaixo!

O primeiro é o caso de ramo único:

Depois, há o caso de ramificação dupla:

 A seguir, o caso de várias ramificações:

Ei, muitos alunos querem perguntar quando veem isso, é possível não escrever a idade anterior>=18 no julgamento condicional posterior no caso de multi-ramificação? Obviamente, claro que é possível, porque quando a idade<18 não é satisfeita antes, a idade deve ser maior que 18 neste momento, então, de acordo com a razão, não há problema se não escrevermos idade>=18 , mas este lugar , Recomenda-se que os alunos ainda queiram adicioná -lo, por quê? Escreveremos código no futuro, não apenas para nós mesmos, mas também para outros verem. Depois de adicioná-lo, a estrutura ficará muito clara e clara, o que é conveniente para os outros visualizarem e também propício para nossa manutenção e depuração posteriores .

Vendo isso, acredito que os alunos também terão essas dúvidas, ou seja, podemos escrever a expressão condicional (idade>=18&&idade<60) assim? (18<=idade<60) Eu acredito que todo mundo vai ter essas dúvidas, na verdade, é normal ter essas dúvidas, porque a gente escreve assim em matemática, mas é bom escrever assim? Vamos direto ao código!

 

Quando os alunos viram a primeira foto, ei, eu senti que não havia problema, mas quando eles viram a segunda foto, algo deu errado! Por que esse problema ocorre? Em seguida, vou analisá-lo para você! Sabemos que, > >= < <= == , esses operadores são operadores relacionais, se o resultado for verdadeiro, retorna 1, se o resultado for falso, retorna 0, e a direção da combinação é da esquerda para a direita (consulte sobre a direção de combinação de operadores, compartilharei a direção de combinação de vários operadores no final deste artigo na forma de imagens) , no segundo exemplo, inserimos 100, primeiro, após o primeiro se É óbvio que 100>18, não atende à condição e, em seguida, insere a primeira instrução else if a julgar, 18<=100, é verdadeira, retorna 1 e, em seguida, 1<60, é verdadeira , no final, o resultado de retornar 1 é válido, então "juventude" será gerado. Acredito que todos vão entender depois de vê-lo. Não pode ser escrito dessa maneira em um computador. Embora não haja problema de gramática, ele não pode nos expressar logicamente. Quer dizer, não pode atenda aos nossos requisitos, então não use assim !

Vendo que muitos alunos têm problemas novamente, podemos seguir diretamente uma variável após if()? Sim, sem problemas! Como foi dito acima, a linguagem c estipula que 0 é falso e não-0 é verdadeiro, então não há problema com if() seguido diretamente por variáveis ! Se o valor da variável não for 0, o resultado do julgamento será verdadeiro e a seguinte instrução será executada: Se o valor da variável for 0, o resultado do julgamento será falso e a última instrução não será executada.

Ao mesmo tempo, deixe-me mencionar que o valor de retorno da expressão de atribuição é o próprio valor atribuído , ou seja, em if(i = n) (n é uma constante), se n for 0, então o retorno valor é 0, se n não é 0, então o valor de retorno é n, ou seja, o valor de retorno não é 0. Se for verdadeiro, a seguinte instrução será executada. As funções printf e scanf também possuem valores de retorno, você mesmo pode verificar depois da aula!

Se você quiser ter uma compreensão mais profunda de if, você pode ler meu outro blog sobre if, esse artigo tem uma exploração mais aprofundada de if!

Se a condição for verdadeira, para executar várias instruções, você deve usar um bloco de código! Na verdade, eu usei blocos de código em todo lugar, então o que são blocos de código? Na linguagem C, os blocos de código entre {} são chamados de blocos de código. Em seguida, mostrarei o código, o que acontecerá se você não usar {}!

 

Todo mundo já viu que, se quisermos seguir o if com várias instruções, cometeremos um erro sem {}, o que é determinado pela própria sintaxe da linguagem C, pois nesse caso não haverá correspondência if para o else seguinte. Por padrão, if só pode ser seguido por uma instrução e o computador trata a instrução em {} como uma instrução , portanto, se quisermos seguir o if com várias instruções, devemos usar {} para formar um bloco de instruções .

Só para mostrar o código:

 Meu conselho a todos vocês. Ou seja, não importa quantas instruções sejam seguidas, adicionamos {} . Por que dizemos isso? A primeira razão é evitar que esqueçamos de adicionar {} quando seguimos várias instruções após if; a segunda razão é O código bloco é mais conciso e organizado; a terceira razão é que é conveniente adicionarmos código a ele posteriormente.

2.1.1 Pendurado mais

Aqui está um pedaço de código para você, espero que você possa dar o resultado de saída!

Acredito que alguns de vocês vão dar a saída de "hehe", alguns vão dar a saída de "haha", claro, alguns vão dar alguns outros resultados, cada um tem suas próprias ideias, isso não faz as pessoas se surpreenderem, então deixem se eu lhe disser que o resultado de saída está em branco, você ficará surpreso? Você pode pensar que o que eu disse é falso, então eu vou te mostrar o código!

Sim, o resultado de saída está realmente em branco. Esse resultado é realmente surpreendente. O ponto de conhecimento que precisamos aprender nesta questão é que else sempre corresponde ao If mais próximo! 

Como entender esta frase? Vamos usar o código a seguir como exemplo para explicá-lo a você!

Em primeiro lugar, se você olhar apenas para esta imagem, é fácil entender mal que o seguinte else irá corresponder com if (a==1), mas devemos lembrar que else está de acordo com o princípio da proximidade, ou seja, sempre corresponde ao if desemparelhado mais próximo , Aguarde a instrução if anterior deste else. A primeira instrução if desemparelhada encontrada é if(b==2). Acredito que não seja difícil para todos entenderem isso. Deixe-me mostrar o original cara de código!

Vendo isso, todos deveriam ser capazes de entender. Em primeiro lugar, se (a==1) for julgado, não é verdade, e então as seguintes instruções if (b==2) e else não são executadas. entenda assim: if e else consiste em uma declaração.

Na verdade, podemos melhorar este código para torná-lo mais claro e fácil de entender:

Não seria mais útil adicionar um bloco de código como este para a compreensão de todos? Portanto , a especificação do código é muito importante!

Neste lugar, espero que todos possam desenvolver um bom estilo de escrita de código, para que o código seja bonito, compatível e fácil de entender! Aqui eu recomendo um livro chamado "High-Quality C-C++ Programming", que contém muitos bons estilos de escrita de código e alguns bons hábitos. Você pode ir à Internet para encontrá-lo, e você deve ser capaz de encontrar a versão eletrônica . , Se eu tiver tempo, também escreverei alguns blogs relacionados com base no conteúdo do livro! Se você realmente não conseguir encontrá-lo, deixe-me saber na área de comentários e eu compartilharei na área de comentários.

2.1.2 Comparação de formulários de escrita

Antes de mais nada, vamos ver o código 1 e o código 2. Eles expressam exatamente o mesmo significado, ou seja, se a condição for verdadeira, execute return x; a instrução retorna x, caso contrário, execute return y; retorne y, mas code block 2 expressa o significado. É mais fácil de entender do que o bloco de código 1, e a lógica é mais clara. Espero que todos possam escrever código como o código 2 ao escrever código!

//代码1

if (condition) {
    return x;
}

return y;

//代码2

if(condition)
{
    return x;
}

else
{
    return y;
}

//代码3

int num = 5;

if(num == 5)
{
    printf("hehe\n");
}

//代码4

int num = 5;

if(5 == num)
{
    printf("hehe\n");
}

Em seguida, vamos ver o código 3 e o código 4. Eles expressam exatamente o mesmo significado, então por que eu deveria falar sobre isso? É porque sempre há muitos alunos escrevendo if(num==5) para que eles sejam escritos como if(num=5). Note que embora os resultados dos dois sejam os mesmos (se a última expressão for executada), o significado que eles expressam Mas é completamente diferente. O primeiro é para julgamento, enquanto o último é para atribuição. Depois de executar esta instrução, o valor de num no primeiro não mudou, e o último, independentemente de o valor original de num for 5, for executado após o if Após (num=5), o valor de num se tornará 5.

Seus resultados de julgamento são de fato os mesmos, por quê? Como eu disse antes, o resultado de retorno da expressão de atribuição é o valor atribuído, e o valor atribuído na segunda instrução é 5, então o valor de retorno é 5, que é um número diferente de zero, que é verdadeiro, e o primeiro é porque o próprio num é igual a 5, então o resultado do julgamento é verdadeiro, ambos são verdadeiros e as seguintes instruções são executadas.

Embora a segunda dessas duas formas de escrever esteja errada, o resultado é correto, mas as consequências são completamente diferentes. Espero que todos possam prestar atenção!

Então eu vou te dizer porque eu quero te mostrar o código 3 e o código 4. De acordo com nossa lógica normal, devemos escrevê-lo como o código 3, mas como eu disse antes, será fácil para nós escrevermos o código 3 assim Escreva como if(num=5), que altera o valor da variável, então por que escrever o código 4 assim? Apenas para evitar cometer tais erros! Mostre a todos o código e todos entenderão!

 

 Neste caso, se ainda escrevemos de forma errada, é óbvio que o programa reportará um erro, por que está reportando um erro? Só podemos atribuir valores a variáveis, ou seja, quando escrevemos um comando de atribuição, o lado esquerdo de = deve ser uma variável, não uma constante! Desta forma, uma vez que o compilador nos avisa que o programa está errado, assim que o verificamos, sabemos que cometemos um erro antigo novamente e podemos corrigi-lo a tempo! Portanto, é recomendado que você coloque constantes no lado esquerdo dos operadores relacionais ao escrever expressões de julgamento condicional em if()!

Bem, o branch and loop (1) de hoje está aqui. Se você achou bom, por favor dê um like e siga, que continuaremos atualizando depois!

A lista de sequências associativas de operadores compartilhada com você:

 

 

 

Acho que você gosta

Origin blog.csdn.net/m0_57304511/article/details/120982188
Recomendado
Clasificación