Você está na página 1de 64

Algoritmos e Lógica de

Programação

Introdução a Linguagem C

1
Prof. Roberth Silva Algoritmos e Estruturas de Dados
Introdução a Linguagem de Programação C

2
Prof. Roberth Silva Algoritmos e Estruturas de Dados
Tópicos Principais

• Variáveis e Constantes
• Operadores e Expressões
• Entrada e Saída
• Tomada de Decisão
• Construções com Laços
• Definição de Funções
• Pilha de Execução
• Funções Recursivas
• Variáves Globais X Variáveis Estáticas

3
Prof. Roberth Silva Algoritmos e Estruturas de Dados
Linguagem C

Variáveis e Constantes

• Por ser uma linguagem estruturada, em C, as variáveis


devem ser declaradas antes de serem usadas,
permitindo assim, que o compilador faça checagens
em tempo de compilação.

4
Prof. Roberth Silva Algoritmos e Estruturas de Dados
Linguagem C

Identificadores

• Identificadores são nomes usados para se fazer


referência a variáveis, funções, rótulos e vários outros
objetos definidos pelo usuário.
• Um identificador pode ter de um a vários caracteres.
O primeiro deve ser uma letra ou um sublinhado, e os
caracteres subseqüentes deve ser letras, números ou
um sublinhado.

5
Prof. Roberth Silva Algoritmos e Estruturas de Dados
Variáveis e Constantes
Tipos básicos na linguagem C:

(*) depende da máquina, sendo 4 bytes para arquiteturas de 32 bits

6
Prof. Roberth Silva Algoritmos e Estruturas de Dados
Variáveis e Constantes
● Valor Constante:
– armazenado na memória
– possui um tipo, indicado pela sintaxe da constante

7
Prof. Roberth Silva Algoritmos e Estruturas de Dados
Variáveis e Constantes
● Variável
– espaço de memória para armazenar um dado
– não é uma variável no sentido matemático
– possui um tipo e um nome
• nome: identifica o espaço de memória
• tipo: determina a natureza do dado

8
Prof. Roberth Silva Algoritmos e Estruturas de Dados
Variáveis e Constantes
● Declaração de Variável
– variáveis devem ser explicitamente declaradas
– variáveis podem ser declaradas em conjunto

9
Prof. Roberth Silva Algoritmos e Estruturas de Dados
Variáveis e Constantes
● Declaração de Variável
– variáveis só armazenam valores do mesmo tipo
com que foram declaradas

10
Prof. Roberth Silva Algoritmos e Estruturas de Dados
Variáveis e Constantes
● Variável com valor indefinido
– uma variável pode receber um valor quando é definida
(inicializada), ou através de um operador de atribuição

11
Prof. Roberth Silva Algoritmos e Estruturas de Dados
Variáveis e Constantes
● Variável com valor indefinido
– uma variável pode receber um valor quando é definida
(inicializada), ou através de um operador de atribuição

12
Prof. Roberth Silva Algoritmos e Estruturas de Dados
Operadores e Expressões
● Operadores:
– aritméticos: + , - , * , / , %
– atribuição: = , += , -= , *= , /= , %=
– incremento e decremento: ++ , --
– relacionais e lógicos: < , <= , == , >= , > , !=
– outros

13
Prof. Roberth Silva Algoritmos e Estruturas de Dados
Operadores e Expressões
● Operadores aritméticos ( + , - , * , / , % ):
– operações são feitas na precisão dos operandos
• o operando com tipo de menor expressividade é
convertido para o tipo do operando com tipo de maior
expressividade
• divisão entre inteiros trunca a parte fracionária

14
Prof. Roberth Silva Algoritmos e Estruturas de Dados
Operadores e Expressões
● Operadores aritméticos (cont.):
– o operador módulo, “%”, aplica-se a inteiros
– precedência dos operadores: * , / , - , +

15
Prof. Roberth Silva Algoritmos e Estruturas de Dados
Operadores e Expressões
● Operadores de atribuição :
( = , += , -= , *= , /= , %= )
– C trata uma atribuição como uma expressão
• a ordem é da direita para a esquerda
– C oferece uma notação compacta para atribuições
em que a mesma variável aparece dos dois lados

16
Prof. Roberth Silva Algoritmos e Estruturas de Dados
Operadores e Expressões
● Operadores de incremento e decremento ( ++ , -- )
– incrementa ou decrementa de uma unidade o valor de
uma variável
• os operadores não se aplicam a expressões
• o incremento pode ser antes ou depois da variável
ser utilizada
n++ incrementa n de uma unidade, depois de ser usado
++n incrementa n de uma unidade, antes de ser usado

