resumodeaulaslp1-120404204313-phpapp02
27 pág.

resumodeaulaslp1-120404204313-phpapp02

Disciplina:Linguagens de Programação I260 materiais733 seguidores
Pré-visualização7 páginas
Atribuição em que algumas vezes se copie para um lado, e outras vezes para o outro.

ATRIBUIÇÃO COMPOSTA
Inc (a,2) é a atribuição em que o valor que se pretende copiar depende um valor prévio. “incremento”, “decremento”,

pode-se associar a este tipo de atribuição a um valor que depende de outro valor prévio.

Em C existem vários operadores de atribuição tais como “+=” “-=” “*=”.

Algumas vezes a linguagem faz uma otimização própria, como no caso de “C” em que a possibilidade de se escrever

a+=2 é mais eficiente do que escrever a=a+2.

OPERADOR UNITÁRIO DE ATRIBUIÇÃO

E a atribuição em que há apenas um elemento. Unitário, como no caso de um incremento {i++} pelos mesmos

motivos da atribuição composta, é mais prático e vantajoso i++ do que i=i+1

C possui dois tipos o pré-incremento (++i) e o pós-incremento (i++) a diferença é que o pré-incremento é o operador

que faz o incremento e depois retorna o valor. O por declara o valor e depois incrementa. Para isso ele cria uma

variável temporária que assume o valor de i e tal variável posteriormente é posta no lugar da expressão.

ATRIBUIÇÃO COMO FUNÇÃO

Algumas vezes a atribuição é uma função e outras vezes, procedimento. Ou seja, algumas vezes retorna valor e outra

não retorna.

A=b=c=0;

(a?b: c=0); “questiona ‘a’ . Se ‘a’ for verdadeira, copia o valor para ‘b’. se for falsa, copia para ‘c’ ”

A atribuição como função, permite simplificar uma serie de códigos. Porém torna o programa menos legível, por

compactar uma serie de códigos e absorver mais informação, em termos de quantidade de código. Quando a

linguagem não exige que dois operando sejam de mesmo tipo chama-se atribuição de forma mista.

 21

Controle de Fluxo
É necessário algo que mantenha a ordem na execução de um programa imperativo.

O hardware possui um sistema de controle em que as instruções são guardadas na memória:

Instrução
executando

Próxima execução
“física”

Desvio incondicional: instrução que dá o endereço da próxima instrução a ser executada. (geralmente aparece como

o comando “goto”)

Desvio condicional: tem o endereço da próxima instrução, mas a próxima instrução só será ela mesma se algo ou

algum evento acontecer previamente.

No entanto, as duas instruções acima possuem um nível de abstração muito baixo, portanto as linguagens precisam

converter tal esquema acima para algo de mais alto nível.

INSTRUÇÕES COMPOSTAS

É o primeiro passo da programação, permite colocar elementos em que a linguagem esperaria um comando.

São feitas de vários comandos, por exemplo, em Pascal:

Begin

 ---

---

---

End

É o trecho de programa que está entre o Begin e o end.

IF (teste) comando

IF (teste) goto x

---

---

x:

Isto não é mais usado em instruções compostas, pois traz mais desvantagens.

Repeat

---

---

---

Until (teste)

 22

INSTRUÇÕES DE SELEÇÃO

As instruções em Linguagens de Programação que definem qual o caminho a ser percorrido chamam-se instruções de

seleção.

Desvio: associado ao hardware

Seleção: associado à Linguagem de Programação

 Unidirecional:

Garante uma única opção de caminho. Testa a condição e mediante resultado executa alguma instrução.

IF (teste) comando

Em sublinhado: expressão booleana.

Em alguns casos especiais de algumas linguagens, temos opções de utilizar números no lugar de instruções para

serem testados. FORTRAN é uma destas linguagens.

 Bidirecional:

Dá duas opções de caminho. Existe em quase toda linguagem e frequentemente aparece como abaixo:

IF teste then comando

 Else comando

Varias linguagens apresentam os seletores unidirecionais como se fossem bidirecionais.

SELETORES ALINHADOS

IF teste then

 IF teste then comando

Else comando

(Gera uma ambiguidade).Algumas linguagens possuem regras que resolvem o problema da ambiguidade acima.

