Buscar

Aula 04 - Algoritmos e Linguagens de Programação

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você viu 3, do total de 46 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você viu 6, do total de 46 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você viu 9, do total de 46 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Prévia do material em texto

Prof. Rodrigo Hübner
rodrigohubner@utfpr.edu.br
IC31A – Introdução à Ciência da Computação
Universidade Tecnológica Federal do Paraná – UTFPR
Bacharelado em Ciência da Computação
Aula 04
Algoritmos e Linguagens 
de Programação
 2 
Algoritmo
“Um conjunto finito de regras que provê uma 
sequência de operações para resolver um 
tipo de problema específico” 
– [KNUTH] 
(autor da coleção “The art of computer programming”)
 3 
Pela Legibilidade do Código...
“Devemos mudar nossa atitude tradicional em relação à 
construção de programas. Em vez de imaginar que 
nossa principal tarefa é instruir o computador sobre o 
que ele deve fazer, vamos imaginar que nossa 
principal tarefa é explicar a seres humanos o que 
queremos que o computador faça.” 
— D. E. Knuth
 4 
• Aspecto estático e aspecto dinâmico:
– Estático: não depende do tempo, mas do espaço 
físico onde o algoritmo está sendo escrito;
• Desenvolvimento: Escrita e Compilação.
– Dinâmico: como se comporta a execução de cada 
ação do algoritmo com o passar do tempo.
• Em tempo de Execução.
“Todo algoritmo deve produzir resultados corretos, 
e ser finito tanto estática quanto dinamicamente.”
Algoritmos
 5 
• Ambiguidade: relacionada à sintaxe e semântica 
de linguagens naturais.
– “O artista produz formas perfeitas.”
• Linguagens naturais são muito extensas, 
possuindo ambiguidade.
– Linguagem Natural X Linguagem Computacional
Linguagens
X
 6 
Nos algoritmos, devemos utilizar construções que executarão 
uma ação específica bem definida.
• Uma linguagem algorítmica deve ter sintaxe rígida e 
semântica bem definida.
• Toda linguagem possui sintaxe e semântica.
Linguagens
Linguagem 
Algorítmica
Linguagem 
Computacional
Linguagem Natural
 7 
• Sintaxe: são as regras sintáticas de como as 
sentenças e cada um de seus elementos devem ser 
construídos corretamente.
– int a = 10; 
– Existe uma regra na linguagem que define o formato 
de uma atribuição.
• Semântica: se preocupa com o significado de uma 
sentença construída.
– A atribuição do valor inteiro 10 para a variável a é 
válida?
Sintaxe e Semântica
 8 
• Algoritmos geralmente descrevem algum 
processamento de dados:
• Estes dados precisam ser representados (descritos) nos 
algoritmos
Dados de 
Entrada
Dados de 
Saída
Processamento
(Computador)
Algoritmos
 9 
• Um algoritmo para fins computacionais é a descrição de 
ações que manipulam objetos em função do tempo.
– Objetos descrevem o estado computacional
– Objetos têm função específica
– Ações são direcionadas aos objetos
– Objetos são definidos como parte do programa
– Estados diferentes requerem objetos diferentes.
* Objetos na programação estruturada, serão chamados de variáveis.
Algoritmos
 10 
Variável e Identificador
Na matemática, uma variável é uma entidade capaz de 
representar um valor ou expressão.
Ela pode representar um número ou um conjunto de números:
• Como na equação 
• x2 + 2x + 1 = 0
• Ou na função
• f(x) = x2
 11 
Variável e Identificador
•Na computação uma variável é uma 
posição de memória para armazenar um 
determinado valor
– Podemos modificá-lo ao longo da 
execução do programa
• Uma variável pode ser vista como uma 
caixa com um rótulo ou nome colado nela
– Em um dado instante ela guarda um 
determinado conteúdo.
• O conteúdo desta caixa pode ser alterado 
diversas vezes
 12 
Variável e Identificador
•Na computação uma variável é uma 
posição de memória para armazenar um 
determinado valor
– Podemos modificá-lo ao longo da 
execução do programa
• Uma variável pode ser vista como uma 
caixa com um rótulo ou nome colado nela
– Em um dado instante ela guarda um 
determinado conteúdo.
• O conteúdo desta caixa pode ser alterado 
diversas vezes
– Contudo o conteúdo deve ser sempre do 
mesmo tipo.
 13 
