Fundamentos de Programação -...
Transcript of Fundamentos de Programação -...
1/40
Fundamentos de ProgramaçãoApresentação do Plano de Ensino. Revisão de Algoritmos.
Aula 1Prof. Daniel Cavalcanti Jeronymo
Universidade Tecnológica Federal do Paraná (UTFPR)Engenharia Eletrônica – 2º Período2015.1
ET42G
2/40
Plano de Aula
• Professor
• Horários
• Contato
• Objetivos e Competências
• Programação de Conteúdos
• Avaliação
• Bibliografia
• Desafio
3/40
Professor
Daniel Cavalcanti Jeronymo
• Ph.D. Engenharia de Controle e Automação, UFSC (em andamento)
• M.Sc. Engenharia Elétrica, UFPR 2011
• Engenheiro de Computação, PUC-PR 2009
Professor, Horários e Contato Objetivos Programação Avaliação Bibliografia Desafio Conceito Características Representação Lógica Estrutura Tipos Comandos
4/40
Horários
Aulas:
• Sala C-201
• Horários:
• Terças-feiras: 08:20 – 10:00
• Quintas-feiras: 10:20 – 12:00
• Atendimento
• Sala C-101
• Permanência: ainda a definir
• Agendar via e-mail
Professor, Horários e Contato Objetivos Programação Avaliação Bibliografia Desafio Conceito Características Representação Lógica Estrutura Tipos Comandos
5/40
Contato
Contato:
• E-mail – [email protected]
• Página – http://paginapessoal.utfpr.edu.br/danielc
Professor, Horários e Contato Objetivos Programação Avaliação Bibliografia Desafio Conceito Características Representação Lógica Estrutura Tipos Comandos
6/40
Objetivos e Competências
• Projetar e implementar algoritmos objetivando a solução de problemas
• Conhecer os fundamentos de uma linguagem de programação de alto nível
• Adquirir boas práticas de programação
Professor, Horários e Contato Objetivos Programação Avaliação Bibliografia Desafio Conceito Características Representação Lógica Estrutura Tipos Comandos
7/40
Objetivos e Competências
• Não há pré-requisito de conhecimento prévio, estão aqui para aprender!
• Para ir bem neste curso:
Professor, Horários e Contato Objetivos Programação Avaliação Bibliografia Desafio Conceito Características Representação Lógica Estrutura Tipos Comandos
8/40
Objetivos e Competências
• Não há pré-requisito de conhecimento prévio, estão aqui para aprender!
• Para ir bem neste curso:
• Faça todos os laboratórios
Professor, Horários e Contato Objetivos Programação Avaliação Bibliografia Desafio Conceito Características Representação Lógica Estrutura Tipos Comandos
9/40
Objetivos e Competências
• Não há pré-requisito de conhecimento prévio, estão aqui para aprender!
• Para ir bem neste curso:
• Faça todos os laboratórios
• Faça as listas de exercícios, implemente e estude
Professor, Horários e Contato Objetivos Programação Avaliação Bibliografia Desafio Conceito Características Representação Lógica Estrutura Tipos Comandos
10/40
Objetivos e Competências
• Não há pré-requisito de conhecimento prévio, estão aqui para aprender!
• Para ir bem neste curso:
• Faça todos os laboratórios
• Faça as listas de exercícios, implemente e estude
• Faça as listas de exercícios!
Professor, Horários e Contato Objetivos Programação Avaliação Bibliografia Desafio Conceito Características Representação Lógica Estrutura Tipos Comandos
11/40
Programação de ConteúdosPrevisão
Professor, Horários e Contato Objetivos Programação Avaliação Bibliografia Desafio Conceito Características Representação Lógica Estrutura Tipos Comandos
12/40
Programação de ConteúdosPrevisão
Professor, Horários e Contato Objetivos Programação Avaliação Bibliografia Desafio Conceito Características Representação Lógica Estrutura Tipos Comandos
13/40
Avaliação
Provas e respectivos pesos
• Prova 1: 35%
• Prova 2: 35%
• Projeto: 20%
• Listas: 10%
Professor, Horários e Contato Objetivos Programação Avaliação Bibliografia Desafio Conceito Características Representação Lógica Estrutura Tipos Comandos
14/40
Avaliação
• Durante as provas não será permitido consulta
• A nota final será calculada pela ponderação das avaliações
Materiais pertinentes à disciplina poderão ser encontrados em:
https://www.moodle.td.utfpr.edu.br/moodle/login/index.php
e/ou
http://paginapessoal.utfpr.edu.br/danielc
Professor, Horários e Contato Objetivos Programação Avaliação Bibliografia Desafio Conceito Características Representação Lógica Estrutura Tipos Comandos
15/40
Bibliografia
Básica:
• SCHILDT, Herbert. C completo e total. 3. ed., rev. e atual. São Paulo: Makron, c1997. 827 p.• MANZANO, José Augusto N. G. Estudo dirigido de linguagem C. 11. ed. São Paulo: Érica, 2007. 214 p. (Coleção
P.D.) ISBN 9788571948877• MONTEGOMERY, Eduard. Programando com C: simples & prático. Rio de Janeiro: Alta Books, 2006.
Complementar:
• ARAÚJO, Everton Coimbra de. Algoritmos : fundamentos e prática. 2. ed. ampl. e atual. Florianópolis, SC: Visual Books, 2005.
• SOUZA, Marco Antonio de; GOMES, Marcelo Marques; SOARES, Marcio Vieira; CONCILIO, Ricardo.• Algoritmos e lógica de programação. São Paulo: Thomson, Cengage Learning, 2006.• BORATTI, Isaias Camilo; OLIVEIRA, Álvaro Borges de. Introdução à programação: algoritmos. 3. ed.
Florianópolis: Visual Books, 2007.• ASCENCIO, Ana Fernanda Gomes; CAMPOS, Edilene Aparecida Veneruchi de. Fundamentos da programação
de computadores: algoritmos, Pascal, C/C ++ e Java. 2. ed. São Paulo: Prentice Hall, c2008. 434 p. ISBN 9788576051480.
• SEBESTA, Robert W. Conceitos de linguagens de programação. 5. ed. Porto Alegre: Bookman, 2003. 638 p. ISBN 8536301716.
• E-BOOK: EVARISTO, Jaime. Aprendendo a Programar Programando na Linguagem C. 3. ed. Editora ND-BOOK EXPRESS. ISBN: 9788586846816.
Outras leituras serão sugeridas ao longo da disciplina!
Professor, Horários e Contato Objetivos Programação Avaliação Bibliografia Desafio Conceito Características Representação Lógica Estrutura Tipos Comandos
16/40
Plano de Aula
• Desafio
• Conceito de algoritmo
• Características de algoritmos
• Representação de algoritmos
• Raciocínio lógico na construção de algoritmos
• Estrutura de algoritmos
• Tipos de dados
• Comandos
Professor, Horários e Contato Objetivos Programação Avaliação Bibliografia Desafio Conceito Características Representação Lógica Estrutura Tipos Comandos
17/40
Desafio
• Elabore uma sequência de passos para obter 4L de água a partir de um galão de 5L e outro galão de 3L
Professor, Horários e Contato Objetivos Programação Avaliação Bibliografia Desafio Conceito Características Representação Lógica Estrutura Tipos Comandos
18/40
DesafioComo desenvolver uma solução que seja reproduzível para todos os casos desta situação?
Desejável: solução na forma de receita de bolo, basta seguir passos bem definidos.
Elementos do problema:
• Entradas - dois galões
• Operações - encher, esvaziar, transferir
• Saída desejada - 4 litros
Professor, Horários e Contato Objetivos Programação Avaliação Bibliografia Desafio Conceito Características Representação Lógica Estrutura Tipos Comandos
19/40
Desafio
Solução possível:
1. Iniciar com os galões vazios
2. Encher o galão de 5 litros
3. Transferir conteúdo do galão de 5 litros para o de 3 litros
4. Esvaziar o galão de 3 litros
5. Transferir conteúdo do galão de 5 litros para o de 3 litros
6. Encher o galão de 5 litros
7. Transferir conteúdo do galão de 5 litros para o de 3 litros
Professor, Horários e Contato Objetivos Programação Avaliação Bibliografia Desafio Conceito Características Representação Lógica Estrutura Tipos Comandos
20/40
Desafio
1. Iniciar com os galões vazios g5 = ? g3 = ?
2. Encher o galão de 5 litros g5 = ? g3 = ?
3. Transferir conteúdo do galão de 5 litros para o de 3 litros
g5 = ? g3 = ?
4. Descartar a água do galão de 3 litros
g5 = ? g3 = ?
5. Transferir conteúdo do galão de 5 litros para o de 3 litros
g5 = ? g3 = ?
6. Encher o galão de 5 litros g5 = ? g3 = ?
7. Transferir conteúdo do galão de 5 litros para o de 3 litros
g5 = ? g3 = ?
• Como verificar o algoritmo?
• Utilizar o teste de mesa (table test):
Professor, Horários e Contato Objetivos Programação Avaliação Bibliografia Desafio Conceito Características Representação Lógica Estrutura Tipos Comandos
21/40
Desafio
1. Iniciar com os galões vazios g5 = ? g3 = ?
2. Encher o galão de 5 litros g5 = ? g3 = ?
3. Transferir conteúdo do galão de 5 litros para o de 3 litros
g5 = ? g3 = ?
4. Descartar a água do galão de 3 litros
g5 = ? g3 = ?
5. Transferir conteúdo do galão de 5 litros para o de 3 litros
g5 = ? g3 = ?
6. Encher o galão de 5 litros g5 = ? g3 = ?
7. Transferir conteúdo do galão de 5 litros para o de 3 litros
g5 = ? g3 = ?
• Cada linha é um passo
• Cada coluna uma variável
• Execute o teste de mesa!
Professor, Horários e Contato Objetivos Programação Avaliação Bibliografia Desafio Conceito Características Representação Lógica Estrutura Tipos Comandos
22/40
Desafio
1. Iniciar com os galões vazios g5 = 0 g3 = 0
2. Encher o galão de 5 litros g5 = 5 g3 = 0
3. Transferir conteúdo do galão de 5 litros para o de 3 litros
g5 = 2 g3 = 3
4. Descartar a água do galão de 3 litros
g5 = 2 g3 = 0
5. Transferir conteúdo do galão de 5 litros para o de 3 litros
g5 = 0 g3 = 2
6. Encher o galão de 5 litros g5 = 5 g3 = 2
7. Transferir conteúdo do galão de 5 litros para o de 3 litros
g5 = 4 g3 = 3
• Resultado final
Professor, Horários e Contato Objetivos Programação Avaliação Bibliografia Desafio Conceito Características Representação Lógica Estrutura Tipos Comandos
23/40
Conceito de Algoritmo
Definição:
Conjunto de regras e operações bem definidas e ordenadas cuja execução passo a passo objetiva a solução de um problema em um número finito de etapas.
Passo a passo: cada passo é completado antes que o próximo inicie.
Bem definidas: cada passo é completamente definido a partir da entrada atual e passos anteriores.
Professor, Horários e Contato Objetivos Programação Avaliação Bibliografia Desafio Conceito Características Representação Lógica Estrutura Tipos Comandos
24/40
Conceito de Algoritmo
Algoritmo:
uma representação de solução para um problema.
Programa:
Sequência de instruções a serem executadas por um computador – de acordo com um algoritmo
Professor, Horários e Contato Objetivos Programação Avaliação Bibliografia Desafio Conceito Características Representação Lógica Estrutura Tipos Comandos
25/40
Conceito de Algoritmo
O algoritmo no contexto computacional desempenha um papel fundamental: é o elo de ligação entre o mundo real e o computacional.
Professor, Horários e Contato Objetivos Programação Avaliação Bibliografia Desafio Conceito Características Representação Lógica Estrutura Tipos Comandos
26/40
Características de Algoritmos
Finitude: um algoritmo deve sempre terminar após um número finito de passos.
Definição: cada passo de um algoritmo deve ser precisamente definido, sem ambiguidades.
Entradas: um algoritmo deve ter zero ou mais entradas.
Saídas: um algoritmo deve ter uma ou mais saídas.
Efetividade: cada operação deve executar em tempo finito
Professor, Horários e Contato Objetivos Programação Avaliação Bibliografia Desafio Conceito Características Representação Lógica Estrutura Tipos Comandos
27/40
Representação de Algoritmos
Há quatro maneiras de representação:
• Descrição Narrativa ou Linguagem Natural
• Fluxograma
• Pseudocódigo
• Linguagem de Programação
Professor, Horários e Contato Objetivos Programação Avaliação Bibliografia Desafio Conceito Características Representação Lógica Estrutura Tipos Comandos
28/40
Representação de Algoritmos
Descrição Narrativa ou Linguagem Natural:
É a descrição daquilo que se quer fazer, similar a comunicação humana como em uma receita de bolo, manual de produto, direções para um lugar, regras de um jogo, etc.
1. Ler A e B
2. Somar A e B
3. Caso a soma seja maior que cinco, imprimir “Maior que 5”
4. Caso contrário, imprimir “Menor que 5”
Professor, Horários e Contato Objetivos Programação Avaliação Bibliografia Desafio Conceito Características Representação Lógica Estrutura Tipos Comandos
29/40
Representação de Algoritmos
Fluxograma:
• São representações gráficas do algoritmo, enfatizando passos individuais e o fluxo de controle (execução).
• Permitem a visualização do fluxo lógico através do tempo
Professor, Horários e Contato Objetivos Programação Avaliação Bibliografia Desafio Conceito Características Representação Lógica Estrutura Tipos Comandos
30/40
Representação de Algoritmos
Fluxograma - símbolos:
Professor, Horários e Contato Objetivos Programação Avaliação Bibliografia Desafio Conceito Características Representação Lógica Estrutura Tipos Comandos
31/40
Representação de AlgoritmosPseudocódigo:
• Linguagem intermediária entre linguagem natural e linguagens de programação para descrição de algoritmos.
• Utiliza a estrutura de linguagens de programação porém visa a interpretação por humanos e não por computadores.
ALGORITMO SOMAEntradas: nenhumaSaídas: SomaDeclarar N1, N2, InteirosLER N1, N2Soma <- N1 + N2
SE Soma > 5 ENTÃOIMPRIMIR “Maior que 5”
SENÃOIMPRIMIR “Menor que 5”
FIM SEFIM ALGORITMO
Professor, Horários e Contato Objetivos Programação Avaliação Bibliografia Desafio Conceito Características Representação Lógica Estrutura Tipos Comandos
32/40
Representação de AlgoritmosLinguagem de programação:
• Linguagem de alto ou baixo nível que pode descrever algoritmos.
• Utiliza estruturas e pode ser processada por computadores, sendo compilada ou interpretada.
#include <stdio.h>int main(void){
int a=0,b=0,soma=0;scanf(“%d, %d”, &a, &b);soma = a + b;if(soma > 5)
printf(“%d é maior que 5\n”, soma);else
printf(“%d é menor que 5\n”, soma);return soma;
}
Professor, Horários e Contato Objetivos Programação Avaliação Bibliografia Desafio Conceito Características Representação Lógica Estrutura Tipos Comandos
33/40
Raciocínio lógico na construção de algoritmos
Lógica:
"A lógica nos ensina a colocar ordem no pensamento”
Lógica de programação:
Objetiva a construção de algoritmos para solução de problemas através da ordenação do pensamento.
Lógica matemática:
Prova de declarações matemáticas
“pensar com ordem”
Professor, Horários e Contato Objetivos Programação Avaliação Bibliografia Desafio Conceito Características Representação Lógica Estrutura Tipos Comandos
34/40
Raciocínio lógico na construção de algoritmos
Análise do pseudocódigo anterior:
ALGORITMO SOMAEntradas: nenhumaSaídas: SomaDeclarar N1, N2, InteirosLER N1, N2Soma <- N1 + N2
SE Soma > 5 ENTÃOIMPRIMIR “Maior que 5”
SENÃOIMPRIMIR “Menor que 5”
FIM SEFIM ALGORITMO
Lógica de programação: ordem de declaraçõespara resolver um problema.
Lógica matemática: expressões que podem seravaliadas como verdadeirasou falsas
Professor, Horários e Contato Objetivos Programação Avaliação Bibliografia Desafio Conceito Características Representação Lógica Estrutura Tipos Comandos
35/40
Estrutura de Algoritmos
Teorema do Programa Estruturado:
Três estruturas são suficientes para representar qualquer função computável.
sequência seleção iteração Primeira observaçãobaseada no comportamento de processadores e da máquina de Turing.
Professor, Horários e Contato Objetivos Programação Avaliação Bibliografia Desafio Conceito Características Representação Lógica Estrutura Tipos Comandos
36/40
Estrutura de Algoritmos
Teorema do Programa Estruturado:
sequência seleção iteração
escolha escolhainstrução
instrução
instrução
instrução instrução instrução
A iteração é umaseleção onde umadas instruçõesretorna a escolha e a outra sai da estrutura
Professor, Horários e Contato Objetivos Programação Avaliação Bibliografia Desafio Conceito Características Representação Lógica Estrutura Tipos Comandos
37/40
Tipos de Dados
Variável:
• Porção de memória onde um valor pode ser armazenado e lido.
• No programa, esse espaço de memória é associado a um nome (identificador) e um tipo.
• No executável, é apenas um endereço e um número.
Professor, Horários e Contato Objetivos Programação Avaliação Bibliografia Desafio Conceito Características Representação Lógica Estrutura Tipos Comandos
38/40
Tipos de DadosIdentificadores:
Nomes utilizados para referenciar variáveis, funções ou outros objetos.
• Letras, dígitos e sublinhados (_).
• Não podem começar com dígito. (impediria a especificação de literais)
• Não podem ter espaços.
• Não podem ser iguais a palavras-chave e nem repetidos.
Professor, Horários e Contato Objetivos Programação Avaliação Bibliografia Desafio Conceito Características Representação Lógica Estrutura Tipos Comandos
39/40
Tipos de DadosDados primitivos:
• Caractere, inteiro, real, enumerado
• Constantes
Geralmente a declaração do dado é feita junto com o identificador:
• real a;
• caractere x,z;
A linguagem C usa tipos estáticos e exige a declaração de variáveis com tipos.
Professor, Horários e Contato Objetivos Programação Avaliação Bibliografia Desafio Conceito Características Representação Lógica Estrutura Tipos Comandos