Um seletor não pode ser parte de outro seletor. Em ALGOL, por exemplo, não se pode colocar um IF dentro de outro

IF.

ENDENTAÇÃO

 Em algumas linguagens os comandos compostos não são marcados por comando em especial. Devido a isto,

fazem essa classificação e separação por meio da endentação.

 IF (teste) then

-------

-------

-------

 Vários comandos à direita do IF. O compilador sabe que é um comando composto. E os comandos

compostos eliminam a ambiguidade. Python é um tipo de linguagem que faz isto.

Em outras linguagens, existem regras próprias para desambiguação como exemplo em C e Pascal, o “else” é do “if”

mais interno dele. O ponto-e-vírgula tem o significado de separar comandos (;).

 23

Seletores Múltiplos

 Oferecem múltiplos caminhos. Em C é representado pelo comando “switch”, em Pascal é representado

pelo comando “case”:

Case (expressão) of
 -----
 -----
 -----
End

 É muito mais prático (abstrato) do que seletores unidirecionais. (legibilidade)

 Uma desvantagem é a questão da endentação, que com muitas opções torna o programa menos legível.

Algumas linguagens fornecem a possibilidade de um novo seletor, sem a necessidade de ficar terminando muitos

comandos, é o “elseif” ou “elif” de Python, PHP. Portanto, também são classificados como seletores múltiplos.

 24

Instruções Iterativas

 Iterativo = repetitivo ou INDICA UMA REPETIÇÃO.

LAÇO CONTROLADO POR CONTADOR
For i:=1 to n do comando

Tem-se uma variável especial que controla a repetição (“i”) e um valor final.

Na maioria das linguagens o tipo dessa variável especial é o tipo inteiro.

Outras linguagens permitem escrever intervalos entre os espaços.

LAÇO CONTROLADO POR LÓGICA

Quer repetir, no entanto fazem-se várias verificações para saber se já atingiu o ponto final ou, a cada fim de

repetição faz-se uma verificação para saber se já atingiu o ponto final. O “while” do Pascal é um tipo de laço

controlado por Lógica.

While (teste) do comando

Utiliza a lógica no começo.

Repeat
 ---

---
---

Until (teste)
Utiliza a lógica no fim, executa e depois utiliza. Não se sabe quantas vezes irá repetir, para isto escreve-se uma
expressão booleana. São mais genéricos que laços controlados por contador.

CONTROLE LOCALIZADO PELO USUÁRIO

O controle não é fixo e nem está na sintaxe do comando. Está em outro comando que o programador põe a seu
favor:
Repeat
 ---
 ---
 ---
 If ~~~~~~~ then resume
 If ~~~~~~~ then break

LAÇO CONTROLADO POR ESTRUTURAS DE DADOS

A repetição surgiu livre e associada com o vetor. Então se tinha um índice que iria repetir com um índice controlando.
Hoje em dia há estruturas de dados mais eficientes. O “for” do Java, por exemplo, tanto pode ser controlado por
contador quanto por estruturas de dados:
for(i: coleção)

 25

DESVIO INCONDICIONAL

 Instrução do hardware que indica a próxima instrução a ser executada.
 Em assembly chama-se “JMP”

Varias linguagens de alto nível também possuem essa instrução, em tais linguagens, normalmente chama-se “goto”.
Inicialmente haviam programas mais simples, programados com recursos oferecidos pelo hardware. Com o tempo os
programas foram se sofisticando a as linguagens de programação necessitaram correr atrás desse desenvolvimento.
O hardware sempre soube fazer desvio incondicional, esta forma sempre apareceu nas primeiras linguagens de
programação. No entanto, reflete num sistema de programação que não é muito planejado. Chamado de
“Programação não estruturada”.

PROGRAMAÇÃO NÃO ESTRUTURADA

Programação Não estruturada é quando o programa não possui uma estrutura planejada, uma fase de engenharia
em que se planeja o que irá ser feito.Com o tempo, a necessidade de construir programas maiores aconteceu.Da
programação não estruturada evoluiu-se para a programação estruturada.

PROGRAMAÇÃO ESTRUTURADA

Há uma diretriz fundamental em que se separa o programa em partes (modularização).Pequenas coisas, ou partes,
que fazem coisas simples, com todas juntas