Linguagens de Programação:



Documentos relacionados
Montadores e Compiladores

Ciclo com Contador : instrução for. for de variável := expressão to. expressão do instrução

Algoritmos e Programação : Conceitos e estruturas básicas. Hudson Victoria Diniz

Algoritmo e Lógica de Programação. Conceitos de Linguagens de Programação

Lição 5 Medidas Descritivas Medidas de Dispersão

3. COMPILAÇÃO E ESTRUTURA BÁSICA DE UM PROGRAMA EM C

Proporcionar a modelagem de sistemas utilizando todos os conceitos da orientação a objeto;

Introdução. Software Básico Aula 3. Prof. Dr. Rogério Vargas.

Capítulo II : A Linguagem Pascal Conceitos Fundamentais

1. Noção de algoritmo

Metodologias de Programação

OBSERVAÇÕES: EXERCÍCIOS

Programação de Computadores I. Linguagem C Função

PLANEJAMENTO SIMPLIFICADO DE PROJETOS

Estruturas de Repetição

Engenharia de Software. Ciclos de Vida do Software. 1. Sistemas

Teoria dos Grafos. Valeriano A. de Oliveira Socorro Rangel Departamento de Matemática Aplicada.

Aula 01 Introdução Custo de um algoritmo, Funções de complexidad e Recursão

Maratona de Programação - Dicas Para Iniciantes

Primeira Prova de Análise e otimização de Código - DCC888 -

Introdução a Programação Aula 01

UNIPAC Araguari FACAE - Faculdade de Ciências Administrativas e Exatas SISTEMAS DE INFORMAÇÃO

1.1. Definição do Problema

Exame de Equivalência à Frequência do Ensino Secundário

Linguagem de Programação I

ANVISA BPF, PROCESSO DE FABRICAÇÃO E SISTEMA DE CODIFICAÇÃO. Artur J. Gradim. SÃO PAULO 28 DE Agosto de 2006

INTRODUÇÃO À CALCULADORA HP 12c. OBJETIVO: Este material tem como objetivo estabelecer um primeiro contato com a calculadora financeira HP 12c.

INTRODUÇÃO À PROGRAMAÇÃO EM FORTRAN

Fundamentos de Arquitetura e Organização de Computadores

Módulo IV Programação Visual Basic. Programação

Microcontroladores e Microprocessadores. Conversão de Bases Prof. Samuel Cavalcante

Universidade Paulista

Entrada e Saída Transmissão Serial e Paralela

INFORMÁTICA PARA GESTÃO II Curso Superior de Gestão de Marketing

Introdução. Algoritmos

O Sistema de Computação

Nº horas ESTRATÉGIAS RECURSOS AVALIAÇÃO

Vírgula flutuante Aula 6

Processo de Desenvolvimento de Software

1.2. Grandezas Fundamentais e Sistemas de Unidades

Tipos de Software e Ambientes de Processamento

Orientação a Objetos

PREPARATÓRIO PROFMAT/ AULA 3

Informática Aplicada

I - ALGORITMIA - Conceitos Básicos

Programação em FORTRAN V. João Manuel R. S. Tavares

Algoritmos APRENDENDO A PROGRAMAR COM C#

PROVA Duração da prova: 120 minutos

Escalas ESCALAS COTAGEM

Sistemas de Tempo Real

Programação de Computadores I Estruturas de Repetição PROFESSORA CINTIA CAETANO

Normas para a elaboração de um relatório. para a disciplina de projecto integrado. 3.º ano 2.º semestre. Abril de 2004

- Campus Salto. Disciplina: Sistemas de Arquivos Docente: Fernando Santorsula

Representações de caracteres

MATA49 Programação de Software Básico

Geração e Otimização de Código (continuação)

INF1005: Programação I. Algoritmos e Pseudocódigo

Universidade Federal do ABC Disciplina: Natureza da Informação Lista de Exercícios 02 Códigos e conversão A/D Prof. João Henrique Kleinschmidt

Curvas no Plano e no Espaço*

BC1424 Algoritmos e Estruturas de Dados I Aula 02: Ponteiros, estruturas e alocação de memória

Versão 2 COTAÇÕES pontos pontos pontos pontos pontos pontos

Linguagem de Programação I

Arquitetura de Computadores

Arquitetura TCP/IP. Apresentado por: Ricardo Quintão

Exercícios: Comandos de Repetição

Sistemas Digitais II. Interface com o mundo analógico. Prof. Marlon Henrique Teixeira Abril/2014

PROGRAMAÇÃO ORIENTADA A OBJETO INTRODUÇÃO

Programação de Computadores - I. Profª Beatriz Profº Israel

Estrutura Condicional em Pascal

Exercícios: comandos de repetição

Usando potências de 10

Aula Orçamento de produção. Profa. Nilcéia Cristina dos Santos

Organização e Arquitetura de Computadores I

