Escolar Documentos
Profissional Documentos
Cultura Documentos
UTFPR – Computação I 2
Sumário
• 1. Estruturas de instruções
– 1.1. Tipos de estruturas
• 2. Estrutura sequencial
– 2.1. A biblioteca math.h
• 3. Estruturas de controle
– 3.1. Estrutura de decisão
• 3.1.1. Operadores relacionais
• 3.1.2. Operadores lógicos
• 3.1.3. Precedência de operadores
• 3.1.4. Estruturas de decisão
– 3.2. Estrutura de repetição
UTFPR – Computação I 3
1. Estruturas de instruções
• Um programa de computador é um conjunto de instruções
definidas de acordo com uma linguagem de programação visando
implementar a solução computacional de problemas.
UTFPR – Computação I 4
1.1. Tipos de estruturas
• As estruturas definem a maneira como as instruções de um
algoritmo serão executadas.
• Essa maneira está relacionada a sequência com que as
instruções serão realizadas e com a quantidade de vezes que
elas serão realizadas.
UTFPR – Computação I 5
1.1. Tipos de estruturas
fluxo fluxo fluxo
sequencial de execução repetitivo
de execução com desvio de execução
UTFPR – Computação I 6
2. Estrutura sequencial
• Em uma estrutura sequencial todas as instruções que
compõem o algoritmo ou programa são executadas.
• As instruções são executadas da primeira até a última, na
ordem definida.
• Em todas as execuções do programa, todas as instruções serão
executadas.
UTFPR – Computação I 7
2. Estrutura sequencial
• Problema:
– Calcular a média de duas notas.
UTFPR – Computação I 8
2. Estrutura sequencial
• Solução (algoritmo):
– Entrada
• Obter as duas notas para calcular a média.
. Devem ser informados pelo usuário.
. Devem ser armazenados para que possam ser utilizados para realizar o
cálculo.
– Processamento
• Implementar a fórmula para cálculo da média.
. Considerar a prioridade das operações.
– Saída
• Apresentar o resultado.
UTFPR – Computação I 9
2. Estrutura sequencial
• Exemplo: Cálculo da média de duas notas.
início
Ler Nota1
Ler Nota2 entrada
UTFPR – Computação I 10
2. Estrutura sequencial
Exemplo: Cálculo da média de duas notas.
# include <stdio.h>
int main(void)
{
int Nota1, Nota2, Soma;
float Media;
printf("Informe a primeira nota: ");
scanf("%d",&Nota1);
printf("Informe a segunda nota: ");
scanf("%d",&Nota2);
Soma = Nota1 + Nota2;
Media = Soma / 2.0;
printf("A media aritmetica é %.2f ",Media);
}
UTFPR – Computação I 11
2.1. A biblioteca math.h
• Fornece um conjunto de funções para operações matemáticas,
tais como funções trigonométricas, hiperbólicas, logaritmos,
potência e arredondamentos.
Função Descrição do comando
floor( ) Arredonda para baixo
ceil( ) Arredonda para cima
trunc( ) Considera apenas a parte inteira do número
round( ) Arredondadomento normal (acima e abaixo de .5)
sqrt( ) Calcula raiz quadrada
pow(variável, expoente) Calcula potenciação
sin( ) Seno
cos( ) Cosseno
tan( ) Tangente
log( ) Logaritmo natural
log10( ) Logaritmo base 10
UTFPR – Computação I 12
3. Estruturas de Controle
• As estruturas de controle dividem-se em:
– Estruturas de decisão
• Um determinado conjunto de instruções será ou não executado,
dependendo do resultado de um teste lógico.
– Estruturas de repetição
• Um determinado conjunto de instruções será ou não repetido
novamente, dependendo do resultado de um teste lógico.
UTFPR – Computação I 13
3.1. Estrutura de Decisão
UTFPR – Computação I 14
3.1. Estrutura de Decisão
• Problema:
– Fazer a média de duas notas e informar se o valor obtido é
maior ou igual a sete ou se é menor que sete.
– Ações:
• Entrada
– Procedimentos de entrada iguais a estrutura sequencial.
• Processamento
– Implementar a fórmula para cálculo da média.
– Verificar se valor obtido maior ou igual a sete ou se é menor que sete
(condição).
• Saída
– Emitir mensagem informado se valor obtido é maior ou menor que
sete.
UTFPR – Computação I 15
3.1. Estrutura de Decisão
• Para verificar uma condição é necessário realizar um teste
lógico. Esse teste é realizado por meio operadores
relacionais.
• Expressões relacionais podem ser combinadas utilizando
operadores lógicos.
• O resultado de uma expressão lógica será verdadeiro ou
falso. Independentemente da notação utilizada será sempre a
exclusão mútua entre duas opções.
UTFPR – Computação I 16
3.1.1. Operadores relacionais
• == igual a
• != diferente de
• > maior que
• < menor que
• >= maior ou igual a
• <= menor ou igual a
UTFPR – Computação I 17
3.1.2. Operadores lógicos
• ! negação lógica
• && “e” lógico, conjunção
• || “ou” lógico, disjunção
UTFPR – Computação I 18
3.1.2. Operadores lógicos
• Se chover E não chegar visitas vamos assistir filme.
UTFPR – Computação I 19
3.1.2. Operadores lógicos
• Se chover OU não chegar visitas vamos assistir filme.
UTFPR – Computação I 20
3.1.2. Operadores lógicos
• Em C, o resultado da comparação será o valor 0 se o resultado de um teste
lógico é FALSO e um valor 1 se resultado de um teste lógico é VERDADEIRO.
Exemplo:
#include <stdio.h>
int main(void)
{
int verdadeiro, falso;
return 0;
} Saída:
Verdadeiro = 1, Falso = 0
UTFPR – Computação I 21
3.1.2. Operadores lógicos
• Condição de controle
– Faz o controle de qual conjunto de instruções será executado ou quantas
vezes o conjunto será executado.
– Uma condição de controle é uma expressão lógica ou aritmética cujo
resultado pode ser considerado verdadeiro ou falso.
– Exemplo: Considere as variáveis:
int i = 0, j = 3;
Condição Valor numérico Significado lógico
(i == 0) 1 Verdadeiro
(i > j) 0 Falso
(i) 0* Falso
(j) 1* Verdadeiro
UTFPR – Computação I 22
3.1.2. Operadores lógicos
• Operador condicional ternário ?:
– Opera sobre três expressões:
Exp 1 ? Exp 2 : Exp 3;
• Exemplo:
max = (a > b) ? a : b;
A variável que contém maior valor entre a e b será atribuída a max.
UTFPR – Computação I 23
3.1.2. Operadores lógicos
• Operador condicional ternário ?:
• Exemplo:
#include <stdio.h>
int main(void)
{
int numero;
printf("Informe um numero: ");
scanf("%d", &numero);
numero >= 0 ? numero++ : numero--;
printf("O novo valor de numero e: %d",numero);
return 0;
}
UTFPR – Computação I 24
3.1.2. Operadores lógicos
• Operador condicional ternário ?:
• Exemplo:
#include <stdio.h>
int main(void)
{
int numero;
return 0;
}
UTFPR – Computação I 25
3.1.3. Precedência de operadores
• O uso de parênteses altera a precedência dos operadores.
• Operadores de mesma precedência são executados da esquerda para a direita.
Maior precedência () [] ->
! ++ -- -(unário) (cast)
* / %
+ -
< <= >= >
== !=
&&
||
? :
= += -= *= /= %=
UTFPR – Computação I 27
3.1.4. Estruturas de decisão (cont.)
• If
– Sintaxe:
if (condição)
{
conjunto de instruções;
}
– onde:
• condição é uma expressão com resultado lógico.
• conjunto de instruções são as instruções (bloco de comandos) a serem
executadas.
• Esta estrutura permite que se execute (ou não) um conjunto
de instruções conforme o valor de uma condição seja
verdadeiro ou falso.
UTFPR – Computação I 28
3.1.4. Estruturas de decisão (cont.)
• if
Teste lógico (variáveis, constantes,
Palavra-chave expressões aritméticas, retorno de função e
operadores lógicos e relacionais)
if (condição)
{
/*instruções*/
}
O que será realizado se o resultado
do teste lógico for verdadeiro
UTFPR – Computação I 29
3.1.4. Estruturas de decisão (cont.)
• if
Sim
condição
Não
instruções
onde:
– condição é uma expressão com resultado lógico.
– instruções são os comandos a serem executados.
UTFPR – Computação I 30
3.1.4. Estruturas de decisão (cont.)
• Exemplos:
if (n == 5)
{
printf("%d é igual a 5", n);
}
if (n < 5)
{
printf("%d é menor que 5", n );
}
if (n <= 5)
{
printf("%d é menor ou igual a 5", n);
}
UTFPR – Computação I 31
3.1.4. Estruturas de decisão (cont.)
• Exemplos:
if (n < 5 || n > 9)
{
printf("%d está fora do intervalo entre 5 e 9.", n);
}
UTFPR – Computação I 32
3.1.4. Estruturas de decisão (cont.)
• Exemplo:
– Verificar se o valor da variável Nota é maior ou igual a 7. Se
sim, informar "Aprovado".
Em C:
Algoritmo #include <stdio.h>
início int main(void)
{
float Nota;
Leia Nota
Sim
printf("Informe a nota: ");
Nota >= 7 scanf("%f",&Nota);
Escreva Aprovado
if(Nota >= 7)
{
printf("Aprovado");
}
fim
}
UTFPR – Computação I 33
início
3.1.4. Estruturas de decisão (cont.)
• if else
– Sintaxe:
if(condição)
{
conjunto de instruções 1;
}
else
{
conjunto de instruções 2;
}
• onde:
– condição – teste lógico realizado. É o controle para indicar a finalização da
repetição;
– instruções 1 – comandos (instruções) que são executados se o resultado da
condição for verdadeiro.
– instruções 2 – comandos (instruções) que são executados se o resultado da
condição for falso.
UTFPR – Computação I 34
3.1.4. Estruturas de decisão (cont.)
• Exemplo:
– Verificar se o valor da Nota é maior ou igual a 7. Se sim, informar
“Aprovado”, se não informar “Reprovado”.
Algoritmo: Em C:
#include <stdio.h>
início int main(void)
{
float Nota;
Leia Nota
printf("Informe a nota: ");
scanf("%f",&Nota);
Não Sim
Nota >= 7 if(Nota >= 7)
{
printf("Aprovado");
Escreva Reprovado Escreva Aprovado
}
else
{
printf("Reprovado");
fim }
}
35
UTFPR – Computação I
3.1.4. Estruturas de decisão (cont.)
Algoritmo: Em C:
#include <stdio.h>
int main(void)
{
float Nota, NotaRec;
printf("Informe a nota: ");
scanf("%f",&Nota);
if(Nota >= 7)
{
printf("Aprovado\n");
}
else
{
printf("Em recuperacao\n");
printf("Informe nota de recuperacao: \n");
scanf("%f",&NotaRec);
if(NotaRec >= 8)
{
printf("Aprovado apos recuperacao\n");
}
else
{
printf("Reprovado");
}
}
return 0;
}
36
UTFPR – Computação I
3.1.4. Estruturas de decisão (cont.)
• Exemplo Em C:
#include <stdio.h>
– if ... else if .. else int main(void)
{
float Nota;
printf("Informe a nota: ");
Verificar se o valor da nota: scanf("%f",&Nota);
if (Nota >= 7)
a) É maior ou igual a 7 {
printf("Aprovado\n");
b) Está entre 5 e 7 }
else if (Nota > 5 && Nota < 7)
c) É menor que 5 {
printf("Em recuperacao");
}
else
{
printf("Reprovado");
}
return 0;
}
UTFPR – Computação I 37
3.1.4. Estruturas de decisão (cont.)
• switch...case - Permite a execução de um conjunto de instruções conforme o resultado
de uma expressão de controle. O resultado desta expressão é comparado com o valor
de cada um dos rótulos, e as instruções são executadas a partir deste rótulo.
• Sintaxe:
switch (expressão)
{
case rótulo_1:
conjunto de instruções 1;
case rótulo_2:
conjunto de instruções 2;
case rótulo_n:
conjunto de instruções n;
default:
conjunto de instruções 3;
}
• onde:
– expressão é uma variável.
– rótulo é uma constante inteira ou um caractere.
– conjunto de instruções são as instruções (bloco de comandos) a serem executadas.
UTFPR – Computação I 38
3.1.4. Estruturas de decisão (cont.)
• switch...case
– O valor de expressão é avaliado e o fluxo lógico será
desviado para o conjunto cujo rótulo é igual ao resultado
da expressão e todas as instruções seguintes a este rótulo
serão executadas.
– Caso o resultado da expressão seja diferente de todos os
valores dos rótulos, o conjunto default é executado.
– Os rótulos devem ser expressões constantes inteiras
diferentes entre si.
– default é opcional.
UTFPR – Computação I 39
3.1.4. Estruturas de decisão (cont.)
• Exemplo da estrutura switch ... case
Algoritmo Em C:
#include <stdio.h>
int main(void)
{
char tipo;
printf ("Selecione o sabor da pizza: ");
scanf("%c", &tipo);
switch(tipo)
{
case 'M':
printf("Muzzarela");
break;
case 'C':
printf("Calabreza");
break;
default:
printf ("Opcao incorreta");
}
}
UTFPR – Computação I 40
3.2. Estruturas de repetição
• Permitem que um conjunto de instruções seja repetido um
determinado número de vezes, até que uma condição se
estabeleça ou enquanto uma condição permanecer atendida.
• A finalização da execução pode ser previamente determinada
ou ser decorrente de condições serem atendidas durante a
execução do programa.
• O controle das execuções está vinculado a condições de
controle.
• Uma condição de controle está relacionada a operadores
lógicos e relacionais. Ela é resultado de um teste lógico.
UTFPR – Computação I 41
3.2. Estruturas de repetição (cont.)
• Uma estrutura de repetição (loop) se refere a um conjunto de
instruções que são executadas repetidamente enquanto alguma
condição de continuidade dessa repetição permanecer verdadeira.
• A repetição pode:
– Ter o número de repetições conhecido antecipadamente.
– A condição de finalização das repetições é gerada pelo
processamento das instruções que compõem a estrutura de
repetição.
UTFPR – Computação I 42
3.2. Estruturas de repetição (cont.)
• As três estruturas de repetição da Linguagem C são:
1. Estrutura de repetição para um número definido de
repetições (iterações):
• for
2. Estrutura de repetição para número indefinido de
repetições (iterações):
• while (com teste (condição) no início)
UTFPR – Computação I 43
3.2. Estruturas de repetição (cont.)
• For (PARA ... ATÉ ... FAÇA)
– A estrutura for é normalmente utilizada quando o número
de vezes que o conjunto de instruções será executado é
predefinido.
– A estrutura for é conhecida como repetição controlada por
contador.
UTFPR – Computação I 44
3.2. Estruturas de repetição (cont.)
• Sintaxe for:
for (inicialização; condição; incremento/decremento)
{
conjunto de instruções;
}
• onde:
– inicialização é uma expressão que determina o início para a expressão de controle.
Usa um contador de iterações, que é inicializado antes da primeira iteração.
– condição é uma expressão lógica que verifica se a condição de finalização foi
alcançada. É o teste para determinar se o conjunto de instruções será executado
novamente.
– incremento é uma expressão para armazenar a quantidade de iterações realizadas.
Pode ser também decremento, que define quantas iterações faltam.
– conjunto de instruções são os comandos a serem executados.
UTFPR – Computação I 45
3.2. Estruturas de repetição (cont.)
• Componentes de um cabeçalho típico da estrutura
for:
UTFPR – Computação I 46
3.2. Estruturas de repetição (cont.)
• Uma repetição controlada por
contador necessita de:
– Variável de controle (teste lógico).
– O valor inicial da variável de
controle.
– O incremento (ou decremento) que
modifica a variável a cada iteração.
– A forma de verificação se a condição
foi alcançada.
UTFPR – Computação I 47
3.2. Estruturas de repetição (cont.)
• Exemplo: Imprime números de 0 a 10.
#include <stdio.h>
int main(void)
{
int cont;
UTFPR – Computação I 48
3.2. Estruturas de repetição (cont.)
• Outro exemplo: Números pares e ímpares.
#include <stdio.h>
int main(void)
{
int num, cont;
for(cont=0; cont<10; cont++)
{
printf("Informe um numero: ");
scanf("%d",&num);
if(num%2 == 0)
{
printf("O numero eh par\n");
}
else
{
printf("O numero eh impar\n");
}
}
}
UTFPR – Computação I 49
3.2. Estruturas de repetição (cont.)
• Outro exemplo: Tabuada.
#include <stdio.h>
int main(void)
{
int num, cont;
UTFPR – Computação I 50
3.2. Estruturas de repetição (cont.)
• Observações:
– A inicialização, a condição de repetição do loop e o incremento podem
conter expressões aritméticas.
Por exemplo, com X = 2 e Y = 10
for (cont = X; cont <= 4 * X * Y; cont += Y/X)
– O "incremento" pode ser negativo. É um decremento ou uma contagem
regressiva.
– Se a condição de repetição for inicialmente falsa, as instruções que
compõem a estrutura não serão realizadas.
– É comum que a variável de controle seja impressa e/ou usada em cálculos
pelas instruções que compõem a estrutura. Contudo, essa variável pode
ser utilizada apenas para contar e controlar a quantidade de iterações.
UTFPR – Computação I 51
3.2. Estruturas de repetição (cont.)
• Incremento e decremento no mesmo laço for
– A inicialização, a condição de repetição do loop e o
incremento/decremento podem ser compostos.
Exemplo:
inicialização controle incremento/decremento
UTFPR – Computação I 52
3.2. Estruturas de repetição (cont.)
• Exemplo:
#include <stdio.h>
int main(void)
{
int X, Y;
return 0;
}
UTFPR – Computação I 53
3.2. Estruturas de repetição (cont.)
• Estrutura while
– É a estrutura de repetição mais simples.
– Repete a execução de um bloco de instruções enquanto
uma condição for verdadeira.
– Quando a condição se tornar falsa, o while não repetirá a
execução do instruções.
UTFPR – Computação I 54
3.2. Estruturas de repetição (cont.)
• Sintaxe while
while (condição)
{
//instruções
}
Onde:
– condição – teste lógico realizado. É o controle para indicar a finalização da repetição.
– instruções – comandos que são executados enquanto o resultado da condição for
verdadeiro. Inclui a alteração da condição para que em algum momento ela se torne
falsa e a repetição possa ser interrompida.
• Esta estrutura faz com que a condição seja avaliada e se verdadeira o conjunto
de instruções é executado. Esse ciclo se repete até a condição ser falsa e,
neste caso, a repetição é terminada sem executar o conjunto de instruções.
UTFPR – Computação I 55
3.2. Estruturas de repetição (cont.)
• while
Teste lógico (variáveis, constantes, expressões
aritméticas, retorno de função e operadores
Palavra-chave lógicos e relacionais)
while (Condição)
{
/*instruções, incluindo forma de atingir a
condição.*/
UTFPR – Computação I 56
3.2. Estruturas de repetição (cont.)
• Exemplo: Imprime números de 0 a 10
#include <stdio.h>
int main(void)
{
int i = 0;
return 0;
}
UTFPR – Computação I 57
3.2. Estruturas de repetição (cont.)
• Exemplo: Pares e ímpares
#include <stdio.h>
int main(void)
{
int num, cont=0;
if(num%2 == 0)
{
printf("O numero eh par\n");
}
else
{
printf("O numero eh impar\n");
}
cont++;
}
return 0;
} UTFPR – Computação I 58
3.2. Estruturas de repetição (cont.)
• Exemplo: Tabuada
#include <stdio.h>
int main(void)
{
int num, cont=0;
UTFPR – Computação I 59
3.2. Estruturas de repetição (cont.)
• Estrutura do - while
– Esta estrutura tem um comportamento muito semelhante
ao while, com uma diferença crucial: a condição é
verificada após executar o bloco de instruções.
UTFPR – Computação I 60
3.2. Estruturas de repetição (cont.)
• Sintaxe do – while
do
{
//instruções;
}while(condição);
• Onde:
– condição – teste lógico realizado é o controle para indicar a finalização da repetição;
– instruções – comandos que são executados enquanto o resultado da condição for
verdadeiro.
– Instruções inclui a alteração da condição para que em algum momento ela se torne falsa
e o a repetição (loop) possa ser interrompida.
• Esta estrutura faz com que o conjunto de instruções seja executado pelo
menos uma vez. Após a execução desse conjunto, a condição é avaliada. Se for
verdadeira, o conjunto de instruções é executado outra vez, caso contrário a
repetição é finalizada.
UTFPR – Computação I 61
3.2. Estruturas de repetição (cont.)
• Sintaxe do – while
Palavra-chave
do
{
/*instruções, incluindo forma de atingir a
condição.*/
}while(Condição);
UTFPR – Computação I 62
3.2. Estruturas de repetição (cont.)
• Exemplo: Imprime números de 0 a 10
#include <stdio.h>
int main(void)
{
int i = 0;
do
{
printf("%d\n",i);
i++;
}while(i <= 10);
return 0;
}
UTFPR – Computação I 63
3.2. Estruturas de repetição (cont.)
• Outro exemplo : Insere números positivos.
#include <stdio.h>
int main(void)
{
int num;
do
{
printf("Digite um numero positivo (0 para sair): ");
scanf("%d",&num);
if(num>0)
{
printf("numero positivo: %d\n",num);
}
}while(num > 0);
return 0;
} UTFPR – Computação I 64
3.2. Estruturas de repetição (cont.)
• Exemplo: Pares e ímpares
#include <stdio.h>
int main(void)
{
int num, cont=0;
do
{
printf("Informe um numero: ");
scanf("%d",&num);
if (num%2 == 0)
{
printf("O numero eh par\n");
}
else
{
printf("O numero eh impar\n");
}
cont++;
}while(cont < 10);
return 0;
} UTFPR – Computação I 65
3.2. Estruturas de repetição (cont.)
• Exemplo: Tabuada
#include <stdio.h>
int main(void)
{
int num, cont=0;
do
{
printf("%d * %d = %d\n", num, cont, num * cont);
cont++;
}while(cont <= 10);
return 0;
}
UTFPR – Computação I 66
3.2. Estruturas de repetição (cont.)
#include <stdio.h>
int main(void)
{
int i;
printf("Usando o comando \"for\"\n");
for (i=1; i<=5; i++)
{
printf("%d\n", i);
}
Válido Inválido
UTFPR – Computação I
3.2. Estruturas de repetição (cont.)
• DEITEL, P. J. DEITEL, H. M. Como programar em C. São Paulo:
LTC, 1990.
• SCHILDT, H. C Completo e total, 3ª ed. São Paulo: Makron
Books, 1996.
• MIZRAHI, V. V. Treinamento em linguagem C: curso completo
- módulo 1. São Paulo: McGraw-Hill, 1990.
• Material baseado no conteúdo disponibilizado pela
professora Beatriz Borsoi.
UTFPR – Computação I 70
Dúvidas
• ???
UTFPR – Computação I 71