Alg I Aula01

58
Algoritmos I

Transcript of Alg I Aula01

Algoritmos I

Agenda da Aula• Apresentação• Contrato Pedagógico• Plano de Ensino• Considerações Gerais sobre a Disciplina

Apresentação• Profª. Malgarete Rodrigues da Costa• E-mail: [email protected]

• Formação– Licenciada/Bacharel – Matemática – UFPR– Especialista em Inteligência Computacional – UFPR

– Mestre em Informática Industrial – Ênfase em Inteligência Artificial – UTFPR.

– Doutoranda – Informática Industrial – Ênfase em Simulação de Sistemas – UTFPR.

Contrato Pedagógico• Avaliações – definidas no Plano de Aula

• Faltas• É uma matéria que requer:

– Dedicação– Treinamento (Aprende-se algoritmos, fazendo)

Contrato pedagógico• Sistema de Avaliação:

– Por competência– Avaliações escritas e agendadas– APS (Atividade Prática Supervisionada)– 75% de presenças– Competências:

•Aprovação:– 100% das necessárias e pelo menos 60% das complementares

•Pendência:– Pelo menos 50% das necessárias e pelo menos 50% das complementares

Possibilidades

Reprovado

Pendente

Aprovado

Aprovação

Para ser aprovado em uma disciplina o aluno

deve ter:

• 100% das competências necessárias (N) construídas

• Mínimo de 60% das competências complementares (C)

construídas

• Mínimo de 75% de freqüência

PendênciaPara ficar em pendência em uma disciplina o

aluno deve ter:

• Mínimo de 50% das competências necessárias (N)

construídas

• Mínimo de 50% das competências complementares

(C) construídas

• Mínimo de 75% de frequência

Classificação Status Competência TotalN Competência 1

5N   Competência 2N Competência 3N Competência 4N   Competência 5C   Competência 6

5C Competência 7C Competência 8C Competência 9C   Competência 10

• 5/5 Competências Necessárias construídas 100%• 3/5 Competências Complementares construídas 60%• 80% de freqüência às aulas

Simulação

Classificação Status Competência TotalN Competência 1

5N   Competência 2N Competência 3N Competência 4N   Competência 5C   Competência 6

5C Competência 7C Competência 8C Competência 9C   Competência 10

• 5/5 Competências Necessárias construídas 100%• 5/5 Competências Complementares construídas 100%• 70% de freqüência às aulas

Simulação

Classificação Status Competência TotalN Competência 1

6

N   Competência 2N Competência 3N Competência 4N Competência 5N   Competência 6C   Competência 7

5C Competência 8C Competência 9C Competência 10C   Competência 11

• 3/6 Competências Necessárias construídas 50%• 5/5 Competências Complementares construídas 100%• 88% de freqüência às aulas

Simulação

Contrato Pedagógico• Reconstruções:

– No decorrer da Etapa– No final da Etapa

• Portal:– Plano de Ensino– Planos de Aula– Avisos– Fórum– Entre outros conteúdos e ferramentas

Algoritmos I

Plano de Ensino• Competências:

1- Codificar problemas reais em algoritmos utilizando português estruturado. (C)

2 - Compreender e aplicar o conceito de constantes, variáveis e seus possíveis tipos de dados. (N)

3 - Compreender e aplicar os conceitos de entrada, processamento e saída de dados na resolução de problemas algorítmicos. (N)

4 - Identificar e codificar estruturas condicionais simples, compostas e aninhadas para resolver problemas algorítmicos. (N)

5 Identificar e codificar estruturas de repetição simples e aninhadas para resolver problemas algorítmicos. (N)

6 - Identificar, classificar e aplicar os operadores aritméticos, lógicos e relacionais em problemas algorítmicos. (C)

7 - Identificar e aplicar estruturas homogêneas de armazenamento com uma dimensão em problemas algorítmicos. (N)

8 - Identificar e aplicar estruturas homogêneas de armazenamento com duas ou mais dimensões em problemas algorítmicos. (N)

