Loading presentation...

Present Remotely

Send the link below via email or IM

Copy

Present to your audience

Start remote presentation

  • Invited audience members will follow you as you navigate and present
  • People invited to a presentation do not need a Prezi account
  • This link expires 10 minutes after you close the presentation
  • A maximum of 30 users can follow your presentation
  • Learn more about this feature in our knowledge base article

Do you really want to delete this prezi?

Neither you, nor the coeditors you shared it with will be able to recover it again.

DeleteCancel

Make your likes visible on Facebook?

Connect your Facebook account to Prezi and let your likes appear on your timeline.
You can change this under Settings & Account at any time.

No, thanks

Portugol e Lógica de Programação

No description
by

Prof. Luiz Corrêa

on 13 November 2014

Comments (0)

Please log in to add your comment.

Report abuse

Transcript of Portugol e Lógica de Programação

Outras Características
Programação de Computadores
Lógica, Algoritmos e Portugol


Programação
Lógicas para Desenvolvimento
Variáveis Portugol Visualog
Video Aulas no Youtube
QUALIDADES DE UM BOM ALGORITMO
Formas de Programação
Ferramentas de Programação
Portugol ( Via Software Visualog )
O Visualg 2.0 é um programa que interpreta e executa algoritmos como um "programa" normal de computador. Baseado em uma linguagem parecida com o "Portugol".
Laço de Repetição e Condicional
Vetores e Matrizes
1. Faça um algoritmo para ler uma matriz de 3×4 de números reais e depois exibir o elemento do canto superior esquerdo e do canto inferior
algoritmo "Estudando Matriz"
// Função : Faça um algoritmo para ler uma matriz de 3×4 de números reais
// e depois exibir o elemento do canto superior esquerdo e do canto inferior direito
// Autor : Adão Braga
// Data : 26/6/2011
// Seção de Declarações
var
matriz : vetor[1..3,1..4] de real
i,j:inteiro
inicio
// Seção de Comandos
para i de 1 ate 3 faca
para j de 1 ate 4 faca
escreva("Digite um número inteiro: [", i, ",", j, "] ")
leia(matriz[i,j])
fimpara
fimpara
para i de 1 ate 3 faca
para j de 1 ate 4 faca
escreva(matriz[i,j]:3)
fimpara
escreval("")
fimpara
escreval("")
escreval("linha 1 e coluna 1", matriz[1,1])
escreval("linha 3 e coluna 4", matriz[3,4])
fimalgoritmo
Introdução
Algoritmo
Lógica
Lógica é definida basicamente como sendo o estudo das leis do raciocínio e do modo de aplicá-las corretamente na demonstração da verdade. Chamamos de algoritmo lógico aquele algoritmo cujas instruções estão dispostas ordenadamente e de maneira compreensível por qualquer pessoa que possua
conhecimento básico sobre o assunto. Isto é, um algoritmo deve ser facilmente entendido, sem que seja necessária uma grande perda de tempo para a tradução da idéia contida no mesmo. Um algoritmo lógico deve ser, também, formado apenas pelo número mínimo de instruções necessárias para a resolução do problema referido. Cada pessoa analisa um problema de uma forma diferente, há uma certa tendência em complicar a sua solução. Sendo assim, deve-se pensar muito na solução desejada, analisando todas as possibilidades, ao invés de utilizar a primeira solução que vier à cabeça, sob pena de complicar o algoritmo de tal modo, que quando for necessária uma modificação, gastar-se-á mais tempo tentando entendê-lo do que criando-o novamente com as alterações desejadas. Porém, o problema da complexidade não está presente apenas na elaboração do algoritmo, mas também na sua codificação em uma determinada linguagem de programação.
Fim do "GOTO"
( Basic )
O termo programação estruturada nasceu nos fins da década de 60, quando Edsger Dijkstra escreveu um artigo publicado pela Communications of the ACM, cujo título é “O comando GOTO é prejudicial”. Dijkstra observou que a qualidade dos programadores decai em função do número de GOTO’s usados em seus programas. Segundo ele, “comandos GOTO’s tendem a criar caminhos de lógica confusos e
programas pouco claros”. A sua recomendação foi de que o comando em questão fosse excluído das linguagens de programação de alto nível.
Nessa época também, (1966) dois professores italianos G. Jacopini e C. Bohm, provaram matematicamente que qualquer lógica de programação poderia ser derivada de três tipos básicos de
procedimentos, como se vê na figura a seguir ==>
A importância desta descoberta para o software teve tanto impacto quanto a de que qualquer forma lógica de hardware pode ser construída pelas combinações das portas AND, OR e NOT.
A programação estruturada pode ser definida basicamente como sendo uma técnica de programação, na qual a construção de um programa é feita com base nas estruturas simples de controle definidas acima. A rigidez imposta por estas estruturas é um fator importante para a compreensão do programa, pois uma vez que não existem comandos de desvios (GOTO), o programador é obrigado a utilizar uma lógica coerente que se adapte às estruturas. Desse modo o programa torna-se inteligente, já que não é possível criar códigos que abram margem para uma falta de ordenação na lógica, códigos absurdos, programas poluídos e de difícil compreensão.
Com a utilização da programação estruturada um programa tem, obrigatoriamente, início, meio e fim, pois não existem desvios, as estruturas devem ser dispostas numa ordem tal que, chegando ao final do código, um processamento completo tenha sido executado. Como se fosse uma caixa preta, com somente uma entrada e uma saída.
As 3 Ferramentas da Programação Estruturada
Porque o Portugol ?
Portugol é uma técnica narrativa denominada pseudo-código, também conhecida como português estruturado. Esta técnica de algoritmização é baseada em uma PDL – Program Design Language (Linguagem de Projeto de Programação). A forma original de escrita é conhecida como inglês estruturado, muito parecida com a notação da linguagem Pascal. A PDL é usada como referência genérica para uma linguagem de projeto de programação, tendo como finalidade mostrar uma notação para elaborações de algoritmos, os quais serão utilizados na definição, criação e desenvolvimento de uma linguagem computacional (Pascal, C, Delphi, Visual-Objects, Clipper) e sua documentação. A diferença entre uma linguagem de programação de alto nível utilizada em computação e uma PDL, é que esta não pode ser compilada em um computador. Existem inúmeras versões de Portugol, cada professor tem a sua, assim como cada empresa pode definir um pseudo-código.
É importante salientar que a sintaxe e a semântica da construção de Portugol são arbitrados por alguém, segundo seus critérios, mas UMA VEZ ESTABELECIDO UM PADRÃO, ELE PRECISA SER RELIGIOSAMENTE SEGUIDO. Esta restrição tem duas vertentes:
- há que haver um mínimo de concordância para que outras pessoas
possam ler e entender o que escrevermos.
- uma das principais características de um bom programador é a
disciplina intelectual.
O português, como qualquer outra linguagem natural, tem inúmeras desvantagens. Não é entendido pela máquina, sua tradução é bastante complexa, é ambíguo podendo gerar interpretações errôneas, e é
muito extenso. Logo, não é um linguajar adequado para expressarmos algoritmos. Devemos lembrar sempre que a margem de interpretação do computador é sempre ZERO. Já um linguagem de programação, mesmo que de alto nível, como o Pascal ou o C, exigem um conhecimento da máquina que ainda não temos. Também é importante salientar que idealmente falando, não é uma boa política enfrentar dois problemas interligados ao mesmo tempo. Isto é, não convém misturar dificuldades lógicas com dificuldades da linguagem de programação. Já dizia Dijkstra “(devemos) reconhecer que temos uma cabeça pequena, e que é melhor tratar de conviver com ela e respeitar suas limitações” e que “a regra áurea da programação estruturada é DIVIDIR PARA REINAR.”
Nossos programas em Portugol vão deixar de lado inúmeras tarefas que são imprescindíveis para o
programa rodar em um computador, tais como: instruções de ambientação na compilação de
programas, descrições de operações de entrada/saída complexas, pouca ou nenhuma preparação de
contadores e chaves, etc.
Para tanto, existe uma disciplina anexa a esta, onde vai se aprender a linguagem de programação. Neste
momento, então, a preocupação passa a ser a máquina e não mais a lógica do algoritmo que já deve
estar consolidado.

