algoritmos e programação - blog do professor gandhi ferrari · pdf...

29
Algoritmos e Programação Prof. Gandhi Ferrari

Upload: vuongnhan

Post on 01-Feb-2018

217 views

Category:

Documents


0 download

TRANSCRIPT

Algoritmos e Programação

Prof. Gandhi Ferrari

Algoritmos e Programação http://profgandhiferrari.wordpress.com

Apresentação do Curso

• Professor: Hélio Oliveira “Gandhi” Ferrari

• Mestre em Engenharia da Computação pela FEELT/UFU

• Bacharel em Engenharia Elétrica/UniFEB

• E-Mail: [email protected]

• Twitter: http://twitter.com/gandhiferrari

• Facebook: http://www.facebook.com/gandhiferrari

Plano de Ensino

• Objeto de estudo:

– Ensino dos conceitos básicos de algoritmos estruturados, envolvendo tipos de dados e formas de representação de algoritmos;

– Fundamentos das técnicas estruturadas de programação para o desenvolvimento de software;

Plano de Ensino

• Objetivos:

– Geral: Introduzir conceitos de técnicas de programação, utilizando noções de algoritmos, através de linguagem de alto nível.

– Específicos:

• Introduzir as técnicas para o desenvolvimento de algoritmos;

• Estudo e aplicação das técnicas básicas de programação em linguagem de alto nível;

• Análise e depuração de código;

Plano de Ensino

• Metodologia: – Aulas teóricas (sala de aula) e práticas (laboratório);

• Avaliação: – Avaliações escritas:

• 3 avaliações

• Segundas Oportunidades (Datas a definir)

• 1 final (Datas a definir)

– Exercícios e atividades práticas em laboratório: • Irão complementar as notas das avaliações;

01 06/08 Apresentação da disciplina, plano de aula, avaliações. ALGORITMOS NÃO COMPUTACIONAIS e COMPUTACIONAIS

02 13/08 OPERADORES ARITMÉTICOS, RELACIONAIS E LÓGICOS

03 20/08 FORMA GERAL DE UM ALGORITMO, VARIÁVEIS. OPERADORES DE ATRIBUIÇÃO. PALAVRAS RESERVADAS. FLUXOGRAMA

04 27/08 COMANDOS DE ENTRADA E SAÍDA. COMENTÁRIOS. ESTRUTURA

SEQUENCIAL. LAB. 01

05 03/09 ESTRUTURA CONDICIONAL: SE – ENTÃO - SENÃO . LAB 02

06 10/09 Avaliação Oficial 1 (2 pts – Grupo)

07 17/09 ESTRUTURA CONDICIONAL: ESCOLHA ..CASO. LAB. 03

08 24/09 TESTE DE MESA E DEPURAÇÃO DE CÓDIGO.

09 01/10 Avaliação Oficial 1 (5 pts – Ind)

10 08/10 ESTRUTURAS DE REPETIÇÃO: REPITA...ATÉ, ENQUANTO..FACA.

LAB. 04

11 22/10 ESTRUTURA DE REPETICAO: PARA ... FACA . LAB. 05

12 29/10 VARIÁVEIS HOMEGENEAS LINEARES: VETORES - LAB. 06

13 05/11 VARIÁVEIS HOMEGENEAS COMPOSTAS: MATRIZES – LAB. 07

14 12/11 II Semana da Engenharia

15 19/11 SUBALGORITMOS – FUNÇÕES E PROCEDIMENTOS– LAB. 08

16 26/11 SUBALGORITMOS – FUNÇÕES E PROCEDIMENTOS– LAB. 09

17 01/12 SUBALGORITMOS – FUNÇÕES E PROCEDIMENTOS– LAB. 10

18 03/12 Avaliação Oficial 2

19 10/12 Avaliação Substitutiva

20 17/12 Avaliação Suplementar

Avaliação Parcial Avaliação Oficial

Listas – 1 pt (Individual)

Trabalho - 2 pts(Grupo)

Prova 2 pontos (Grupo)

Prova 5 pontos (Individual)

Bimestre 01

Avaliação Parcial Avaliação Oficial

Semana da Engenharia (3 pts) Trabalho – 1 pt (ind)

