Técnicas de Programação - TPR Edson Lourenço da Aparecida [email protected].
Transcript of Técnicas de Programação - TPR Edson Lourenço da Aparecida [email protected].
Objetivos do Curso Codificar algoritmos utilizados para solução de problemas
através do conhecimento dos recursos de uma linguagem de programação imperativa e bloco-estruturada.
Desenvolver habilidades cognitivas e sociais intrínsecas num projeto de trabalho inter e multidisciplinar.
Dominar o processo de solução de problemas através do desenvolvimento de programas de computador utilizando uma linguagem de programação.
Pré-requisito: Conhecer aspectos básicos de operação de um sistema
operacional e seus principais comandos.
Programa Noções básicas de Algorítmos Características de linguagem imperativa e bloco-estruturada Estrutura básica de um programa Tipos de dados Declaração de variáveis e constantes Expressões aritméticas: operadores artiméticos e prioridade Comando de atribuição Expressões lógicas: operadores lógicos, tabela verdade, Prioridade Comandos de entrada e saída Estruturas de controle de fluxo: seqüência, seleção, repetição Modularidade
Conceitos e vantagens de utilização, Escopo de variáveis`(locais e globais), Tipos de subprogramas (procedimentos e funções), Passagem de parâmetros (por valor e por referência), Programação modular (funções)
Tipos de dados estruturados Registro, Vetores e Matrizes, Vetores e Matrizes de Registros,
Arquivos Textos e Binários Ponteiros
Noções Básicas, Alocação Dinâmica
Avaliação
G1 = (P1 + P2 + (MT+TF)) / 3
Onde: P1 & P2: Prova escrita MT: média dos trabalhos de implementação a
serem solicitados ao longo do semestre TF: nota do trabalho prático final MT+TF = 100 , P1=100 e P2=100 pontos
Avaliação Presença
75% de presença é necessário para aprovação Aprovação sem PF:
G1 >=7.0 & 75% de presença
PF Prova escrita, abordando os conteúdos de TODAS as
unidades GF
GF = G1 + PF/2 Aprovação:
GF >= 5.0 & 75% de presença
Técnicas de Programação - TPR
Conceitos básicos
Sumário
Algoritmo x Programa Linguagens de Programação Abstração Classes de Linguagens de Programação Relação entre Algoritmos e Programação
Algorítmo
Definições: “Um conjunto finito de regras que provê uma
seqüência de operações para resolver um tipo de problema específico” [KNUTH]
“Seqüência ordenada, e não ambígua, de passos que levam à solução de um dado problema” [TREMBLAY]
Ou seja: Um algoritmo é como uma “receita de bolo” para o
computador, onde estão definidos todos os comandos que ele deve executar para alcançar um objetivo
Algorítmo
Um algoritmo é uma forma de indicar o caminho para a solução dos mais variados problemas
Em geral, existem muitos caminhos que levam à solução de um problema
Portanto, para cada problema existe mais do que um algoritmo [Orth 2001]
Algorítmos: Exemplos
Instruções para se utilizar um aparelho eletrodoméstico;
Uma receita para preparo de algum prato; Guia de preenchimento para declaração do imposto
de renda; A regra para determinação de máximos e mínimos
de funções por derivadas sucessivas; A maneira como as contas de água, luz e telefone
são calculadas mensalmente; etc.
Algorítmos: Importância
O computador, por si só, não tem vontade própria ! É necessário especificar uma seqüência de
passos lógicos para que o computador possa executar uma tarefa qualquer. Com uma ferramenta algorítmica, podemos conceber uma solução para um dado problema, independendo de uma linguagem específica e até mesmo do próprio computador
Algorítmos: Características
ter fim; não dar margem à dupla interpretação; capacidade de receber dado(s) de entrada
do mundo exterior; poder gerar informações de saída para o
mundo externo ao do ambiente do algoritmo; ser efetivo:
todas as etapas especificadas no algoritmo devem ser alcançáveis em um tempo finito.
Aprendendo Algorítmos
Algorítmos X Programas Um programa é a formalização de um
algoritmo em uma determinada linguagem de programação, segundo suas regras de sintaxe e semântica, de forma a permitir que o computador possa entender a seqüência de ações.
Programa é um software que diz para o computador o que o hardware deve fazer: Ler e escrever em arquivos do HD Exibir informações no monitor ....
Linguagem de Programação Linguagem de programação:
Um conjunto de termos e de regras que permitem a formulação de instruções a um computador
C, C++, Delphi, Pascal,Java, etc.
Regras Sintáticas: conjunto de regras que determina quais construções são
corretas para formação dos programas; preocupa-se com a “forma” dos programas
Regras Semânticas: descrição da maneira que um programa sintaticamente
correto é interpretado ou executado; preocupa-se com o “significado” dos programas
Classes de Linguagens de Programação Considerando o nível de abstração, identifica-se três classes de
linguagens de programação: Linguagem de Máquina
Baseada num código binário Exemplo:
0010 001 0110 1100 (soma) (reg1) ($108) Linguagem de Baixo Nível
Códigos binários são substituídos por mnemônicosExemplo LOAD R2, $108 ADD R1, R2
Linguagem de Alto Nível Mais próxima da linguagem do homem, não requer conhecimento da
arquitetura da máquina e é portável, isto é, independente da máquina Exemplo:
a = a + 10; C, C++, Pascal, Java, LISP são exemplos de linguagens de alto nível
Processo de Criação e Execução de um Programa
Os computadores, existentes hoje em dia são capazes de executar somente programas em linguagem de baixo nível, a Linguagem de Máquina.
Linguagens de Máquina são projetadas levando-se em conta os seguintes aspectos : rapidez de execução de programas; custo de sua implementação; e flexibilidade com que permite a construção de programas de
nível mais alto.
Por outro lado, linguagens de programação de alto nível são projetadas em função de : facilidade de construção de programas; e confiabilidade dos programas.
Processo de Criação e Execução de um Programa
O PROBLEMA: Como a linguagem de nível mais alto pode ser
implementada em um computador, cuja linguagem é bastante diferente e de nível mais baixo ?
SOLUÇÃO: Através da tradução de programas escritos em linguagens
de alto nível para a linguagem de baixo nível do computador.
Tipos de programas tradutores : Montadores, Interpretadores e Compiladores.
MONTADOR
Efetua a tradução de linguagem de montagem ( Assembly ) para a linguagem de máquina, da seguinte forma: obtém a próxima instrução do Assembly; traduz para as instruções correspondentes em
linguagem de máquina; executa as instruções em linguagem de máquina;
e repete o passo 1 até o fim do programa.
INTERPRETADOR
Efetua a tradução de uma linguagem de alto nível para linguagem de máquina da seguinte forma: obtém próxima instrução do código-fonte em
linguagem de alto nível; traduz para as instruções correspondentes em
linguagem de máquina; executa as instruções em linguagem de máquina;
e repete o passo 1 até o fim do programa
COMPILADOR
Efetua a tradução de todo o código-fonte em linguagem de alto nível para as instruções correspondentes em linguagem de máquina, gerando o código-objeto do programa.
Em seguida é necessário o uso de um outro programa ( Link-Editor ) que é responsável pela junção de diversos códigos-objeto em um único programa executável.
COMPILADOR
EDIÇÃO COMPILAÇÃO LINK-EDIÇÃO
ALGORITMOCÓDIGO-FONTE
CÓDIGO-OBJETO
PROGRAMA EXECUTÁVEL
Possibilidades de Erros em Programas
Erros de Compilação : erros de digitação e de uso da sintaxe da
linguagem. Erros de Link-Edição :
erro no uso de bibliotecas de sub-programas necessárias ao programa principal.
Erros de Execução : erro na lógica do programa (algoritmo).
Programas: Critérios de Qualidade
Integridade: os resultados gerados pelo processamento do programa devem estar corretos;
Clareza: refere-se à facilidade de leitura do programa.
Leitura por outro programador, manutenção Simplicidade:
a clareza e precisão de um programa são normalmente melhoradas tornando seu entendimento o mais simples possível, consistente com os objetivos do programa.
Eficiência: Um programa deve ter desempenho SUFICIENTE para atender às necessidade
do problema e do usuário, bem como deve utilizar os recursos de memória de forma moderada, dentro das limitações do problema;
Modularidade: consiste no particionamento do programa em módulos menores bem identificáveis
e com funções específicas, de forma que o conjunto desses módulos e a interação entre eles permite a resolução do problema de forma mais simples e clara; e
Generalidade: é interessante que um programa seja tão genérico quanto possível de forma a
permitir a reutilização de seus componentes em outros projetos.
Programação: Etapas
Especificar claramente o problema: o que deve ser resolvido;
Projetar uma solução (algorítmo) para solucionar o problema: transformar o que deve ser resolvido em como resolvê-lo;
Escrever a solução em uma linguagem de programação (programa): editar um arquivo em uma linguagem de programação;
Testar a solução (programa).
Estrutura de um Programa Cabeçalho
Esta área é utilizada para se fazer a identificação do programa com um nome.
Área de Declarações: Esta área é utilizada para validar o uso de qualquer tipo de
identificador que não seja predefinido. Ex:
declaração das variáveis que serão utilizadas durante a execução de um programa, bem como, também o seu tipo.
Corpo Área onde programa propriamente dito está escrito Tem início e fim definidos através de comandos de
delimitação.
Exemplo
Desenvolver um algorítmo que calcule do dobro de um determinado valor e apresente o resultado obtido.”
Etapas
Ler o valor a ser multiplicado e guardar na variável NUM;
Efetuar a multiplicação da variável NUM por 2 e guardar na variável RESULTADO;
Apresentar o valor da variável RESULTADO
Linguagem Algorítmica
Algoritmo CALCULA_DOBROVariaveis
Inteiro NUM,RESULTADO;início Ler NUM; DOBRO = 2 * NUM; Escrever RESULTADO;fim
Algoritmo CALCULA_DOBROVariaveis
Inteiro NUM,RESULTADO;início Ler NUM; DOBRO = 2 * NUM; Escrever RESULTADO;fim
Variáveis
É uma região previamente identificada, que tem por finalidade armazenar informações (dados na memória) de um programa temporariamente
Uma variável armazena apenas um valor por vez. Sendo considerado como valor o conteúdo de
uma variável, este valor está associado ao tipo de dado da variável.
Operação de Atribuição
Permite que se forneça um valor a uma certa variável.
Se for atribuído uma expressão à variável, será armazenado o resultado daquela expressão.
Se for atribuído uma outra variável, será armazenado o conteúdo daquela variável.
Exemplos
A = 2
NOME = 'João‘
A = B + C
B = A
SENHA = 'X3Y9‘
NOTA = NOTA – 1
NOTA = 10
C = 1 / 3
X = 2.5
Operações de Entrada e Saída
Comando ler nos permite ler valores dados atribuindo-os à variáveis indicadas;
Comando escrever nos permite mostrar os resultados.
ler NOTA
ler A,B,C
escrever NOTA+2
ler NOM
escrever A,B
Estruturas Básicas de Controle
Sequenciação Seleção; e Repetição
Estrutura de Seqüenciação Define que os comandos deverão ser executados numa
seqüência linear. Leitura:
seguindo-se o texto em que estão escritos, de cima para baixo, um comando após o outro.
INICIOFIMComando-1Comando-2Comando-n Exemplo
inicio comando-1; comando-2;
. . . comando-n
fim
Exercícios
Determine os valores finais de A,B, e C considerando-se a seqüencia de comandos a seguir:: A = 0; B = 1; C = A + B;
A = A + 1; B = A + B + C Desenvolver um programa que efetue a
leitura de dois valores numéricos. Faça a operação de adição entre os dois valores e apresente o resultado obtido.”
Estruturas de controle