Construção de Algoritmos e Programação

Slides:



Advertisements
Apresentações semelhantes
1.3.2 – Linguagem Assembly Um programa em linguagem de máquina sofre de total falta de clareza O programa é uma sequência de linhas numeradas Cada linha.
Advertisements

Introdução à Ciência da Computação Linguagens de Programação.
Jogo de Informática Um jogo produzido pela professora Danielle Diormandiè, com objetivo de desenvolver o conhecimento e a prática em todas as disciplinas.
Software Básico Silvio Fernandes Universidade Federal Rural do Semi-Árido Departamento de Ciências Ambientais Ciência da Computação Aula 06: Funções.
Amintas engenharia.
Introdução à Programação uma Abordagem Funcional Programação I Prof.ª Claudia Boeres CT VII - Sala 32 Departamento de Informática Centro.
Linguagem de Montagem Visão geral.
Paradigmas de Linguagens Conceitos Básicos
TEORIA DA COMPUTAÇÃO Parte III  Máquina de Turing
Software Básico Silvio Fernandes
Software Básico Silvio Fernandes Universidade Federal Rural do Semi-Árido Departamento de Ciências Exatas e Naturais Ciência da Computação Aula.
Software Básico Silvio Fernandes Universidade Federal Rural do Semi-Árido Departamento de Ciências Exatas e Naturais Ciência da Computação Aula.
Sistemas Operacionais
Algoritmos e Programação Linguagens de Programação Teoria Aula 5 (05/05) Universidade Federal do Vale do São.
Introdução a Programação Renata Freire
INTRODUÇÃO À PROGRAMAÇÃO
Introdução à Informática
TEMA 3 SISTEMAS OPERACIONAIS
Esquema básico do hardware
Organização da Memória Principal
Linguagens de Programação
Prof. Msc. Raul Paradeda Aula 2 Introdução
Threads.
O Portal do Estudante de Computação
Sistema Operacional.
Introdução a Programação
Professor Fernando Luís
Processamento da Informação BC-05045
Lógica de Programação UNIDADE 1 – Introdução a) Computador
Computadores Tipos e estrutura interna
História do Computador Desde os idos tempos da humanidade os seres humanos procuram relacionar quantidades. Supõe-se que as primeiras tentativas de contagens.
Hardware questions Um jogo produzido por Bruno Mota, com objetivo de desenvolver o conhecimento de crianças e idosos que desejam aprender sobre computadores,
PROGRAMAÇÃO I UNIDADE 1.
Estrutura de dados, pseudocódigo
UNIVERSIDADE FEDERAL SANTA CATARINA Curso de Biblioteconomia Disciplina: Recuperação Da Informação Professora: Ursula Blattmann Acadêmicas:: Mara Suchy.
IB 1 Introdução à Computação Apresentação do curso Fonte: Prof: Joseana Macedo Fachine na01.ppt.
PCI- Introdução à Computação
Algoritmos 1º Semestre Materia: Informática Profº: Cristiano.
Bem vindos as aulas de informática
Laboratório I Mateus Raeder Material baseado nos originais da
História dos computadores e da programação
Noções de Software Escola Almirante Soares Dutra
Inteligência Artificial
Organização e Arquitetura de Computadores
Agenda - Aula 2 Introdução (Computador Digital) Processadores
Processamento de dados na UCP e memória UCP
Linguagem e Ambiente Scratch
02/08/2011 Professor Leomir J. Borba- –
Como Programar? Dicas para começar a programar bem
Sistemas Operacionais
SISTEMAS OPERACIONAIS I Memória Virtual e Paginação
© 2004 by Pearson Education Computadores: Ferramentas para a Era da Informação Tema 0 PARTE A.
SISTEMAS OPERACIONAIS I Gerenciamento de Arquivos
Introdução à INFORMÁTICA
Fontes de Erros Aula 1 Introdução; Erros em processos numéricos;
Igor Steinmacher, MSc. O maravilhoso mundo da Lógica de Programação.
Entrada e Saída (E/S).
INTRODUÇÃO AOS SISTEMAS OPERACIONAIS
Introdução à Computação - Jorge Macêdo1 ICC – Software Jorge Macêdo.
Algoritmos e Programação MC102
Linguagens de Programação
SISTEMAS DE INFORMAÇÃO
Sistemas Operacionais
Curso Engenharia Química Modalidade Superior Instituto Federal do Sul de Minas, câmpus Pouso Alegre Professora Michelle Nery Programação de Computadores.
Introdução à Programação
Introdução à Computação
A linguagem de Máquina – Instruções Básicas
PROGRAMAÇÃO DE COMPUTADORES Engenharia Unificado Prof. Leonardo Bacelar Lima Santos Departamento de Matemática
COMPILADORES 02 Prof. Marcos. COMPILADORES Do Programa à Execução Computadores das mais variadas arquiteturas têm funcionamento:
Sistemas de Informações Fundamentos da Computação 3. Software Márcio Aurélio Ribeiro Moreira
Transcrição da apresentação:

