Comandos de C
Um comando é um trecho do programa que ao ser executado, atualiza variáveis.
Comando de Atribuição:
Semanticamente, uma operação de atribuição modifica o estado atual do programa de execução. Por conseguinte, a atribuição é dependente do conceito de variáveis. Em uma atribuição:
- A expressão é avaliada no estado atual do programa;
- À variável é atribuído o valor calculado, substituindo o valor anterior da variável.
- A linguagem C possui as Atribuições:
- Simples:
a = 3;
-
Múltipla:
a = b = 10;
-
Condicional: os comandos condicionais devem ser parametrizados por expressões booleanas ou inteiras. Existem 2 tipos: if (else) e Switch (case e o default).
-
Atribuição composta:
a += 1;
- Atribuição unária:
a++ ou ++a;
-
Atribuição expressão:
if (x = y) z;
Comandos Seqüenciais:
O modo mais comum de fluxo de controle é a composição seqüencial de comandos, existindo em toda LP imperativa. Em C:
n = 1; n += 3;
// aqui o n = 1 é executado antes de n += 3.
Comandos Condicionais (Seleções):
Um comando condicional permite a especificação de caminhos alternativos para o fluxo de controle do programa.
Em C possui três tipos de comandos de seleção:
- Seleção de Caminho Condicionado: Esse comando permite que um trecho de programa seja executado se determinada condição é satisfeita.
- Seleção de Caminho Duplo: Existe uma escolha entre dois ramos de programa a serem executados conforme satisfação ou não de condição.
- Seleção de Caminhos múltiplos: existe uma escolha entre vários ramos de programa a serem executados conforme valor de expressão.
Comandos Iterativos (Repetições):
Um comando iterativo permite a especificação de ciclos no fluxo de controle do programa.
- Iteração indefinida: Quando o número de iterações não é determinado previamente. Em geral, existem 2 tipos de comandos de iteração indefinida (um com pré-teste e outro com pós-teste) nas LPs. Por exemplo:
No comando com pré-teste, o corpo do loop só é executado se a condição de parada é verdadeira pelo menos uma vez. No comando com pós-teste, o corpo do loop é sempre executado pelo menos uma vez.
- Iteração definida: quando o número de iterações é determinado previamente. Iteração definida é caracterizada pelo uso de uma variável de controle.
for ( I = 1; I <= 19; I++) …
Chamadas de Procedimentos:
Consiste na aplicação de um conjunto de argumentos a uma abstração de procedimento. Possui a seguinte forma: P (Pr1, Pr2, ..., Prn), onde P determina a abstração a ser aplicada e os parâmetros reais Pri determinam os argumentos.
O objetivo de uma chamada de procedimento é atualizar variáveis. Isto é feito atualizando variáveis passadas como argumentos ou alterando o valor de variáveis não locais.
void imprime (int numero) {
printf ("Numero %d\n", numero);
}
Sequenciadores:
Para permitir um fluxo de controle com entradas e saídas múltiplas, aproximadamente todas LPs imperativas provêem comandos sequenciadores:
- Escapes: permitem aos comandos ter uma saída diferente da usual. O escape mais comum é aquele que permite sair de comandos iterativos e comandos condicionais de múltiplos caminhos.
- Desvios Incondicionais: transferem a execução do programa para um ponto especificado através de um rótulo. O comando de desvio (conhecido como goto) confere um grande poder e flexibilidade ao programador. Por outro lado, a excessiva liberdade que este comando fornece ao programador acaba por se tornar nociva a boa qualidade de programação, facilitando a ocorrência do que se convencionou chamar de programação macarrônica.
Fontes:
https://www2.lsd.ufcg.edu.br/~renato/relatorioPLP.pdf
https://www.dcomp.ufs.br/~alberto/2013-1/plp/slides/Aula16-LingImperativa_Comandos.pdf
https://www.inf.pucrs.br/~pinho/LaproI/ComandosDeDecisao/Decisao.htm