• Nenhum resultado encontrado

1. Noções de Programação - Nocoes de Programacao

N/A
N/A
Protected

Academic year: 2019

Share "1. Noções de Programação - Nocoes de Programacao"

Copied!
13
0
0

Texto

(1)

4

1.

Noções de Programação

O objetivo deste capítulo é fornecer ao aluno noções básicas de programação aplicadas à Engenharia Química; assim sendo, apenas estruturas fundamentais e exemplos simples serão apresentados neste material.

1.1 Tipos e atribuição de variáveis

Os principais tipos de variáveis comuns à praticamente todas as linguagens de programação são:

• Inteiros: -1; 0 ; 1; 2;

• Real de simples ou dupla precisão: 2,1322 • Caracteres: armazenam texto

• Booleanos: Verdadeiro ou Falso

Cada variável pode ter seu valor atribuído ao longo do programa. O símbolo de atribuição é tipicamente representado por ← ou =. A atribuição de um “valor” à uma

variável significa que no endereço de memória reservado para esta variável, será armazenado o “valor” informado. Na atribuição de uma variável, do lado esquerdo do símbolo ← ou = deve conter a variável à qual desejamos atribuir dado “valor”; ao lado

direito, a expressão que se deseja atribuir à variável. Por exemplo, se em uma linha de programação escrevemos:

← 9 + 5

Queremos dizer que à variável será atribuído o valor de 14. Quando no cálculo do valor, empregamos a própria variável, o programa irá efetuar a conta da expressão com o valor até então armazenado da variável. Por exemplo:

← 1 ← + 3

O valor de ao final será 4, pois na primeira linha de programação, o tem seu valor atribuído de 1, na segunda ele tem seu valor atribuído de (que é até então 1) somado à 3, logo, o resultado é 4.

As variáveis não precisam ser necessariamente numéricas. Por exemplo, seja uma variável booleana (verdadeira ou falso), escrita na seguinte forma:

(2)

5 Note que a pergunta 2 > 3 é falsa, logo o “valor” de será .

Ainda outro tipo de variável é variável texto. Por exemplo: ← " "

1.2 Algoritmos e estruturas básicas de programação

A primeira coisa a se definir é o conceito de Algoritmo:

Algoritmo: Conjunto das regras e procedimentos lógicos perfeitamente definidos que

levam à solução de um problema em um número finito de etapas.” – Dicionário do Google

A forma de representação de um agortimo apresenta algumas variantes, e vamos representar as duas principais formas aqui. De forma geral, como boa prática de programação, o algoritmo deve receber no início todos os Dados de Entrada, necessários para sua rodada. Efetuam-se então procedimentos lógicos, e são fornecidos os resultados, conforme ilustrado na Figura 1.1:

Figura 1.1 – Ilustração da estrutura básica de um algoritmo.

Por exemplo, vamos considerar o cálculo da média final, sendo informadas as notas das 4 provas (P1, P2, P3 e P4). Um algoritmo poderia ser escrito na forma:

Figura 1.2 – Ilustração de um algoritmo que calcula a média final, dadas 4 notas. Saída

Procedimentos Dados de

Entrada

Informe a média MF Calcule valor da média

final:

MF=(P1+P2+P3+P4)/4 Defina o valor

(3)

6

1.2.1 As lógicas E e OU

Algo mais deve ser descrito sobre as formas das variáveis booleanas, associadas à comparações mútuas que empregam as perguntas lógicas E e OU. A lógica E retorna verdadeiro caso ambas as condições forem verdadeiras; já a lógica OU retorna verdadeiro se pelo menos uma condição for verdadeira. Por exemplo:

← 2 < 3 2 < 5

á VerdadeiroVerdadeiroVerdadeiroVerdadeiro, & '()'* ã Outro exemplo:

← 2 > 3 2 < 5