Construção de Algoritmos e Programação Prof. Dr. Ednaldo Pizzolato DC - UFSCar

Apresentação Disciplina que fornecerá instrumentos para que o aluno aprenda a desenvolver soluções computacionais para problemas bem determinados. Fazem parte do escopo da disciplina o aprendizado de fluxogramas, algoritmo e linguagem C.

Apresentação Avaliação: Existem atividades práticas (AP) que auxiliam o aprendizado. A média das avaliações práticas terá peso cor-respondente a 20% das avaliações na média final.

Apresentação Avaliação: Existem também as avaliações teóricas cuja média corresponderá a 80% da média final. Assim, a média final (MF) será: MF = 20% MAP + 80% MAT

Apresentação Avaliação: Se o aluno não obtiver média igual ou superior a 6, tal aluno deverá fazer uma prova extra chamada de prova substitutiva que substituirá (em benefício do aluno) sua pior nota.

Apresentação Avaliação: A SUB não poderá ser feita para aumentar a nota final. Caso o aluno tenha feito a SUB, sua média nunca será superior a 7.

Apresentação Avaliação: Caso o aluno mesmo com a sub não tenha conseguido obter média de aprovação (igual ou superior a 6), e caso o mesmo aluno tenha obtido média igual ou superior a 5, poderá realizar uma prova de recuperação no início do próximo semestre. Tal prova versará sobre todo o conteúdo e a média final será a média aritmética entre a média final obtida com a sub e a nota da prova de recuperação. Quem fizer a recuperação e conseguir aprovação terá média final 6.

Apresentação Aulas: As aulas acontecerão no laboratório (com computadores). Assim, será possível testar as informações imediatamente (bem como tirar dúvidas e fazer experimentos diferentes).

Apresentação Aulas: As provas práticas acontecerão também no laboratório. Elas serão questões relativas às atividades práticas que os alunos deverão fazer em casa. Ou seja, as atividades práticas terão suas notas através das provas práticas.

Apresentação Aulas: As provas teóricas acontecerão na sala oficial divulgada pela UFSCar. Elas terão questões relativas ao conteúdo ministrado durante o período.

Apresentação Datas: Serão 3 provas e uma substitutiva. Acontecerão nos seguintes dias: P1 – 14/04 P2 – 12/05 P3 – 23/06 Sub – 30/06

Apresentação Material de Apoio: Haverá uma área de apoio no MOODLE que permitirá que o aluno faça downloads de slides. Essa área, na verdade, servirá de apoio para a disciplina. www.moodle.ufscar.br

Apresentação Bibliografia: Senne, E.L.F. – Primeiro curso de programação em C, Visual Books, 2003. Kernighan, B.W. & Ritch, D.M. – C: A linguagem de Programação, Rio de Janeiro, Campus, 1986. Mizrahi, V. – Treinamento em Liguagem C – Módulo 1 e 2, São Paulo, McGraw-Hill, 1990.

Apresentação Bibliografia: Medina, M. & Fertig, C. - Algoritmos e Programação – Teoria e Prática, Novatec, 2005. Tremblay, J-P. & Bunt, R. - Ciência dos Computadores – Uma Abordagem Algoritmica, McGraw-Hill, 1981.

