Escolar Documentos
Profissional Documentos
Cultura Documentos
PROGRAMAÇÃO
PROFESSOR: ÉDER PORFÍRIO
TIPOS DE DADOS E
VARIÁVEIS
CONTEÚDO PROGRAMÁTICO
TIPOS DE DADOS VARIÁVEIS
▪ TIPOS DE DADOS PRIMITIVOS ▪ NOME
▪ CADEIA DE CARACTERES ▪ ENDEREÇO
▪ MATRIZES ▪ TIPO
▪ REGISTROS ▪ VALOR
▪ VERIFICAÇÃO DE TIPOS ▪ TEMPO DE VIDA
▪ TIPAGEM FORTE ▪ ESCOPO
TIPOS DE DADOS
1. TIPOS DE DADOS
▪ Programas produzem resultados através da MANIPULAÇÃO DE DADOS;
▪ SISTEMA DE TIPOS
▪ Define como o tipo é associado a cada expressão
▪ Inclui regras para equivalência e compatibilidade
▪ É importante para entender a semântica das Linguagens de Programação (LP)
1.1 TIPOS DE DADOS PRIMITIVOS
▪ Tipos de dados não definidos em termos de outros
▪ Alguns são reflexo do hardware;
▪ Outros requerem suporte externo ao hardware;
▪ Tipos Numéricos
▪ Tipos Booleanos
▪ Tipos Caracteres
1.1.1 TIPOS NUMÉRICOS
▪ Desempenham papel central entre os tipos suportados
▪ Principais Tipos:
◦ Inteiros
◦ Ponto flutuante
◦ Decimais
INTEIRO
▪ Tipo mais comum
▪ Não possuem parte decimal;
▪ Podem ser positivos e negativos;
▪ TAMANHO:
▪ PRINCIPAL REPRESENTAÇÃO: ▪ float
▪ IEEE Float-Point Standard 754 ▪ double
DECIMAL
▪ Computadores de grande porte possuem suporte de hardware
para decimais
▪ Funcionamento: Armazenam um número fixo de números
decimais – ponto decimal em uma posição fixa
▪ Vantagem:
▪ Capazes de armazenar precisamente valores decimais (dentro de uma faixa)
▪Desvantagens:
▪ Restrita (nenhum expoente é usado)
▪ Precisão em memória é dispendiosa
1.1.2 TIPOS BOOLEANOS
▪ Tipos de dados mais simples;
▪ Sintaxe Universal:
▪ Nome da matriz, seguida por uma lista de índices (envolvidos por parênteses ou
colchetes)
1.4 REGISTROS
▪ Agregado de elementos de dados
▪ Usado para modelar coleções de dados que não são do mesmo tipo;
▪ Elementos individuais identificados por nomes e acessados por
deslocamento a partir do início da estrutura;
Exemplo C:
Struct ficha_aluno {
char nome[50];
char disciplina [30];
float AP1;
float AP2;
float AP3;
}
1.5 VERIFICAÇÃO DE TIPOS
▪ Atividade de garantir que operandos e operadores são de tipos compatíveis;
▪ Tipo compatível:
▪ Legal
▪ É permitido dentro das regras da LP - convertido (coerção) - Ex: IntToFloat
▪ Regras de Compatibilidade
▪ Ditam os operandos aceitáveis para cada operador ;
▪ Especificam possíveis erros de tipos.
▪ Coleção de Atributos:
◦ Nome
◦ Endereço
◦ Tipo
◦ Valor
◦ Tempo de Vida
◦ Escopo
2.1 NOMES
▪ Nome ou Identificador Cadeia de caracteres usada para identificar alguma
entidade em um programa.
▪ Usado para denominar muitas entidades: variáveis, tipos, funções, etc.
▪ DINÂMICO
▪ Baseado na sequência de chamada a subprogramas
▪ Determinado em tempo de execução
EM RESUMO:
1. Compreensão do Problema;
2. Encontrar conexão entre os dados e as incógnitas;
3. Executa seu plano;
4. Examine a solução obtida.
EXAMINANDO A ESTRATÉGIA DE
POLYA
FAÇA PERGUNTAS
▪ O que sei sobre o problema?
▪ Com o que a solução se parece?
▪ Que tipos de casos especiais existem?
▪ Como reconhecerei ter encontrado a solução?
PROCURE POR COISAS FAMILIARES
▪Em computação devemos tornar explicitas certas condições que são implícitas
em condições humanas;
Processo de solução de problemas por
computador...
▪ Análise e Especificação
▪ Desenvolvimento do Algoritmo
▪ Implementação
▪ Manutenção
PROJETANDO ALGORITMOS
A metodologia de projetar algoritmos pode ser subdividida em
quatro passos simples:
1. Analise o Problema
2. Liste as Principais Tarefas
3. Escreva os Módulos Restantes
4. Refaça a Sequência e Revise de Acordo com as Necessidades
PRINCIPAIS TIPOS DE
ALGORITMOS
ALGORITMOS COM VARIÁVEIS
SIMPLES
▪ ALGORITMOS SEQUENCIAIS
se <condição>
Algoritmo #!/usr/bin/perl
# Selecao Simples.
declare sequencia01, sequencia02 literal
my ($sequencia01, $sequencia02);
sequencia01 ← “GTGGGATC”
$sequencia01 = "GTGGGATC";
leia sequencia02
print "Digite a sequencia: ";
se sequencia01 = sequencia02
chomp($sequencia02 = <STDIN>);
então escreva “Sequencia encontrada”
if($sequencia01 eq $sequencia02){
Fim_Algoritmo
print "Sequencia encontrada\n";
}
Estrutura Condicional Composta
se condição
então sequência 1 de comandos
senão sequência 2 de comandos
Algoritmo #!/usr/bin/perl
# Selecao Composta.
declare sequencia01 literal
my ($sequencia);
leia sequencia01
print "Digite a sequencia: ";
se sequencia01 = “GGTCAG”
chomp($sequencia = <STDIN>);
então escreva “Sequencia encontrada”
if ($sequencia eq "GGTCAG"){
senão escreva “Sequencia não encontrada”
print "Sequencia encontrada\n";
Fim_Algoritmo
}
else {
print "Sequencia não encontrada\n";
}
Exemplo #!/usr/bin/perl
# Selecao Composta.
• Comando Enquanto
• Comando Repita
• Comando Para
ESTRUTURA ENQUANTO
Enquanto o valor da condição for verdadeiro, as ações dos comandos são executadas. Quando for
falso, o comando é abandonado. Se já da primeira vez o resultado é falso, os comandos não são
executados nenhuma vez.
repita
comandos
até condição
#!/usr/bin/perl
# Repeticao: Repita.
EXEMPLO my ($x, $y, $l);
$l = 0;
Algoritmo
do {
declare X,Y, L numérico print "digite x: ";
L←0 $x = <STDIN>;
repita
print "digite y: ";
leia X,Y
se X > Y $y = <STDIN>;
então escreva X if ($x > $y){
senão escreva Y
print "$x \n";
L←L+1
até L > 3 } else {
Fim_Algoritmo. print "$y \n";
}
$l = $l + 1;
} until $l >= 3
ESTRUTURA PARA
O comando para é, na verdade, o comando enquanto utilizando uma variável de controle, escrito
numa notação compactada. Neste caso existirá sempre uma inicialização da variável de controle, um
teste para verificar se a variável atingiu o limite e um acréscimo na variável de controle.
▪ VETORES E MATRIZES
▪ REGISTROS
VETORES
Cada elemento do vetor é referenciado individualmente por meio de um número
inteiro e positivo, entre colchetes.
Exemplo:
◦ x[0] = 1;
◦ y[10] = 'a';
MATRIZES
FUNCIONAM DE MODO SIMILAR A VETORES.
Declaração:
<tipo de dado> <identificador> [tamanho1,tamanho2,...]
EXEMPLO:
int m[3][3]; /* declara uma matriz 3x3 */
int n[3][4][5]; /* declara uma matriz
tridimensional de tamanho 3x4x5 */
int a[3][3]={{1,2,3},{4,5,6},{7,8,9}};
/* Separa os dados de cada linha da matriz. Esta maneira é preferida. */
▪ BUSCA SEQUENCIAL
▪BUSCA BINÁRIA
MÉTODOS DE BUSCA
BUSCA SEQUENCIAL – VETOR NÃO ORDENADO
BUSCA SEQUENCIAL – VETOR NÃO ORDENADO
int busca(int n, int *vet, int elem)
{
int i = 0;
while (i < n && vet[i] != elem)
i++;
if (i == n)
return -1; // elemento não encontrado
else return i; //elemento na posição i
}
BUSCA BINÁRIA
inicio meio fim
elem = 22
0 5 11
4 7 8 10 14 21 22 36 62 77 81 91
22 >21, inicio = meio +1
4 7 8 10 14 21 22 36 62 77 81 91
22 < 62, fim= meio -1
4 7 8 10 14 21 22 36 62 77 81 91
22 = 22, o elem está na posição meio
ALGORITMOS DE ORDENAÇÃO
▪ SELEÇÃO
▪BOLHA
▪ INSERÇÃO
ORDENAÇÃO
ORDENAÇÃO - BOLHA
ALGORITMOS RECURSIVOS
▪FATORIAL
Conceito poderoso
◦ Define conjuntos infinitos com comandos finitos
RECURSIVIDADE
A recursividade é uma estratégia que pode ser utilizada sempre que o
cálculo de uma função para o valor n, pode ser descrita a partir do cálculo
desta mesma função para o termo anterior (n-1).
◦ Recursão Indireta: a função A chama uma função B que, por sua vez, chama A
Condição de parada
◦ Permite que o procedimento pare de se executar
◦ F(x) > 0 onde x é decrescente
Objetivo
◦ Estudar recursividade como ferramenta prática!
EXEMPLO
Fat (int n) {
if (n<=0)
return 1;
else
return n * Fat(n-1);
}
Main() {
int f;
f = fat(5);
printf(“%d”,f);
}
PARADIGMAS DE
PROGRAMAÇÃO
O QUE É UM PARADIGMA
PROGRAMAÇÃO IMPERATIVA
PROGRAMAÇÃO ORIENTADA A
OBJETOS
PROGRAMAÇÃO FUNCIONAL
PROGRAMAÇÃO LÓGICA