• A cada objeto é associado um nome que identifica 
este objeto ao longo da programação. 
• Este nome é chamado identificador.
• De forma geral, podemos dizer que um 
identificador está associado à uma célula de 
memória.
• O termo variável é frequentemente utilizado como 
sinônimo de identificador.
Variável e Identificador
 14 
• Em geral, as linguagens de programação 
exigem nomes de identificadores com as 
seguintes característica:
– Use somente letras e números;
– O primeiro caractere do nome deve ser uma letra;
– Não é permitido o uso de caracteres especiais.
• Exemplos válidos: ImpostoDeRenda, F1, soma, 
produto, desconto, SalarioHora.
• Exemplos inválidos: 1f, Imposto-renda, salario 
hora.
Identificadores
 15 
Variáveis: Identificadores, Tipo, Valor
 16 
Variáveis: Identificadores, Tipo, Valor
 17 
Formas de Representação
• Descrição em Linguagem Natural
• Fluxograma
• Linguagem Algorítmica ou Pseudocódigo ou Portugol
• Linguagem de Programação
 18 
 Linguagem natural: algoritmos expressos diretamente em 
linguagem natural, como nas receitas.
Vantagens: Facilidade de compreensão, linguagem já 
conhecida.
Desvantagens: Pode levar a ambiguidade (várias 
interpretações); Não há rigor, portanto um algoritmo pode ser 
resumido ou detalhado demais;
 Por exemplo, em um algoritmo de troca de pneu
– A instrução “afrouxar ligeiramente os parafusos”, está sujeita 
interpretações diferentes.
 Uma instrução mais precisa seria: 
– “afrouxar a porca, girando-a de 30º no sentido anti-horário”. 
Linguagem Natural
 19 
Exemplo
• Faça um Algoritmo para calcular a média aritmética entre 
duas notas de um aluno e mostrar sua situação, o que 
pode ser APROVADO ou REPROVADO.
 Passo 1: Receber os valores das duas notas
 Passo 2: Calcular a média aritmética
 Passo 3: Mostrar a média aritmética
 Passo 4: Se a média aritmética for maior ou igual a 7, então
situação do aluno é APROVADO; caso contrário, a situação 
é REPROVADO.
 20 
●Fluxogramas: representação gráfica, por meio de 
símbolos geométricos.
● Cada tipo de operação é representado por um símbolo 
diferente.
● Permite o acompanhamento visual do fluxo do 
algoritmo.
Vantagem: O entendimento de elementos gráficos é 
mais simples que o entendimento de textos.
Desvantagem: Necessidade de aprender a simbologia; 
algoritmo resultante não apresenta muitos detalhes, 
dificultando sua transição para um programa.
Fluxogramas
 21 
Início e fim de algoritmo
Atribuições e cálculos de 
valores
Decisões
Entrada de dados
Discos
Fluxogramas: alguns símbolos
 22 
Impressão de resultados
Conector na página
Entrada manual
Indica o sentido do fluxo e serve de ligação entre 
blocos existentes.
Conector fora da página
Fluxogramas: alguns símbolos
 23 
Exemplo
 Início N1, N2
M = (N1 + N2) /2
 M
M >= 7APROVADO REPROVADO
SIM NÃO
 Fim
 24 
 Pseudo-linguagem: emprega linguagem 
intermediária entre linguagem natural e linguagem de 
programação
 Este método procura misturar as facilidades da 
linguagem natural com a precisão das linguagens de 
programação
 A representação da solução em pseudo código 
possibilita ao programador a abstração dos detalhes 
da sintaxe da linguagem escolhida. 
Pseudocódigo
 25 
Exemplo
 ALGORITMO
 DECLARE N1, N2, M NUMÉRICO
 ESCREVA “Digite as duas notas”
 LEIA N1, N2
 M ← (N1 + N2) / 2
 ESCREVA “Média = ”, M
 SE M >= 7
 ENTÃO ESCREVA “Aprovado”
 SENÃO ESCREVA “Reprovado”
 FIM_ALGORITMO.
 26 
Exemplo
 27 
Linguagem de Programação
• A própria linguagem de programação é uma 
forma de representação de algoritmos.
• Neste caso os algoritmos estão codificados na 
linguagem de programação específica.
 28 
Exemplo
 29Técnicas de Construção
Projetar o Algoritmo
Problema Projeto Algoritmo
 30 
