Algoritmos e Programação
Algoritmos e Programação
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: gandhiferrari@gmail.com
• Twitter:
http://twitter.com/gandhiferrari
• Facebook:
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;
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:
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)
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
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:
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
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.
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
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
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
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.
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."
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