9 - Aplicar o conceito de proposição e conectivos lógicos. (C)

10 - Construir e avaliar expressões lógicas por meio de tabelas-verdades. (C)

11 - Compreender a aplicar os conceitos de modularização. (C)

Plano de Ensino• Bibliografia Básica:

– FORBELLONE, André L. V.; Henri Frederico E. Lógica de programação: a construção de algoritmos e estrutura de dados. 3. ed. São Paulo: Ed. Pearson Prentice Hall, 2005.

– MANZANO, José Augusto Navarro Garcia; OLIVEIRA, Jayr Figueiredo de. Algoritmos : lógica para desenvolvimento de programação de computadores. 22. ed. São Paulo: Ed. Érica, 2009.

– VILARIM, Gilvan. Algoritmos: Programação para Iniciantes. 2. ed. Rio de Janeiro: Ed. Ciência Moderna, 2004.

Plano de Ensino

• Bibliografia Complementar:– CORMEN, Thomas H.... [et al.] Algoritmos: teoria e prática. Tradução Vandenberg D. Souza. Rio de Janeiro: Ed. Campus, 2002.

– SOUZA, Marco Antônio Furlan. Algoritmos e Lógica de Programação. São Paulo. Editora Pioneira, 2005.

Considerações Gerais sobre a Disciplina

• Experiência da Turma

• E quem não tem experiência?

• Dificuldade da Disciplina

Competências da Aula

• 1 - (C) Codificar problemas reais em algoritmos utilizando português estruturado.

Sistema Computacionais

Hardware

Software

Software Básico

Software Aplicativo

•Comerciais•Industriais•Cooporarivos•Entretenimento•Embarcados..

Ciclo de Vida

Desenvolvimento

Projeto

Análise

Teste

Implantação

ManutençãoAlgoritmo

s

Conceito de Problema• O que é um problema???

Conceito de Problema• Problema (Dicionário Michaelis):• Substantivo Masculino.• Questão matemática proposta para ser resolvida.

• Questão difícil, delicada, suscetível de diversas soluções.

• Qualquer coisa de difícil explicação; mistério, enigma.

• Dúvida, questão.

Exemplos de Problema• Problemas fazem parte do nosso cotidiano.• Exemplos de problemas cotidianos:• Trocar a resistência de um chuveiro.• Definir onde Almoçar.

• Sempre que nos deparamos com umproblema buscamos um procedimento para

solucionar o mesmo.

Exemplo de SoluçãoPor exemplo, para trocar a resistência de um

chuveiro devemos:

• Adquirir uma resistência nova;• Localizar o chuveiro a ser manipulado;

• Abrir o chuveiro;• Retirar a resistência defeituosa;• Colocar a resistência nova;• Fechar o chuveiro;• Descartar a resistência defeituosa.

????O que orientou a obtenção dos procedimentos

para as soluções vislumbradas?

A lógica.

LógicaVocê já ouviu falar em Lógica? Não?

Mas, certamente já ouviu alguém responder algo do tipo: 'é lógico que eu sei“, ou “é lógico que isso não daria certo”. Não é?

Como você definira lógica?

LógicaA palavra lógica vem do grego clássico λογική (logos), que significa palavra, pensamento, ideia, e é o ramo da filosofia que cuida das regras do bem pensar, ou do pensar correto.É também a designação para o estudo de sistemas de raciocínio, ou seja, sistemas que definem como se “deveria” realmente pensar para não errar, usando a razão, dedutivamente e indutivamente.

Meu chinelo está dentro do

armário

O armário está

fechado.

Logo preciso abrir o

armário para pegar meu chinelo.Logo, um sistema lógico é um conjunto de regras

de que tem por objetivo representar formalmente o raciocínio válido, dedutivo ou indutivo.

LógicaA utilização da lógica é fundamental para a solução de problemas, sem o uso da mesma é impossível alcançar seus objetivos com eficiência e eficácia.