á FalsoFalsoFalsoFalso, & /(' 012'*, & 3 , é 5'2*'

A exclusividade de ambas serem satisfeitas muda quando ao invés de empregarmos E, empregamos OU. Neste caso, se uma das condições for satisfeita, então a variável retornada é verdadeira. Por exemplo:

← 2 > 3 6 2 < 5

á 7180'0198:, & ;12: (1<:* /(' 012'*, => , é ?180'0198'

1.2.2 A Estrutura Se/SeNãoSe/SeNão

A representação típica de uma pergunta em um algoritmo é um losango (embora isto não seja uma regra). Um exemplo simples de uma estrutura Se/SenãoSe/Senão está ilustrado na figura a seguir.

Figura 1.3 – Ilustração de uma condicional Se/SenãoSe/Senão.

Se a<2

Escreva “Blá”

Escreva “Blá Blá”

Fim Se

Senão Se a<8 a 4

Senão

Escreva “Blá Blá Blá”

(4)

7 Uma figura típica que se propõem a resumir 5 anos de engenharia está apresentada a seguir:

Figura 1.4 – Algoritmo útil em engenharia.

http://www.barrett.com.au/blogs/SalesBlog/2015/3190/sales-attitudes/warren-buffetts-wisdom-and-effective-sales-team/

Como no caso ilustrado, a estrutura de perguntas pode conduzir à subestruturas de perguntas. Note que o algoritmo acima poderia ser escrito de duas formas, conforme ilustrado a seguir:

(A) (B)

Figura 1.5 – Forma de escrita do algoritmo da figura anterior.

Na primeira forma, há subestruturas Se’s dentro de estruturas Se’s. Na segunda forma, emprega-se a função E para incluir a pergunta das subestruturas.

Vamos supor que se queira efetuar uma brincadeira com um amigo que torce para um time do Rio de Janeiro, questionando para que time ele torce. Pergunte se é

Se “Estiver se Movendo”? Se “Deveria se Mover”?

Sem problemas

Use fita adesiva

Se “Deveria se Mover”?

Sem problemas Use óleo lubrificante

Fim Se Fim Se

Fim Se Senão

Senão

Senão

Se “Estiver se Movendo”? E ‘Não deveria”

Use fita adesiva

Use óleo lubrificante

Fim Se

(5)

8 flamenguista: se sim, diga que só ganha roubado; senão, pergunte se é vascaíno: se sim, o chame de vice-eterno, senão, pergunte se fluminense; se sim, é coxinha na certa; senão, pergunte se é botafoguense, se sim, deve se sentir solitário no mundo!

Figura 1.6 – Algoritmo de brincadeiras típicas feitas com torcedores dos times do Rio de Janeiro.

É importante salientar que as estruturas SenãoSe e Senão são opcionais na escrita dos algoritmos!

1.2.3 Loops

Outra estrutura fundamental são loops. Vamos supor que queríamos escrever valores de i de 1 a 10, ou seja, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10. Neste caso, o algoritmo que efetua esta operação está ilustrado a seguir:

Figura 1.7 – Algoritmo que ilustra a escrita de valores de 1 a 10.

Note que na estrutura acima, há um loop, ou seja, uma repetição da escrita de i de 1 a 10. São duas as principais formas de escritas de loops aceitas nos códigos de programação, ilustradas na figura a seguir, ambas com resultados idênticos.

(A) (B)

Figura 1.8 – Estruturas de loops aceitas nos programas de computação.

Para i de 1 a 10

Fim faça Escreva i

Resultados: 1 2 3 ... 10

Resultados: 1 2 3 ... 10

Faça Enquanto (i<=10)

Fim faça Escreva i

(6)

9 Note que as duas formas de escritas da Figura 1.8 são similares entre si e efetuam ambas os mesmos procedimentos da Figura 1.7. No entanto, a estrutura da Figura 1.8A inclui inevitavelmente um contador (i), cujo valor se inicia no menor valor informado no loop e vai até o maior valor informado no loop; como foi dito Para i de 1 a 10, o i irá de 1 a 10, sendo o default deste tipo de representação que o passo seja de 1 em 1 (o passo pode ser modificado). Já a estrutura da Figura 1.8B (faça enquanto), não necessariamente deve ter um contador embutido, mas uma condição satisfeita, tanto é que o contador precisa inicializado e atualizado com linhas de programação. Embora para o exemplo ilustrado ambas precisem de um contador, na estrutura da Figura 1.8A, o contador é necessário; na Figura 1.8B, o contador não é estritamente necessário.

Em outro exemplo, considere que um candidato irá tentar no máximo 6 vezes passar na prova de uma disciplina; caso não passe, irá desistir. O algoritmo que representa este procedimento está ilustrado na figura a seguir.

Figura 1.9 – Algoritmo de um candidato que tentará no máximo 6 vezes fazer uma prova de disciplina!

(7)

10

(A) (B)

Figura 1.10 – Formas de escritas dos algoritmos.

1.3 Exemplos de emprego das lógicas de estruturas básicas

Para ilustrar, vejamos alguns exemplos: Vale ressaltar que não é o objetivo aqui implementar o modo menos custoso de cálculos computacionais, mas sim a formulação mais didática! Nesta formulação didática, faremos uso excessivo de perguntas Se/SenãoSe/Senão, que sãos as operações mais custosas computacionalmente. Em uma programação otimizada, procura-se reduzir o número de operações que envolvem a estrutura Se/SenãoSe/Senão.

1-) Escreva o algoritmo que efetue a operação ∑ ²BCB , guardando o resultado em uma variável soma.

Solução: duas formas de escrita do algoritmo estão apresentadas a seguir.