Informação-Prova de Equivalência à disciplina de: Aplicações Informáticas B. 1. Introdução. Ensino Secundário. Ano letivo de 2011/12

Figura 8: modelo de Von Neumann

Linux e Computação Científica

Construção de uma via de dados, abordagem monociclo, multiciclo e pipeline

Prova de Aferição de Matemática

Solução Comentada Prova de Matemática

Requisitos de Software

Algoritmo e Pseudo-código

Aulas Previstas. Objectivos Conteúdos Estratégias/Actividades Recursos Avaliação. Avaliação diagnóstica. Observação e registo das atitudes dos alunos

Linguagem Pascal. Prof. Sérgio Rodrigues. É a descrição, de forma lógica, dos passos a serem executados no cumprimento de determinada tarefa;

Caminho de Dados e Controle. Prof. Leonardo Barreto Campos 1

Introdução à Aritmética Modular. George Darmiton da Cunha Cavalcanti CIn - UFPE

Medidas e Escalas: Escalas não Comparativas

Sistema Operacional. Implementação de Processo e Threads. Prof. Dr. Márcio Andrey Teixeira Sistemas Operacionais

1. Estrutura de Dados

Prova de Aferição de Matemática

Oganização e Arquitetura de Computadores

Introdução a Funções

Novo Programa de Matemática do Ensino Básico 3º ANO

Introdução à Algoritmos. Aula 11

Campus Capivari Análise e Desenvolvimento de Sistemas (ADS) Prof. André Luís Belini prof.andre.luis.belini@gmail.com /

Metodologia de Investigação Educacional I

Experimento. Guia do professor. A matemática dos calendários. Secretaria de Educação a Distância. Ministério da Ciência e Tecnologia

Capítulo III : A Linguagem Pascal Estruturas de Controlo

Alfabetização matemática e direitos de aprendizagem no 1º ciclo. Luciana Tenuta lutenuta@gmail.com

Teoria de Jogos. Algoritmo Minimax e Alfa-Beta AED

MC Teste de Mesa e Comandos Repetitivos

Transcrição:

Capítulo I : Noções Gerais 11 Linguagens de Programação: Como comunicar com o computador? Linguagem Máquina: Conjunto básico de instruções, em código binário, características de cada computador, correspondentes às suas Operações Básicas: Instruções de Cálculo (and, or, not, +,, ) Inst. de Transferência de Informação Inst. de Teste Inst. de Entrada/Saída

Capítulo I : Noções Gerais 12 Linguagem Simbólica (Assembly): Conjunto de mnemónicas das instruções em código máquina. A tradução é feita pelo programa Assembler. Como há uma correspondência biunívoca entre instruções simbólicas e instruções máquina, as linguagens simbólicas: Dependem do processador utilizado, Permitem escrever programas muito eficientes, São de utilização muito difícil e sujeita a erros. Linguagens de Alto Nível: Exemplo em Pascal: begin pi:= 3.14159; writeln ( Escreva o valor do raio ); read(raio); area:= pi * raio * raio; comp:= 2 * pi * raio; writeln ( Area do circulo =, area); writeln ( Comprimento da circunferencia =, comp) end. As Linguagens de Alto Nível são: Mais próximas dos conceitos humanos (linguagem natural, conceitos matemáticos), Independentes do computador, Cada instrução corresponde a uma lista de instruções em linguagem máquina (ou simbólica), Permitem uma programação mais fácil e menos sujeita a erros, Os programas são mais curtos e fáceis de ler, entender e alterar, Não permitem o controlo exacto da máquina.

Capítulo I : Noções Gerais 13 Cronologia de algumas Linguagens de Alto Nível:

Capítulo I : Noções Gerais 14 O programa Compilador: Traduz um dado programa em linguagem de Alto Nível (Programa Fonte) para o seu equivalente em Linguagem Máquina (Programa Objecto). A Fase de Compilação gera código executável pelo computador onde, durante a Fase de Execução, podemos introduzir os Dados e esperar os Resultados correctos. Erros de Compilação: O Programa Fonte não foi escrito de acordo com as regras de Sintaxe da linguagem utilizada. O Compilador não gera o Programa Objecto. Erros de Execução: O Programa Objecto não pode ser executado. Erros do Algoritmo: Os resultados foram calculados, mas estão errados.

Capítulo I : Noções Gerais 15 Programar Resolver Problemas Problema Especificação Elaboração do Algoritmo Construção das Estruturas de Dados Escrita do Programa Implementação Compilação Execução Análise dos Resultados Correcção dos Erros 1. Problema: Calcular em que dia da semana calha o dia de Natal de ano qualquer. p.ex.: Natal (1985) = Quarta-Feira Natal (1999) = Sábado 2. Especificação: Dados: Indicação do ano em questão. (Definição do domínio?) Resultados: Identificação de um dos sete dias da semana. (Como? Codificação?)

