Buscar

Algoritmos e Programação

Prévia do material em texto

1
Algoritmos e 
Técnicas de 
Programação
Fundamentos de Algoritmos e das 
Linguagens de Programação
Profa. Dra. Jenai Oliveira Cazetta
Contextualização
Fonte: https://cutt.ly/3fFZ5fD
TECNOLOGIA DA INFORMAÇÃO
Conjunto de todas as atividades e soluções
providas por recursos de computação que visam 
a produção, o armazenamento, a transmissão, o 
acesso, a segurança e o uso das informações. 
Programas de computadores são construídos seguindo um conjunto de 
regras e técnicas bastante especificas, portanto, nessa era digital, é 
imprescindível que profissionais de diversas áreas aprendam essas 
ferramentas, para que possam contribuir e evoluir em sua área de 
atuação.
Programar é uma arte, portanto precisamos ter ideias claras 
sobre o que devemos fazer, planejar qual a maneira mais 
eficaz/criativa/elegante e sem redundâncias para que a 
aplicação fique bem desenvolvida, facilitando manutenções.
Conceitos e 
introdução aos 
algoritmos.
Linguagens de 
programação e 
sua usabilidade.
Componentes de 
um programa de 
computador.
Nossa teleaula
Princípios de 
resolução de 
problemas
Objetivo principal da lógica de programação
• Técnicas para resolução de problemas e automatização de tarefas;
• Base para o aprendizado de todas as linguagens de programação.
Raciocínio lógico
• Sequência coerente, regular e necessária de 
acontecimentos, de coisas ou fatos.
2
Objetivos
Solucionar 
problemas!
Atingir 
objetivos!
Atingir eficiência e eficácia no 
uso de recursos computacionais!
Organizar 
estratégicas!
Fontes: https://cutt.ly/2fFFhqE e https://cutt.ly/5fFS5z5
Calma, 
persistência 
e prática 
Fonte: https://cutt.ly/EfFOiyK
DADOS representam FATOS e não INFORMAÇÕES!
Objetivo! Conhecimento! 
Regras, diretrizes, procedimentos! 
Tarefas logicamente relacionadas!
MADEIRA
MESA
Princípios de resolução computacional de problemas
Problemas podem ser abordados de várias maneiras são descritos 
especificando-se a entrada (possíveis dados) e as condições (ou relações) 
que a saída deve satisfazer para determinada entrada. 
Fontes: https://cutt.ly/BfFNHsI, https://cutt.ly/EfXYjud, https://cutt.ly/gfXUTAx
Pode-se começar a escrever diretamente o programa que irá resolver um 
problema, definindo várias repetições (“loops”), várias decisões e várias
variáveis para armazenar e processar valores resultado desorganizado
difícil ler, entender, depurar e atualizar. 
Mesmo que essa primeira 
abordagem funcione, o programa 
desenvolvido pode ser mais 
complicado do que o necessário. 
Fonte: https://cutt.ly/EfFOiyK
O que devemos fazer?
Pensar sobre o problema;
Rascunhar uma primeira solução;
Preocupar com os detalhes.
DOCUMENTAÇÃO
Introdução aos 
algoritmos
3
Algoritmo
(1) Processo sistemático para a resolução de um problema;
(2) Conjunto lógico de operações predefinidas que resolva um
determinado problema de forma intuitiva;
(3) Sequência ordenada de passos que deve ser seguida para
a realização de uma tarefa.
Os algoritmos ajudarão a 
descobrir o melhor percurso 
para solucionar um problema 
computacional.
Fonte: https://cutt.ly/EfFOiyK
Fonte: https://cutt.ly/EfFOiyK
Algoritmo não computacional
FAZENDO ARROZ
1. Acenda o fogo;
2. Refogue os temperos;
3. Coloque o arroz na panela;
4. Refogue o arroz;
5. Acrescente a água;
6. Abaixe o fogo;
7. Espere o ponto;
8. Desligue o fogo;
9. Sirva o arroz.
Podemos 
melhorar este 
algoritmo?
https://cutt.ly/5Wn3y2B
Não existe somente uma forma de 
realizar um algoritmo. Pode-se 
criar outras formas ou sequências 
para obter o mesmo resultado.
Algoritmo do arroz
• Entrada ingredientes para o preparo do arroz;
• Processamento cozimento do arroz;
• Saída arroz.
Fonte: https://cutt.ly/lfXOfFJ
Formas de representar um algoritmo
• Linguagem natural;
• Diagrama de blocos;
• Pseudocódigo ou português estruturado.
Linguagem natural
• Forma falada, escrita, gesticulada... 
• Direciona de forma simples e eficiente as descrições 
dos problemas e suas soluções.
Fonte: https://cutt.ly/IfFC1KG
Exemplo
Problema: Média entre dois valores.
ENTRADA
• Dois valores
PROCESSAMENTO
• Cálculo da 
média 
aritmética
SAÍDA
• Média 
aritmética
4
inicio
entre com o primeiro valor;
armazene o valor digitado;
entre com o segundo valor;
armazene o valor digitado;
realize a soma do primeiro valor com o segundo;
realize a divisao do total dos valores por dois;
armazene o valor encontrado;
mostre na tela o resultado da media;
fim.
Indentação!!!
; e . Erros de 
Português?
Fonte: https://cutt.ly/EfFOiyK
Diagrama de blocos e 
pseudocódigo
Diagrama de blocos
• Conjunto de símbolos gráficos cada um representa uma ação específica a 
ser executada;
• Determina a linha de raciocínio utilizada pelo programador para resolver o 
problema;
• Os símbolos são padronizados ANSI.
Dicas
• Estar atento aos níveis;
• Começar de cima para baixo e da esquerda para direita;
• Não cruzar as linhas, principalmente as linhas de fluxos de 
dados.
TERMINAL
ENTRADA 
MANUAL
PROCESSAMENTO
EXIBIÇÃO
Início ou fim de um 
fluxo!
Geralmente via 
teclado!
Execução de 
cálculos!
Mostra o resultado
de uma ação!
DECISÃO
PREPARAÇÃO
PROCESSO 
PREDEFINIDO
Grupo de operações 
relacionadas a uma 
sub-rotina!
Desvios condicionais nas operações de 
tomada de decisão e laços condicionais 
para repetição de trechos do programa!
Execução de um 
laço incondicional!
LINHA DE FLUXOCONECTORES
Calculando a média entre dois valores
início
valor1
valor 1
1
valor2
valor 2
media  soma/2
media
1
fim
soma  valor1 + valor2
“Digite o 
valor1: ”
“Digite o 
valor2: ” “Média: “ 
Pseudocódigo ou português estruturado
• Ferramenta que pode auxiliar a programação;
• Pode ser escrito com palavras similares ao inglês (português) facilita a 
interpretação e desenvolvimento de um programa.
Pode ser aplicado a 
qualquer linguagem 
de programação.
Fonte: https://cutt.ly/EfFOiyK
5
Regras básicas
• Escolher um nome;
• Avaliar as variáveis atenção aos seus tipos e características;
• Descrever de forma clara o que será armazenado;
• Verificar se as instruções fazem sentido e se as mesmas tem uma 
sequência lógica;
• Avaliar o resultado; 
• Finalizar o algoritmo.
calculo_media;
var
real: valor1, valor2, soma, media;
inicio
escreva (“Digite o valor 1: ”);
leia (valor1);
escreva (“Digite o valor 2: ”);
leia (valor2);
soma  valor1 + valor2;
media  soma/2;
escreva (“A media do aluno: ”);
escreva (media);
fim.
; .
Converse com o usuário de seu 
programa...
Diga o que você quer que ele faça e 
o que obteve após 
processamento!!!
Fonte: https://cutt.ly/EfFOiyK
Armazenando dados
Atividade
• Construir um algoritmo para cadastrar os dados pessoais de um aluno
(nome, endereço, cidade e estado) e mostrar na tela do computador o
resultado;
• Algoritmo em linguagem natural, em diagrama de blocos e em
pseudocódigo.
ENTRADA
• DADOS 
PESSOAIS DO 
ALUNO
PROCESSAMENTO
• NÃO TEM!
SAÍDA
• DADOS 
PESSOAIS DO 
ALUNO
inicio
entre com o nome do aluno;
entre com a rua e o numero da residencia do aluno;
entre com a cidade e o estado da residencia do aluno;
mostre na tela os dados coletados do aluno;
fim.
Linguagem natural
6
início
nome
nome
1
nome, 
rua_numero, 
cidade_estadorua_numero
rua e numero
1
fim
cidade_estado
cidade e estado
Diagrama de blocos Pseudocódigocadastro_aluno;
var
caracter: nome, rua_numero, cidade_estado;
inicio
escreva(“Digite o nome do aluno: ”);
leia nome;
escreva(“Digite o nome da rua e o numero: ”);
leia rua_numero;
escreva(“Digite a cidade e o estado: ”);
leia cidade_estado;
escreva nome;
escreva rua_numero;
escreva cidade_estado;
fim.
string conjunto 
de caracteres!!!
Fonte: https://cutt.ly/EfFOiyK
Codificação binária Para aprender a programar, 
preciso aprender sobre 
codificação binária?
Fonte: https://bit.ly/3aLma1DFonte: https://cutt.ly/EfFOiyK
Conceitos básicos de 
linguagens de 
programação
Para cada tarefa, para cada objetivo a ser 
atingido há uma linguagem adequada e 
um conjunto de ferramentasrecomendado.
Linguagens de programação são padrões de codificação 
binária, com sintaxe e semânticas específicas. 
São capazes de criar instruções para máquinas. 
Fonte: https://cutt.ly/EfFOiyK
Graças a esses conjuntos de códigos e recursos, é possível 
criar programas e sistemas para resolver os mais diversos 
problemas do cotidiano.
7
Sintaxe determina as relações 
formais que interligam os 
constituintes da sentença, 
atribuindo-lhe uma estrutura.
Semântica sentido das 
palavras e interpretação das 
sentenças e dos enunciados.
Fonte: https://cutt.ly/EfFOiyK
Alto ou baixo nível?
• Alto nível a sintaxe se aproxima a uma linguagem
humana;
• Baixo nível possuem sintaxe e semântica próximas
ao código de máquina.
Paradigmas das linguagens de programação
• Paradigma modelo, padrão.
• No contexto da programação de computadores jeito,
maneira, estilo de se programar.
• Todas as linguagens possuem uma sintaxe forma
como o programa é escrito.
• Quatro paradigmas tiveram sua evolução reconhecida
nas últimas três décadas:
• Programação Imperativa ou Procedural;
• Programação Orientada a Objeto;
• Programa Funcional;
• Programação Lógica.
Programação imperativa
• Paradigma mais antigo;
• Pode armazenar o programa e suas variáveis juntamente, assim como a 
abstração procedural, as atribuições, as sequências, os laços, os 
comandos condicionais e a manipulação de exceções;
• O nome “Imperativa” está ligado ao tempo verbal 
imperativo, onde o programador diz ao 
computador: faça isso, depois isso, depois aquilo...
• COBOL, Fortran, C, Ada e Perl.
Programação orientada a objeto (POO)
• Um dos paradigmas mais populares atualmente;
• Conceito de programação baseado no uso de componentes individuais
objetos que inter-relacionam entre si e que fazem parte da composição
do software;
• Agiliza o processo de criação e proporciona aos programadores uma 
certa flexibilidade para criação e modificações dos 
programas.
• vSmalltalk, C++, Java, Delphi, C#.
8
Componentes e 
elementos de 
linguagem de 
programação
Programa de computador
SEQUÊNCIA DE INSTRUÇÕES
1. Início do programa;
2. Definição das variáveis e de possíveis atribuições;
3. Instrução de leitura dos dados;
4. Instrução do formato de escrita;
5. Demais instruções e funções;
6. Fim do programa.
Programa: Sequência de código organizada de tal forma 
que permita resolver um determinado problema. 
Pode ser desenvolvido em módulos distintos e/ou em 
subprogramas.
Fonte: https://cutt.ly/EfFOiyK
Atenção na sequência que os dados 
percorrem as instruções deverão 
ser escritas e armazenadas na 
memória do computador na mesma 
ordem em que se espera que sejam 
executadas.
Linguagem C
• É estruturada torna o processo de desenvolvimento
mais simplificado;
• Simples conta com um conjunto de bibliotecas de
funções e sub-rotinas auxiliam no desenvolvimento de
sistemas;
• Grande parte dos sistemas operacionais são escritos em
C usada para escrever uma versão do Unix.
https://bit.ly/2P0Dz02
Estrutura de um programa em C
Algoritmo Linguagem C
{ início de uma 
função.
} término da 
função.
nome_programa;
var
//declaração de variáveis
inicio
//ações
fim.
#include<bibliotecas> 
int main()
{
//início das funções
//declaração de variáveis
//instruções
return 0;
//término das funções
}
• int main () a primeira e a principal função a ser 
executada;
• int definição do valor de retorno da função main(), 
que no caso é um inteiro;
• () usados para definir os parâmetros a serem 
passados para a função main();
• return definição do valor de retorno do tipo int
normalmente é configurado com o valor 0 para a 
finalização da função main().
#include<bibliotecas> 
int main()
{
//início das funções
//variáveis
//instruções
return 0;
//término das funções
}
9
Bibliotecas ou arquivos de cabeçalho em C
• Coleção de funções, constantes, estruturas de dados, etc.
ficam disponíveis para uso do programador em arquivos
específicos acessados via arquivos de cabeçalho.
#include<nome_biblioteca>
#define_USE_MATH_DEFINES
Algumas bibliotecas
#include<stdio.h> funções de entrada e saída (printf e scanf )
#include<stdlib.h> transforma strings em números
#include<string.h> manipulação de strings
#include<time.h> manipulação de horas e datas
#include<math.h> operações matemáticas
//para acessar as constantes M_xxx
Variáveis e comandos 
de entrada e saída de 
dados
Variável
NOME DA VARIÁVEL
• Deve identificar o dado a qual se refere; 
• Maioria das linguagens de programação case sensitive
letras maiúsculas e minúsculas são tratadas com 
distinção valor  Valor; 
• Não podem ser usados acentos
nem caracteres especiais. 
<tipo> <nome_da_variavel>;
Uma variável é uma posição na memória onde um valor pode ser armazenado 
para ser utilizado por um programa. É um endereço de memória de trabalho 
que guarda, temporariamente, um valor utilizado/obtido pelo programa.
Memória de Trabalho
A B
Tipos primitivos – Básicos 
• Numérico inteiro (int) valores inteiros positivos,
negativos ou zero;
• Numérico de ponto flutuante (float ou double) valores
pertencentes ao conjunto dos números reais;
• Caractere (char e void) armazena letras;
• Booleano (bool) armazenam verdadeiro (1) ou falso
(0).
Comandos de entrada
• Digitada pelo usuário a partir de uma interface textual ou gráfica pela
qual o usuário alimenta o sistema com dados;
• Leitura de arquivos a partir de arquivos de texto, planilhas, arquivos
pdf, entre outros;
• Banco de dados programas que fazem o gerenciamento da base de
dados ao qual o sistema computacional possui acesso.
10
scanf(“%d”,&valor);
//o usuário entrará com um valor inteiro e o computador o 
armazenará na variável “valor”.
leia(variável);
scanf(“código de formatação”,&variável);
Obrigatório! Diz para o acessar o endereço de 
memória onde a variável foi criada. 
scanner flow
gets(nome);
//o usuário entrará com uma palavra ou com uma frase e o 
computador o armazenará na variável “nome”.
• No caso da variável ser do tipo caractere:
Especificador de formato
Cada tipo de variável um especificador de formato para fazer a
impressão do valor que está guardado naquele espaço da memória.
Código Função 
%c apenas 1 caractere
%d números inteiros
%e números em notação científica
%f números reais (ponto flutuante)
%s série de caracteres
%u número decimal sem sinal
escreva (variável);
printf (“código de formatação”, variável);
printf (“expressão”);
printf(“O valor encontrado foi %d”,valor1);
printf(“∖nResposta: a = %.2f e b = %.2f ∖n”, a,b);
Comandos de saída (tela do computador)
printer flow
escreva (“ ”);
Armazenando dados 
pessoais
Atividade
• Programa armazenar o nome, a idade, o e-mail, o CPF e a renda
mensal de um aluno;
• Deverá receber os dados digitados pelo usuário e armazenar nas
respectivas variáveis e, por fim, imprimir os valores que foram
armazenados.
ENTRADA
• DADOS 
PESSOAIS DO 
ALUNO
PROCESSAMENTO
• NÃO TEM!
SAÍDA
• DADOS 
PESSOAIS DO 
ALUNO
11
início
nome
Nome:
1
idade
Idade:
1
email
Email:
Diagrama de blocos
cpf
CPF:
renda
Renda mensal:
2
nome, idade, 
email, cpf, renda
2
fim
cadastro_aluno;
//declarando variaveis
var
caracter: nome, email, cpf;
real: renda;
int: idade;
inicio
//entrando e armazenando variaveis
escreva(“Digite o nome do aluno: ”);
leia(nome);
escreva(“Digite a idade do aluno: ”);
leia(idade);
escreva(“Digite o e-mail do aluno: ”);
leia(email);
escreva(“Digite o CPF do aluno: ”);
leia(cpf);
escreva(“Digite a renda mensal do aluno: ”);
leia(renda);
//imprimindo dados armazenados
escreva(“Aluno: ”,nome);
escreva(“Idade: ”,idade);
escreva(“e-mail: ”,email);
escreva(“CPF: ”,cpf);
escreva(“Renda mensal: ”,renda);
fim.
//incluindo bibliotecas
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
//iniciando o programa
int main()
{
//definindo variáveis
char nome,email,cpf;
float renda;
int idade;
//imprimindo na tela do computador o valor 
a ser digitado e armazenando-o na 
respectiva variável
printf(“\nDigite o nome do aluno: ");
gets(nome);
printf(“ \nDigite a idade do aluno: ");
scanf("%d",&idade);
printf(“ \nDigite o email do aluno: ");
gets(email);
printf(“ \nDigite o CPF do aluno: ");
gets(cpf);
printf(“ \nDigite a renda mensal do aluno: ");
scanf("%f",&renda);
//imprimindo os dados armazenados
printf(“ \nAluno: %s",nome);
printf(“ \nIdade: %d",idade);
printf(" \nE-mail: %s",email);
printf(" \nCPF: %s",cpf);
printf(" \nRenda: R$ %.2f",renda);
//encerrando o programa
printf(" \nPressione a tecla enter para sair!");
return 0;
}
12
Linguagem C Para programar na linguagem 
C eu preciso ter algum 
software instalado no meu 
computador?
Fonte: https://bit.ly/3aLma1DFonte: https://cutt.ly/EfFOiyK
Dev C++ Iniciando novo projeto
Escrevendo o código fonte
Escreva seu 
código-fonte 
aqui!!!
13
Salvando o código-fonte
Compilando e executando o código-fonte
Recapitulando
Resolução de problemas
Pensar sobre o problema;
Rascunhar uma primeira solução;
Preocupar com os detalhes.
14
ALGORITMOS
Linguagem 
natural
Diagrama de blocos Pseudocódigo
Direciona de 
forma simples e 
eficiente as 
descrições dos 
problemas e 
suas soluções.
Conjunto de símbolos 
gráficos sendo que 
cada um representa 
uma ação específica 
a ser executada.
Pode ser escrito com 
palavras similares ao 
inglês (português).
Pseudocódigo Linguagem C
nome_programa;
var
//declaração das 
variáveis
inicio
//ações
fim.
#include<bibliotecas> 
int main()
{
//início das funções
//declaração de variáveis
//instruções
return 0;
//término das funções
}
;
“ {“ início de uma 
função.
“ }“ término da 
função.
Algumas bibliotecas
#include<stdio.h> funções de entrada e saída (printf e scanf )
#include<stdlib.h> transforma strings em números
#include<string.h> manipulação de strings
#include<time.h> manipulação de horas e datas
#include<math.h> operações matemáticas
#define_USE_MATH_DEFINES
//para acessar as constantes M_xxx
Variáveis Tipos
<tipo> <nome_da_variavel>;
int
float ou double
char e void
bool
Comando de entrada de dados
leia (variável); scanf (“código de formatação”,&variável);
scanf (“%d”,&valor); gets(nome);
%c apenas 1 caractere
%d números inteiros
%e notação científica
%f números reais
%s série de caracteres
%u número decimal sem sinal
Comando de saída de dados
escreva (variável); printf (“código de formatação”, variável);
escreva (“ ”); printf (“expressão”);
printf(“O valor encontrado foi %d”,valor1);
printf(“ ∖nResposta: a = %.2f e b = %.2f ”, a,b);