• Nenhum resultado encontrado

2. Fases de um Algoritmos

N/A
N/A
Protected

Academic year: 2022

Share "2. Fases de um Algoritmos"

Copied!
60
0
0

Texto

(1)
(2)

Índice

1. Algoritmos__________________________________________________________________________

2. Fases de um Algoritmos_______________________________________________________________

3. Estrutura de Algoritmos______________________________________________________________

4. Variáveis___________________________________________________________________________

4.1 Formação de Variáveis_____________________________________________________________

4.2 Conteúdo de uma Variável___________________________________________________________

4.3 Tipos de Variáveis_________________________________________________________________

5. Tipos de Dados______________________________________________________________________

6. Definição de Variáveis________________________________________________________________

6.1 Comando de atribuição_____________________________________________________________

6.2 Variáveis do tipo CHAR(Caracter) e STRING(Cadeia)____________________________________

7. Operadores_________________________________________________________________________

7.1 Operadores matemáticos____________________________________________________________

7.2 Operadores Lógicos________________________________________________________________

8. Comandos de Entrada e Saída_________________________________________________________

9. Processos de Repetição e Seleção_______________________________________________________

9.1 Estrutura de Repetição ENQUANTO-FAÇA (WHILE DO)_________________________________

9.2 Estrutura de repetição REPITA-ATÉ ( Repeat Until)______________________________________

9.3 Estrutura de repetição PARA-FAÇA (FOR ... TO... DO)___________________________________

10. Estrutura de seleção_________________________________________________________________

10.1 Estrutura SE…ENTÃO…SENÃO (IF…THEN…ELSE)____________________________________

10.2 Estrutura CASE__________________________________________________________________

11. Variáveis Compostas Homogêneas_____________________________________________________

11.1 Variáveis Indexadas Uni Dimensionais(Vetores)________________________________________

11.2 Variáveis Indexadas Bidimensionais(Matrizes)_________________________________________

12. Funções pré-definidas do Pascal_______________________________________________________

12.1 Descrição das Funções/Rotinas:_____________________________________________________

13. Problemas Resolvidos em Algoritmos, Pascal e C________________________________________

13.1 Algoritmo do Triangulo____________________________________________________________

13.2 Algoritmo Preco Automóvel________________________________________________________

13.3 Algoritmo Media Valor____________________________________________________________

13.4 Algoritmo 3 Menores______________________________________________________________

13.5 Algoritmo Media Maior que 4_______________________________________________________

13.6 Algoritmo Salário_________________________________________________________________

13.7 Algoritmo 50 Triangulos___________________________________________________________

13.8 Algoritmo Media Menores__________________________________________________________

(3)
(4)

1. Algoritmos

Algoritmo não é a solução de um problema, pois, se assim fosse, cada problema teria um único algoritmo. Algoritmo é um caminho para a solução de um problema, e em geral, os caminhos que levam a uma solução são muitas.

O aprendizado de algoritmos não se consegue a não ser através de muitos exercícios.

Algoritmos não se aprende:

- Copiando Algoritmos - Estudando Algoritmos Algoritmos só se aprendem:

- Construindo Algoritmos - Testando Algoritmos

(5)

2. Fases de um Algoritmos

Quando temos um problema e vamos utilizar um computador para resolve-lo inevitavelmente temos que passar pelas seguintes etapas:

a) Definir o problema.

b) Realizar um estudo da situação atual e verificar quais a(s) forma(s) de resolver o problema.

c) Terminada a fase de estudo, utilizar uma linguagem de programação para escrever o programa que deverá a princípio, resolver o problema.

d) Analisar junto aos usuários se o problema foi resolvido. Se a solução não foi encontrada, deverá ser retornado para a fase de estudo para descobrir onde está a falha.

Estas são de forma bem geral, as etapas que um analista passa, desde a apresentação do problema até a sua efetiva solução. Iremos, neste curso, nos ater as etapas de estudo, também chamada de análise, e a etapa de programação. Mas antes vamos definir o seguinte conceito: Programar um computador consiste em elaborar um conjunto finito de instruções, reconhecidas pela máquina, de forma que o computador execute estas instruções. Estas instruções possuem regras e uma Sintaxe própria, como uma linguagem tipo português ou inglês, sendo isto chamadas de linguagem de computador.

No mundo computacional existe uma grande variedade de linguagens Pascal, C, C++, Cobol, Fortran, etc… . Nós iremos enfocar uma delas, o Pascal.

(6)

3. Estrutura de Algoritmos

Antes de utilizarmos uma linguagem de computador, é necessário organizar as ações a serem tomadas pela máquina de forma organizada e lógica, sem nos atermos as regras rígidas da Sintaxe de uma linguagem. Para isto utilizaremos uma forma de escrever tais ações, conhecida como algoritmo, ou pseudo-código.

Conceituando: Algoritmo consiste em um conjunto lógico e finito de ações ( instruções ) que resolvem um determinado problema.

Os algoritmos terão a seguinte estrutura:

ALGORITMO <Nome do algoritmo>

<definições>

INÍCIO

<Comandos>

FIM Em Pascal ficaria da seguinte forma:

PROGRAM <Nome do programa>;

<definições>

BEGIN

<Comandos>;

END.

(7)

4. Variáveis

Ocomputadorpossuiumaáreadearmazenamento conhecidacomomemória. Todasas informaçõesexistentesnocomputadorestãoounamemóriaprimária ( memóriaRAM ), ouna memóriasecundária ( discos, fitas, CD-ROMetc ). Nósiremostrabalhar, nestecurso, somentecoma memóriaprimária, especificamentecomasinformaçõesarmazenadasnaRAM ( memóriadeacesso aleatório ).

Amemóriadocomputadorpodeserentendidacomoumaseqüênciafinitadecaixas, quenum dadomomento, guardamalgumtipodeinformação, comonúmero, umaletra, umapalavra, umafrase etc, nãoimporta, bastasaberquelásempreexistealgumainformação.

Ocomputador, parapodertrabalharcomoalgumadestasinformações, precisasaberonde, na memória, odadoestálocalizado. Fisicamente, cadacaixa, oucadaposiçãodememória, possuium endereço, ouseja, umnúmero, queindicaondecadainformaçãoestálocalizada. estenúmeroé representadoatravésdanotaçãohexadecimal, tendootamanhodequatro, oumaisbytes. Abaixosegue algunsexemplos:

EndereçoFísico Informação

3000: B712 ‘João’

2000: 12EC 12345

3000: 0004 ‘H’

Comopodeserobservado, oendereçamentodasposiçõesdememóriaatravésdenúmeros hexadecimaiséperfeitamentecompreendidopelamáquina, masparanóshumanostorna-seumatarefa complicada. Pensandonisto, aslinguagens decomputador facilitaramomanuseio, porpartedos usuários, dasposiçõesdememóriadamáquina, permitindo que, aoinvésdetrabalhardiretamentecom osnúmeroshexadecimais, fossepossíveldarnomesdiferentesacadaposiçãodememória. Taisnomes seriamdelivreescolhadousuário. Comesterecurso, osusuáriosficaram livresdosendereçosfísicos ( númeroshexadecimais ) epassaramatrabalharcomendereçoslógicos ( nomesdadospelospróprios usuários ). Destaforma, oExemploacima, poderiaseralteradoparateroseguinteaspecto:

EndereçoFísico Informação

Nome ‘João’

número 12345

letra ‘H’

Comotínhamosfalado, osendereçoslógicossãocomocaixas, quenumdadoinstante guardamalgumtipodeinformação. Maséimportantesaberqueoconteúdodestacaixanãoéalgo fixo, permanente, naverdade, umacaixapodeconterdiversasinformações, ouseja, comonoExemplo acima, acaixa ( Endereço Lógico ) rotulada de “Nome” numdadomomentocontémainformação

“João”, masemumoutromomento, poderáconterumaoutrainformação, porExemplo “Pedro”. Com istoqueremosdizerqueoconteúdodeumadestascaixas ( endereçológico ) podemvariar, istoé podemsofreralteraçõesemseuconteúdo. Tendoesteconceitoem mente, apartirdeagorairemos chamardeformagenérica, ascaixasouendereçoslógicos, devariáveis.

Destaformapodemosdizerqueumavariáveléumaposiçãodememória, representadapor umNomesimbólico ( atribuídopelousuário ), aqualcontém, numdadoinstante, umainformação.

(8)

4.1 Formação de Variáveis

Uma variável é formado por uma letra ou então por uma letra seguida de letras ou dígitos, em qualquer número. Não é permitido o uso de espaços em branco ou de qualquer outro caractere, que não seja letra ou dígito, na formação de um identificador.

Na formação do nome da variável de um nome significativo, para que se possa ter idéia do seu conteúdo sem abri-lá. Se utilizar palavras para compor o nome da variável utilize o “_ “ underline para separar as palavras.

4.2 Conteúdo de uma Variável

Dados - Elementos conhecidos de um problema

Informação - Um conjunto estruturado de dados, transmitido conhecimento

4.3 Tipos de Variáveis

Considere a fórmula matemática simples do calculo do volume de uma esfera:

V  4 R 3

3

onde se encontram:

1- valores que podem ser classificados como:

a) valores constantes, invariantes em todas as aplicações da fórmula, no caso dos valores 4, 3 e

 aos denomina-se constantes;

b) valores a serem substituídos na fórmula, em cada aplicação; a representação destes valores, usualmente é feita através de letras, que recebem o nome de variáveis e tornam a fórmula genérica, possível de ser aplicada para resolver uma certa classe de problemas e não apenas um problema específico.