Listas -1 pt

Prova 5 pontos (Individual)

Bimestre 02

Plano de Ensino

• Bibliografia – ASCENCIO, Ana Fernanda Gomes; CAMPOS, Edilene

Aparecida Veneruchi de. Fundamentos da Programação de Computadores. 2ª edição. Editora Pearson Prentice Hall, 2003.

– FORBELLONE, André; EBERSPÄCHER, Henri. Lógica de Programação – A construção de algoritmos e estruturas de dados. 3ª Edição. Editora Pearson Prentice Hall, 2005.

– DE OLIVEIRA, J.F.; MANZANO, José Augusto N. G. Algoritmos: Lógica para Desenvolvimento de Programação de Computadores. Editora Érica, 21a ed., 2008.

– GUIMARÃES, Ângelo de Moura. Algoritmos e estrutura de dados. Rio de Janeiro:LTC, 1985.

Plano de Ensino

• E-Books:

– TONET, Bruno; KOLIVER, Cristian. Introdução aos algoritmos. Disponível em <www.guanabara.info/logica/Apostilas/VisuAlg_Ref.pdf>. Acesso em 21 de Dezembro de 2010.

– EVARISTO, Jaime. Programando com Pascal. Disponível em <http://professor.ic.ufal.br/jaime/>. Acesso em 21 de Dezembro de 2010.

Plano de Ensino

• Site da disciplina:

– http://profgandhiferrari.wordpress.com

• Slides das aulas

• Notas de aula

• Lista de exercícios

• Notas

• Informações sobre o curso

• Downloads

• Softwares utilizados no curso: – VisuAlg: http://www.apoioinformatica.inf.br/visualg/setupv2.exe

O “segredo” para se sair bem na disciplina

• Procurar estar presente na maioria das aulas (é claro...)

– Lembre-se: Alguns exercícios poderão compor a nota de alguma prova!

• Se faltou, checar material no site e/ou com os colegas de sala;

• Dúvida em algum assunto ou aula? Pergunte ao professor durante as aulas ou envie um e-mail

• E o mais importante: EXERCITE, EXERCITE...

Como ser reprovado em Algoritmos e/ou Laboratório de Programação

• Este é um guia com tudo o que você sempre quis saber para rodar facilmente e com tranquilidade nas disciplinas de algoritmos. Siga pelo menos um destes passos e sua feliz reprovação estará praticamente garantida! Bom próximo semestre!

• Por João Batista (oliveira @ inf. pucrs.br) e Marcelo (flash @ inf. pucrs.br).

• Baixe todas as apostilas da disciplina, e depois carregue na pasta o tempo todo, pois elas criam um campo magnético onde você aprende por osmose. NÃO LEIA nenhuma delas, pois isso desfaz imediatamente o campo e você não vai aprender nada!

• Quando fizer trabalho em grupo, pendure-se em um grupo qualquer e não levante um dedo pra fazer o trabalho. Lembre-se de que mais tarde você vai ter de fazer prova, e não deve estar esgotado de tanto pensar em algoritmos!

• Não entre nunca na biblioteca, nem pra devolver livro dos outros. Você pode achar algo interessante pra ler, e isso arruinaria o seu final de semana.

• O LABIN deve ser evitado a todo o custo! Além do desgastante contato direto com o computador, você ainda corre o risco de aprender a programar de verdade, portanto proteja-se!

• Listas de exercícios são para os incompetentes, por isso você pode ignorá-las. Dê risada quando encontrar alguém fazendo

• Use a aula pra colocar a conversa em dia, afinal você nunca sabe quando vai ver seus amigos outra vez.

• Se você for menino, não anote nada e copie o caderno de uma guria. Se você for guria, não anote nada e copie de outra guria. Afinal, para ir bem nas provas basta decorar a matéria!

• Só os incompetentes estudam muitos dias antes da prova. Os feras de verdade nem estudam, e evitam ficar com olheiras.

Afinal, o que é um algoritmo?

• Sequência de instruções finitas e ordenadas de forma lógica para a resolução de uma determinada tarefa ou problema;

• Não necessariamente envolve aspectos computacionais. Ex.: Uma receita de bolo, trocar um pneu de carro, trocar uma lâmpada, manual de instruções;

