Fundamentos de Programação -...

40
1/40 Fundamentos de Programação Apresentação do Plano de Ensino. Revisão de Algoritmos. Aula 1 Prof. Daniel Cavalcanti Jeronymo Universidade Tecnológica Federal do Paraná (UTFPR) Engenharia Eletrônica – 2º Período 2015.1 ET42G

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

40/40

Comandos

São disponibilizados em bibliotecas ou definidos em outros algoritmos:

• ler

• escrever

Professor, Horários e Contato Objetivos Programação Avaliação Bibliografia Desafio Conceito Características Representação Lógica Estrutura Tipos Comandos