2 - Operações a serem feitas sobre determinados operandos (Valores), para a obtenção da solução do problema.

(9)

5. Tipos de Dados

OPascalexigequenomomentoqueformostrabalharcomvariáveis, indiquemosotipode informaçãoqueumavariávelpodeconter, istoé, seumadadaposiçãodememóriaarmazenaráum númeroouumaletraetc. Paraisto, alinguagemPascalpossuidefinidoalgunstiposquedeverãoser usadosquandoformostrabalharcomvariáveis. Algunstipossão:

Algoritmo Pascal Descrição

a) Inteiro a) INTEGER: Representanúmerosentre -32768até +32767. ocupa2bytesna memória.

b) Real b) REAL: Representaosnúmeros entre 2.9 x 10 -39 até 1.7 x 1038 . Ocupa6bytes namemória.

e) Caracter e) CHAR: Representaumdoscaracteres, databelaASCII. Ocupa1bytena memória.

d) Cadeia f) STRING: Conjuntodecaracteres ( CHAR ). Ocupade1a255bytesnamemória. g) Lógica g) BOOLEAN: Valorlógico. Assumasomentedoisvalores: TRUE(Verdade)ou

FALSE(Falso). ocupa1bytenamemória.

c) WORD: Númerosde0até65535. Ocupa2bytesnamemória. d) BYTE: Númerosde0até255. Ocupa1bytenamemória.

h) Shor Int Representaosnúmeros entre -128 até 128 . Ocupa 1 bytesnamemória. i) LongInt Representaosnúmeros entre - 2.147.483.648 até 2.147.483.648 . Ocupa

4 bytesnamemória.

j) Single Representaosnúmeros entre 1.5 x 10 -45 até 3.4 x 1038 . Ocupa 4 bytes namemória.

l) Double Representaosnúmeros entre 5 x 10 -324 até 1.7 x 10308 . Ocupa 8 bytesna memória.

Iremosgradativamente trabalharcomcadaumdestestiposemostrarassuascaracterísticas.

(10)

6. Definição de Variáveis

Paradefinirumaoumais variáveis, devemosutilizar, emPascal, apalavraVAR. Paramanter umacompatibilidade, utilizaremosamesmanomenclaturaemnossosalgoritmos. Abaixosegue Exemplodealgumasdefiniçõesdevariáveis:

a) ALGORITMOTeste PROGRAMTeste;

VARIÁVEIS VAR

Palavra : CADEIA Palavra: String;

INICIO BEGIN

<comandos> <comandos>;

FIM END.

b) ALGORITMOTeste PROGRAMTeste;

VARIÁVEIS VAR

Letra, Caracter: CARACTER Letra, Caracter: CHAR;

INICIO BEGIN

<comandos> <comandos>;

FIM END.

c) ALGORITMOTeste PROGRAMTeste;

VARIÁVEIS VAR

Letra, Caracter: CARACTER Letra, Caracter: CHAR;

Número: INTEIRO Número: INTEGER;

INICIO BEGIN

<comandos> <comandos>;

FIM END.

Obs.: Osnomesdadosasvariáveisnãopodemserosmesmosnomesdepalavras reservadasdoPascal, taiscomoPROGRAM, BEGIN, END, VER,etc…

6.1 Comando de atribuição

Quandodefinimosumavariávelénaturalatribuirmosaelaumainformação. Umadasformas decolocarumvalordentrodeumavariável, consequentementecolocadoestedadonamemóriado computador, éatravésdaatribuiçãodireta, dovalordesejadoqueavariávelarmazena. Paraisto utilizaremososímbolo ( : = (Pascal) ,  (Algoritmo) ), quesignifica: recebe, ouseja, aposição, de memóriaqueumavariávelrepresenta, receberá umainformação, aqualseráarmazenadanointerior destavariável.

Exemplo:

ALGORITMOTeste PROGRAMTeste;

VARIÁVEIS VAR

Número: INTEIRO Número: INTEGER;

INICIO BEGIN

Número  10 Número: =10;

FIM END.

OExemploacimanosinformaque:

a) Foidefinidoumavariável, aqualdemosoNomede “Número”, einformamosqueestavariável, ou posiçãodememória, sópoderáaceitardados, quesejamnuméricosequeestejamentre -32768a +32767 ( tipoINTEGER ).

(11)

b) Atribuímosàvariável “Número” ovalor10

Amemóriasecomportariadaseguinte forma, deacordocomositens acima:

a) Variável Conteúdo

Número indefinido

b) Variável Conteúdo

Número 10

6.2 Variáveis do tipo CHAR(Caracter) e STRING(Cadeia)

AsdefiniçõesdevariáveiscomosendodotipoCHAReSTRING, possuemalgumas curiosidadesquemerecem umcuidadoespecialporpartedousuário.

6.2.1 Uso das aspas ( ‘ )

QuandoestivermosfazendoaatribuiçãodeumvalorparaumavariáveldotipoCHAR (Caracter)ouSTRING (Cadeia), temosqueterocuidadodecolocarovalor ( dado ) entreaspas ( ‘ ), poisestaéaformadeinformarqueainformaçãoécaracter.

Exemplo:

ALGORITMO Teste VARIÁVEIS

Letra : CARACTER Nome : CADEIA INICIO

Letra  ‘A’

Nome  ‘João’

FIM

6.2.2 Manipulação de caracteres individuais em STRING’s (Cadeias)

Muitas vezes é necessário manipular caracteres individuais em uma STRING (Cadeia) . O Pascal possui uma forma toda especial de permitir tal operação, através do uso de colchetes( [ ] ) logo após o Nome da variável do tipo STRING (Cadeia) , e o número do caracter que se deseja manipular entre os colchetes.

Exemplo: Atribuir o primeiro caracter de uma STRING a uma variável do tipo CHAR.

ALGORITMO AtribuiString;

VARIÁVEIS

letra : CARACTER Nome : CADEIA INICIO

Nome  ‘Joao’

letra  Nome[1] FIM

QuandodefinimosumavariávelcomosendodotipoSTRINGnãoestamosalocando1posiçãode memóriaapenas ( umacaixa, pelaanalogiainicial ), masnaverdade, estamosalocandoaté255caixas, umaparacadacaracterdaSTRING ( lembre-sequeumaSTRINGpodeternomáximo255

caracteres ). Aoutilizarmososímbolodecolchete, estamosnaverdadeindicandoqualocaracter ( qualacaixa ) desejamosmanipular.

DeacordocomoExemploacima, teríamosnamemóriaaseguintesituação:

(12)

a) Alocamos255bytes ( caracteres ) namemória. AestasposiçõesdememóriaédadooNomede

“Nome”. Inicialmenteestasposiçõesdememória ( Caixas ) possuemoconteúdoindefinido.

b) Alocamos1byte ( caracter ) namemória. AestecaracterédadooNomede “Letra”. Inicialmente estaposiçãodememóriapossuíoconteúdoindefinido.

c) Namemóriatemosaseguintesituação: Nome

1 2 3 … 255

Letra

d) Atribuímosavariável “Nome” ovalor “João”, obtendonamemóriaaseguinteconfiguração Nome

1 2 3 4 … 255

‘J’ ‘o’ ‘a’ ‘o’

e) Atribuímosavariável “Letra” oprimeirocaracterdavariável “Nome”, ouseja, oconteúdoda primeiraposiçãodememória ( caixa ). Namemóriateremosaseguinteconfiguração:

Nome

1 2 3 4 … 255

‘J’ ‘o’ ‘a’ ‘o’

Letra

‘J’

Obs.: ÉpossíveldefinirvariáveisdotipoSTRING(Cadeia) commenosde255caracteres. Paraisto, bastacolocar, apósapalavra STRING(Cadeia), onúmerodecaracteresdesejadosentrecolchetes ( [ ] ).

Exemplo:

ALGORITMO Define

VARIÁVEIS

Nome: CADEIA[80] INICIO

FIM

Destaforma, oespaçoocupadoporumavariávelSTRING(Cadeia)passade255bytesparaapenas80 bytes, namemória.

(13)

6.2.3 Exercícios 0:

1) Dar o tipo de cada uma das constantes a) 613

b) 613,0 c) -613 d) “613”

e) -3,012 * 1015 f) 17*1012 g) -28,3 * 10 -23 h) “Fim de Questão”

2) Façaum algoritmo paraatribuiravariáveisasseguintesinformações: a) 12345

b) 123456 c) -1122 d) 10

e) VERDADE f) 12345605

3) Noseguinte algoritmo existealgumerro? Onde?

ALGORITMO Teste

VARIÁVEIS

Maria : CADEIA idade : INTEIRO letra : CARACTER Maria : REAL INICIO

idade  23 idade  678 idade  letra letra  ABC letra  A letra  2 FIM

4) Qualadiferençaexistentenasseguintesatribuições? a) Letra  ‘A’

Nome  ‘João’

b) Letra  A Nome  João

5) ÉcorretodefinirumavariávelcomosendoCaracter eatribuirmosaelaovalor: ‘PEDRO’? Esea variávelfossedefinidacomo CADEIA, amesmapoderiareceberumvalordotipoCARACTER?

(14)

7. Operadores

7.1 Operadores matemáticos

Osoperadoresmatemáticossãoosseguintes:

a) Adição : +

b) Subtração : -

c) Multiplicação : *

d) Divisão : /

e) Divisãointeira : DIV (QUOCIENTE) f) Restodadivisão : MOD (RESTO) g) Exponenciação : **

h) Diferença : <>