Exemplo

• Sequência para fritar um ovo:

1. Retirar o ovo da geladeira

2. Colocar a frigideira no fogo

3. Colocar óleo

4. Esperar até o óleo ficar quente

5. Quebrar o ovo separando a casca

6. Colocar o conteúdo do ovo na frigideira

7. Esperar um minuto

8. Retirar o ovo da frigideira

9. Apagar o fogo

Exemplo

• Tal sequência é um algoritmo? Vejamos...

– Possui uma sequência de instruções finitas e ordenadas?

• R.: SIM. Instruções de 1 a 9.

– O objetivo da sequência foi atingido?

• R.: SIM. O ovo foi frito.

– Logo, é um algoritmo!

Exercício

• Ordene e estruture uma sequência para a realização de uma ligação telefônica em um orelhão.

Exercício

• Resposta 1:

1. Tirar o fone do gancho

2. Ouvir sinal de linha

3. Introduzir cartão

4. Teclar o número desejado

5. Conversar

6. Desligar

7. Tirar o cartão

Exercício

• Resposta 2 (Mais robusta)

1. Tirar o fone do gancho

2. Ouvir sinal de linha

3. Introduzir cartão

4. Teclar o número desejado

5. Se chamar e alguém atender

1. Conversar

2. Desligar

3. Retirar o cartão

6. Senão

1. Desligar

2. Voltar para a instrução 1

O que podemos concluir sobre algoritmos?

• Algoritmo é uma espécie de passo a passo;

• Algoritmos realizam uma saída (ex.: Um ovo frito) a partir de uma determinada entrada (um ovo) através de uma sequência de passos;

• Os passos tem que ser executados um após o outro;

• Um algoritmo está correto quando sua sequência de instruções resulta em uma saída esperada.

• Podem existir um ou mais algoritmos para atingir um resultado, desde que o resultado (a saída) seja o mesmo!

Observação

• O algoritmo não é a solução do problema, mas o caminho que leva a mesma!

Um pouco de lógica

Três senhoras, Dona Branca, Dona Rosa e

Dona Violeta, passeavam pelo parque, quando

Dona Rosa disse:

- Não é curioso que estejamos usando vestidos

de cores branca, rosa e violeta, embora

nenhuma de nós esteja usando um vestido de

cor igual ao seu próprio nome?

- Uma simples coincidência - respondeu a

senhora com vestido violeta.

Qual a cor do vestido de cada senhora?

Um pouco de Lógica "O estudo da lógica é o estudo dos métodos e princípios usados para distinguir o raciocínio correto do incorreto."

Irving Coppi

"A lógica trata de argumentos e inferências. Um de seus propósitos básicos é apresentar métodos capazes de identificar os argumentos logicamente válidos, distinguindo-os dos que não são logicamente válidos."

Wesley Salmon

"A tarefa da lógica sempre foi a de classificar e organizar as inferências válidas, separando-as daquelas que não o são. A importância desta organização não deve ser subestimada, pois usam-se as inferências (de preferência válidas) tanto na vida comum como nas ciências formais, sendo um exemplo a matemática."

Jesus Eugênio de Paula Assis

"Para Aristóteles, a lógica é a ciência da demonstração; (...) para Lyard é a ‘ciência das regras do pensamento’. Poderíamos ainda acrescentar: (...) é a ciência das leis ideais do pensamento e a arte de aplicá-las corretamente na procura e demonstração da verdade."

Maria Lucia de Arruda Aranha e Maria Helena Pires

Exemplo

• Dispõe-se de 2 vasilhas com capacidades marcadas de 9 e 4 litros respectivamente. Mostre a seqüência de passos necessários para colocar numa terceira vasilha de medida desconhecida um volume de 6 litros.

Outro exemplo

• Como fazer para que as três rãs que estão em quatro casas nas seguintes posições,

• terminem assim?

Rã 1 Rã 2 Rã 3

Rã 3 Rã 2 Rã 1

Regras para as rãs

• Somente pular para a casa da frente ou de trás se ela estiver vazia.

• Pular a rã vizinha se for parar em uma casa vazia.

• Este algoritmo serve para ordenar dados, e é muito utilizado em computação.