INTRODUÇÃO Área que estuda os computadores e o que eles podem fazer. COMPUTAÇÃO Área que estuda os computadores e o que eles podem fazer.

INTRODUÇÃO Programação software Equipamento hardware

INTRODUÇÃO Hardware Software São os equipamentos e dispositivos eletrônicos, elétricos e mecânicos que compõem o computador Software São os programas e aplicativos que contêm instruções para comandar o hardware É a parte que você chuta É a parte que você xinga

INTRODUÇÃO Programação software hardware

INTRODUÇÃO processamento Entrada Saída

INTRODUÇÃO Exemplo: Cálculo da média entre 3 números Entradas: ??? Saídas: ??? 20 10 20 30

Unidade de processamento INTRODUÇÃO Teclado Mouse Modem MODELO DE COMPUTADOR Pentium Athlon Motorola + Co-proces-sador Unidade de processamento Entrada Saída Memória Monitor Impressora Modem Primária Secundária

Unidade de processamento Modelo de computador Endereçamento Identificação de onde as informações estão Capacidade Quantidade de informação que pode ser armazenada Volatilidade Exigência de eletricidade Velocidade Taxa de transferência dos dados para processamento Memória Armazenamento de dados e programas Unidade de processamento Memória Entrada Saída

Tipos básicos Memória Não existem posições vazias Nunca conte com isso!!! Memória Não existem posições vazias Há sempre bits em posições de memória Pode-se não saber o que está lá Em posições com conteúdo desconhecido, diz-se que existe “lixo” Alguns compiladores mais modernos, mas não todos, tendem a ter bits zero nas áreas de dados

INTRODUÇÃO Hardware e periféricos executam operações sob controle da UCP (unidade central de processamento) UCP segue os comandos armazenados na memória primária O sistema operacional é o conjunto básico de comandos que gerenciam o computador Gerencia também o uso de outros programas Editores de texto Planilhas de cálculo Jogos Programas em geral... feitos pelo usuário

INTRODUÇÃO Hardware Periféricos S.O. Aplicativos

Sistemas operacionais Exemplos de S.O. (principais) 1961 – CTSS 1966 – DOS/360 (IBM) 1969 – Unix 1970 – DOS/Batch 11 (PDP-11) 1976 – CP/M 1978 – VMS 1981 – MS/DOS (Microsoft) 1981 – SunOS 1984 – MacOS (McIntosh) 1985 – AmigaOS 1985 – Windows 1.0 1987 – Minix 1987 – IRIX (SGI) 1987 – OS/2 (IBM) 1987 – Windows 2.0 1989 – SCO Unix 1991 – Linux 1992 – Windows 3.1 1993 – FreeBSD 1993 – Windows NT 3.1 1995 – Windows 95 1997 – MacOS 7.6 1998 – Windows 98 1999 – MacOS 8 2000 – Windows 2000 2000 – Windows ME 2001 – Windows XP 2001 – MacOS X 2003 – Windows 2003 Server 2005 – Windows Vista

Aplicativos Algoritmo Aplicativos Linguagem de Programação Instruções em 0s e 1s Linguagem de Programação Tradutor ou Compilador Algoritmo Aplicativos

SOLUÇÃO ALGORITMICA Algoritmo: Definição informal Conjunto finito de instruções que, em um tempo também finito, transforma um conjunto de dados em um conjunto de dados processados, com o intuito de resolver um problema. Uma linguagem de programação permite que um algoritmo seja “convertido” em programa.

Algoritmos Algoritmos envolvem Linguagem algorítmica Formalização dos comandos Formalização de estruturas de controle Ferramental de representação de dados Tipos de dados variados Composições de tipos de dados Metodologia de desenvolvimento Abordagem de problemas e proposição de solução Objetivo final Algoritmos têm como objetivo ser a base para programas

SOLUÇÃO ALGORITMICA Lógica de interpretação Remoção de ambiguidade Sequencia linear Remoção de ambiguidade Abstração da execução Velocidade arbitrária Memória infinita Sem limitação para a representação de informação