17
Prof. Roberth Silva Algoritmos e Estruturas de Dados
Operadores e Expressões

18
Prof. Roberth Silva Algoritmos e Estruturas de Dados
Operadores e Expressões
● Operadores relacionais
(< , <= , == , >= , > , !=):
– o resultado será 0 ou 1 (não há valores booleanos em
C)

19
Prof. Roberth Silva Algoritmos e Estruturas de Dados
Operadores e Expressões
● Operadores lógicos ( && , || , ! )
– a avaliação é da esquerda para a direita
– a avaliação pára quando o resultado pode ser
conhecido

20
Prof. Roberth Silva Algoritmos e Estruturas de Dados
Operadores e Expressões
● sizeof:
– retorna o número de bytes ocupados por um tipo

21
Prof. Roberth Silva Algoritmos e Estruturas de Dados
Operadores e Expressões
● conversão de tipo:
– conversão de tipo é automática na avaliação de uma
expressão
– conversão de tipo pode ser requisita explicitamente

22
Prof. Roberth Silva Algoritmos e Estruturas de Dados
Entrada e Saída
● Função “printf”:
– possibilita a saída de valores segundo um determinado
formato

23
Prof. Roberth Silva Algoritmos e Estruturas de Dados
Entrada e Saída
● Especificação de formato:
%c especifica um char
%d especifica um int
%u especifica um unsigned int
%f especifica um double (ou float)
%e especifica um double (ou float) no formato
científico
%g especifica um double (ou float) no formato mais
apropriado (%f ou %e)
%s especifica uma cadeia de caracteres
24
Prof. Roberth Silva Algoritmos e Estruturas de Dados
Entrada e Saída
● Especificação de tamanho de campo

25
Prof. Roberth Silva Algoritmos e Estruturas de Dados
Entrada e Saída
● Impressão de texto

26
Prof. Roberth Silva Algoritmos e Estruturas de Dados
Entrada e Saída
● Função “scanf”:
– captura valores fornecidos via teclado

27
Prof. Roberth Silva Algoritmos e Estruturas de Dados
Entrada e Saída
● Especificação de formato
%c especifica um char
%d especifica um int
%u especifica um unsigned int
%f,%e,%g especificam um float
%lf, %le, %lg especificam um double
%s especifica uma cadeia de caracteres

28
Prof. Roberth Silva Algoritmos e Estruturas de Dados
Entrada e Saída
● Função “scanf” (cont.):
– caracteres diferentes dos especificadores no formato
servem para cercar a entrada
– espaço em branco dentro do formato faz com que
sejam "pulados" eventuais brancos da entrada
– %d, %f, %e e %g automaticamente pulam os brancos
que precederem os valores numéricos a serem
capturados

29
Prof. Roberth Silva Algoritmos e Estruturas de Dados
Tomada de Decisão
● Comando “if”:
– comando básico para codificar tomada de decisão
• se expr for verdadeira (≠ 0), executa o bloco de
comandos 1
• se expr for falsa (= 0), executa o bloco de comandos
2

30
Prof. Roberth Silva Algoritmos e Estruturas de Dados
Exemplo
● /* nota */
#include <stdio.h>
int main (void) {
float nota ;

printf("Digite sua nota: ");


scanf("%f", &nota);
if (nota >= 7 ){
printf(" Boa nota, parabens! \n");
}else {
printf(" Voce precisa melhorar. \n");
}
return 0;
}

31
Prof. Roberth Silva Algoritmos e Estruturas de Dados
Exemplo
● /* nota */
#include <stdio.h>
int main (void)
{
float nota ;

printf("Digite sua nota: ");


scanf("%f", &nota);

if (nota >= 7 )
printf(" Boa nota, parabens! \n");
else
printf(" Voce precisa melhorar. \n");
return 0;
}

32
Prof. Roberth Silva Algoritmos e Estruturas de Dados
Bloco de Comandos

ou

33
Prof. Roberth Silva Algoritmos e Estruturas de Dados
Tomada de Decisão
● Exemplo:
– função para qualificar a temperatura:
se a temperatura for menor do que 20ºC, então está
frio
se a temperatura estiver entre 20ºC e 30ºC, então
está agradável
se a temperatura for maior do que 30ºC, então está
quente

34
Prof. Roberth Silva Algoritmos e Estruturas de Dados
Tomada de Decisão

35
Prof. Roberth Silva Algoritmos e Estruturas de Dados
Tomada de Decisão