Precisamos lembrar sempre que ninguém ensina outra pessoa a pensar, apenas ajuda a desenvolver e aperfeiçoar esta técnica, com persistência e constância.

Lógica e Algoritmos

Observe que cada situação-problema, ou processo, para ser solucionada precisa seguir algumas etapas que podemos chamar de especificação de sequência ordenada de passos.

Porque entender o conceito de Lógica? O que lógica tem a ver com Algoritmos????

A esta especificação damos o nomeALGORITMO.

Algoritmos

Existem inúmeras maneiras de conceituarmos algoritmos, porém é bem comum definirmos como uma sequência de passos que visam atingir um objetivo.

Como podemos conceituar Algoritmos????

Algoritmo - Definições• Um algoritmo é uma sequencia ordenada e finita de etapas, cuja execução passo a passo resolve um determinado problema.

• Um algoritmo representa um conjunto de regras para a solução de um problema.

• Um algoritmo é uma sequencia de instruções ordenadas de forma lógica para a resolução de uma determinada tarefa ou problema.

Algoritmos – Definições Formais

• “Um conjunto finito de regras que provê uma sequencia de operações para resolver um tipo de problema específico” [KNUTH]

• “Sequencia ordenada, e não ambígua, de passos que levam à solução de um dado problema” [TREMBLAY]

Algoritmo - Definições• “Processo de cálculo, ou de resolução de um grupo de problemas semelhantes, em que se estipulam, com generalidade e sem restrições, as regras formais para a obtenção do resultado ou da solução do problema” [AURÉLIO]

AlgoritmoUm algoritmo deve possuir as seguintes características:

• Ter início e fim;• Ser escrito em termos de ações ou comandos bem definidos;

• Deve ser fácil de interpretar e codificar, ou seja, deve ser o intermediário entre a linguagem falada e a linguagem de programação;

• Ter uma sequência lógica.

Algoritmo - Exemplo• A seguir será apresentado um algoritmo composto pelos passos necessários para escovar os dentes.

• INÍCIO

• Pegue a escova de dentes;• Pegue o creme dental com a outra mão;• Coloque creme dental na escova;• Coloque a escova na boca e escove os dentes e a língua;• Tire a escova da boca;• Lave a boca e a escova com água.

• FIM

Algoritmo – Receita de Bolo

Algoritmo – modo de preparo

Algoritmo – Instruções de utilização

Algoritmo – sequencia de passos

• Escreva um algoritmo para ir de sua casa até o trabalho– Abrir a porta de casa;– Ir ao ponto de ônibus;– Aguardar ônibus para o trabalho;– Entrar no ônibus;– Pagar a passagem;– Acomodar-se no ônibus;– Aguardar o ponto de chegada;– Saltar o ônibus;– Entrar no prédio da empresa;

Algoritmos – Exemplos• Exemplos de algoritmos:

– Programar o timer da TV;– Utilizar o caixa automático (saque);– Cálculo de saldo em conta-corrente;– Cálculo de IR.

• Contra-exemplos de algoritmos:– Listas de compras;– Dança informal;

Lembrando• Um algoritmo é “uma solução” e não “a solução” de um problema.

• Um problema pode ser resolvido por mais de um algoritmo!

Algoritmos• Para aprimorar nosso conceito de algoritmo, vamos tornar mais evidente alguns outros conceitos, como, por exemplo, o de ação:

• “Ação é um acontecimento que a partir de um estado inicial, após um período de tempo finito, produz um estado final previsível e bem definido”.

• “Estado é a situação atual de dado objeto.”

Algoritmos - Características

• O problema que o algoritmo representa é composto por três fases:

• Exemplo:

Algoritmos - Características

• 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. As ações devem ser definidas rigorosamente e sem ambiguidades.

• Entradas: Um algoritmo deve ter zero ou mais entradas, isto é quantidades que lhe são fornecidas antes do algoritmo iniciar.

Algoritmos - Características