i) Menor Igual : <=

j) Maior Igual : >=

7.2 Operadores Lógicos

Osoperadoreslógicos, realizam asoperaçõesdaálgebrabooleana. Osoperadoressãoos seguintes:

a) AND (E) b) OR (OU) c) NOT (NÃO) d) XOR (NÃO OU) Exemplo:

a) Operador E (AND):

TRUEANDTRUE => TRUE

TRUEANDFALSE => FALSE FALSEANDTRUE => FALSE FALSEANDFALSE => FALSE b) Operador OU (OR):

TRUEORTRUE => TRUE

TRUEORFALSE => TRUE FALSEORTRUE => TRUE FALSEORFALSE => FALSE c) Operador NÃO (NOT):

NOTTRUE => FALSE

NOTFALSE => TRUE d) Operador NÃO OU (XOR):

(15)

TRUEXORTRUE => FALSE TRUEXORFALSE => TRUE FALSE XORTRUE => TRUE FALSEXORFALSE => FALSE

7.2.1 Exercícios 1 :

1) Indiquequaloresultadoseráobtidodasseguintesexpressões: a) 1 / 2

b) 1 DIV2 c) 1 MOD2

d) ( 200DIV10 ) MOD4 e) 5**2 + 3

f) 6 +19-23 g) 3,0* 5,0 +1 h) 1/4+2 i) 29,0/7+4 j) 3/6,0-7

2) Indiqueoresultado lógico dasseguintesexpressões: a) 2 > 3

b) ( 6 < 8 ) OU ( 3 > 7 )

c) ((( 10DIV2 ) MOD6 ) > 5 ) NÃO OU ( 3 < ( 2MOD2 ) ) d) NÃO ( 2 < 3 )

3) Escreva o comando de atribuição e resolva a expressão das seguintes formulas matemáticas.

a) X

A B C D E F

 

onde A= 2, B= 6, C = 3, D=4, E=8, F=4

b)

Y

X X X

X

X

X

 

2 3

2

1 2

2 1

onde X = 2

4) Construao algoritmo quecalculeasseguintesexpressões, utilize parentes : a) 2 + 3 * { 23 - 12 + [ { ( 123 / 34 ) + 10 } / 2 - 1 * ( 45 - 12 ) ] / 3 } b) [ ( 2 * 3 ) **2 - 1 ] ** 4

c) ( 2 + [ 2 * 3 - ( 4 / 20 ) ** 2 ] )/ (10 * { [ ( 7 * 3 ) - 2 ] ** 3 }) 5) Escreva os comandos de atribuição para as seguintes fórmulas matemáticas.

a)X B A F

  A

2 4 2

3 2

3

b) Y H

 

X H H

H

   



2 45 

3 4 3

2

c) X a b e f

c d g h i

    j

  

( ) ( )

( ) ( )*

(16)

Obs.: Ooperador “+” casosejausadoentrevariáveisdotipoCHARouSTRING, causaráumaação conhecidaporconcatenação, ouseja, juntaroscaracteresouSTRING’susadosnaoperaçãoemumasó STRING.

Exemplo:

ALGORITMOConcatena VARIÁVEIS

Letra1, Letra2 : CARACTER Nome1, Nome2, Nome : CADEIA INICIO

Letra1  ‘D’

Letra2  ‘a’

Nome1  ‘Joao’

Nome2  ‘Silva’

Nome  Nome1 + Letra1 + Letra2 + Nome2 FIM

AsinstruçõesacimaresultarãonoarmazenamentodoNome ‘JoãoDaSilva” navariávelrotuladade

“Nome”.

(17)

8. Comandos de Entrada e Saída

Ocomputadornãoéumamáquinaisolada, poiseleprecisasecomunicarcomomundo exteriorcomvídeo, impressora, teclado, discos, fitasetc. Pararealizarestacomunicaçãoexistem comandosquepermitemqueinformaçõessejamexibidas, porExemplo, novídeo, comotambém existemcomandosquepermitemqueinformaçõessejamcolocadasnamemóriadocomputadoratravés dotecladodoPC.

OscomandosqueiremosversãooscomandosLEIAeESCREVA, respectivamente, comando deentradaedeSaída ( emPascalescreve-seREADeWRITE ).

Exemplo1: Escreverum algoritmo paralerumvalornuméricodotecladoeatribuí-loaumavariável dotiponumérica.

ALGORITMO LeNúmero

VARIÁVEIS

Num : INTEIRO INICIO

LEIA(Num) FIM

O algoritmo acima, executaráosseguintescomandos:

a) Defineumavariávelrotulada “Num”, aqualsópoderáarmazenardadosnuméricos, que estejamcompreendidosentre -32768a +32767 ( INTEIRO ), sendoqueinicialmenteo conteúdodestavariávelestáindefinido.

b) interrompeoprocessamentoatéqueumainformaçãosejadigitada, seguidado

pressionamentodateclaENTER. Casoainformaçãosejadigitadasejacompatível como tipoINTEGER (INTEIRO), estevalorseráarmazenadodentrodavariável “Num”.

Exemplo2: Fazerum algoritmo paraescrevernovídeodoPCumamensagemqualquer.

ALGORITMO EscreveMsg

INICIO

ESCREVA (‘AloMundo’) FIM

Obs.: Amensagemestáentreaspasporquerepresentaumacadeiadecaracteres.

Éperfeitamentepossívelmandarescreveroconteúdo devariáveisnovídeo. Destaforma, o Exemploacimapoderiaserescritodoseguintemodo:

ALGORITMO EscreveMsg

VARIÁVEIS

Msg: : CADEIA INICIO

Msg  ‘AloMundo’

ESCREVA (Msg) FIM

Obs.: EmPascal, oExemploficariacomoémostradoabaixo PROGRAMEscreveMsg;

VAR

Msg : STRING;

(18)

BEGIN

Msg : = ‘AloMundo’; WRITE (Msg);

END.

Obs.: EmPascal, quandousamososcomandosREADeWRITE, ocursorcontinuaráposicionadona mesmalinha. Paraevitartalsituação, devemospularparanovalinha. Istoéobtidoacrescentandoas letrasLN ( deLINENEW, ouseja, linhanova ) nofinaldoscomandosREADeWRITE. Destaforma oscomandosterãoaseguintegrafia: READLNeWRITELN.

8.1.1 Exercícios 2:

1) Faça um algoritmo para ler as seguintes informações de uma pessoa: Nome, Idade, Sexo, Peso, Altura, Profissão, Rua, Bairro, Cidade, Estado, CEP, Telefone.

2) Dado as seguintes informações de um funcionário: Nome, idade cargo e o seu salário bruto considere:

a) O salário bruto teve um reajuste de 38%.

b) O funcionário receberá uma gratificação de 20% do salário bruto.

c) O Salário total é descontado em 15%

Faça um algoritmo e um algoritmo para:

 Imprimir Nome, idade e cargo.

 Imprimir o salário bruto.

 Imprimir o salário líquido.

3) Faça um algoritmo para ler a base e a altura de um triângulo. Em seguida, escreva a área do mesmo.

Obs.: Área = ( Base * Altura ) / 2 4) Faça um algoritmo para:

a) Ler uma CADEIA em forma de data. Exemplo : ‘26/09/95’

b) escrever o dia , mês e ano desta data.

5) Uma empresa tem para um determinado funcionário uma ficha contendo o nome, número de horas trabalhadas e o n0 de dependentes de um funcionário.

Considerando que:

a) A empresa paga 12 reais por hora e 40 reais por dependentes.

b) Sobre o salário são feito descontos de 8,5% para o INSS e 5% para IR.

Faça um algoritmo para ler o Nome, número de horas trabalhadas e número de dependentes de um funcionário. Após a leitura, escreva qual o Nome, salário bruto, os valores descontados para cada tipo de imposto e finalmente qual o salário líquido do funcionário.

6) Faça um algoritmo que calcule a média aritmética de 4 valores inteiros.

7) O preço de um automóvel é calculado pela soma do preço de fábrica com o preço dos impostos (45%

do preço de fábrica) e a percentagem do revendedor (28% do preço de fábrica). Faça um algoritmo que leia o nome do automóvel e o preço de fábrica e escreva o nome do automóvel e o preço final.

(19)

9. Processos de Repetição

9.1 Estrutura de Repetição ENQUANTO-FAÇA (WHILE DO)

a) ALGORITMO

ALGORITMOExEnquanto

ENQUANTO <Condiçãoforverdadeira> FAÇA

<Comandos>

FIM ENQUANTO

b) PASCAL

PROGRAMExEnquanto;

WHILE <Condiçãofor verdadeira> DO BEGIN

<Comandos>;

END.

Exemplo : Façaum algoritmo paralereescreveroNomede20pessoas. ALGORITMOLeEscreve

VARIÁVEIS

Nome : CADEIA

Total : INTEIRO INICIO

Total  0

ENQUANTO Total<20FACA LEIA(Nome)

ESCREVA (‘Nome=‘, Nome) Total  Total + 1

FIM ENQUANTO END.

Em pascal:

PROGRAMLeEscreve; VAR

Nome : STRING; Total : INTEGER;

BEGIN

Total: =0;

WHILETotal<20DO BEGIN

READ(Nome);

WRITE (‘Nome=‘, Nome);

Total : =Total + 1; END;

END.

9.1.1 Exercícios 3:

1) Faça um algoritmo para ler base e altura de 50 triângulos e escreva a sua área.

(20)

2) Faça um algoritmo para calcular N!.

