1. TÉCNICAS DE PROGRAMAÇÃO I
Prof.John Hebert da Silva Felix
johnfelix@unilab.edu.br
Universidade da Integração Internacional da Lusofonia
Afro-Brasiliera
Curso de Engenharia de Energias
Redenção-CE, Brasil
2014
Prof. John Hebert S. Felix 1/1 UNILAB
Técnicas de Programação I
4. Linguagem C
1 Introdução;
2 A Biblioteca-padrão e as Palavras Reservadas em C;
3 Tipos de Dados e Variáveis;
4 Operadores e Expressões;
5 Entrada e Saída E/S pelo Console;
6 Estruturas de Controles;
7 Funções;
8 Arrays e Strings;
9 Ponteiros;
10 Estruturas, Uniões e Enumerações;
11 Arquivos e Streams;
12 Estruturas de dados:
Listas lineares (Filas, Pilhas e Listas Encadeadas);
Ordenação e Pesquisa.
Prof. John Hebert S. Felix 4/1 UNILAB
Técnicas de Programação I
5. Estruturas de controle
Estruturas de controle
As estruturas ou comandos de controle podem ser divididos em:
seleção, iteração e desvios.
Seleção ou condicional: fazem parte os comandos if e switch;
Iteração ou laço: fazem parte os comandos while, for e do-while;
Desvio ou salto: fazem parte os comandos break, continue,
return e goto;
Prof. John Hebert S. Felix 5/1 UNILAB
Técnicas de Programação I
6. Estruturas de controle
Estrutura de seleção
O comando de seleção if executa uma ação ou um bloco de ações,
quando uma condição é verdadeira, caso contrário a ação ou um bloco de
ações do else (se existir) é executado.
Sintaxe - if-else - comando simples
if (expressão) comando;
else comando;
Sintaxe - if-else - bloco de comandos
if (expressão){
Bloco de Comandos;
}
else {
Bloco de Comandos;
}
Prof. John Hebert S. Felix 5/1 UNILAB
Técnicas de Programação I
7. Estruturas de controle
Sintaxe - if-else aninhados -
comando único
if (expressão)
Comando;
else if (expressão)
Comando;
else if (expressão)
Comando;
Sintaxe - if-else aninhados - bloco
de comandos
if (expressão) {
Bloco de Comandos;
}
else if (expressão) {
Bloco de Comandos;
}
else if (expressão) {
Bloco de Comandos;
}
Prof. John Hebert S. Felix 5/1 UNILAB
Técnicas de Programação I
8. Estruturas de controle
Exemplo de estrutura de seleção composta.
Média aritmética indicando aprovado e reprovado
#include <stdio.h>
int main (void){
float nota1, nota2, nota3, media;
printf(“Digite as 3 notasn”);
scanf(“%fn%fn%f”, ¬a1, ¬a2, ¬a3);
media = (nota1 + nota2 + nota3)/3;
if (media>=7) {
printf(“Aluno aprovadon”);
printf(“A sua média é: %fn”, media);
}
else {
printf(“Aluno reprovadon”);
printf(“A sua média é: %fn”, media);
}
return 0;
}
Prof. John Hebert S. Felix 5/1 UNILAB
Técnicas de Programação I
9. Estruturas de controle
Seleção de múltipla escolha - switch
A estrutura de seleção switch seleciona uma dentre um
conjunto de condições associadas a uma sequência de
valores.
Prof. John Hebert S. Felix 5/1 UNILAB
Técnicas de Programação I
10. Estruturas de controle
Sintaxe - switch
switch(expressão) {
case Valor1:
Sequência de comandos;
break; /*comando que desvia a
excução do programa para outra linha do
código*/
case Valor2:
Sequência de comandos;
break;
.
.
.
default:
Sequência de comandos;
break;
}
Ex.: Calculadora com 4 operações
#include <stdio.h>
int main (void){
float numa, numb;
char oper;
printf(“Digite o 1o
número o operador e o 2o
númeron”);
scanf(“%f%c%f”, &numa, &oper, &numb);
switch(oper) {
case ‘+’:
printf(“A adição é: %2.2fn”, numa + numb); break;
case ‘–’:
printf(“A subtração é: %2.2fn”, numa – numb); break;
case ‘*’:
printf(“A multiplicação é: %2.2fn”, numa * numb); break;
case ‘/’:
printf(“A divisão é: %2.2fn”, numa / numb); break;
default:
printf(“Operação inválida!n”); break;
}
return 0;
}
Prof. John Hebert S. Felix 5/1 UNILAB
Técnicas de Programação I
11. Estruturas de controle
Estrutura de Iteração ou laço - for
Controla o fluxo de execução, por meio de uma quantidade de repetições
predefinidas.
Sintaxe - laço for
for(inicialização; condição; incremento) {
Sequência de comandos;
}
Se houver apenas um comando, o
bloco representado por { }, pode ser
retirado.
Em que:
inicialização: atribui um valor a
variável de controle;
condição: indica uma expressão
relacional que determina o fim do
laço;
incremento: defini a forma de
variação da variável de controle a
cada iteração.
Prof. John Hebert S. Felix 5/1 UNILAB
Técnicas de Programação I
12. Estruturas de controle
Ex.: Média geral da turma
#include <stdio.h>
int main (void){
float mAno, mAnoTur, acum;
int i;
printf(“Digite a média da turma de 36
alunosn”);
for(i=1;i<=36;i++){
scanf(“%f”,&mAno);
acum = acum + mAno;
}
mAnoTur = acum/36;
printf(“A média anual da turma é: %2.2fn”,
mAnoTur);
return 0;
}
Ex.: Laço infinito
#include <stdio.h>
int main (void){
char letra;
printf(“Digite a letra L para sair do
laçon”);
for( ; ; ){
scanf(“%f”,&mAno);
letra = getchar();
if (letra == ‘L’) break; /*sai do laço*/
}
return 0;
}
Prof. John Hebert S. Felix 5/1 UNILAB
Técnicas de Programação I
13. Estruturas de controle
Estrutura de Iteração ou laço - while
Controla o fluxo de execução, repetindo várias vezes uma mesma
parte ou bloco de um programa.
Sintaxe - laço while
while(condição) {
Sequência de comandos;
}
Prof. John Hebert S. Felix 5/1 UNILAB
Técnicas de Programação I
14. Estruturas de controle
Média geral da turma
#include <stdio.h>
int main (void){
float mAno, mAnoTur, acum = 0;
int i = 1;
printf(“Digite a média da turma de 36 alunosn”);
while(i<=36){
scanf(“%f”,&mAno);
acum = acum + mAno;
i++;
}
mAnoTur = acum/36;
printf(“A média anual da turma é: %2.2fn”, mAnoTur);
return 0;
}
Prof. John Hebert S. Felix 5/1 UNILAB
Técnicas de Programação I
15. Estruturas de controle
Estrutura de Iteração ou laço - do-while
Controla o fluxo de execução, repetindo várias vezes uma mesma
parte ou bloco de um programa, realizando o teste no final.
Sintaxe - laço do-while
do {
Sequência de comandos;
}while(condição);
Prof. John Hebert S. Felix 5/1 UNILAB
Técnicas de Programação I
16. Estruturas de controle
Ex. 1: Média geral da turma
#include <stdio.h>
int main (void){
float mAno, mAnoTur, acum = 0;
int i = 1;
printf(“Digite a média da turma de 36
alunosn”);
do {
scanf(“%f”,&mAno);
acum = acum + mAno;
} while(++i <= 36);
mAnoTur = acum/36;
printf(“A média anual da turma é:
%2.2fn”, mAnoTur);
return 0;
}
Ex. 2: Especicifacação da porcentagem
de vinho
O algoritmo apresentado a seguir,
especifica a porcentagem dos tipos de
vinhos: tinto, branco e rosê. O algoritmo
informa a quantidade de vinho
desconhecida e para sair um finalizador
Prof. John Hebert S. Felix 5/1 UNILAB
Técnicas de Programação I
17. Estruturas de controle
Ex. 2: Especicifacação da porcentagem
de vinho
#include <stdio.h>
int main (void){
float pTin, pBra, pRos; //porcentagem de vinhos
int conV = 0, conTin = 0, conBra = 0, conRos = 0;
char tipV = ‘0’; //tipo de vinho
printf (“Digite T (p/ tinto), B (p/ branco), R (p/ rosê)
e S (p/ sair)n”);
do{
scanf(“%c”,&tipV);
switch(tipV){
case ‘T’: conTin += 1;
case ‘B’: conBra += 1;
case ‘R’: conRos += 1;
}
conV += 1; // incrementa o contador
Ex. 2: continuação
} while(tipV != ‘S’); //teste da condição de saida
conV –= 1; // desconta o finalizador ‘S’
if(conV) {
pTin = (conTin * 100) / conV;
pBra = (conBra * 100) / conV;
pRos = (conRos * 100) / conV;
printf (“As % dos vinhos tinto, branco e rosê são,
respectivamente:%2.2fn%2.2fn%2.2f”, pTin, pBra,
pRos);
}
else
printf (“Não foi informado nenhum tipo de
vinho!n”);
}
Prof. John Hebert S. Felix 5/1 UNILAB
Técnicas de Programação I
18. Estruturas de controle
Comandos de desvio
return: utilizado para retornar de uma função e caso algum valor
esteja associado a este comando será também retornado. A sua
forma é: return expressão;
break: pode ser utilizado para finalizar case de um comando
switch ou laço. A sua forma é: break;
continue: realiza a execução do próximo comando. No caso de
um laço faz este realizar a sua próxima iteração. A sua forma é:
continue;
Prof. John Hebert S. Felix 5/1 UNILAB
Técnicas de Programação I
19. Estruturas de controle
Comandos de desvio
goto: caiu em desuso devido a tendência de deixar os programas
ilegíveis. A sua forma é:
goto rótulo;
...
rótulo:
Em que: rótulo corresponde a um rótulo válido.
Exemplo de laço com goto:
cont = 1;
laco:
scanf(“%f”,&mAno);
acum = acum + mAno;
cont++;
if(cont<=36) goto laco;
Prof. John Hebert S. Felix 5/1 UNILAB
Técnicas de Programação I