• Saídas: Um algoritmo deve ter uma ou mais saídas, isto é, quantidades que tem uma relação específica com as entradas.

• Efetividade: Um algoritmo deve ser efetivo. Isto significa que todas as operações devem ser suficientemente básicas de modo que possam ser em princípio executadas com precisão em um tempo finito por um humano usando papel e lápis.

Algoritmos - Características

•Um algoritmo é “uma solução” e não “a solução” de um

problema.

Algoritmos• Escreva um algoritmo que calcula o produto de dois números.

MAS PRIMEIRO– Entenda o problema!!!– Quais são as entradas?– Quais são as etapas/passos/ações?– Qual é a saída?

ProcessamentoEntradas Saídas

Algoritmos x Informática

Execução MUITO rápida!

----------------------------------------

Algoritmo

----------------------------------------

Código fonte

----------------------------------------

Código de máquina

“TRADUÇÃO”

Compilação ou

Interpretação

Algoritmos x Informática

Algoritmo

C

Java

Delphi

Software

Software

Software

Compilador C

Compilador Java

Compilador Delphi

...... Software.....

Algoritmos – Programa Delphi

Ler BaseLer AlturaÁrea = Base * Altura / 2Escrever Área

procedure TForm1.btnOkClick(Sender: TObject);var base : Real; altura : Real; area : Real;begin

base := StrToFloat(edtBase.Text); altura := StrToFloat(edtAltura.Text);

area := base * altura / 2;

ShowMessage('A área é: ' + FloatToStr(area));

end;

Algoritmo

Código FontePrograma

Algoritmos – Programa C

Ler BaseLer AlturaÁrea = Base * Altura / 2Escrever Área

#include <stdio.h>int main(void){ float base, altura, area; printf("\n Informe a base ->"); scanf("%d", base);

printf("\n Informe a altura ->"); scanf("%d", altura);

area = base * altura / 2;

printf("\n A área é %d", altura); return 0}

Algoritmo

Código Fonte

Programa

Algoritmos x Informática• Um programa é uma seqüência de

comandos que instruem a máquina a fazer algo, e estes comandos são escritos em uma linguagem capaz de ser entendida pela máquina.

• Antes da escrita dos programas, contudo, alguém precisa definir a lógica de colocação destes comandos – é aí que entram os algoritmos.

• Programa é a representação de um algoritmo através da utilização de uma Linguagem de Programação.

• Portanto, um programa é um conjunto finito de instruções, numa determinada seqüência, que quando é executado produz a solução de um problema.

Algoritmos x Informática

Algoritmos• Exercícios:

– Escreva um algoritmo que calcule a soma de dois números.

– Escreva um algoritmo que calculo a área de um círculo.

– Escreva um algoritmo que calcule a área de um quadrado.

– Escreva um algoritmo que calculo a área de um retângulo.

Algoritmos

• Faça um programa que calcule da área de um triangulo eqüilátero: Área = Base * Altura / 2

• Algoritmo:Ler BaseLer AlturaÁrea = Base * Altura / 2Escrever Área

Resumo da Aula

Chamada 08:15 e 10:15 manhã19:15 e 21:05 noite

Faltas 25%Avaliação Escrita por

competênciaReconstrução durante a etapa

No decorrer da etapa

Reconstrução final No final da etapa

Resumo da Aula

Sistemas Computacionais dependem do Hardware e dos Softwares Básicos.Os Algoritmos são criados no momento de Projeto do Ciclo de Vida de um Software.Algoritmo é uma seqüência de passos que visam atingir um objetivo bem definido.Um algoritmo é uma seqüência de instruções ordenadas de forma lógica para a resolução de uma determinada tarefa ou problema.

Resumo da Aula

Entrada - Processamento - SaídaUm algoritmo é “uma solução” e não “a solução” de um problema. Um problema pode ser resolvido por mais de um algoritmo!Programa é a representação de um algoritmo através da utilização de uma Linguagem de Programação.