Post on 10-Nov-2018
Apresentação
Programação I Apresentação
Prof. Carlos Alberto
carlos.batista@facape.br
carlos36_batista@yahoo.com.br
Apresentação
JUNIOR, D. P.; NAKAMITI, G. S.; ENGELBRECHT,
A. de M. E.; BIANCHI, F. Algoritmos e
Programação de Computadores. Editora
Campus/Elsevier, 2012.
Referências
Apresentação
MEDINA, M.; FERTIG, C. Algoritmos e
programação: teoria e prática. São Paulo: Novatec,
2006.
Referências
Apresentação
SCHILDT, Herbert. C Completo e Total. São Paulo:
Makron Books, 1996.
Referências
Apresentação
Vamos começar?
5
Apresentação
Introdução à programação
• O que é um algoritmo?
6
Apresentação
Introdução à programação
• O que é um algoritmo?
• Sequência finita de operações que, quando executadas na ordem
estabelecida, atingem um objetivo determinado em um tempo
finito.
7
Apresentação
Introdução à programação
• O que é um algoritmo?
• Sequência finita de operações que, quando executadas na ordem
estabelecida, atingem um objetivo determinado em um tempo
finito.
• Um algoritmo deve atender aos seguintes requisitos:
• Posuir um estado inicial;
• Consistir de uma sequência lógica finita de ações claras e
precisas;
• Produzir dados de saída corretos;
• Possuir estado final previsível (deve sempre terminar).
8
Apresentação
Introdução à programação
• Podemos definir algoritmos para resolver problemas do
dia a dia;
• Mas, podemos também desenvolver algoritmos que
podem ser transformados em programas executados em
computadores.
9
Apresentação
Introdução à programação
• Podemos definir algoritmos para resolver problemas do
dia a dia;
• Mas, podemos também desenvolver algoritmos que
podem ser transformados em programas executados em
computadores.
Objetivo da disciplina
10
Apresentação
Introdução à programação
• Para que um algoritmo possa ser executado por um
computador é necessário identificar quais as ações que
essa máquina pode executar;
11
Apresentação
Introdução à programação
• Para que um algoritmo possa ser executado por um
computador é necessário identificar quais as ações que
essa máquina pode executar;
• Exemplo:
Algoritmo “média”
Var
nota1, nota2, media : real
Inicio
leia(nota1, nota2)
media := (nota1 + nota2)/2
escreva(media)
fimalgoritmo
12
Apresentação
Introdução à programação
• Analisando o exemplo, identificamos ações que podem
ser executadas por um computador:
• Obter um dado de uma unidade de entrada de dados, também
chamada de leitura de um dado;
• Resolver expressões aritméticas e lógicas;
• Colocar o resultado de uma expressão em uma variável.
• Informar um resultado através de uma unidade de saída, também
chamada de escrita de uma informação ou saída de um dado;
13
Apresentação
Introdução à programação
• Essas ações são denominadas instruções
ou comandos
14
• Obter um dado de uma unidade de entrada de dados, também
chamada de leitura de um dado;
• Resolver expressões aritméticas e lógicas;
• Colocar o resultado de uma expressão em uma variável.
• Informar um resultado através de uma unidade de saída,
também chamada de escrita de uma informação ou saída de
um dado;
Apresentação
Introdução à programação
• Formas de expressar um algoritmo
• Linguagem textual
• Pseudolinguagem
• fluxograma
15
Apresentação
Introdução à programação
• Linguagem textual. Utiliza a linguagem natural.
• Exemplo: soma dois valores
1. Obter os dois valores
2. Realizar a soma
3. Informar o resultado
16
Apresentação
Introdução à programação
• Pseudolinguagem. Semelhante a uma linguagem de
programação, sem entrar em detalhes como, por
exemplo, formatação de informações de entrada e de
saída.
• Exemplo: soma dois valores
Algoritmo – Soma
Entradas: valor1, valor2 (real)
Saídas: soma (real)
Inicio
ler(valor1, valor2)
soma ← valor1 + valor2
escrever (soma)
Fim
17
Apresentação
Introdução à programação
• Fluxograma. Representação gráfica que possibilita uma
interpretação visual do algoritmo. Não é adequada para
algoritmos muito extensos.
• Exemplo: soma dois valores
18
Apresentação
Introdução à programação
• Dois aspectos devem ser analisados quando se constrói
um algoritmo para ser executado em um computador:
• Eficácia (corretude). Um algoritmo deve realizar corretamente a
tarefa para a qual foi construído.
• Eficiência. A solução de um problema através de um algoritmo
não é necessariamente única. Pode-se calcular a forma mais
eficiente com base em dois critérios: tempo de execução e
espaço de memória ocupado. Exemplos: Algoritmos de Busca e
Algoritmos de Ordenação
19
Apresentação
Introdução
• Programa
• Formalização de um algoritmo em uma determinada linguagem de
programação, segundo suas regras de sintaxe e semântica, de
forma que o computador possa entender a sequência de ações.
• Linguagem de programação
• Conjunto de símbolos (comandos, identificadores, operadores, etc.)
e regras que permitem a construção de sentenças que descrevem
de forma precisa ações compreensíveis e executáveis para o
computador.
• É definida por uma notação formal, através de dois componentes:
sintaxe e semântica.
Apresentação
Introdução
• Sintaxe
• Estabelece a forma como as instruções da linguagem são escritas,
mas sem especificar seu significado.
• Conjunto de regras que determinam que construções estão
corretas e quais não estão.
• Por exemplo, na linguagem C, os blocos de códigos são limitados
por “{}”, enquanto em Pascal, são limitados por BEGIN END.
Apresentação
Introdução
• Semântica
• Complementa a sintaxe.
• Corresponde à descrição do significado das instruções válidas de
uma linguagem.
• Por exemplo, a sintaxe da instrução IF (se) da linguagem PASCAL
é:
IF <condição> THEN
BEGIN
<instruções>
END;
• Sua semântica é: “se o valor da expressão for verdadeira, as
instruções incorporadas serão executadas pelo programa”.
Apresentação
Introdução
• Diferença entre SINTAXE e SEMÂNTICA
Sintaxe: descreve as estruturas de uma linguagem;
Semântica: descreve o significado dessas estruturas.
Apresentação
Introdução
• Tipos de linguagens
Apresentação
Introdução à programação
• Etapas de construção de um programa
• Programar não é uma atividade trivial, pelo contrário, requer muito
cuidado e atenção;
• A dificuldade em gerar bons programas levou à definição de
técnicas específicas que iniciam frequentemente com a construção
de um algoritmo.
• A forma mais simples de garantir a qualidade de um programa é
construí-lo seguindo uma série de etapas.
25
Apresentação
Introdução à programação
• Etapas de construção de um programa
• Análise detalhada do problema. Identifica os aspectos que são
relevantes para a solução do problema.
• Especificação dos requisitos do problema. Identifica e
especifica os resultados que deverão ser produzidos (saídas) e os
dados que serão necessários para a execução da tarfefa
(entradas).
• Construção de um algoritmo. Projeto de um algoritmo que
solucione o problema. Normalmente existem diversas soluções
possíveis, esta etapa determina qual será adotada.
26
Apresentação
Introdução à programação
• Etapas de construção de um programa
• Validação do algoritmo. Nessa etapa é feita a validação lógica do
algoritmo, através de testes de mesa, simulando sua execução
com dados virtuais. O objetivo é verificar se a solução proposta
atinge o objetivo.
• Codificação do programa. Tradução do algorimo para uma
linguagem de programação.
27
Apresentação
Introdução à programação
• Etapas de construção de um programa
• Verificação do programa. Compilação, teste e depuração do
programa gerado. Os mesmos valores utilizados no teste de mesa
podem ser utilizados para testar o programa.
• Manutenção. Essa etapa acompanha o tempo de vida útil do
programa, após ele ser disponibilizado para os usuários. A
finalidade é corrigir eventuais erros detectados e/ou adicionar
novas funcionalidades.
28
Apresentação
Introdução à programação
• Etapas de construção de um programa
29
Apresentação
Introdução à programação
• Paradigmas de programação
• Paradigma. Modelo ou padrão de como uma realidade é
entendida e de como se interage com essa realidade.
• Paradigma de programação. Forma como a solução está
estruturada e será executada no programa gerado, incluindo
técnicas e conceitos específicos, bem como os recursos
disponibilizados.
30
Apresentação
Introdução à programação
• Principais paradigmas das linguagens de programação
• Imperativo ou procedural.
• Funcional.
• Lógico.
• Orientação a objetos.
31
Apresentação
Introdução à programação
• Imperativo ou procedural. O programa é composto por
uma sequência de comandos a serem executados pelo
computador em uma determinada ordem.
• Ex.: Pascal, C, Fortran, Cobol, Basic;
• Funcional. O programa é composto pela declaração de
funções que transformam a(s) entrada(s) na(s) saída(s)
desejada(a).
• Ex.: Lisp, Haskell;
32
Apresentação
Introdução à programação
• Lógico. Utilza a avaliação de condições lógicas como
base para a escrita dos programas. Um programa é
composto por regras que disparam ações a partir da
identificação de premissas.
• Ex.: Prolog;
• Orientação a objetos. O mundo real é representado por
meio de classes de objetos e das operações que podem
ser realizadas sobre eles, as quais definem seu
comportamento. Conceitos básicos adotados nesse
paradigma: herança e polimorfismo.
• Ex.: Java, C++, C#, Smalltalk.
33
Apresentação
Introdução à programação
• Nessa disciplina será utilizado o paradigma imperativo ou
procedural, pelas seguintes razões:
• O paradigma imperativo permite representar de uma forma intuitiva
os problemas do dia a dia, que geralmente são executados através
de sequências de ações;
• Historicamente, os primeiros programas foram desenvolvidos em
linguagens imperativas, sendo esse paradigma dominante e bem
estabelecido;
• Existe um grande número de algoritmos e de sistemas
implementados em linguagens que seguem esse paradigma, os
quais podem ser utilizados como base para o desenvolvimento de
novos programas.
34
Apresentação
Introdução à programação
• Programação estuturada
• A programação estruturada pode ser vista como um subconjunto
do paradigma imperativo.
• Princípio da programação estruturada
• O fluxo do programa deve ser estruturado, devendo esse fluxo ficar
evidente a partir da estrutura sintática do programa.
• A estruturação deve ser garantida em dois níveis:
• Nível de comandos
• Nível de unidades.
35
Apresentação
Introdução à programação
• Nível de comandos
• O programa deve ter um único ponto de entrada e um único
ponto de saída;
• Deve exisitir de “1 a n” caminhos definidos do princípio ate o fim do
programa, sendo todas as instruções executáveis;
• Não podem aparecer loops infinitos de alguns comandos;
36
Apresentação
Introdução à programação
• Nível de comandos
• O programa deve ser composto por blocos elementares de
instruções (comandos), interconectados apenas pelos três fluxos
de execução: sequência, seleção e iteração;
• Cada bloco elementar deve ser delimitado por um ponto de início e
por um ponto de término.
• É totalmente proibido o uso de desvios incondicionais,
implementado pelo comando GOTO (vá para).
37
Apresentação
Introdução à programação
• Nível de comandos
38
Apresentação
Introdução à programação
• Nível de unidades
• A programação estruturada baseia-se na ideia proposta em 1972
por Dijkstra:
“A arte de programar consiste na arte de organizar e dominar a
complexidade dos sistemas”.
• Deve-se enfatizar a utilização de unidades separadas de
programas (módulos), que são ativadas através de comandos
especiais;
• Deve-se utilizar a tática de “dividir para conquistar”;
39
Apresentação
Introdução à programação
• Nível de unidades
• O programa deve ser feito de forma descendente, decompondo o
problema inicial em módulos ou estruturas hierárquicas
(programação modular).
40
Apresentação
Introdução à programação
• Em resumo, a programação estruturada consiste em:
• Uso de um número muito limitado de estruturas de controle;
• Desenvolvimento de algoritmos por fases ou refinamentos
sucessivos;
• Decomposição do algoritmo total em módulos.
41
Apresentação
Introdução à programação
• A programação estruturada visa à:
• Corretude da solução desenvolvida;
• Simplicidade da solução, garantindo fácil compreensão do código;
• Fácil manutenção dos programas, inclusive por outras pessoas
além do desenvolvedor inicial.
42
Apresentação
Introdução à programação
Nessa disciplina será utilizada a programação
estruturada, incentivando a modularização, de
forma a garantir a qualidade dos programas
construídos;
43
Apresentação
Obrigado!!!