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;
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
então sequência de comandos
Exemplo
Algoritmo #!/usr/bin/perl
declare sequencia01, sequencia02 literal # Selecao Simples.
sequencia01 ← “GTGGGATC” my ($sequencia01, $sequencia02);
leia sequencia02 $sequencia01 = "GTGGGATC";
se sequencia01 = sequencia02 print "Digite a sequencia: ";
então escreva “Sequencia encontrada” chomp($sequencia02 = <STDIN>);
Fim_Algoritmo if($sequencia01 eq $sequencia02){
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
declare seq01, seq02, seq03 literal # Selecao Composta.
seq01 ← “GGTACGTA” my ($seq01, $seq02, $seq03);
seq02 ← “GGTACGAT” $seq01 = "GGTACGTA";
leia seq03 $seq02 = "GGTACGAT";
se seq03 = seq01 print "Digite a sequencia: ";
então escreva “Encontrou” chomp($seq03 = <STDIN>);
senão se seq03 = seq02 if ($seq03 eq $seq01){
então escreva “Encontrou” print "Encontrou\n";
senão escreva “Não achou!” } elsif ($seq03 eq $seq02){
Fim_Algoritmo print "Encontrou\n";
}
else {print "Não achou\n";
}
Seleção
Repetição
A estrutura de repetição permite que uma sequência de comandos seja executada
repetidamente até que uma determinada condição de interrupção seja satisfeita. A
condição de interrupção que deve ser satisfeita é representada por uma expressão
lógica. As estruturas de repetição são:
• 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.
Algoritmo #!/usr/bin/perl
declare X,Y, L numérico # Repeticao: Enquanto.
L←0 my ($x, $y, $l);
$l = 0;
enquanto L <= 3 faça
while ($l <= 3){
início print "digite x: ";
leia X,Y $x = <STDIN>;
se X > Y print "digite y: ";
então escreva X $y = <STDIN>;
senão escreva Y if ($x > $y){
L←L+1 print "$x \n";
fim } else {
Fim_Algoritmo. print "$y \n";
}
$l = $l + 1;
}
Estrutura Repita
Os comandos são executados pelo menos uma vez. Quando a condição é encontrada, ela é
testada. Se for verdadeira o comando seguinte será executado. Se for falsa, os comandos
voltam a ser executados. Em outras palavras os comandos são executados até que a
condição se torne verdadeira.
repita
comandos
até condição
Exemplo
Algoritmo #!/usr/bin/perl
declare X,Y, L numérico # Repeticao: Repita.
L←0 my ($x, $y, $l);
$l = 0;
repita
do {
leia X,Y print "digite x: ";
se X > Y $x = <STDIN>;
então escreva X print "digite y: ";
senão escreva Y $y = <STDIN>;
L←L+1 if ($x > $y){
até L > 3 print "$x \n";
Fim_Algoritmo. } else {
print "$y \n";
}
$l = $l + 1;
} until $l >= 3
Algoritmo #!/usr/bin/perl
declare X,Y, L numérico # Repeticao: Para.
para L de 1 até 3 passo 1 faça my ($x, $y, $l);
for ($l=0;$l<=3;$l++){
início
print "digite x: ";
leia X,Y $x = <STDIN>;
se X > Y print "digite y: ";
então escreva X $y = <STDIN>;
senão escreva Y if ($x > $y){
fim print "$x \n";
Fim_Algoritmo. } else {
print "$y \n";
}
}
VARIÁVEIS COMPOSTAS
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
inicio meio fim
6 8 11
4 7 8 10 14 21 22 36 62 77 81 91
22 < 62, fim= meio -1
inicio meio fim
6 6 7
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).
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 IMPERATIVO
PROGRAMAÇÃO ORIENTADA A OBJETOS
PROGRAMAÇÃO FUNCIONAL
PROGRAMAÇÃO LÓGICA