3) Faça um algoritmo para calcular um valor A elevado a um expoente B. Os valores A e B deverão ser lidos. Não usar A** B.

4) Faça um algoritmo para:

a) Ler um valor x qualquer

b) Calcular Y = ( x+1)+(x+2)+(x+3)+(x+4)+(x+5)+…(x+100).

5) Faça um algoritmo para somar os números pares positivos < 1000 e ao final imprimir o resultado.

6) Faça um algoritmo para gerar os termos da seguinte P.G.: 3,9,27,81,…,calcule o 100º termo.

7) Ampliando o exercício acima, faça um algoritmo para calcular a soma dos termos da P.G..

8) Faça um algoritmo para calcular a série Fibonacci até 0 N-ésimo termo. A série tem a seguinte forma: 1,1,2,3,5,8,13,21,34,…

9) Faça um algoritmo para ler um valor X e calcular Y = X+2X+3X+4X+5X+…+20X

10) Faça um algoritmo para ler e escrever o Nome, idade e sexo de um número indeterminado de alunos. Ao final escreva o total de alunos lidos.

11) Para cada nota de compra , tem-se o Nome do produto comprado, o valor e o imposto. Faça um algoritmo que escreva o valor total bruto, o imposto total cobrado e o valor total líquido de todas as notas. Considere 500 notas

12) O valor aproximado de PI pode ser calculado usando-se a série S 1     

1 1 3

1 5

1 7

1

3 3 3 3 93 ...

sendo  3 S32

fazer um algoritmo para calcular e escrever o valor de PI com 51 termos

13) Faça um algoritmo para ler um valor X e um valor n. Após, calcule a seguinte expressão:

       

Y X X X X N

  N

 

 

   1

1

2 2

3 3

! ! ! ...

!

14) Faça um algoritmo para somar os restos da divisão por 3 de 200 números.

15) Faça um algoritmo que calcule a hipotenusa de 10 triângulos.

hipotenusa2 = cateto12 + cateto22

16) Faça um algoritmo para calcular a área de N quadriláteros. Fórmula: Área = Lado * Lado 17) Faça um algoritmo para calcular a área de N Círculos . Fórmula : Área =  raio 2  = 3,141592.

18) Fazer um algoritmo que calcule escreva a soma dos 50 primeiros termos das seguinte série:

1000 1

997 2

994 3

991

   4 ...

19) Faça um algoritmo para ler N números inteiros e ao final escrever sua média.

20) Uma turma possui N alunos, e para cada aluno tem-se uma média para cada disciplina. O professor de Matemática precisa saber a média geral de sua disciplina em um turma. Faça um algoritmo para auxiliar a encontrar este valor.

21) Uma empresa com X funcionários precisa saber a média de seus salários. Faça um algoritmo para ler a quantidade de funcionários e o salário de cada um e escrever a média dos salários.

(21)

9.2 Estrutura de repetição REPITA-ATÉ ( Repeat Until)

ALGORITMO REPITA

<Comandos>

ATE <Condiçãoforverdadeira>

PASCAL

REPEAT

<Comandos>

UNTIL <Condiçãoforverdadeira>

Exemplo: Façaum ALGORITMO paralereescreveroNomede20pessoas.

ALGORITMO LeEscreve

VARIÁVEIS

Nome : CADEIA

Total : INTEIRO INICIO

Total  0 REPITA

LEIA(Nome)

ESCREVA(‘Nome=‘,Nome) Total  Total + 1 ATÉ Total >=20

FIM Em pascal:

PROGRAMLeEscreve; VAR

Nome : STRING; Total : INTEIRO;

BEGIN

Total : = 0; REPEAT

READ(Nome);

WRITE(‘Nome=‘,Nome);

Total : = Total + 1; UNTILTotal >=20;

END.

9.2.1 Exercícios 4:

1) Leia 20 valores reais e escreva o seu somatório.

2) Dado uma frase de exatamente 80 caracteres, escreva a frase de trás para frente, um caracter por linha.

3) Dado um número indeterminado de funcionários, onde é fornecido o Nome, número de dependentes e o número de horas trabalhadas. Pede-se que seja impresso, para cada funcionário, o seu Nome, salário bruto, salário líquido e o valor descontado. A empresa, paga R$ 2.250,00 por hora de trabalho, e R$

125,55 por dependente, e ainda faz um desconto de 12% sobre o salário bruto. Pede-se ainda que seja impresso o total de funcionários da empresa, o total gasto com salários, e o total descontado.

4) Faça um ALGORITMO para:

a) Leia um valor X e um valor N.

b) Calcular: Y = X - 2X + 4X - 6X + 8X - 10X + … NX.

(22)

5) Faça um ALGORITMO para ler um valor X e um Valor N. Após, calcule a seguinte expressão:

       

Y X X X X N

  N

 

 

   1

1

2 2

3 3

! ! ! ...

!

6) Dado uma quantidade indeterminada de palavras, sendo que as mesmas sempre terminam com o caracter “$”, escreva o tamanho de cada uma das mesmas ( o sinal de “$” não deve ser considerado na contagem ).

7) Dado uma palavra terminada com o sinal “$”, faça um ALGORITMO para criar uma nova STRING, a ser formada com os caracteres da primeira palavra invertidos.

8) Faça um algoritmo que calcule a hipotenusa de 10 triângulos.

hipotenusa2 = cateto2 + cateto2

9) Faça um algoritmo para calcular a área de N quadriláteros. Fórmula: Área = Lado * Lado 10) Faça um algoritmo para calcular a área de N Círculos . Fórmula : Área =  raio 2  = 3,141592.

11) Fazer um algoritmo que calcule escreva o valor de S onde:

S     1 1

3 2

5 3

7 4

99 ... 50

12) Fazer um algoritmo que calcule escreva o valor de S onde:

S 1     1

2 4

3 9

4 16

5 25

10 ... 100

9.3 Estrutura de repetição PARA-FAÇA (FOR ... TO... DO)

ALGORITMO

PARA <Variável> DE <INICIO> Até <FIM>, PASSO <N> FAÇA

<Comandos>

FIMPARA PASCAL

a) FOR <Variável > : = <INICIO> TO <FIM> DO

<Comando>;

b) FOR <Variável > : = <INICIO> TO <FIM> DO BEGIN

<Comando>;

END;

Exemplo: Façaum algoritmo paralereescreveroNomede20pessoas. ALGORITMOLeEscreve

VARIÁVEIS

Nome : CADEIA Cont : INTEIRO INICIO

PARA Cont DE 1 ATE 20, PASSO 1, FACA LEIA(Nome)

ESCREVA(Nome)

FIMPARA

(23)

FIM Em pascal:

PROGRAMLeEscreve; VAR

Nome : STRING;

Cont : INTEIRO;

BEGIN

FORCont : = 1TO20DO BEGIN

READ(Nome);

WRITE(Nome);

END; END.

Obs.:

a) Avariáveldecontrole, noExemploacimaéavariável “Cont”, éautomaticamente incrementadaemumunidade, apartirdovalorinicial ( 1peloExemploacima ), atéqueseja ultrapassadoolimitefinaldefinido ( 20noExemploacima ).

B) Quandoexisteanecessidadedeinterromperoprocessamentoantesdeseralcançadoo limitefinaldefinidoparaaestrutura, nãodeveráserusadoaestruturaPARA-FAÇA, pelasimples razãoqueavariáveldecontrole nãodeveseralteradapropositadamentepelousuário. Aalteraçãodo conteúdodasvariáveisdecontroledoPARA-FAÇAsãodeinteiraresponsabilidadedaprópria estrutura.

9.3.1 Exercícios 5:

1) FaçaumPROGRAMAparacalcular:

a)

2

1 50

N

N

b)

N

N 2 1 50

c)

1

1 50 N

N

d)

1

1

2

50 N

N

e)

1

1 2 50

N

N

2) Uma empresa possui 100 vendedores que ganham por comissão sobre cada produto vendido. Cada vendedor em um determinado mês vendeu X produtos, onde cada produto pode ou não ter preços iguais. A empresa deseja obter um relatório com o Nome, o total de vendas e o valor a ser pago a cada vendedor. A comissão paga pela empresa é de 30% sobre o valor de cada produto vendido.

3) Dadoumarelaçãode1000númerosemgrausCélcius, façaumPROGRAMAqueimprima o seguinterelatório:

GrausFahrenheit GrausCélcius

(24)

xxxxxx xxxxxx Obs.:

º º F  9 C

5 32

4) Dadoumnúmeroindeterminadodepalavras, sendoquecadapalavrapossuiumtamanho

indeterminado, oqualdeveráserlidopeloteclado, façaumPROGRAMAqueimprimaumrelatório comoémostradonoExemploabaixo: Suponhaqueapalavradigitadafoi “MARIA”.

M A

A I

R R

I A

A M

5) Escrever um programa para gerar e escrever uma tabela com os valores de seno de um Angulo A em radianos, utilizando a série de Mac-Laurin Truncada apresentada a seguir:

SenA A A A A

  357

6 120 5040

Condições: os valores dos ângulos devem variar de 0.0 a 6.3, inclusive, de 0.1 em 0.1

Obs.: Empascal, casosejanecessárioqueo “Loop” PARA-FAÇAaoinvésdeincrementaravariável decontroledecrementa-a, aSintaxeaserutilizadaseráaseguinte

a) FOR <Variável > : = <FIM> DOWNTO <INICIO> DO

<Comando>

b) FOR <Variável > : = <FIM> DOWNTO <INICIO>DO BEGIN

<Comando>;

END; Em algoritmo:

a) PARA <Variável > DE <FIM> ATÉ <INICIO> PASSO (-1) FACA

<Comando>

FIM PARA

(25)

10. Estrutura de seleção

10.1 Estrutura SE…ENTÃO…SENÃO (IF…THEN…ELSE)

ALGORITMO

SE <CondiçãoFORverdade> ENTÃO

<Comandos>

[SENÃO

<Comandos>] Colcheteindicaqueocomandoéopcional FIMSE

PASCAL

a) IF <Condiçãoforverdade> THEN

<Comandos>

[ELSE

<Comandos>;]

b) IF <Condiçãoforverdade> THEN BEGIN

<Comandos>

END [ELSE BEGIN

<Comandos>;

END;]

Exemplo: DadodoisvaloresAeBquaisquer, faça um algoritmo que imprima seA > B, ouA < B , ouA = B

ALGORITMOMaior VARIÁVEIS

A,B : INTEIRO INICIO

ESCREVA(‘DigiteosvaloresAeB’);

SE A > BENTÃO

ESCREVA(‘AémaiorqueB’) SENÃO

SE A < B ENTÃO

ESCREVA(‘AémenorqueB’) SENÃO

ESCREVA(‘AéigualaB’) FIM

(26)

Em pascal

PROGRAMMaior; VAR

A,B : BYTE;

BEGIN

WRITE(‘DigiteosvaloresAeB’);

IFA > BTHEN

WRITE(‘AémaiorqueB’) ELSE

IFA < BTHEN

WRITE(‘AémenorqueB’) ELSE

WRITE(‘AéigualaB’);

END.

10.1.1 Exercícios 6:

1) Faça um algoritmo que leia os valores A, B, C e diga se a soma de A + B é menor que C.

2) Faça um algoritmo que leia dois valores inteiros A e B se os valores forem iguais deverá se somar os dois, caso contrário multiplique A por B ao final do calculo atribuir o valor para uma variável C.

3) Faça um algoritmo que leia o nome e a três notas de uma disciplina de uma aluno e ao final escreva o nome do aluno, sua média e se ele foi aprovado a média é 8.

4) Faça um algoritmo que leia 3 números inteiros e imprima o menor deles.

5) Dado um conjunto de n registros cada registro contendo um valor real, faça um algoritmo que calcule a média dos valores maiores que 4.

6) Dado uma relação de 100 carros imprima quantos são da cor azul. Sendo para cada carro tem-se uma ficha contento o nome e a cor.

7) Dados três valores distintos, fazer um algoritmo que, após a leitura destes dados coloque-os em ordem crescente.

8) Dado uma série de 20 valores reais, faça uma algoritmo que calcule e escreva a média aritmética destes valores, entretanto se a média obtida for maior que 8 deverá ser atribuída 10 para a média.

9) Faça um algoritmo para somar os números pares < 1000 e ao final imprimir o resultado.

10) Dado um conjunto de 20 valores reais, faça um algoritmo que:

a) Imprima os valores que não são negativos.

b) Calcule e imprima a média dos valores < 0.

11) Suponha que para cada aluno de sua sala exista uma ficha contendo o nome e a idade do aluno.

Supondo que exista 50 alunos, faça uma algoritmo que determine quantos alunos tem idade maior que 30.

12) Dado modelo, ano de fabricação, cor e placa de 1000 carros, faça um algoritmo que:

a) Imprima quantos são, da cor verde e o percentual em relação ao total.

b) Imprima quantos foram fabricados antes de 1990 e o percentual em relação ao total.

c) Imprima quantos são FIAT UNO e o percentual em relação ao total.

d) Imprima quantos carros tem na placa o digito 5 e o percentual em relação ao total.

Considere placas com seguinte formato “AANNNN”.

13) Dado Nome e notas ( total de 6 ) de n alunos, faça um algoritmo que:

a) Imprima Nome e média dos alunos aprovados. Média > = 7.0.

b) Imprima Nome e média dos alunos em recuperação. 5.0 >= Média <7.0.

c) Imprima Nome e média dos alunos reprovados. Média <5.0.

(27)

14) Faça um algoritmo que simule um cronometro com horas, minutos e segundos. A simulação deverá mostrar no vídeo o cronometro no seguinte formato HH: MM: SS. Inicialmente o cronometro será zerado ( 00: 00: 00 ), sendo que os segundos começarão a ser incrementados, depois os minutos e depois as horas. Lembre-se que a cada 60 segundos os minutos deverão ser incrementados, depois os minutos voltarão a zero. Quando as horas estiverem prestes a chegar em 25, o cronometro deverá voltar a zero ( 00: 00: 00 ).

15) Dado Nome e salário de um número indeterminado de funcionários, imprima o Nome e o salário de funcionário que tem o maior salário, bem como o Nome e o salário que possui o menor salário.

16) Dado uma relação de 100 STRING’s no formato de data ( Exemplo ‘10/12/95’ ), imprima aquelas que correspondem ao mês ‘09’.

17) Dado uma relação de 100 STRING’s no formato de data ( Exemplo ‘10/12/95’ ), imprima um relatório no seguinte formato:

Data Por Extenso

26/09/95 26 de setembro de 1995

18) Dados uma relação de n STRING’s, todas terminadas com o caracter “$”, faça um algoritmo que escreva a STRING e o seu tamanho.

19) Dado uma relação de n STRING’s, todas terminadas com o caracter “$”, faça um algoritmo que imprima aquelas que tem tamanho par.

20) Dado uma relação de n STRING’s, todas terminadas com o caracter “$”, faça um algoritmo que escreva as STRING’s ímpares cujo caracter central é uma vogal.

21) Dado três valores X, Y, Z, verificar se eles podem ser os comprimentos dos lados de um triângulo, e se forem, verificar se é um triângulo equilátero, isósceles ou escaleno. Se eles não formarem um triângulo, escrever uma mensagem.

Antes da elaboração do algoritmo, torna-se necessária a revisão de algumas propriedades e definições.

Propriedade - O comprimento de cada lado de um triângulo é menor do que a soma dos comprimentos dos outros dois lados.

Definição 1 - Chama-se triângulo equilátero os que tem os comprimentos dos três lados iguais, Definição 2 - Chama-se triângulo isósceles ao triângulo que tem os comprimentos de dois lados iguais.

Definição 3 - Chama-se triângulo escaleno ao triângulo que tem os comprimentos dos três lados diferentes.

22) Um hotel cobra R$ 300,00 por diária e mais uma taxa adicional de serviços. Se a diária for menor que 15 a taxa e de R$ 20,00. Se o número de diárias for igual a 15 a taxa é de R$ 14,00 e se o número for maior que 15 a taxa é de R$ 12,00. Considerando-se que se tenha 200 pessoas e para cada pessoa tenha-se um registro contendo seu nome e o número de diárias.

Faça um algoritmo que imprima o nome e o total a pagar de cada pessoa e imprimir também o total ganho pelo hotel e o número total de diárias.

23) Dado que cada pessoa tenha o seu nome e a sua idade e o seu peso em uma ficha, faça uma algoritmo que:

a) Imprimir o nome da pessoa cujo a idade esta na faixa de 20 a 30 anos inclusive os extremos;

b) Calcule a idade média das pessoas com peso maior que 80 Kg, considere que exista N pessoas.

24) Faça um algoritmo que calcule o salário e o imposto de renda de um grupo de pessoas, considerando:

a) Para cada pessoa tem-se: Nome, Número de Dependentes, Renda Bruta Anual;

b) O imposto é calculado segundo a tabela abaixo:

Renda Liquida %

até R$ 10.000,00 isento

> R$ 10.000,00 até R$ 30.000,00 5%

> R$ 30.000,00 até R$ 60.000,00 10%

> R$ 60.000,00 15%

c) Há um desconto de R$ 600,00 para cada dependente.

(28)

d) Sendo que a renda liquida é igual a renda bruta menos o abatimento de cada dependente.

25) O Departamento de transito do estado anotou dados de acidentes de transito no ultimo ano. Para cada motorista envolvido no acidente, tem-se as seguintes informações:

- Ano de nascimento;

- Sexo (M - Masculino, F - Feminino)

- Procedência ( 0 - Capital, 1 - Interior, 2 - Outro estado);

Faça um algoritmo que :

a) Calcule a porcentagem de motoristas com menos de 21 anos;

b) Calcule quantas mulheres são da capital;

c) Calcule quantos motoristas do interior do estado tem idade maior que 60 anos;

d) Verifique se existe alguma mulher com idade maior que 60 anos;

R.

26) Suponha que para cada tipo de computador fabricado, a SEI, tem os seguintes informações:

- Nome do computador;

- O nome do fabricante;

- e a sua capacidade de armazenamento;

Faça um algoritmo que:

a) Determine qual o valor da maior capacidade de memória;

b) Determine quantos computadores diferentes a IBM fabrica;

c) Verifique se tem algum computador chamado PS/1. Se tiver qual o seu fabricante;

(29)

10.2 Estrutura CASE

ALGORITMO ESCOLHA <Valor>

<Opções> : <Comandos>

. . .

<Opções> : <Comandos>

[ Senão

<Comandos>]

FIMESCOLHA

PASCAL

a) CASE <valor> OF

<opções> : <Comandos>;

. . .

<opções> : <Comandos>;

[Else

<Comandos>;

END;

b) CASE <valor> OF

<opções> : BEGIN

<Comandos>;

END; .

. .

<opções> : <Comandos>;