SOLUÇÃO ALGORITMICA Ciclo de desenvolvimento Entendimento do problema Entendimento da solução não-algorítmica Proposição da solução algorítmica Depuração da solução: testes, correções, reavaliação da solução Avaliação da solução quanto a melhorias e desempenho

SOLUÇÃO ALGORITMICA Entendimento do problema Avaliação de qual o problema Determinação com clareza de quais são os dados de que se dispõe Determinação com clareza de qual a resposta à qual se precisa chegar

SOLUÇÃO ALGORITMICA Entendimento da solução não-algorítmica Aquisição de conhecimento (ou consulta a alguém que o tenha) para que se tenha uma solução para o problema Proposição da solução algorítmica Desenvolvimento do algoritmo Estruturação organizada Abordagem com enfoque do panorama mais geral para o mais específico

SOLUÇÃO ALGORITMICA Depuração da solução: testes, correções, reavaliação da solução Avaliação do algoritmo para certificar que as respostas produzidas são as esperadas Checagem para diferentes entradas das saídas produzidas Correção e adequação do algoritmo frente às deficiências encontradas Avaliação da solução quanto a melhorias e desempenho Reavaliar a solução proposta Busca de melhores opções para a solução proposta Avaliação das partes do algoritmo para torná-lo mais rápido (usando um menor número do comandos/operações)

Aplicativos Algoritmo Aplicativos Linguagem de Programação Instruções em 0s e 1s Linguagem de Programação Tradutor ou Compilador Algoritmo Aplicativos

Programação Máquina programável Capacidade de executar instruções a partir de uma lista de comandos especificada por um programador Cartões perfurados Fitas de papel perfurado HD, CD, DVD etc.

Programação No começo: Depois: Trabalhos: Os programas eram feitos através da mudança física dos circuitos (chaves). Depois: Evoluiu para programas armazenados; A máquina é capaz de obter a lista de comandos e armazená-la internamente, em um dispositivo chamado memória. Trabalhos: História dos computadores até 1900 História dos computadores de 1901 a 1960 História dos computadores de 1961 a 2009 História da programação

Trabalho Trabalhos (em powerpoint): Título Número do Trabalho Nome de cada membro do grupo Data da Entrega Conteúdo Bibliografia

Trabalho Perguntas a serem respondidas O que é um ábaco? O que é uma régua de cálculo? O que são os bastões de Napier? O que são válvulas, relés e transístores? O que são bugs e por que esta denominação? Qual foi a participação de Da Vinci, Pascal, Babbage, Ada Augusta, Hollerith, Von Neumann entre outros na história dos computadores e da programação?

Trabalho Bibliografia Ciência dos Computadores (Livro) http://www.hitmill.com/computers/history/index.html http://lecture.eingang.org/toc.html http://www.islandnet.com/~kpolsson/comphist/ http://www.maxmon.com/history.htm http://inventors.about.com/library/weekly/aa051599.htm Outros sites na internet

Programação Voltando ao assunto de programação...

Programação Como era no início... Instruções do processador Exigia conhecimento das instruções (em binário?!?) Exigia paciência para identificar e corrigir erros A chance de erros era grande 10001010 11000100 8AC416

Programação Linguagem montadora Mnemônicos para as instruções do processador 8AC416 MOV ADD SUB JMP ...

Programação Linguagem montadora Um programa específico Interpreta os mnemônicos Gera a instrução adequada para o processador Nome do programa Programa montador Em inglês: assembler Nome da “linguagem” dos mnemônicos Assembly

Programação Linguagem montadora Dificuldades Vantagens Ainda sujeita a erros Ainda exigia atenção do programador O assembly era específico para cada processador Vantagens Documentação O texto assembly admitia comentários escritos pelo programador Os comentários eram simplesmente ignorados pelo programa montador

Copia o conteúdo da posição de memória chamada A para B Programação Linguagem de nível alto Substitui o assembly por instruções independentes do processador O programador não escreve diretamente as instruções do processador, mas um conjunto de comandos mais abstrato Copia o conteúdo da posição de memória chamada A para B B = A