Figura 1.11 – Algoritmo que efetua a operação ∑ 9²DED .

2-) Escreva o algoritmo que efetue a operação ∑BCFGB ²

FHI , guardando o resultado em uma variável soma.

Solução: duas formas de escrita do algoritmo estão apresentadas a seguir. Para i de 1 a 6

Fim faça

Faça a prova e obtenha o Resultado

Se Resultado == Aprovado

Saia do Loop

Fim Se

Faça Enquanto (Resultado== Não Aprovado) E (i<=6)

Fim faça

Faça a prova e atualize o Resultado i 1

i i+1

Resultado ”Não Aprovado”

soma soma + i² soma ← 0

i 0

i ≤ 10?

i ← i +1 Sim

Não Imprima soma

Para i de 1 a 10

Fim faça

(8)

11

Figura 1.12 – Algoritmo que efetua a operação ∑ 9²DE9GD

9HJ .

3-) Escreva o algoritmo que efetue a operação ∑ ∑IFGB LMGB + K , guardando o resultado em uma variável soma.

Solução: Note que a operação é a soma de todos os termos, fixado i=1, para todos os j’s, (1+1)+(1+2)+(1+3)+(1+4)=14; agora, fixado i=2, para todos os j’s, 14 + (2+1)+(2+2)+(2+3)+(2+4) = 32; agora, fixado i=3, para todos os j’s, 32+ (3+1)+(3+2)+(3+3)+(3+4) = 54. A figura a seguir apresenta o algoritmo que efetua esta operação.

Figura 1.13 – Algoritmo que efetua a operação ∑ ∑J9GD ONGD 9 + N

4-) Escreva o algoritmo que efetue a operação ∑ ∑LMGB + K MHF I

FGB , guardando o resultado

em uma variável soma.

Solução: A figura a seguir apresenta o algoritmo que efetua esta operação.

Para i de 1 a 6

Fim faça Se i≠ 3

soma soma + i²

Fim Se soma 0

Para i de 1 a 3

Fim faça

Para j de 1 a 4

soma soma + (i+j)

(9)

12

Figura 1.14 – Algoritmo que efetua a operação ∑ ∑ONGD 9 + N

NH9 J

9GD .

5-) Escreva o algoritmo que monte a matriz P , K = + 2 ∙ K, de dimensão 3,3.

A figura a seguir apresenta o algoritmo que efetua esta operação. Os códigos tipicamente permitem inicializar matrizes com dimensões informadas, sendo tipicamente inicializadas como uma matriz nula.

Figura 1.15 – Algoritmo que efetua a operação S 9, N = 9 + T ∙ N.

1.4 Funções e subrotinas

Funções ou subrotinas podem ser entendidos como procedimentos que devem ser executados pelo computador, recebendo argumentos de entrada e retornando argumentos de saída.

Embora subrotinas sejam comuns à diversas linguagens, neste documento, faremos uso exclusivo dos procedimentos de funções, no contexto de softwares como

Para i de 1 a 3

Fim faça

Para j de 1 a 4

soma soma + (i+j)

Fim Faça soma 0

Se i≠ j

Fim Se

Para i de 1 a 3

Fim faça

Para j de 1 a 4

M(i,j) i + 2*j

Fim Faça

(10)

13 SCILAB e MATLAB, sendo estruturas análogas à subrotinas. Nestas linguagens, a estrutura de funções está ilustrada a seguir.

function [Argumentos de saída] = Nome_da_Funcao(Argumentos de entrada) Procedimentos

endfunction

Este conceito é melhor ilustrado através de exemplos (lembrem-se que aqui usamos a notação similar à do Scilab, que não exige declaração de variáveis internas nas funções, diferente de outros softwares de programação).

1-) Escreva a seguinte função:

U VW, XY = W + XVW, XY = W − X

Em Scilab, esta função pode ser escrita como:

function[f, g]=func1(x, y)

f = x + y;

g = x - y;

endfunction

Agora, podemos dar valores de x e y e pedir o cálculo da função, o que, em Scilab, fica na forma:

x = 3; y = 4;

// note que os nomes podem ser quaisquer, não precisa ser f,g ou mesmo // x e y! Pode ser [a,b] por exemplo

[a,b] = func1(x,y);

2-) Escreva a seguinte função, em que x é um escalar e y é um vetor de tamanho 2

U VW, [Y = W ∗ XVW, [Y = W + XB ]− XB Em Scilab, esta função pode ser escrita como:

function[f, g]=func1(x, y)

// neste caso, x é um escalar (mas poderia ser um vetor), e y é um vetor de dimensão 2 f = x + y(1);

g = x*y(2) - y(1);

endfunction

(11)

14 x = 3;

y = [4; 6];

// note que os nomes podem ser quaisquer, não precisa ser f,g ou mesmo // x e y! Pode ser [a,b] por exemplo

[a,b] = func1(x,y);

3-) Escreva a seguinte função (idêntico à do Exemplo 1 desta seção, porém, neste caso, todos são vetores de dimensão n):