36
Prof. Roberth Silva Algoritmos e Estruturas de Dados
Tomada de Decisão

37
Prof. Roberth Silva Algoritmos e Estruturas de Dados
Tomada de Decisão

38
Prof. Roberth Silva Algoritmos e Estruturas de Dados
Tomada de Decisão
● Estrutura de bloco:
– declaração de variáveis:
• só podem ocorrer no início do corpo da função ou de
um bloco
– escopo de uma variável:
• uma variável declarada dentro de um bloco é válida
no bloco
• após o término do bloco, a variável deixa de existir

39
Prof. Roberth Silva Algoritmos e Estruturas de Dados
Tomada de Decisão
● Operador condicional:
– formato geral:
• se a condição for verdadeira, a expressão1 é
avaliada; caso contrário, a expressão2 é avaliada

– exemplo:
• comando

• comando “if” equivalente

40
Prof. Roberth Silva Algoritmos e Estruturas de Dados
Construções com laços
● Comando “while”:
– enquanto expr for verdadeira, o bloco de comandos é
executado
– quando expr for falsa, o comando termina

41
Prof. Roberth Silva Algoritmos e Estruturas de Dados
Construções com laços

42
Prof. Roberth Silva Algoritmos e Estruturas de Dados
Construções com laços
● Comando “while”:
– enquanto expr for verdadeira, o bloco de comandos é
executado
– quando expr for falsa, o comando termina

43
Prof. Roberth Silva Algoritmos e Estruturas de Dados
Construções com laços
● Comando “for”
– forma compacta para exprimir laços

– equivalente a

44
Prof. Roberth Silva Algoritmos e Estruturas de Dados
Construções com laços

45
Prof. Roberth Silva Algoritmos e Estruturas de Dados
Construções com laços
● Comando “do-while”:
– teste de encerramento é avaliado no final

46
Prof. Roberth Silva Algoritmos e Estruturas de Dados
Construções com laços

47
Prof. Roberth Silva Algoritmos e Estruturas de Dados
Construções com laços
● Interrupção de laços - Comando “break”:
– termina a execução do comando de laço

48
Prof. Roberth Silva Algoritmos e Estruturas de Dados
Construções com laços
● Interrupção de laços - Comando “continue”:
– termina a iteração corrente e passa para a próxima

49
Prof. Roberth Silva Algoritmos e Estruturas de Dados
Construções com laços
● Comando “switch”:
– seleciona uma entre vários casos
(“opk” deve ser um inteiro ou caractere)

50
Prof. Roberth Silva Algoritmos e Estruturas de Dados
Construções com laços

51
Prof. Roberth Silva Algoritmos e Estruturas de Dados
Definição de Funções
● Comando para definição de função

52
Prof. Roberth Silva Algoritmos e Estruturas de Dados
Definição de Funções

53
Prof. Roberth Silva Algoritmos e Estruturas de Dados
Definição de Funções

54
Prof. Roberth Silva Algoritmos e Estruturas de Dados
Fatorial iterativo

55
Prof. Roberth Silva Algoritmos e Estruturas de Dados
Exemplo – Início do programa

56
Prof. Roberth Silva Algoritmos e Estruturas de Dados
Exemplo – Declaração de n e r na main()

57
Prof. Roberth Silva Algoritmos e Estruturas de Dados
Exemplo – Declaração de n na fat(int n)

58
Prof. Roberth Silva Algoritmos e Estruturas de Dados
Exemplo – Declaração de n na fat(int n)

59
Prof. Roberth Silva Algoritmos e Estruturas de Dados
Exemplo – no final do laço

60
Prof. Roberth Silva Algoritmos e Estruturas de Dados
Exemplo – no retorno

61
Prof. Roberth Silva Algoritmos e Estruturas de Dados
Funções Recursivas
● Tipos de recursão:
– direta:
• uma função A chama a ela própria
– indireta:
• uma função A chama uma função B que, por sua vez,
chama A
• Comportamento:
– quando uma função é chamada recursivamente, cria-se um
ambiente local para cada chamada
– as variáveis locais de chamadas recursivas são
independentes entre si, como se estivéssemos chamando
funções diferentes.
62
Prof. Roberth Silva Algoritmos e Estruturas de Dados
Funções Recursivas
● Exemplo: definição recursiva de fatorial

63
Prof. Roberth Silva Algoritmos e Estruturas de Dados
Funções Recursivas
● Exemplo: definição recursiva de fatorial

64
Prof. Roberth Silva Algoritmos e Estruturas de Dados

Você também pode gostar