[ Else

BEGIN

<Comandos>;

END; END;

OcomandoESCOLHA ( CASE ), correspondeaocomandoSE-ENTÃOmasdeumaforma maiscompactanasoperações deseleção. PorExemplo, sejaaseguinteestruturaescritacomo comandoSE-ENTÃO:

SE ( IDADE >= 0 ) E ( IDADE <= 3 ) ENTÃO

ESCREVA( ‘BEBÊ’)

SENÃO

SE ( IDADE >= 4 ) E ( IDADE <= 10 ) ENTÃO

ESCREVA( ‘CRIANÇA’)

SENÃO

SE ( IDADE >= 11 ) E ( IDADE <= 18 ) ENTÃO

ESCREVA( ‘ADOLESCENTE’)

SENÃO

ESCREVA( ‘ADULTO’)

FIM SE

(30)

FIM SE FIM SE

Em pascal

IF ( IDADE >= 0 ) AND ( IDADE <= 3 ) THEN WRITE( ‘BEBÊ’)

ELSE

IF ( IDADE >= 4 ) AND ( IDADE <= 10 ) THEN WRITE( ‘CRIANÇA’)

ELSE

IF ( IDADE >= 11 ) AND ( IDADE <= 18 ) THEN WRITE( ‘ADOLESCENTE’)

ELSE

WRITE( ‘ADULTO’);

OExemplomostradopoderiaserescritodaseguinteformausandoocomandoESCOLHA:

ESCOLHA Idade

0..3 : ESCREVA(‘BEBÊ’) 4..10 : ESCREVA(‘CRIANÇA’) 11..18 : ESCREVA(‘ADOLESCENTE’) SENÃO

ESCREVA(‘ADULTO’)

FIM ESCOLHA Em pascal:

CASEIdadeOF

0..3 : WRITE(‘BEBÊ’);

4..10 : WRITE(‘CRIANÇA’);

11..18 : WRITE(‘ADOLESCENTE’);

ELSE

WRITE(‘ADULTO’);

END;

AbaixoseguemmaisexemplosdeconstruçõescomocomandoESCOLHA:

a) ESCOLHA Letra

‘A’,’E’,’I‘’O’,’U’ : ESCREVA(‘Vogais’) FIMESCOLHA

b) ESCOLHA VALOR

1..5,9,13..255 : <Comandos>

FIMESCOLHA

(31)

Em pascal

a) CASELetraOF

‘A’,’E’,’I‘’O’,’U’ : WRITE(‘Vogais’);

END;

b) CASEvalorOF

1..5,9,13..255 : <Comandos>;

END;

Obs.: Ocomando Escolhanãoaceita valoresdotipoREALeSTRING.

10.2.1 Exercícios 7:

1) Façaum algoritmo queleiaumnúmeroquerepresenteumdeterminadomêsdoano. Apósaleitura escrevaporextensoqualomêslido. Casoonúmerodigitadonãoestejanafaixade1..12escrevauma mensageminformando ousuáriodoerrodadigitação.

2) Façaum algoritmo queleiaumnúmeroqualquer. Casoonúmeroseja parmenorque10, escreva

‘NúmeroparmenorqueDez’, casoonúmerodigitadosejaímparmenorque10escreva ‘Número ÍmparmenorqueDez’, casocontrárioEscreva ‘NúmeroforadoIntervalo’.

3) Umaempresairádarumaumentodesalárioaosseusfuncionáriosdeacordocomacategoriade cadaempregado. Oaumentoseguiráaseguinteregra:

a) FuncionáriosdascategoriasA, C, F, eHganharão10% deaumentosobreosalário b) Funcionáriosdascategorias B, D, E, I, JeT ganharão15% deaumentosobreosalário c) FuncionáriosdascategoriasKeRganharão25% deaumentosobreosalário

d) Funcionáriosdascategorias L, M, N, O, P, Q, ReSganharão35% deaumentosobreo salário

e) FuncionáriosdascategoriasU, V, X, Y, WeZganharão50% deaumentosobreosalário 4) Façaum algoritmo queEscrevaNome, categoriaesalárioreajustadodecadaEmpregado. Considere1000funcionários naempresa.

5) DadoumaSTRINGterminadacomocaracter “$” façaum algoritmo queimprima quantasvogais existemnestaSTRING.

6) DadoumaSTRINGterminadacomocaracter “$” façaum algoritmo queimprima quantas OcorrênciasdecadavogalemseparadoexistenestaSTRING.

(32)

11. Variáveis Compostas Homogêneas

Vimos, noinício destecurso, serpossíveldarumNomeparaumaposiçãodememória, sendo queaestaseráassociadoumvalorqualquer. Poisbem, aconteceque, muitasvezes, estaformade definição, oumelhordizendo, dealocaçãodememória, nãoésuficientepararesolvercertosproblemas computacionais. Imagine porExemplo, comofaríamosparaconstruirum algoritmo, paraleroNome deNPessoasequeimprimisseumrelatóriodestesmesmosnomes, masordenadosalfabeticamente? Nãoseria umatarefasimples, hajavistonãoserpossíveldeterminarquantosnomesseriamlidos, mesmoquesoubéssemos onúmerodepessoas, digamos1.000pessoas, teríamosquedefinir1.000 variáveisdotipoSTRING, comoémostradoabaixo:

ALGORITMOLoucura; VARIÁVEIS

Nome1, Nome2, Nome3, . . .

Nome999,

Nome1000: CADEIA INICIO

<Comandos>

FIM

Considereotamanhodo algoritmo, eotrabalhobraçalnecessárioparaconstrui-lo. Istosó com1.000Nome, imagineagora1.000.000depessoas. Aconstrução deste algoritmo começariaa ficarinviávelnapratica. Pararesolver problemascomo este, eoutros, foicriadoumnovoconceito paraalocaçãodememóriasendo, destaforma, tambémcriadoumanovamaneiradedefinirvariáveis, aqualfoidenominadadevariávelindexada.

Umavariávelindexadacorrespondeaumaseqüênciadeposiçõesdememória, aqualdaremos únicoNome, sendoquecadaumadestaspodeseracessadaatravésdoqueconhecemosporíndice. O índicecorrespondeaumvalornumérico ( excetoREAL ), ouaumvalorcaracter ( exceto STRING ).

Cadaumadasposiçõesdememóriadeumavariávelindexadapoderecebervaloresnodecorrerdo algoritmo comosefosseumavariávelcomum, aúnicadiferença residenaSintaxedeutilizaçãodesta variável.

11.1 Variáveis Indexadas Uni Dimensionais(Vetores)

Tambémconhecidapor “Vetor”. Umavariáveluni-dimencional, comoopróprioNomejá indica, possuiapenasumadimensão, sendoserpossíveldefinirvariáveiscomquaisquertipodedados validosdoPascal.

a) Definição:

ALGORITMO Define

VARIÁVEIS

<Nome>: VETOR [INICIOV : FIMV] DE <tipo>

INICIO

<Comandos>

FIM Em pascal:

PROGRAMDefine;

(33)

VAR <Nome>: ARRAY [INICIO..FIM] OF <tipo>;

BEGIN

<Comandos>;

END. Obs.:

a) “ARRAY” éumapalavrareservadadoPascal

b) Osvalores “INICIOV” e “FIMV” correspondemaosíndicesinicialefinal c) Umavariávelindexadapodeserapenasdeumtipodedado

ExemploDefinirumavariávelindexadacomosendodotipoREAL, sendoqueamesmadeverá correspondera10posiçõesdememória.

ALGORITMO Exemplo

VARIÁVEIS

Vet : VETOR [1 : 10] OF REAL INICIO

<Comandos>

FIM Em pascal:

PROGRAMExemplo; VAR

Vet: ARRAY [1..10] OF REAL; BEGIN

<Comandos>;

END.

NoExemploacima, apósadefiniçãodavariável, amemóriaestarácomomostradonoesquema abaixo:

Vet

1 2 3 4 5 6 7 8 9 10

OsValoresnuméricosapresentadosacimacorrespondemaosíndicesdavariável. B) Atribuição

<Nome>[<Índice>]  Valor;

LEIA (<Nome>[<Índice>]);

Em pascal:

<Nome>[<Índice>]: =Valor;

READ (<Nome>[<Índice>]);

Exemplo:

ALGORITMO Atribui VARIÁVEIS

Nomes : VETOR [1 : 20] DE CADEIA i : INTEIRO

BEGIN

Nomes[1]  ‘JoãodaSilva’

PARA i  2 ATE 20, PASSO 1, FACA LEIA(Nomes[i])

FIM PARA FIM

Em pascal:

PROGRAMAtribui; VAR

(34)

Nomes : ARRAY[1..20]OFSTRING;

i : INTEGER;

BEGIN

Nomes[1]: =‘JoãodaSilva’; FORi: = 2TO20DO

READ(Nomes[i]);

END.

11.1.1 Exercícios 8:

1) Faça um algoritmo que leia, via teclado, 200 valores do tipo inteiro e os guarde na memória.

2) Amplie o exercício anterior emitindo um relatório com todos os números pares que você leu.

3) Faça um algoritmo que determine qual o menor valor existente no vetor do exercício número 1.

4) Faça um algoritmo que determine qual o maior valor existente no vetor do exercício número 1.

5) Faça um algoritmo que imprima quantos dos valores do exercício número 1 são maiores que a média desses valores.

6) Faça um algoritmo que leia 10 nomes e os guarde na memória.

7) Amplie o exercício 6 imprimindo o menor Nome do vetor 8) Amplie o exercício 6 imprimindo o maior Nome do vetor