Tipos de Dados
O VisuAlg prevê quatro tipos de dados: inteiro, real, cadeia de caracteres e lógico (ou booleano). As palavras-chave que os definem são as seguintes (observe que elas não têm acentuação):

inteiro
: define variáveis numéricas do tipo inteiro, ou seja, sem casas decimais.
real
: define variáveis numéricas do tipo real, ou seja, com casas decimais.
caractere
: define variáveis do tipo string, ou seja, cadeia de caracteres.
logico
: define variáveis do tipo booleano, ou seja, com valor VERDADEIRO ou FALSO.

1. Clareza – o algoritmo é uma ferramenta de entendimento e solução de um problema,
deve portanto, ser o mais claro possível. O autor deve preocupar-se constantemente se o
que está pensando está visível no que está escrevendo;
2. Impessoalidade - não usar macetes, regras pessoais e nomes que só tem sentido para o
autor, muitas vezes quem vai examinar depurar, corrigir, alterar o algoritmo não é seu
próprio autor. Neste ponto as empresas de desenvolvimento de software bem organizadas
definem um conjunto de normas de codificação e de elaboração de algoritmos;
3. Simplicidade – o algoritmo deve ter por princípio a simplicidade, logo transformar algo
complicado em soluções simples, parece ser a diferença entre programadores comuns e
grandes programadores;
4. Não reinvenção da roda – fazer uso do conceito de biblioteca de algoritmos. O
programador não deve esquecer de que um algoritmo novo custa caro para ser feito, e muito
mais caro ainda para ser depurado, então, caso exista um pronto este deve ser utilizado;
5. Capricho – a principal função de um algoritmo é transmitir a solução de um problema
para outra pessoa. Desta forma a letra clara, uso de endentação, nomes bem atribuídos,
papel limpo e sem borrões deve ser de uso constante;
6. Documentação – nem sempre o Portugol é bastante claro, além do que ele informa o que
é feito e não porque é feito. Assim deve-se lançar mão de comentários sempre que
necessário. O símbolo de comentário em algoritmo é { }, isto é, tudo que estiver entre as
chaves é um comentário.
Declaração de Variáveis
Aula 01
Aula 02
Laço de Repetição
algorítimo "laco de repetição"
// Exemplo utilizando o para
// Data: xx/xx/xx
var
contador: inteiro
inicio
//Imprimir os números de uma a dez usando um laço de repetição