Programação Linguagem de nível alto Um programa interpreta o código escrito na linguagem Equipamentos distintos interpretam o mesmo código para gerar instruções para seus próprios processadores Vantagens Um mesmo código de nível alto pode ser usado em várias máquinas diferentes Desvantagens Máquinas diferentes exigem programas específicos para interpretar a linguagem Nem sempre estes programas interpretam exatamente a mesma linguagem Dialetos!!!

Programação 10010100 00110101 11001101 11001001 00111101 00001101 11101010 00101001 11001010 01010101 10101010 ... C = A + B A fica no endereço A0FF0216 B fica no endereço A0FF0616 C fica no endereço A0FF0A16 Carrega o conteúdo de A0FF0216 Carrega o conteúdo de A0FF0616 Soma os valores carregados Armazena o resultado em A0FF0A16

Compiladores e Interpretadores Instruções em 0s e 1s Linguagem de Programação Tradutor ou Compilador Algoritmo Aplicativos

Compiladores e Interpretadores Interpreta o código de nível alto inteiro e gera todo o conjunto de instruções Se houver erro, nenhuma instrução é gerada Interpretador Interpreta o código de nível alto comando por comando e o executa na hora Se houver erro, o programa executa até o ponto do erro, então pára - Somente executa se não houver erros (sintáticos) no programa - Resultados parciais podem ser obtidos antes do erro

Compiladores e Interpretadores Um compilador converte um programa (escrito em uma linguagem de programação) em um código compreendido pelo computador. Um interpretador também executa tarefa semelhante à de um compilador, mas a diferença está no fato de que o interpretador terá que executar a mesma tarefa de “tradução” a cada vez que o usuário executar o programa.

Compiladores e Interpretadores O interpretador tem que ouvir “pouco a pouco” o que o locutor está falando e traduzir para todos os ouvintes. Se o locutor for apresentar 10 palestras iguais, o intérprete terá que traduzir 10 vezes... Bla...

Compiladores e Interpretadores O compilador ouve tudo uma única vez e cria um “livro” tradu-zido com o conteúdo da palestra do locutor. Assim, o trabalho do compilador ocorre so-mente uma vez e as coisas ficam bem mais rápidas... Bla...

Compiladores e Interpretadores Tradução Algoritmo Programa em uma linguagem Lisp C# Java Executável C C++ Pascal PL/I Cobol

Aplicativos Algoritmo Linguagem de Programação Tradutor ou Compilador Instruções em 0s e 1s Linguagem de Programação Tradutor ou Compilador Algoritmo Aplicativos

Bases Sistema de base decimal Composto de 10 algarismos (0 a 9) Algarismo é o termo usado para denominar os símbolos de zero a nove e é em homenagem a um matemático chamado al-Khowarizmi. 5.326 = 5 x 1000 + 3 x 100 + 2 x 10 + 6 x 1 = 5 x 103 + 3 x 102 + 2 x 101 + 6 x 100

Bases Sistema binário Composto de 0s e 1s Nro = bn x 2n + bn-1 x 2n-1 + .... + b0 x 20 Exemplo: 01000010 00001101 00001010 01101001 Bits  0s e 1s Byte  agrupamento de 8 bits Palavra  agrupamento de 4 bytes

Bases Conversão de bases 61  base 2 ?? 61 2 1 30 2 0 15 2 1 7 2 1 3 2 61 2 1 30 2 0 15 2 1 7 2 1 3 2 1 1 2 1 0 1 1 1 1 0 1

Bases 1 1 1 1 0 1 1 x 25 = 32 + 1 x 24 = 16 1 x 23 = 08 1 x 22 = 04 0 x 21 = 00 1 x 20 = 01 32 + 16 + 08 + 04 + 01 = 61

Bases Mudar da base 10 para a base 8 (octal) 61 120 56

Bases Base Hexadecimal Valores entre 0 e F, onde A = 10 B = 11 C = 12 Portanto, 4A3F16 = 1900710 16.384 + 2.560 + 48 + 15

Bases Operações Soma de binários 0 + 0 = 0 0 + 1 = 1 1 + 0 = 1 1 + 1 = 0 (e vai 1) 0 0 1 1 1 0 1 1 1 1 1 1 1

Bases Operações Subtração de binários 0 - 0 = 0 1 - 1 = 0 1 - 0 = 1 0 - 1 = 1 (e empresta 1)