Técnicas de Construção
Projetar o Algoritmo
Muitas vezes nos esquecemos do projeto.
Passamos direto para a codificação, o que é errado.
Problema Projeto Algoritmo
 31 
Representação da InformaçãoRepresentação da Informação
Sistemas de NumeraçãoSistemas de Numeração Linguagem de MontagemLinguagem de Montagem
- Decimal (Base 10)
- Binário (Base 2)
- Hexadecimal (Base 16)
- Octal (Base 8)
- Assembly
- Formada por mnemônicos 
que são montados 
(traduzidos) para a 
linguagem de máquina.
add $2, $8, $0 10000001000000100000100000000001
Um Programa: dados e instruções
 32 
Linguagens de Programação
• Uma Linguagem de Programação é um conjunto de 
notações formais para descrever ações ou operações a 
serem realizadas por um computador.
• São ferramentas para o desenvolvimento de software.
• Software: é um conjunto de programas, módulos, 
procedimentos, regras e quaisquer documentações 
associadas à operação de um sistema de processamento 
de dados.
 33 
Linguagens de Programação
• São usadas para descrever algoritmos.
• Uma maneira de formalizar a escrita de um algoritmo para 
que o computador possa entender. 
• Permitir que os usuários/programadores especifiquem como 
estes passos devem ser sequenciados para resolver um 
problema. 
• Especificar algoritmos com precisão. 
Algoritmos
Sequências de passos que levam à solução de um problema.
Exemplo Clássico: Receita de Bolo
 34 
Tipos de Linguagens
• Linguagens de baixo nível 
• Restritas a linguagem de máquina
• Forte relação entre as operações implementadas pela linguagem e as 
operações implementadas pelo hardware.
• Estritamente vinculada às características do hardware
• Linguagens de alto nível
• Aproximam-se das linguagens utilizadas por humanos para expressar 
problemas e algoritmos.
• Cada declaração numa linguagem de alto nível equivale a várias declarações 
numa linguagem de baixo nível. 
 35 
Níveis de Linguagens
• Linguagem de Máquina
• Linguagem Hexadecimal
• Linguagem Assembly
• Linguagem de Alto Nível
 36 
Linguagens de Programação
Hardware
Linguagem de Máquina
Ling. Montagem (Assembly)
Linguagem de Alto Nível
C Pascal Fortran...
 37 
Linguagens de Programação
Código C GAS/Gnu
 38 
Linguagens de Programação
Código C GAS/Gnu
 39 
Linguagens de Programação
gcc teste.c
shed a.out
 40 
Linguagens de Programação
Código C Linguagem
de máquina
Assembly
 41 
Linguagens de Programação
Código C Assembly
 42 
Linguagens de Programação
Código C Assembly
 43 
Linguagens Compiladas
• O código fonte é compilado e um código 
executável é gerado.
• Exemplos: C, C++, Pascal, Fortran, Go! ...
 44 
Linguagens Interpretadas
• O código é interpretado.
• Exemplo: 
• Java → Java Virtual Machine (JVM).
• Python → Interpretador Python (Cpython).
• Shell script ...
• Um interpretador obtém os comandos do programa e 
determina as ações que devem ser executadas.
 45 
Referências
• Fluxograma:
https://wiki.gnome.org/Dia
• Pseudocódigo:
AlgoUCS
https://vposeidon9.ucs.br
• VisuAlg
http://www.guanabara.info/logica/Ferramentas/visualgv25.exe
• The Knob & Switch Computer
http://users.dickinson.edu/~braught/kands/kands.html
 46 
Próxima Aula
• Noções de Software Básico e Construção de Linguagens 
de Programação
	Slide 1
	Slide 2
	Slide 3
	Slide 4
	Slide 5
	Slide 6
	Slide 7
	Slide 8
	Slide 9
	Slide 10
	Slide 11
	Slide 12
	Slide 13
	Slide 14
	Slide 15
	Slide 16
	Slide 17
	Slide 18
	Slide 19
	Slide 20
	Slide 21
	Slide 22
	Slide 23
	Slide 24
	Slide 25
	Slide 26
	Slide 27
	Slide 28
	Slide 29
	Slide 30
	Slide 31
	Slide 32
	Slide 33
	Slide 34
	Slide 35
	Slide 36
	Slide 37
	Slide 38
	Slide 39
	Slide 40
	Slide 41
	Slide 42
	Slide 43
	Slide 44
	Slide 45
	Slide 46

Outros materiais