resumodeaulaslp1-120404204313-phpapp02
27 pág.

resumodeaulaslp1-120404204313-phpapp02


DisciplinaProgramação I20.661 materiais240.277 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. \u201cincremento\u201d, \u201cdecremento\u201d, 
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 \u201c+=\u201d \u201c-=\u201d \u201c*=\u201d. 
Algumas vezes a linguagem faz uma otimização própria, como no caso de \u201cC\u201d 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); \u201cquestiona \u2018a\u2019 . Se \u2018a\u2019 for verdadeira, copia o valor para \u2018b\u2019. se for falsa, copia para \u2018c\u2019 \u201d 
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 
\u201cfísica\u201d 
 
 
Desvio incondicional: instrução que dá o endereço da próxima instrução a ser executada. (geralmente aparece como 
o comando \u201cgoto\u201d) 
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 
\uf0b7 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. 
\uf0b7 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 
\uf076 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 
------- 
------- 
------- 
\uf0fc 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 \u201celse\u201d é do \u201cif\u201d 
mais interno dele. O ponto-e-vírgula tem o significado de separar comandos (;). 
 
 23 
Seletores Múltiplos 
 
\uf0fc Oferecem múltiplos caminhos. Em C é representado pelo comando \u201cswitch\u201d, em Pascal é representado 
pelo comando \u201ccase\u201d: 
Case (expressão) of 
 ----- 
 ----- 
 ----- 
End 
 
\uf076 É muito mais prático (abstrato) do que seletores unidirecionais. (legibilidade) 
\uf076 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 \u201celseif\u201d ou \u201celif\u201d de Python, PHP. Portanto, também são classificados como seletores múltiplos. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 24 
Instruções Iterativas 
 
\uf0fc 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 (\u201ci\u201d) 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 \u201cwhile\u201d 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 \u201cfor\u201d do Java, por exemplo, tanto pode ser controlado por 
contador quanto por estruturas de dados: 
for(i: coleção) 
 
 
 25 
DESVIO INCONDICIONAL 
 
\uf0fc Instrução do hardware que indica a próxima instrução a ser executada. 
\uf0fc Em assembly chama-se \u201cJMP\u201d 
Varias linguagens de alto nível também possuem essa instrução, em tais linguagens, normalmente chama-se \u201cgoto\u201d. 
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 
\u201cProgramação não estruturada\u201d. 
 
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