lógica de programação...a lógica computacional é um dos primeiros passos para quem pretende...
TRANSCRIPT
Capítulo 1
• Fluxograma e pseudocódigo
• Tipos de dados
• Constantes e variáveis
• Operadores
• Comandos
• Vetor
• Matriz
• Programação modular
Lógica de programação
Alógicacomputacionaléumdosprimeirospassosparaquempretende entrarnomundoda computação.Normalmente,nãopercebemossuaaplicaçãopararesolverdiferentesníveis
deproblemasnemsuarelaçãocomoutrasáreasdaciência.Issoporque,em geral, a lógica computacional está associada à lógica matemática(FORBELONE, 2005). É um recurso que permite a criação de alter-nativas viáveis e tecnicamente corretas, eficientes e rápidas. Antes deresolverumproblema,noentanto,temosdesaberinterpretá-lo.Assim,evitam-seresultadosindesejáveisoudesviosdepercurso,damesmama-neiraquesurgeaoportunidadedeeliminareventuaisdúvidas,definin-doomelhoralgoritmo,quepodeseropseudocódigoouof luxograma.
Amaioriadasatividadesqueexecutamoséresultadodeumasequênciadepas-sos lógicos. Por exemplo, amarrar o cadarço de um tênis, abrir uma porta,trocarumalâmpadaoufazeraqueledeliciosobolodechocolate.Asequênciadasetapas,oumelhor,dasoperaçõesaexecutar,édeterminadapeloalgoritmodeformalógica.Umamaneiramaissimplesdedizerissoéqueasucessãodeaçõesfaztodoosentido.Usandoomesmoexemplodobolo,ocomeçodetudoéreunirosingredienteseusá-losnasequênciacerta.Éassimtambémcomasoperaçõesdecálculos,representadaspelopseudocódigoapartirdecomandosno formatode texto (exatamente comouma receita)oupelofluxogramadeformagráfica.Eofatodeserconstituídoporsímbolosgeométricosfacilitaoprocessodevisualizaçãodasoperações.
1.1. Fluxograma e pseudocódigoParaentendermelhoroconceito,vamoselaborar,resumidamente,umal-goritmo que represente os passos necessários para que alguém tome umrefrigeranteemumalata:1.pegarorecipiente;2.abriratampa;3.tomaroconteúdo(vejaquadroAlgorítimo com os passos necessários da latinha).Apartir dessamesma situação, épossível inserirmais operações emnossoalgoritmo,deixando-omaisdetalhado(observeoquadroAlgoritmo deta-lhado da latinha).
1 - Pegar o recipiente.
1 - Pegar o refrigerante com a mão esquerda.
4 Eliminar o lacre.
7 - Ingerir o líquido. 8 - Voltar a lata na posição original.
3 - Remover o lacre.
6 - Inclinar a lata.
2 - Abrir a tampa. 3 - Tomar o conteúdo.
2 - Segurar o lacre com a mão direita.
5 Posicionar a lata corretamente na boca.
QuadroAlgoritmo detalhado da latinha.
QuadroAlgoritmo com os passos necessários da latinha.
InFoRmátICa 4
22
CaPítulo 1
23
Entreosdiferentessímbolosqueconstituemaestruturadeumfluxograma,osmaiscomunsestãoincluídosnatabela1.
Aproveitandoomesmoexemplodalatinhaderefrigerante,vamosreescre-verospassoslógicospormeiodeumf luxograma(figura1).
Figura 1Fluxograma dos passos lógicos.
Programanome_do_programa
Declare
{declaração de variáveis}
Início
{instruções e comandos}
Fim Comandos e instruções ordenados de forma lógica
Declarações de variáveis
Título do Algoritmo
Existemmuitossoftwaresdestinadosàconstruçãodefluxogramas,masépossí-velfazê-lostambémcomousodoMicrosoftWord®.OsexemplosdessematerialforamelaboradospeloMicrosoftVisio®.
PseudocódigoOsalgoritmossãodesenvolvidosemumalinguagemdenominadapseudocó-digo ou, como preferem alguns autores, português estruturado. Podem sercriadossemoformalismodaslinguagensdeprogramação,masobedecemaumaregrabásicadeestruturação:cabeçalho,declaraçãoeinstruções,confor-meoseguintemodelo:
Início FimInícioPegar a latinha
Remover olacre
Eliminar olacre
Abrir a tampa
Segurar o lacre
Posicionar alata na boca
Voltar a latana posição
originalTomar o refrigerante
Pegar o refrigerante
Inclinar a lata
Ingerir o líquido
tabela 1
NOME = TERMINALFUNÇÃO = Indica INÍCIO ou FIM de um processamento
NOME = PROCESSAMENTOFUNÇÃO = Defi nição de variáveis ou processamentos em geral (Cálculos)
NOME = ENTRADA MANUALFUNÇÃO = Entrada de dados via teclado, idêntico ao comando LEIA
NOME = DISPLAYFUNÇÃO = Saída de Dados, mostra um texto e/ou variável na tela, idêntico ao comando ESCREVA
NOME = DOCUMENTOFUNÇÃO = Saída de Dados, envia um texto e/ou variável para a impressora, usado em relatórios. Idêntico ao comando IMPRIMA
NOME = DECISÃOFUNÇÃO = Decisão a ser tomada, retornando verdadeiro ou falso, idêntico ao comando SE
NOME = CONECTORFUNÇÃO = Desvia o fl uxo para uma outra página, sendo interligados pelo conector
NOME = ENTRADA/SAÍDAFUNÇÃO = Leitura de gravação de arquivos
NOME = SETAFUNÇÃO = Indica a direção do fl uxo
NOME = LOOPFUNÇÃO = Realiza o controle de loop
SIMBOLOGIA DO FLUXOGRAMA
SÍMBOLO NOME E FUNÇÃO Início
InFoRmátICa 4
24
CaPítulo 1
25
desuavariávelouconstanteenãoutilizeespaçoembrancooucaracteresespeciais,comexceçãodounderline(_).Exemplos:
nome ß “Joãozinho”
idade ß 0
minha_idade ß 15
pag_fi nal ß “R$ 1.479,00”
Umalgoritmodevetercomocaracterísticaumnúmerofinitodepassos,des-critosdeformaprecisaequepossamserexecutadosemumdeterminadotem-po. Pode permitir zero ou mais entradas de dados e gerar saídas de dadosrefinados.Paraconstruirumalgoritmo,éprecisousar informaçõesclaras eobjetivas,geralmentecompostasdeumverbooudeumafrasedireta.
1.2. tipos de dadosAmanipulaçãodedadosemumalgoritmo–ouatémesmonaslinguagensdeprogramação–sóépossívelcombaseemalgumasregrasfundamentaispara a definição dos tipos de dados. É preciso diferenciar um dado comnúmerosououtrostiposdecaracteres.
• numéricos inteirosEssetipodedadoérepresentadopornúmerosnãofracionadospositivosoune-gativos,como:10,50,-56,-1.000etc.
• numéricos fl utuantes Sãorepresentadospornúmerosfracionadospositivosounegativos,porexemplo:10.5,-45.78,178.67etc.
• Caracteres ou literaisÉomaiorconjuntodedados.Sãorepresentadosporletras,números,sím-boloseespaçoembranco,sempreentreaspas.Exemplo:“cadeira”,“100”,“R$10.00”,“11h00”etc.
1.3. Constantes e variáveisAsconstantessãoexpressõesquerecebemumvalorqualquerquenãoserámodificadodurante oprocessode execuçãodo algoritmo. Já as variáveisterãoumvalorpassíveldemodificaçãoaqualquermomento.UmexemplodeconstanteéovalordePi(3,14).Eumavariávelquetodosconhecemosbempodeseratemperaturadodia,registradadehoraemhora.
• atribuição e declaraçãoAtribuir um valor qualquer para uma constante ou uma variável requero uso do sinal de “ß” ou “=”. Isso quer dizer que o valor na frente do si-nal será armazenado no elemento anterior ao sinal de atribuição. Veja:
nome ß “Joãozinho” idade ß 10 pi ß 3.14
Independentementedotipodedadoadotado–caracteresvariados(“Joãozinho”),númerosinteiros(10)ouflutuantes(3.14)–,oprocessodeatribuiçãoéomesmo.Masadeclaraçãorequercuidado.Porisso,procureescolheronomedavariáveldeacordocomotipodedadoqueserárecepcionado,iniciesemprecomletrasonome
1.4. operadoresOsoperadoressãoutilizadospelospseudocódigos.Omesmoacontececomaslinguagensdeprogramação,cuja funçãoé realizarasdiferentesoperaçõesdearitméticaedelógicaemumambientecomputacional.
• aritméticosEsse grupo tem como responsabilidade realizar as operações aritméticas(tabela 2) de um pseudocódigo. As operações serão realizadas de acordocom a prioridade, ou seja, parênteses, potência, multiplicação, divisão e,porúltimo,somaesubtração.
Programa variáveis
Declare
nome como caractere
idade como inteiro
salário como fl utuante
Início
nomeß“Joãozinho”
idadeß15
salárioß1.500,00
Fim
Figura 2Estrutura de pseudocódigo.
Início
Fim
nome como caractereidade como inteiro
salário como fl utuante
nome ß “Joãozinho”idade ß 15
salário ß 1500
Nopseudocódigo(figura2),asconstantesouvariáveisdeverãoestarrelaciona-dascomosseusrespectivostiposdedados:
InFoRmátICa 4
26
CaPítulo 1
27
Paracompreenderoprocessológicodedados,observeastabelasabaixo,mos-trandoosvaloresoriginais eos resultadosadquiridosapartirdosoperadoreslógicos.EssetipodequadroéconhecidocomoTabelaVerdade(tabela5).
• RelacionaisOsoperadoresrelacionais(tabela3)permitemaexecuçãodetestesentrecons-tantesevariáveis.
• lógicos e tabela Verdade
Osoperadoreslógicos(tabela4)executamfunçõesespeciaisdentrodospseudo-códigos,quandorelacionadosaostestescondicionaisouaoutrosvaloreslógicos.
1.5. Comandos Umaaçãoparaocomputadorédefinidacomumcomandoqueexecutadeter-minadaoperação(mostrarosdadoserealizarumcálculo,porexemplo).Essasaçõesserãorepresentadasnospseudocódigospormeiodeexpressõespredefini-dasnalógicacomputacional.
• Comando Escreva()Éutilizadoparamostrarasaídadedados(figura3),ouseja,quandoumamen-sagemouresultadodeumaoperaçãodeverá serexibidaaousuário.Paraquesejapossívelavisualizaçãododado,algunscuidadossãofundamentais:asex-pressõesdevemaparecerentreaspas,excetoasvariáveisevalores (inteirosouflutuantes).
Escreva(“bom dia”)
valor ß 10
Escreva(valor)
Escreva(56)
Figura 3 Comando Escreva().
Simulação dos operadores “E” e “OU”
tabela 2
tabela 3
tabela 5
tabela 4
Mensagem ouvariável
OPERADORES ARITMÉTICOS + adição de números fl utuantes ou inteiros
+ Concatenação de valores literais (caracteres)
- Subtração de números fl utuantes ou inteiros
* multiplicação de números fl utuantes ou inteiros
/ Divisão de números fl utuantes e inteiros
** Potência de números fl utuantes e inteiros
NÃO // NOT Valor Entrada 01 Resultado Verdadeiro Falso Falso Verdadeiro
E // AND Valor Entrada 01 Valor Entrada 02 Resultado Verdadeiro Verdadeiro Verdadeiro Verdadeiro Falso Falso Falso Verdadeiro Falso Falso Falso Falso
OU // OR Valor Entrada 01 Valor Entrada 02 Resultado Verdadeiro Verdadeiro Verdadeiro Verdadeiro Falso Verdadeiro Falso Verdadeiro Verdadeiro Falso Falso Falso
OPERADORES RELACIONAIS = Igual
<> Diferente
> maior
< menor
<= menor igual
>= maior igual
OPERADORES LÓGICOS
não / not Inverte o resultado de uma expressão
E / and Retorna verdadeiro caso todas as
condições retornem verdadeiro
ou / or Retorna verdadeiro quando uma das condições retorna verdadeiro
chave 1 chave 2
Lógica E lâmpada
bateria
lógica ou
InFoRmátICa 4
28
CaPítulo 1
29
• Comando leia()AocontráriodocomandoEscreva(),oLeia()permiteainserçãodedadospelainteraçãocomousuário.Elesserãoarmazenadosemvariáveisdevidamentede-finidas(figura5).
Leia(nome)
Leia(nota1)
Leia(nota2)
Leia(temp)
Aorealizarumaentradadedados,oidealéqueousuáriosejanotificadosobreotipodeinformaçãoquedeveráserinserida.Vejacomo:
Programa exemplo_leia
Declare
nome como caractere
média, nota1, nota2 como fl utuante
Início
Escreva(“calculando a média”)
Escreva(“Qual o seu nome?”)
Leia(nome)
Escreva(“Qual a sua nota 1?”)
Leia(nota1)
Escreva(“Qual a sua nota 2?”)
Leia(nota2)
media ß (nota1 + nota2)/2
Escreva(“Sua média fi nal é:”)
Escreva(media)
Fim
Opseudocódigoaseguirrepresentaumexemplomaiscompleto,assimcomoofluxograma,nasequência(figura4):
Programa exemplo_escreva
Declare
nome como caractere
média, nota1, nota2 como fl utuante
Inicio
nome ß “Fulaninho”
nota1 ß 10.0
nota2 ß 2.0
media ß (nota1 + nota2)/2
Escreva(“Sua nota fi nal é:”)
Escreva(média)
Fim
Figura 4 Fluxograma Escreva.
Figura 5 Entrada de Dados.
Entrada de dados
Fim
nome ß “Fulaninho”nota1 ß 10.0nota2 ß 2.0
média ß (nota1+nota2)/2
Início
nome como caractere média, nota1, nota2 como
fl utuante
“Sua nota fi nal é”
média
InFoRmátICa 4
30
CaPítulo 1
31
• Estrutura de decisão – Se...Senão...Fim-SePodemosorganizarocomandoSe(),paracriardesvioscondicionaisdeverdadei-rooufalsonomesmoteste(figura8):
Observenafigura6,amesmarepresentação,noformatodefluxograma:
Figura 6 Fluxograma Leia.
• Estrutura de decisão – Se...Fim-SeOsalgoritmos,assimcomoaslinguagensdeprogramação,executamasativi-dadesde forma sequencial.Mas, às vezes,devemosdefinir algunsdesviosdeacordocomascondiçõesestabelecidasnoprocessodeexecuçãodoalgoritmoconformea interferênciadousuário.Paraque issoocorra, épreciso executarocomandoSe(),quepermiterealizardesvioscondicionaiscombaseemtesteslógicos.Aestruturadosalgoritmosécompostaporumtestecondicionaleporumcomandoouconjuntodecomandosaseremexecutadosapartirdesseteste,massomentequandooresultadoforverdadeiro(figura7).
Figura 8 Se...Senão...Fim-Se.
Comoficariaarepetiçãodotestecomavariávelmédia.
Se(media>=7.00)Então
Escreva(“Vocêestáaprovado!!!!”)
Senão
Escreva(“Vocêestáreprovado!!!!”)
Fim-Se
Se(condição)Então
{comando(s)}
Fim-Se
Nopróximoexemplo,paraestabeleceracondiçãovamosutilizarosoperadoreslógicosjávistos.
Se(média>=7.00)Então
Escreva(“Vocêestáaprovado!!!!”)
Fim-Se
Figura 7 Se...Fim-Se.
Se(condição)Então
{comando(s)condiçãoverdadeira}
Senão
{comando(s)condiçãofalsa}
Fim-Se
Sim
SimNão
Início
nome como caractere média, nota1, nota2
como fl utuantenome Fim
nota1“Qual a sua nota 1”
“Calculando a média”
“Qual o seu nome?”
média =(nota1+nota2)/2nota2
“Qual a sua nota 2”
“Sua média fi nal é”
média
InFoRmátICa 4
32
CaPítulo 1
33
• Estrutura de decisão – Selecione Caso...Senão...Fim-Selecione
Emalgunsmomentos,haveránecessidadedetestaramesmavariáveldiversasvezes,comoacontecenomenudeopções.Paraisso,utilizamosocomando“Se-lecioneCaso”daseguinteforma(figura10):
Vamosorganizartodoopseudocódigo,apresentando-o,também,noformatodefluxograma(figura9).
Figura 9 Exemplo de teste.
Programaexemplo_teste
Declare
nomecomocaractere
media,nota1,nota2comoflutuante
Início
Escreva(“calculandoamédia”)
Escreva(“Digiteoseuprimeironome.”)
Leia(nome)
Escreva(“Qualasuanota01?”)
Leia(nota1)
Escreva(“Qualasuanota02?”)
Leia(nota2)
médiaß(nota1+nota2)/2
Escreva(“Suanotafinalé:”)
Escreva(média)
Se(media>=7.00)Então
Escreva(“Aprovado”)
Senão
Escreva(“Reprovado”)
Fim-Se
Escreva(“Fimdeprograma”)
Fim
Selecione Caso{variável}
Casocondição01
{comando(s)}
Casocondição02
{comando(s)}
Casocondição03
{comando(s)}
Senão
{comando(s)}
Fim-Selecione
Figura 10 Selecione Caso.
Sim
Sim
Não
Sim
Não
Fim
nota2
“Aprovado”
“Reprovado”
média >=7.00
Início
nota1 nome
média
“Qual a suanota 02?”
“Qual a suanota 01?”
“Sua médiafi nal é”
“Fim doprograma”
média =(nota1 + nota2)/2
“Qual o seunome?”
“Calculando a média”
nome como caractere média, nota1, nota2
como fl utuante
InFoRmátICa 4
34
CaPítulo 1
35
• Estrutura de repetição – Para...Fim-ParaAlémdosdesviossequenciais,épossívelcriardesviosemloop,ouseja,repetirtrechosdoalgoritmosobredeterminadacondiçãoecontrolaraformacomqueosloopsserãoexecutados.OcomandoPara...Fim-Parapermitequeumavariávelrealizeacontagemdonúmerodeloopsaexecutar,conformeaindicaçãoinicialefinaldessacontagem(figura12),etambémidentifiqueoformatoemqueessatarefaserárealizada.
Éprecisodescobrir,emdeterminadasituação,seousuárioescolheuosnúmeros1,2ou3.Qualqueroutrodiferente,deverágeraramensagem“númeroinváli-do”(figura11):
Figura 11Selecione caso.
Algunsexemplos:
Parax=1Até5Faça Escreva(x)//Serãovisualizadososnúmeros:1,2,3,4e5. Fim-Para
Paranum=3Até6Faça Escreva(num)//Serãovisualizadososnúmeros:3,4,5e6. Fim-Para
Paravlr=0Até10Passo2Faça Escreva(vlr)//Serãovisualizadososnúmeros:0,2,4,6,8e10. Fim-Para
Paracont=3Até0Passo-1Faça Escreva(cont)//Serãovisualizadososnúmeros:3,2,1e0. Fim-Para
Figura 12Para...Fim-Para.
Leia(número)
Selecione Casonúmero
Caso1
Escreva(“Vocêescolheuonúmero01”)
Caso2
Escreva(“Vocêescolheuonúmero02”)
Caso3
Escreva(“Vocêescolheuonúmero03”)
Senão
Escreva(“Númeroinválido”)
Fim-Selecione
Para<variável>=<vlr.inicial>Até<vlr.final>Passo<arg>Faça
{comando(s)}
Fim-Para
Cont = Inicial atéFinal
Comando(s)
Não
Sim
Não
Sim
Não
Sim
030201
“Você escolheu o número 01”
“Você escolheu o número 02”
“Você escolheu o número 03”
“Númeroinválido”
número
InFoRmátICa 4
36
CaPítulo 1
37
• Estrutura de repetição – Repita...até queOcomandoRepitatemamesmafinalidadedocomandoEnquanto,quandooassuntoé funcionalidade.Aúnicadiferençaéa localizaçãodacondiçãodeteste,queocorrenofinaldacadeiadeloop(figura14),garantindoaexecuçãodoscomandosnomínimoumavez.
Repita {comando(s)} Até que(condição)
• Estrutura de repetição – Enquanto...Fim-EnquantoAssimcomoocomandoPara...Fim-Parapermiterealizarloop,ainstruçãoEn-quanto...Fim-Enquantoexecutaomesmoprocesso (figura13).Maséprecisolembrarqueessecomandonãorealizaacontagemautomaticamente.Porisso,énecessárioimplementarumcontadordepassos.
Figura 13 Enquanto...
Fim-Enquanto.
Figura 14 Repita...Fim-Repita.
Vamos repetiros exemplosda instrução Para...Fim-Para,mas agora comocomandoEnquanto.
xß1 Repita Escreva(x)//Serãovisualizadososnúmeros:1,2,3,4e5. xßx+1 Até que(x<=5)
numß3 Repita Escreva(num)//Serãovisualizadososnúmeros:3,4,5e6. numßnum+1 Até que(x<=6)
vlrß0 Repita Escreva(vlr)//Serãovisualizadososnúmeros:0,2,4,6,8e10. vlr=vlr+2 Até que(vlr<=10)
contß3 Repita Escreva(cont)//Serãovisualizadososnúmeros:3,2,1e0. contßcont-1 Até que(cont>=0)
Enquanto(condição)Faça {comando(s)} Fim-Enquanto
xß1 Enquanto(x<=5)Faça Escreva(x)//Serãovisualizadososnúmeros:1,2,3,4e5. xßx+1 Fim-Enquanto
numß3 Enquanto(num<=6)Faça Escreva(num)//Serãovisualizadososnúmeros:3,4,5e6. numßnum+1 Fim-Enquanto
vlrß0 Enquanto(vlr<=10)Faça Escreva(vlr)//Serãovisualizadososnúmeros:0,2,4,6,8e10. vlrßvlr+2 Fim-Enquanto
contß3 Enquanto(cont>=0)Faça Escreva(cont)//Serãovisualizadososnúmeros:3,2,1e0. contßcont-1 Fim-Enquanto
comando(s)
Repita (condição)
Condição
Comando(s)
InFoRmátICa 4
38
CaPítulo 1
39
Programavetores Declare vetcomoconjunto[1..5]deinteiro Início vet[1]ß90 vet[2]ß1 vet[3]ß100 vet[4]ß4-1 vet[5]ß21 Fim
1.6. VetorDefinidotambémcomomatrizunidimensional,umvetor(tabelas6e7)éumavariávelquepossuiváriosdados,acessadospormeiodeumaposiçãorelativa,seguindoamesmaregradaconcepçãoeatribuiçãodasvariáveis.
Noexemploanterior,podemosverificarquecadaelementodeumvetorécarac-terizadoporumaposiçãorelativa.Observandoovetordeletras,teremos:
Posição1àvalorA
Posição5àvalorR
Posição8àvalorQ
Emumpseudocódigo,realizamosadeclaraçãodeumvetordaseguinteforma:
tabela 6 Vetor de Letras.
tabela 7Vetor de Números.
Programavetores Declare vetcomoconjunto[n..n1]de<tipo> Início {comandosoublocodecomandos} Fim
A H M B R J G Q S P
1 2 3 4 5 6 7 8 9 10
10 56 -4 60 2 6 99 3 1 -10
1 2 3 4 5 6 7 8 9 10
Onomedovetorérepresentadopelaexpressão“vet”,cujoconjuntodeinfor-maçõesé identificadopor“n”,posição inicial,e“n1”,posiçãofinal,ouseja,umvetorde10posiçõespoderáserrepresentadocomo[1..10].Eo“tipo”deinformaçãoqueestevetordeveráreceber.
Pararealizaroacessoàposiçãodeumvetor,éprecisoidentificaraposiçãoqueestáentreossinaisde[],logoapósonomedovetor:
Escreva(vet[3])
Leia(vet[2])
• trabalhando com vetorAentradadedadosemumvetorérealizadaporintermédiodeseuidentifica-dor.Paraisso,utiliza-seumcontadorcrescenteoudecrescente,deacordocomanecessidade.Vamoscarregar10informaçõesnuméricasdentrodeumvetor.
vetcomoconjunto[1..10]deinteiro Parai=1Até10Faça Escreva(“Digiteumvalornaposição”,i,“dovetor”) Leia(vet[i]) Fim-Para
Seguindoamesmalógica,podemosrealizaraimpressãodoconteúdodessevetor.
Parai=1Até10Faça Escreva(“Valordaposição:”,i,“dovetoré”,vet[i]) Fim-Para
Vamosreunirosconceitosdeleituraeimpressãonomesmoalgoritmo.
Programavetor_dados Declare vetcomoconjunto[1..10]deinteiro icomointeiro Início Parai=1Até10Faça Escreva(“Digiteumvalornaposição”,i,“dovetor”)
InFoRmátICa 4
40
CaPítulo 1
41
matcomoconjunto[1..5][1..3]deinteiro Início {comandooublocodecomandos} Fim
Leia(vet[i]) Fim-Para ParaI=1Até10Faça Escreva(“Valordaposição:”,i,“dovetoré”,vet[i]) Fim-Para Fim Assimcomoosvetores,paraaatribuiçãodevaloresemumamatriz,devemos
identificaralinhaeacoluna.
Programamatriz Declare matcomoconjunto[1..2][1..2]deinteiro Início mat[1,1]ß19 mat[1,2]ß2 mat[2,1]ß77 mat[2,2]ß16 Fim
Outroexemploparaanalisar:
Programamédia Declare vetorcomoconjunto[1..8]deinteiro soma,médiacomoflutuante ctcomointeiro Início soma=0 Paract=1Até8Faça Escreva(“Digiteumvalornaposição”,ct,“dovetor”) Leia(vetor[ct]) somaßsoma+vetor[ct] Fim-Para médiaßsoma/8----ou----médiaßsoma/ct Escreva(“Amédiafinalé:”,média) Fim
1.7. matrizAmatriz,aocontráriodovetor,émultidimensional.Nessecaso,osdadossãoarmazenadosoulidosdeacordocomarelaçãoentreoseixos,eseuíndiceére-presentadopordoisoumaisvalores.Umamatriz3x2,porexemplo,possuitrêslinhasporduascolunas.Portanto,qualquerreferênciaaosdadosdeveráapontarparaambasasposiçõesdaformamatriz[2,1],indicandoqueainformaçãorefe-renciadaestánalinha2enacoluna1damatriz.Graficamente,tem-se:
Paraimplementação,realizamosadeclaraçãodamatrizdaseguinteforma:
Programamatriz Declare
• trabalhando com matrizAleituraeaimpressãodasmatrizesseguemomesmoesquemadosvetores.Masseránecessárioutilizardoiscontadores:umparaidentificaralinhaeoutro,paracoluna.Vejamosoexemplodeumamatriz2x2.
Programamatriz Declare matrizcomoconjunto[1..2][1..2]deflutuante lin,colcomointeiro Início Paralin=1Até2Faça Paracol=1Até2Faça Escreva(“Linha”,lin,“damatriz”) Escreva(“Coluna”,col,“damatriz”) Escreva(“Qualovalor?”) Leia(matriz[lin,col]) Fim-Para Fim-Para Escreva(“Visualizandoosdadosdamatriz:”) Paralin=1Até2Faça Paracol=1Até2Faça Escreva(“Linha”,lin,“damatriz”) Escreva(“Coluna”,col,“damatriz”) Escreva(“Ovaloré:”) Escreva(matriz[lin,col]) Fim-para Fim-paraFim
1 21 9 20
2 10 63 2 11
matriz[2,1]
matriz 3x2
InFoRmátICa 4
42
CaPítulo 1
43
Programaprocedimento Declare opcomocaractere Procedimentobomdia Escreva(“Bomdia!!!!!”) Fim-procedimento Início Escreva(“Desejavernossamensagem?(S/N)”) Leia(op) Seop=‘S’Ouop=‘s’Então bomdia //chamadaouprocedimento Fim-Se Fim
Outroexemplo:
Programasoma Declare a,b,ccomoconjunto[1..8][1..4]deflutuante ln,clcomointeiro Início Paraln=1Até8Faça Paracl=1Até4Faça Escreva(“DigiteovalorparaaMatrizA:”) Leia(a[ln,cl]) Escreva(“DigiteovalorparaaMatrizB:”) Leia(b[ln,cl]) Escreva(“ValoressomadosparaaMatrizC:”) c[ln,cl]=a[ln,cl]+b[ln,cl] Escreva(c[ln,cl]) Fim-Para Fim-Para Fim
1.8. Programação modularUmadastécnicasbemempregadasparaodesenvolvimentodeprogramaséamodulaçãodepartedocódigo.Issosignificaqueoprogramaprincipaléque-bradoempartesmenores.Ecadaparterepresentaumaunidadefuncional.Essassub-rotinas são identificadas comoprocedimentosou funções.Permitemquepartedocódigosejareaproveitadaemoutrapartedocódigoprincipalou,atémesmo,emprojetosdiferentes,poroutrosprogramadores.
• Procedimento
Umprocedimento,assimcomooprogramaprincipal,éformadoportodaaes-truturalógica(início-fim,variáveiseinstruções).Podeserutilizadoemqualquerpartedeumprogramaquesejareferenciado.Dessaforma,aoseracionado,oprocedimentoassumeocontroledaexecução.E,quandoéfinalizado,ocontroleretornaaoprogramaprincipal.
Procedimentonome-do-procedimento(parâmetro:tipo) Declare{variáveis} {comandooublocodecomando Fim-Procedimento
Onome-do-procedimentofazaidentificaçãodoprograma–eéporessaex-pressãoqueeleseráreferenciado.Logoapósessaetapa,encontramososparâ-metroseadefiniçãodeseutipo,osquaisrepresentamvariáveisquereceberãovaloresnomomentodachamada.Assimcomoocódigoprincipal,oproce-dimentopossuiasvariáveis locaisdemanipulaçãodedadoseoscomandosnecessáriosparaasuaexecução.
• Variáveis locais ou globaisAsvariáveislocaissãoconsideradasapenasemumasub-rotina(procedimentooufunção).Dessaforma,sãodesconhecidaspeloalgoritmoprincipal,aocontrá-riodasglobais,quesãoconsideradasportodooalgoritmo.
Programatipos_variáveis Declare a,bcomoINTEIRO//sãovariáveisdotipoglobal Procedimentoteste Declare x,ycomointeiro//sãovariáveislocais //estaáreareconhece(a),(b),(x)e(y) Fim-procedimento Início //estaáreareconhece(a)e(b). Fim
Oquadroemseguidamostraocampodevisualizaçõesdasvariáveis,conformeopseudocódigoapresentadoanteriormente.
Acompanheumexemploparaocálculodaáreadoquadradousandooprocedimento.
Programa tipos_variaveis
Visualização das variáveis
(a) e (b)
Procedimento teste
Visualização das variáveis (a),(b),(x) e (y)
InFoRmátICa 4
44
CaPítulo 1
45
Programaquadrado Declare opcomocaracter ladocomointeiro
Procedimentoquadrado (ld como inteiro) Declare areacomointeiro áreaßld*ld Escreva(“Aáreadoquadradoé:”,area) Fim-Procedimento Início Escreva(“Gostariadesaberaáreadeumquadrado(S/N)?”) Leia(op) Seop=‘S’Ouop=‘s’Então Escreva(“Digiteovalor:”) Leia(lado) quadrado(lado)
Fim-Se Fim
• FunçãoUmafunçãotemasmesmascaracterísticasestruturaisdeumprocedimento,noquedizrespeitoafatorescomofuncionalidade,visualizaçãodevariáveisecha-madas.Masasuaprincipalvantageméapossibilidadederetornodevaloresemtemporeal.Issoquerdizerque,quandochamamosdeterminadafunção,pode-mosrecebervaloresemtemporeal,armazenandooresultadoemumavariável.
Programaquadrado Declare opcomocaractere Procedimentoquadrado Declare lado,áreacomointeiro Escreva(“Digiteumnúmerointeiro:”) Leia(lado) áreaßlado*lado Escreva(“Aáreadoquadradoé:”,área) Fim-Procedimento Início Escreva(“Gostariadesaberaáreadeumquadrado(S/N)?”)
Leia(op) Seop=‘S’Ouop=‘s’Então quadrado Fim-Se Fim
• Passagem de parâmetroApassagemdeparâmetrosporvaloréutilizadaparaqueassub-rotinaspossamreceberinformaçõeserealizarqualquertipodemanipulaçãoforadopseudocó-digoprincipal.
Funçãonome-da-função( parâmetros:tipo):<tipo-de-retorno> Declare{variáveis} {comandooublocodecomandos} Fim-Função
Diferentementedoprocedimento,éprecisofazeraidentificaçãodotipodevaloraserretornado.
Programaquadrado Declare opcomocaractere ladocomointeiro
Funçãoquadrado (ld como inteiro): inteiro Declare áreacomointeiro áreaßld*ld Fim-Função Início Escreva(“Gostariadesaberaáreadeumquadrado(S/N)?”) Leia(op) Seop=‘S’Ouop=‘s’Então Escreva(“Digiteovalor:”) Leia(lado) Escreva(“Aáreadoquadradoé:”) Escreva(quadrado(lado)) Fim-Se
Fim
InFoRmátICa 4
46
CaPítulo 1
47