para contador de 1 ate 10 faca

escreval( contador )

fimpara
fimalgoritimo
Condicional
algoritimo "condicional!
// Exemplo utilizando o se
// Data xx/xx/xx
var
nota:real
inicio
//Caso o aluno tenha nota maior que sete será impresso na tela se ele passou ou não

escreval("Qual foi a nota do aluno? ")
leia(nota)

se nota >= 7 entao
escreval("Aluno aprovado")
senao
escreval("Aluno reprovado!")
fim se
fimalgoritmo
NOVOS TIPOS DE DADOS
Os novos tipos de dados podem ser classificados da seguinte forma:

unidimensionais – vetores
multi-dimensionais – matrizes
Vetores
Vetores são estruturas de dados homogêneas unidimensionais e sua utilização mais comum está vinculada à criação de tabelas. Este novo tipo de dado permite a criação de muitas variáveis de mesmo tipo de dado, que atenderão pelo mesmo nome, e que serão acessadas pelo deslocamento dentro do vetor (índices).
Para entender variáveis compostas unidimensionais, imagina-se um edifício com um número finito de andares, representando uma estrutura de dados, e seus andares, partições 57 desta estrutura. Visto que os andares são uma segmentação direta do prédio, estes compõem então o que é chamado de estrutura unidimensional, isto é, uma só dimensão.
Criação de Vetores
A declaração de vetores em algoritmos dá-se em duas etapas:
1º. devemos definir um novo tipo de dado que virá a se juntar aos já existentes (inteiro, real ,caracter e lógico), e que vigorará dentro deste bloco de programa.
TIPO <nome do tipo> = VETOR [ lim inf : lim sup] <tipo de dado já existente>;
Onde: lim inf – limite inferior do vetor;
lim sup – limite superior do vetor.
2º. devemos informar ao algoritmo quais variáveis poderão conter este novo tipo de dado.
<identificador 1>, <identificador 2> , ... , <identificador n> :
<nome do novo tipo>;
Matriz
Pelas mesmas razões que foi criado o conceito de vetor, necessita-se tratar de outro
tipo de organização de dados: as matrizes. As estruturas de dados vetores são variáveis indexadas com apenas uma dimensão, isto é, uma coluna e várias linhas, a partir de agora serão apresentadas tabelas com mais colunas, sendo assim, haverão variáveis no sentido horizontal e vertical. As mais comuns são as matrizes de duas dimensões por se relacionar diretamente com a utilização de tabelas. Matrizes com mais de duas dimensões são utilizadas com menos frequência, mas poderão ocorrer momentos em que se necessite trabalhar com um número maior de dimensões. As linguagens computacionais são privilegiadas neste aspecto, o APL permite até 256 dimensões em algumas aplicações e até 64 em outras. No caso de matriz bidimensional necessita-se de 2 índices para referenciar um determinado elemento: linha e coluna. Para uma matriz tridimensional usa-se 3 índices: plano, linha e coluna. Da mesma forma que a manipulação de um vetor necessita de uma instrução de looping (enquanto, repita ou para), no caso de matrizes deverá ser utilizado o número de loopings relativos ao número de dimensões da matriz. Sendo assim, uma matriz de duas dimensões deverá ser controlada por dois loopings, uma de três dimensões fará uso de 3 loopings e assim por diante. Para definir uma matriz passa-se por duas etapas, como nos vetores:
1. definição do tipo de dado:
Tipo <nome do tipo> = Matriz [li1:ls1,li2:ls2,...,lsN:liN] <tipo de dados já existente>;
Onde: li1, li2, liN – limite inferior da primeira, da segunda e da eNésima dimensão
respectivamente;
ls1, ls2, lsN – limite superior da primeira, da segunda e da eNésima dimensão
respectivamente.
2. definição das variáveis que poderão conter este novo tipo de dado:
<identificador 1>, <identificador 2>,... <identificador n> : <nome do novo tipo>;
Based on Jim Harvey's speech structures
A arte e ciência de programar computadores é algo fascinante. Uma das melhores definições desta atividade pode ser considerada - “programar é emprestar um pouco de nossa inteligência ao computador”. Quando o mesmo trabalha, é como se a inteligência emprestada do programador
estivesse trabalhando.
A tecnologia de fabricação de computadores tem evoluído de maneira muito rápida nos últimos tempos. A programação de computadores nem tanto, embora também tenha tido alguns progressos importantes.
Existem razões para esta diferença. A construção de hardware (equipamento) é engenharia. Tudo pode ser matematicamente provado, produzido em série, rejeitado por amostragem, e, a partir de um original,
sua cópia pode ser vendida aos milhões. Com o software é quase tudo ao contrário. É mais arte do que engenharia, até hoje não se pode comprovar matematicamente a correção de código, cada necessidade demanda a construção de modelos específicos, que só se aplicam naquele momento (no espaço e no tempo). Para nós, seres humanos, é uma vantagem. Pois, enquanto a produção de hardware é (ou pode ser) em grande parte robotizada, a produção de software ainda exige um bom cérebro por trás.
São os passos para solução de um problema.

Os Passos que levam para uma solução são muitos.

Segundo mestre Aurélio, algoritmo é “processo de cálculo, ou de resolução de um grupo de problemas semelhantes, em que se estipula, com generalidade e sem restrições, regras formais para a obtenção do resultado ou da solução do problema”.

Do ponto de vista da informática, algoritmos é a regra de solução de um problema, isto é, surgida uma necessidade buscar-se-á uma solução, ou construir-se-á um algoritmo capaz de solucionar o problema.

Já um programa de computador, segundo Wirth, “é um formulação concreta de algoritmos abstratos, baseados em representações e estruturas específicas de dados”. Isto é:

PROGRAMA = ALGORITMOS + ESTRUTURAS DE DADOS
Programação Estruturada
Padrões
Downlod Software Visualog ( Click no Hiperlink Abaixo )
https://www.dropbox.com/sh/g6mxej03jbxl5qh/I7JdnznLwZ
se então senão
e, ou e nao
tipo de variavel lógica
Full transcript