Capítulo I : Noções Gerais 16 3. Elaboração do Algoritmo: Relações entre os Dados e os Resultados: Não parece haver uma relação matemática directa Análise de alguns casos particulares: Natal (1997) = Quinta Natal (1998) = Sexta Natal (1999) = Sábado Natal (2000) = Segunda porquê o salto? Algumas informações úteis: Um ano comum tem 365 dias, um ano bissexto tem 366; O dia extra dos anos bissextos é o 29 de Fevereiro; O Natal é a 25 de Dezembro; O ano 2000 é bissexto. Será que?: Porquê? Natal(ano+1) = Natal(ano) + 1, se (ano+1) fôr comum Natal(ano+1) = Natal(ano) + 2, se (ano+1) fôr bissexto 365 mod 7 = 1 ou 365 = 7 l 52 + 1 366 mod 7 = 2 ou 366 = 7 l 52 + 2 Mas quais são os anos bissextos? Um ano é bissexto se fôr divisível por 4, mas não por 100, ou se fôr divisível por 400. Exemplos: 1984, 1988, 1992, 1996 são anos bissextos, 1900, 2100 são anos comuns, 2000 é ano bissexto.

Capítulo I : Noções Gerais 17 Uma representação numérica para os dias da semana: Verifiquemos domingo Ž 0 segunda Ž 1 sabado Ž 6 Natal (1998) = 5 (sexta) Natal (1999) = 5 + 1 = 6 (sábado) Natal (2000) = 6 + 2 = 8 e deveria ser 1 O resultado tem de ser reduzido ao intervalo inteiro [0, 6] Alteremos as fórmulas: Natal(ano+1) = (Natal(ano) + 1) mod 7, se (ano+1) fôr comum Natal(ano+1) = (Natal(ano) + 2) mod 7, se (ano+1) fôr bissexto Serão necessárias duas fórmulas? Natal(ano+1) = (Natal(ano) + 1 + bis) mod 7 Generalizando para n anos depois: com bis = 0 se (ano+1) comum bis = 1 se (ano+1) bissexto Natal(ano + n) = (Natal(ano) + n + numbis) mod 7 com numbis = número de anos bissextos durante esses n anos

Capítulo I : Noções Gerais 18 Quantos anos bissextos ocorrem no intervalo [ano, ano+n]? (ano) Se ano fôr bissexto Então numbis ([ano, ano+n]) = n div 4 (divisão inteira) (desde que o intervalo não contenha anos divisíveis por 100) Escolha do domínio: Como o Natal é em Dezembro, podemos escolher 1900 como ano base e permitir o cálculo pretendido no intervalo [1900, 2099] E só falta descobrir que: Natal(1900) = terça-feira (2) Finalmente, o Algoritmo procurado: Cálculo do dia de Natal: Ler o valor do ano pretendido ± [1900, 2099]; Calcular n ano 1900; Calcular numbis n div 4; Calcular factor 2 + n + numbis; Calcular natal factor mod 7; Escrever o valor de natal (dia da semana).

Capítulo I : Noções Gerais 19 4. Simulação para alguns valores: ano n numbis factor natal dia 1900 0 0 2 2 terça 1999 99 24 125 6 sábado 2000 100 25 127 1 segunda parece funcionar! 5. Uma implementação na linguagem Pascal: (* Calcular o dia da semana em que calha o Natal *) (* Utilizar só para anos entre 1900 e 2099 *) program diadenatal(input, output); var ano, numbis, n, factor, natal: integer; begin write('qual o ano, só dos séculos XX e XXI?'); readln(ano); n:=ano 1900; numbis:=n div 4; factor:=2+n+numbis; natal:=factor mod 7; write('o Dia de Natal de ', ano,' calha a '); case natal of 0 : writeln('um Domingo'); 1 : writeln('uma Segunda-Feira'); 2 : writeln('uma Terca-Feira'); 3 : writeln('uma Quarta-Feira'); 4 : writeln('uma Quinta-Feira'); 5 : writeln('uma Sexta-Feira'); 6 : writeln('um Sabado') end end.

Capítulo I : Noções Gerais 20 6. Editar 7. Compilar 8. Executar 9. Corrigir Erros ( e voltar ao início?) 10. Aperfeiçoamentos: Melhoramentos e adaptações possíveis: Reduzir o número de variáveis utilizadas; Introduzir mais comentários; Ampliar o domínio [1900, 2099]; Permitir o cálculo para vários anos; Gerar uma tabela, para um intervalo pedido; Metodologia da Programação: Objectivos a atingir Clareza Correcção Eficiência Clareza: O programa deve reflectir claramente a estrutura do algoritmo. Deve ser fácil de ler, corrigir, ampliar ou modificar, mesmo por outro programador. Correcção: O programa deve cumprir exactamente as especificações. Eficiência: O programa deve tentar minimizar, tanto o seu tempo de execução, como o espaço de memória utilizado.