9) Faça um algoritmo que leia 20 palavras, e após a leitura, realiza um processo qualquer que inverta os caracteres de cada uma das palavras.

10) Faça um algoritmo que leia 10 nomes e os guarde na memória. Após a leitura, emita um relatório com todos os nomes que são palindromes. Uma palavra palindrome é aquela que a sua leitura é a mesma da esquerda para a direita e vice versa. Exemplo: ARARA, ANA, etc.

11) Faça um algoritmo que leia, Nome idade e sexo de N pessoas. Após a leitura faça:

a) Imprima o Nome, idade e sexo das pessoas cuja idade seja maior que a idade da primeira pessoa.

b) Imprima o Nome e idade de todas as mulheres.

c) Imprima o Nome dos homens menores de 21 anos.

12) Faça uma algoritmo para ler 20 valores e que imprima os que são maiores que a média dos valores.

13) Faça um algoritmo que leia Nome e notas ( total de 12 ) de N alunos de um colégio. Após a leitura faça:

a) Imprima o Nome e a média dos alunos aprovados ( Média >= 7.0 ).

b) Imprima o Nome e a média dos alunos em Recuperação ( 5.0 >= Média < 7.0 ).

c) Imprima o Nome e a média dos alunos reprovados ( Média < 5.0 ).

d) Imprima o percentual de alunos aprovados.

e) Imprima o percentual de alunos reprovados.

14) Dado Nome e salário de 10 funcionários faça:

a) Imprima o Nome e o salário dos funcionários que ganham mais de R$ 500,00

b) Para os funcionários que ganham menos de R$ 200,00 conceda um aumento de 20%. Imprima Nome e o novo salário destes funcionários aumentados

15) Faça um algoritmo que crie uma tabela no vídeo do computador com todos os caracteres ASCII, sendo que deverá ser impresso o caracter, bem como o seu valor decimal.

16) Um teste composto por 10 questões foi proposto numa classe de n alunos. Cada

questão admite as alternativas identificadas pelas letras A, B, C, D e E. Para cada aluno tem-se o registro contendo o seu nome e as suas respostas. Sendo dado o gabarito das questões faça um algoritmo que: a) Escreva uma relação contendo o nome e o número de acertos de cada aluno;

(35)

b) Determine quantos alunos acertaram as questões 1 e 2 e tiveram 7 acertos;

c) Escreva o nome do aluno, que obteve a melhor nota e pior nota;

17) Faça um algoritmo para ler 50 valores inteiros. Após imprima tais valores ordenados crescentemente.

18) Continuando o exercício anterior, emita um relatório com os valores ordenados decrescentemente.

19) Faça um algoritmo que leia 10 valores numéricos inteiros. Após a leitura emita um relatório com cada valor diferente e o número de vezes que o mesmo apareceu no vetor.

20) Dado uma ralação de N nomes, faça um algoritmo que verifique se uma determinada pessoa está neste vetor. O Nome da pessoa a ser pesquisada deverá ser lido, bem como os nomes a serem colocados no vetor.

21 Dado uma frase, faça um algoritmo que determine qual a consoante mais utilizada.

22) Faça um algoritmo que leia N letras e armazene cada uma em uma posição de memória. Coloque no vetor, após a última letra lida, o caracter “$”, indicando final dos caracteres

23) Faça um algoritmo que:

a) Leia um vetor A com N elementos e um vetor B com N elementos do tipo CADEIA.

b) Intercale estes vetores A e B, formando um outro vetor C da seguinte forma.

C[1]  A[1]

C[2]  B[1]

C[3]  A[2]

C[4]  B[2]

c) Caso um vetor ( A ou B ) termine antes do outro, o vetor C deverá ser preenchido com os elementos do vetor que ainda possui informações.

24) Faça um algoritmo que:

a) Leia um vetor A com N elementos já ordenados e um vetor B com M elementos também já ordenados.

b) Intercale os dois vetores A e B, formando um vetor C, sendo que ao final do processo de intercalação, o vetor C continue ordenado. Nenhum outro processo de ordenação poderá ser utilizado além da intercalação dos vetores A e B.

c) Caso um vetor ( A ou B ) termine antes do outro, o vetor C deverá ser preenchido com os elementos do vetor que ainda possui informações.

25) Faça um algoritmo que:

a) Leia um vetor com N elementos formado por valores do tipo inteiro.

b) Após a leitura, modifique o vetor de forma que o mesmo contenha na parte superior somente valores pares, e na parte inferior os valores impares.

c) Ordene crescentemente os números pares, e decrescentemente os números impares.

26) Dado um conjunto de n registros, cada registro contendo o nome e a idade dessa pessoa faça um algoritmo que:

a) Guarde todos os dados na memória;

b) Escreva o nome das pessoas que tem idade maior que a idade da primeira;

c) Listar os nomes das pessoas que tem a idade maior que a média;

d) Listar o nome da pessoa de maior e menor idade

27) Dado que para cada aluno de uma turma de “N” alunos se tenha, o seu nome, e as notas das 8 avaliações. Faça um algoritmo que:

Imprima o nome a média de cada aluno;

a) Calcule a Percentagem de alunos cujo o nome comece com a letra “A”;

b) Para cada aluno imprima uma mensagem dizendo se o aluno tem ou não notas repetidas;

c) Determine quantos alunos tem pelo menos duas notas acima de 7;

28) Dado um verto X de n elementos faça um algoritmo que:

a) Crie outro vetor Y contendo os elementos de x que estão na faixa entre 10 e 40;

b) Crie outro vetor W contendo os números que estão nas posições pares;

(36)

c) Pesquise a existência de um determinado elemento Y no vetor X;

d) Escreva o menor e maior elemento do vetor X;

29) Em uma cidade do interior, sabe-se que, de janeiro a abril de 1976 (121 dias), não ocorreu temperatura inferior a 15o C nem superior a 40o C. As temperatura verificadas em cada dia estão disponíveis em uma unidade de entrada de dados.

Fazer um algoritmo que calcule e escreva:

a) a menor temperatura ocorrida;

b) a maior temperatura ocorrida;

c) a temperatura média

d) o número de dias nos quais a temperatura foi inferior a média à temperatura média.

30) Fazer um algoritmo que:

a) leia o valor de n (n <= 1000) e os n valores de um variável indexada A de valores inteiros ordenados de forma crescente;

b) determine e escreva, para cada número que se repete no conjunto, a quantidade de vezes em que ele aparece repetido;

c) elimine os elementos repetidos, formando um novo conjunto;

d) escreva o conjunto obtido no item c;

31) Um armazém trabalha com 100 mercadorias diferentes identificadas pelos números inteiros de 1 a 100. O dono do armazém anota a quantidade de cada mercadoria vendida durante o mês. Ele tem uma tabela que indica, para cada mercadoria, o preço de venda. Escreva um algoritmo para calcular o faturamento mensal do armazém. A tabela de preços é fornecida seguida pelos números das

mercadorias e as quantidades vendidas. Quando uma mercadoria não tiver nenhuma venda, é informado o valor zero no lugar da quantidade.

32) Uma grande firma deseja saber quais os três empregados mais recentes. Fazer um algoritmo para ler um número indeterminado de informações (máximo de 300) contendo o número do empregado e o número de meses de trabalho deste empregado e escrever os três mais recentes.

Observações: A última informação contém os dois números iguais a zero. Não existem dois empregados admitidos no mesmo mês.

Exemplo:

EMPREGADOS

224 1731 2210 4631 … 526

1 2 3 4 300

MESES

17 3 9 2 … 10

1 2 3 4 300

Empregado mais recente: 4631.

33) Fazer um algoritmo que:

a) leia uma variável indexada A com 30 valores reais;

b) leia uma outra variável indexada B com 30 valores reais;

c) leia o valor de uma variável X;

d) verifique qual o elemento de A é igual a X;

e) escreva o elemento de B de posição correspondente à do elemento A igual a X;

34) Fazer um programa que:

a) leia o valor de M (M<=30) e os valores de uma variável indexada A;

b) leia o valor de N (N<=20) e os valores de uma variável indexada B;

c) determine o conjunto C = A  B (união de A com B), onde C não deverá conter elementos repetidos (A e B não contém elementos repetidos);

d) escreva os elementos contidos em A, B e C;

35) Intercalação é o processo utilizado para construir uma tabela ordenada, de tamanho n +m, a partir de duas tabelas já ordenadas de tamanhos n e m. Por exemplo, a partir das tabelas:

A= 1 3 6 7

e

(37)

B= 2 4 5 construímos a tabela

C= 1 2 3 4 5 6 7

Fazer um algoritmo que:

a) leia NA, número de elementos do conjunto A (NA<=100);

b) leia, em seguida, os elementos do conjunto A;

c) leia, logo após o valor de NB, número de elementos do conjunto B (NB<=100);

d) leia, finalmente, os elementos do conjunto B;

e) crie e imprima um conjunto C, ordenado, de tamanho NA+NB, a partir dos conjuntos originais A e B.

Observação:

1. Considerar os elementos de A e B como inteiros.

36) Para cada nota de compra , tem-se o Nome do produto comprado, o valor e o imposto. Faça um algoritmo que escreva Nome, valor e imposto de cada produto. Bem como o valor total bruto, o imposto total cobrado e o valor total líquido de todas as notas. Considere 500 notas

37) Uma empresa deseja fazer um levantamento do seu estoque. Para isto possui para cada tipo de produto, o seu Nome, o valor unitário e a sua quantidade em estoque. A empresa deseja emitir um relatório contendo, o Nome, quantidade, valor, unitário e o saldo ( valor total ) em estoque de cada tipo de produto. Ao final deseja-se saber quantos tipos de produtos existem em estoque e o saldo de todos os produtos.