U5V^, [Y = ^ + [_V^, [Y = ^ − [

Em Scilab, esta função pode ser escrita como:

function[f, g]=func1(x, y)

f = x + y;

g = x - y;

endfunction

Agora, podemos dar valores de x e y e pedir o cálculo da função, o que, em Scilab, fica na forma:

x = [3; 4]; y = [5; 6];

// Neste caso, todas as variáveis são vetores de dimensão 2 [a,b] = func1(x,y);

3-) Escreva uma função que dado x e n, sendo n>1, obtenha `aVWY, para o polinômio de Tchebychev, que pode ser escrito como:

b ``CBVWY = 1VWY = 1

`aVWY = 2 ∙ W ∙ `acBVWY + `ac]VWY Em Scilab, o tal função pode ser escrita como:

functionT=func1(x, n)

// esta função calcula o polinômio de Tchebychev de ordem n para um valor x, dado x e n, n>1

T0 = 1; T1 = x;

for i=2:n

T2 = 2*x*T1 - T0;

T0 = T1; T1 = T2; end

T = T2;

(12)

15 Agora, podemos dar valores de x e n e pedir o cálculo da função, o que, em Scilab, fica na forma:

// para valores de x e n dados a seguir, pediremos o cálculo da função x = 0.8;

n = 5;

// note que os nomes podem ser quaisquer, não precisa ser f,g ou mesmo // x e y! Pode ser [a,b] por exemplo

T = func1(x,n);

1.5 Exercícios

Exercício 1.1-) Escreva algoritmos que efetuem as seguintes operações:

a-) ∏B]FGB b-) ∏ ∏FGBB] MGBe + K c-) ∑ ∏BCMGB − K MHF BC

FGB

d-) ∏ ∑LFGB fMGFgB + K

Exercício 1.2-) Tendo recebido um vetor v(:) de dimensão n, elabore um algoritmo que determine o máximo elemento, bem como sua posição. (exemplo, se v=[7 8 15 12 13], o algoritmo deve conseguir retornar o máximo elemento como 15 e a posição =3, sendo associada ao terceiro elemento do vetor).

Exercício 1.3-) Podendo empregar a função inteiro(número) que retorna a parte inteira de um número, dado um número positivo qualquer, identifique à qual quadrante ele pertence.

Exercício 1.4-) Elabore um algoritmo que, para uma matriz A(i,j) = i+2*j para i≠j e

A(i,i)=i^2, de dimensão 3x3, construa a matriz.

Exercício 1.5-) Faça uma subrotina que, ao receber uma matriz M, suas dimensões n por m, e duas linhas informadas l1 e l2, efetue a troca das linhas.

(13)

Imagem

Figura 1.2 – Ilustração de um algoritmo que calcula a média final, dadas 4 notas.
Figura 1.3 – Ilustração de uma condicional Se/SenãoSe/Senão.
Figura 1.4 – Algoritmo útil em engenharia.
Figura 1.6 – Algoritmo de brincadeiras típicas feitas com torcedores dos times do  Rio de Janeiro
+5

Referências

Documentos relacionados

Para preparar a pimenta branca, as espigas são colhidas quando os frutos apresentam a coloração amarelada ou vermelha. As espigas são colocadas em sacos de plástico trançado sem

nesta nossa modesta obra O sonho e os sonhos analisa- mos o sono e sua importância para o corpo e sobretudo para a alma que, nas horas de repouso da matéria, liberta-se parcialmente

3.3 o Município tem caminhão da coleta seletiva, sendo orientado a providenciar a contratação direta da associação para o recolhimento dos resíduos recicláveis,

O valor da reputação dos pseudônimos é igual a 0,8 devido aos fal- sos positivos do mecanismo auxiliar, que acabam por fazer com que a reputação mesmo dos usuários que enviam

Assim, este estudo buscou identificar a adesão terapêutica medicamentosa em pacientes hipertensos na Unidade Básica de Saúde, bem como os fatores diretamente relacionados

Haja vista as modificações decorrentes à pneumonectomia, referindo- se principalmente àquelas citadas em literatura, o objetivo do presente estudo foi o de avaliar as

Tripp (2005), igualmente, descreve a pesquisa-ação, voltada ao contexto educativo, como um método que, essencialmente, envolve tentativas continuadas, sistemáticas

Por fim, como era esperado, o Diário do Nordeste, pertencente ao maior grupo de comunicação do Ceará e o periódico mais vendido no Estado é, dentre todos, aquele que mais adotou