Bases Operações Adição de Hexadecimais B C 7 3 4 B F 1 2 7 + 11 = 18 – 16 = 2 (e vai 1) 1 + 12 + 4 = 17 – 16 = 1 (e vai 1) 1 1

Representação Código ASCII Representação interna (computador) de símbolos em binário A = 0100 0001 B = 0100 0010 C = 0100 0011 ...

Motivação - programação Vamos brincar um pouco de programar!

PROBLEMA SIMPLES COMANDOS F (FRENTE) T (TRAS) D (DIREITA) E (ESQUERDA)

PROBLEMA SIMPLES SOLUÇÃO 1 DD FFF EE FF DDDD TT EEEE DDDDD

PROBLEMA SIMPLES SOLUÇÃO 2 D2 F3 D3 PERGUNTA: Pode-se trocar a ordem dos comandos?

PROBLEMA SIMPLES 2 Siga em frente até a prefeitura. Depois vire à direita e siga em frente por um quarteirão e meio.

PROBLEMA SIMPLES 2 Siga em frente significa que os sinais de trânsito devem ser respeita-dos.

PROBLEMA SIMPLES 3 Um professor de física necessita de uma solução computacional que resolva o problema de cálculo da velocidade final de um objeto, solto do repouso na direção vertical a partir de uma dada altura, quando este atinge o solo. Este problema é parte de um outro problema maior em que o professor está trabalhando, em cinética. v0 = 0 v = ?

PROBLEMA SIMPLES 3 Entendimento do problema v0 = 0 Entendimento do problema É um caso de queda livre Entendimento da solução não-algorítmica Consultando o material do cursinho Fazendo as manipulações algébricas adequadas Solução: h – altura g – aceleração gravitacional

PROBLEMA SIMPLES 3 Desenvolvimento do algoritmo algoritmo quedaLivre início Obtenha o valor da altura Calcule a velocidade Devolva como resposta a velocidade calculada fim Esboço inicial

PROBLEMA SIMPLES 3 Desenvolvimento do algoritmo algoritmo quedaLivre início Obtenha o valor para “altura” Calcule “velocidade” pela fórmula “ ” Devolva o valor de “velocidade” fim Esboço mais refinado

PROBLEMA SIMPLES 3 Exemplo Desenvolvimento do algoritmo algoritmo quedaLivre { Calcula a velocidade de uma partícula ao atingir o solo após ser largada do repouso a uma dada altura } declare altura, velocidade: real início leia(altura) velocidade  4,43 * raiz(altura) escreva(velocidade) fim Versão final

PROBLEMA SIMPLES 3 Exemplo Observações O problema proposto foi bastante específico A altura deve ser dada em metros e o valor deve ser positivo A velocidade resultante é em m/s O algoritmo não é geral O valor da gravidade foi estimado em 9,8m/s2 Não se admite outro valor para g Não se admite velocidade inicial diferente de zero Não se considera resistência do ar Etc. etc. etc.

PROBLEMA SIMPLES 3 Teste do algoritmo Acompanhamento dos cálculos realizados

PROBLEMA SIMPLES 3 Exemplo Melhorias Verificou-se que o cálculo intermediário da velocidade podia ser omitido Algoritmo QuedaLivre { Calcula a velocidade de uma partícula ao atingir o solo após ser largada do repouso a uma dada altura } Declare Altura, Velocidade: real Início Leia (Altura) Velocidade  4,43 * Raiz(Altura) Escreva (Velocidade) Fim Versão final

PROBLEMA SIMPLES 3 Exemplo Melhorias algoritmo quedaLivre { Calcula a velocidade de uma partícula ao atingir o solo após ser largada do repouso a uma dada altura } declare Altura: real início leia (altura) escreva (4,43 * raiz(altura)) fim Algoritmo QuedaLivre { Calcula a velocidade de uma partícula ao atingir o solo após ser largada do repouso a uma dada altura } Declare Altura, Velocidade: real Início Leia (Altura) Velocidade  4,43 * Raiz(Altura) Escreva (Velocidade) Fim Versão final