11.2 Variáveis Indexadas Bidimensionais(Matrizes)

Tambémconhecidapor “Matriz”. UmavariávelBidimencional, como o próprio Nome já indica, possui duas dimensões, sendoserpossíveldefinirvariáveiscomquaisquertipodedados validosdoPascal.

a11 a12

A = a21 a22

a31 a33

Matriz A 3x2 (Linha x Coluna) a) Definição:

ALGORITMO Define VARIÁVEIS

<Nome>: MATRIZ [I : J, L:M] DE <tipo>

INICIO

<Comandos>

FIM Em pascal:

PROGRAMDefine;

VAR <Nome>: ARRAY [I..J, L..M] OF <tipo>;

BEGIN

<Comandos>;

END.

Exemplo Definir uma variável indexada bidemensional para armazenar os dados de uma matriz 4 por 4 de números do tipo REAL, sendo que a mesma deverá corresponder no total a 16 posições de memória.

(38)

ALGORITMO Exemplo;

VARIÁVEIS

MAT : MATRIZ [1:4,1:4] DE REAL INICIO

<Comandos>

FIM Em pascal:

PROGRAM Exemplo;

VAR

MAT: ARRAY [1..4,1..4] OF REAL;

BEGIN

<Comandos>;

END.

NoExemploacima, apósadefiniçãodavariável, amemóriaestarácomomostradonoesquema abaixo:

MAT

1,1 1,2 1,3 1,4

2,1 2,2 2,3 2,4

3,1 3,2 3,3 3,4

4,1 4,2 4,3 4,4

OsValoresnuméricosapresentadosacimacorrespondemaosíndicesdavariável. B) Atribuição

<Nome>[<Índice>,<Índice>]  Valor;

LEIA (<Nome>[<Índice>,<Índice>]);

Em pascal:

<Nome>[<Índice>,<Índice>]: =Valor;

READ (<Nome>[<Índice>,<Índice>]);

Exemplo:

ALGORITMO Atribui VARIÁVEIS

Nomes : VETOR [1:4,1:4] DE CADEIA I,J : INTEIRO

BEGIN

PARA I  1 ATE 4, PASSO 1, FACA

PARA J  1 ATE 4, PASSO 1, FACA LEIA (Nomes [ I , J] )

FIM PARA FIM PARA

Em pascal: FIM

PROGRAM Atribui;

VAR Nomes : ARRAY[1..4,1..4] OF STRING;

I,J : INTEGER;

BEGIN

FOR I: = 1 TO 4 DO

FOR := J := 1 TO 4 DO READ (Nomes[ I,J] );

END.

(39)

11.2.1 Exercícios 9:

1) Faça um algoritmo para ler e imprimir uma matriz 2x4 de números inteiros.

2) Dado uma matriz de ordem 3x3 faça um algoritmo que:

a) Calcule a soma dos elementos da primeira coluna;

b) Calcule o produto dos elementos da primeira linha;

c) Calcule a soma de todos os elementos da matriz;

d) Calcule a soma do diagonal principal;

3) Dado uma matriz de ordem NxN faça um algoritmo que verifique se a matriz é simétrica (aij=aji).

4) Dado uma matriz NxM de valores reais faça um algoritmo que faça a leitura destes valores e ao final da leitura de todos, imprimir o seguintes relatório:

a) Qual a Soma dos valores de cada coluna da matriz;

b) Listar os valores que são menores que a média dos valores;

c) Qual a soma dos elementos da diagonal secundária;

5) Dado uma matriz NxM de valores inteiros faca um algoritmo que faça a leitura destes valores e ao final coloque os elementos ordenados primeiro pela linha e depois pela coluna.

6) Dado duas matrizes A e B de ordem NxN faca um algoritmo que some as duas e gere a matriz C.

Os elementos da matriz C são a soma dos respectivos elementos de A e B.

7) Dado uma matriz NxM de valores inteiros determine a sua matriz transposta e imprima.

8) Fazer um algoritmo que efetue um produto matricial. Seja A(m x n) e B (n x m) as matrizes fatores, sendo m<=40 e n<=70. Deverão ser impressas as matrizes A, B e a matriz-produto obtida.

(40)

12. Funções pré-definidas do Pascal

OPascal, possuimuitasfunções/Rotinaspré-definidas, sendoqueiremosestudaralgumasdas principais. Casohajanecessidade, omanual dalinguagemPascalpode, edeve, serusadocomofonte depesquisadeoutrasfunções.

DentreasRotinasqueiremosabordar, algumasnecessitamqueumcomandoespecialseja colocadonoiníciodoPROGRAMA. Talcomandoémostradoabaixo:

PROGRAMTeste; USESCRT; BEGIN

<Comandos>;

END.

Obs.: Asfunçõesquenecessitaremocomandoespecialmostradoacimaterãocolocadosaoladoa palavraCRT.

12.1 Descrição das Funções/Rotinas:

Rotina : ABS()

Função : Retornaovalorabsolutodeumvalornumérico. Sintaxe : Resultado: =ABS(Valor)

Exemplo:

PROGRAMTeste; VAR

X1 : REAL; X2 : INTEGER; BEGIN

X1: =ABS( -2.3 ); ( 2.3 ) X2: =ABS( -157 ); ( 157 ) END.

Rotina : CHR()

Função : RetornaumcaracterdatabelaASCIIdeacordocomumdeterminadovalornumérico Sintaxe : Resultado: =CHR(Valor)

Exemplo:

PROGRAMTeste; VAR

X1 : CHAR; BEGIN

X1: =CHR( 65 ); ( ‘A’ ) END.

(41)

Rotina : CLRSCR

Função : Limpaateladevídeo Sintaxe : CLRSCR

Exemplo:

PROGRAMTeste; USESCRT; BEGIN

CLRSCR; END.

Rotina : CONCAT()

Função : Concatena ( Junta ) umaseqüênciadeSTRING’s Sintaxe : Resultado: =CONCAT( s1,s2,…,sn)

Exemplo:

PROGRAMTeste; VAR

s1,s2 : STRING; BEGIN

s1: =CONCAT(‘João’,’Mineiro’); (‘JoãoMineiro’ ) s2: = CONCAT(‘ABC’,’DEFG’,’HIJ’); (‘ABCDEFGHIJ’) END.

Rotina : COPY()

Função : CopiancaracteresdeumaSTRINGapartirdeumaposiçãoespecífica Sintaxe : Resultado: =COPY(s1, posição , quantidade)

Exemplo:

PROGRAMTeste; VAR

s1 :STRING; BEGIN

s1: =COPY(‘ABCDEFGH’,2,3); (‘BCD’) END.

Rotina : COS()

Função : Retornaocossenodeumvalornumérico Sintaxe : Resultado: = COS(Valor)

Exemplo:

PROGRAMTeste; VAR

x : REAL; BEGIN

x: =COS(10);

END.

(42)

Rotina : DEC()

Função : Decrementaumavariávelnumérica Sintaxe : DEC(Valor)

Exemplo:

PROGRAMTeste; VAR

x : INTEGER; BEGIN

x: =10;

DEC(x) ; ( 9 ) END.

Rotina : DELAY() ( CRT )

Função : Interrompeoprocessamentoporumnúmeroespecificadodemilisegundos Sintaxe : DELAY(Tempo)

Exemplo:

PROGRAMTeste; USESCRT; BEGIN

DELAY(200);

END.

Rotina : DELETE()

Função : DeletancaracteresdeumaSTRING, apartirdeumaposiçãoinicial Sintaxe : DELETE(s ,posição, quantidade)

Exemplo:

PROGRAMTeste; VAR

s : STRING; BEGIN

s: =‘JoãodaSilva’;

DELETE (s,5,3); (‘JoãoSilva’) END.

Rotina : EXP()

Função : Retorna “e” elevadoaumdeterminadovalornumérico Sintaxe : Resultado: =EXP(Valor)

Exemplo:

PROGRAMTeste; VAR

x : REAL; BEGIN

x: : =EXP(10);

END.

Referências

Documentos relacionados

Note on the occurrence of the crebeater seal, Lobodon carcinophagus (Hombron &amp; Jacquinot, 1842) (Mammalia: Pinnipedia), in Rio de Janeiro State, Brazil.. On May 12, 2003,

(Parábola do semeador). André Luiz; “Faça o mesmo” mens. 23, In: Sementeira de Fraternidade, Divaldo P. Joanna de Angelis; “Observa teu comportamento” mens. 30, In:

No entanto, para aperfeiçoar uma equipe de trabalho comprometida com a qualidade e produtividade é necessário motivação, e, satisfação, através de incentivos e política de

É primeiramente no plano clínico que a noção de inconscien- te começa a se impor, antes que as dificuldades conceituais envolvi- das na sua formulação comecem a ser

occurring in more than just enterprise and technology companies (2002: US – 83% / Europe – 47%).. • In the UK, France and Germany

- Se o estagiário, ou alguém com contacto direto, tiver sintomas sugestivos de infeção respiratória (febre, tosse, expetoração e/ou falta de ar) NÃO DEVE frequentar

A prova do ENADE/2011, aplicada aos estudantes da Área de Tecnologia em Redes de Computadores, com duração total de 4 horas, apresentou questões discursivas e de múltipla

O software PcModel pode ser uma ferramenta bastante útil, quando aplicado na previsão e estimativa do cálculo de energia envolvendo as conformações mais e menos estáveis do