Diferenças Entre Páginas Estáticas e Dinâmicas Na Web
Diferenças Entre Páginas Estáticas e Dinâmicas Na Web
WEB
As pginas estticas usadas desde quando a internet surgiu o programador web utilizava somente HTML
para a criao das pginas, a maneira que eram editadas essas pginas era pouco cansativo pois criava-se o
inde!"tml com o la#out e quando iria postar algo teria que editar o inde e tamb$m recriar o la#out na postagem,
seno os usurios no saberiam o %oi postado e deste modo geraria uma pgina c"eias de lin&s de postagens
antigas!
Atualmente $ mais comum encontrarmos as pginas din'micas pois seu %cil acesso nas edi(es a)uda o
programador web a ter agilidade das tare%as, pois al$m do HTML da pgina, teremos outra linguagem trabal"ando
)undo, como *A+A,-./0T, 0H0, *A+A entre outros e mais um banco de dados como M#,1L 2!!!3, assim as
pginas %icaro mais segura e din'mica e o programador web no teria a necessidade de %azer o que %azia nas
pginas estticas!
LINGUAGEM JAVASCRIPT
JavaScript uma linguagem de script baseada em ECMAScript padronizada pela Ecma
international nas especificaes ECMA-22 e !S"#!EC $22 e atualmente a principal linguagem para
programa%o client-side em navegadores &eb' (oi concebida para ser uma linguagem script com
orienta%o a ob)etos baseada em prot*tipos+ tipagem fraca e din,mica e funes de primeira classe' -ossui
suporte . programa%o funcional e apresenta recursos como fec/amentos e funes de alta ordem
comumente indispon0veis em linguagens populares como Java e C11'
Caractersticas
As seguintes caracter0sticas s%o comuns a todas as implementaes conformantes com o
ECMAScript'
Imperativa e Estruturada
JavaScript suporta os elementos de sinta2e de programa%o estruturada da linguagem C 3por
e2emplo+ if+ &/ile+ s&itc/4' 5ma e2ce%o a 6uest%o do escopo7 o escopo em blocos ao estilo do C n%o
suportado+ em seu lugar JavaScript utiliza escopo a n0vel de fun%o' JavaScript $'8+ entretanto+ suporta
escopo a n0vel de bloco atravs do comando let' Como C+ JavaScript faz distin%o entre e2presses e
comandos' 5ma diferena sint9tica do C 6ue a 6uebra de lin/a termina automaticamente o comando+
sendo o ponto-e-v0rgula opcional ao fim do comando'
DINMICA
Tipagem dinmica
Como na maioria das linguages de script+ tipos s%o associados com valores+ n%o com vari9veis'
-or e2emplo+ a vari9vel 2 poderia ser associada a um n:mero e mais tarde associada a uma string'
JavaScript suporta v9rias formas de testar o tipo de um ob)eto+ incluindo duc;t<ping'
Baseada em objetos
JavaScript 6uase inteiramente baseada em ob)etos' "b)etos JavaScript s%o arra<s associativos+
aumentados com prot*tipos' "s nomes da propriedade de um ob)eto s%o strings7 ob)'2 = $> e ob)?@2@A =
$> s%o e6uivalentes+ o ponto neste e2emplo apenas a:car sint9tico' -ropriedades e seus valores podem
ser adicionadas+ mudadas+ ou deletadas em tempo de e2ecu%o' A maioria das propriedades de um ob)eto
3e a6ueles em sua cadeia de /erana via prot*tipo4 pode ser enumerada usando-se uma estrutura de
repeti%o for'''in' Javascript possui um pe6ueno n:mero de ob)etos padr%o da linguagem como &indo& e
document'
Avalia!o em tempo de e"ecu!o
JavaScript inclui a fun%o eval 6ue consegue e2ecutar em tempo de e2ecu%o comandos da
linguagem 6ue este)am escritos em uma string'
#$NCI%NA&
#un'es de primeira classe
Bo JavaScript as funes s%o de primeira classe+ isto + s%o ob)etos 6ue possuem propriedades e
mtodos+ e podem ser passados como argumentos+ serem atribu0dos a vari9veis ou retornados como
6ual6uer outro ob)eto'
#un'es anin(adas
(unes CinternasC ou Canin/adasC s%o funes definidas dentro de outras funes' S%o criadas cada
vez 6ue a fun%o 6ue as contm 3e2terna4 invocada' Alm disso+ o escopo da fun%o e2terna+ incluindo
constantes+ vari9veis locais e valores de argumento+ se transforma parte do estado interno de cada ob)eto
criado a partir da fun%o interna+ mesmo depois 6ue a e2ecu%o da fun%o interna conclu0da'
#ec(amentos
JavaScript permite 6ue funes anin/adas se)am criadas com o escopo l2ico no momento de sua
defini%o e possui o operador 34 para invoc9-las em outro momento' Essa combina%o de c*digo 6ue pode
ser e2ecutado fora do escopo no 6ual foi definido+ com seu pr*prio escopo durante a e2ecu%o+
denominada+ dentro da ciDncia da computa%o+ fec/amento'
BA)EADA EM *+%T,TI*%)
*rot-tipos
JavaScript usa prot*tipos em vez de classes para o mecanismo /erana' E poss0vel simular muitas
caracter0sticas de orienta%o a ob)etos baseada em classes com prot*tipos'
#un'es e m.todos
Fiferente de muitas linguagens orientadas a ob)etos+ n%o /9 distin%o entre a defini%o de uma
fun%o e a defini%o de um mtodo no JavaScript' A distin%o ocorre durante a c/amada da fun%oG a
fun%o pode ser c/amada como um mtodo' Huando uma fun%o c/amada como mtodo de um ob)eto+
a ;e<&ord t/is da fun%o associada .6uele ob)eto via tal invoca%o'
USO EM PGINAS WEB
" uso prim9rio de JavaScript escrever funes 6ue s%o embarcadas ou inclu0das em p9ginas
IJMK e 6ue interagem com o Modelo de "b)eto de Focumentos 3F"M4 da p9gina' Alguns e2emplos
deste uso s%o7
abrir uma nova )anela com controle program9tico sobre seu taman/o+ posi%o e atributosG
validar valores de um formul9rio para garantir 6ue s%o aceit9veis antes de serem enviados ao
servidorG
mudar imagens . medida 6ue o mouse se movimenta sob elas'
-elo fato do c*digo JavaScript rodar localmente no navegador do usu9rio+ e n%o em um servidor
remoto+ o navegador pode responder a tais aes rapidamente+ fazendo uma aplica%o mais responsiva'
Alm disso+ o c*digo JavaScript pode detectar aes de usu9rio 6ue o IJMK sozin/o n%o pode+ tais como
teclas pressionadas individualmente' Aplicaes como Lmail tomam vantagem disso7 muito da l*gica da
interface do usu9rio escrita em JavaScript+ e o JavaScript envia re6uisies de informa%o+ tais como o
conte:do de um correio eletrMnico+ para o servidor' A tendDncia mais ampla de programa%o em A)a2
e2plora de maneira similar este ponto forte'
5ma JavaScript engine 3tambm con/ecida como interpretador JavaScript ou uma implementa%o
JavaScript4 interpreta c*digo fonte JavaScript e o e2ecuta de forma ade6uada' A primeira implementa%o
JavaScript foi criada por Nrendan Eic/ na Betscape Communications Corporation+ para o Bavegador
Betscape' A implementa%o+ nomeada SpiderMon;e<+ implementada em C e vem sendo atualizada para
conformar com a edi%o O do ECMA-22' A implementa%o P/ino+ criada primariamente por Borris
No<d 3e2-empregado da BetscapeG agora no Loogle4 uma implementa%o de JavaScript em Java' P/ino+
como SpiderMon;e<+ conformante com a terceira edi%o do ECMA-22'
-or ser o JavaScript a :nica linguagem 6ue a maioria dos navegadores populares suportam+ tem se
tornado uma linguagem alvo para muitos frame∨s em outras linguagens+ a despeito do fato de n%o ter
sido plane)ado para tal' B%o obstante as limitaes de desempen/o inerente . sua natureza din,mica+ a
crescente velocidade das implementaes JavaScript tem feito da mesma uma pr9tica linguagem
intermedi9ria'
Compatibilidade
J9 6ue JavaScript roda em ambientes vari9veis+ uma parte importante do teste e depura%o de seu
c*digo consiste na verifica%o de compatibilidade entre navegadores'
As interfaces F"M para a manipula%o de p9ginas &eb n%o s%o parte do padr%o ECMA+ ou do
pr*prio JavaScript' "ficialmente+ s%o definidas por um esforo de padroniza%o da QOCG na pr9tica+
implementaes de navegadores diferem do padr%o de uma para as outras+ e nem todos navegadores
e2ecutam JavaScript'
-ara lidar com essas diferenas+ programadores JavaSCript com fre6uDncia tentam escrever
c*digos 6ue conformam com o padr%o comum a maioria dos navegadoresG n%o sendo poss0vel isso+
tentam escrever de maneira ad-/oc um c*digo 6ue verifi6ue a presena de certos recursos e 6ue se
comporte de maneira ade6uada caso tais recursos n%o este)am dispon0veis' Em alguns casos+ dois
navegadores podem ambos implementarem uma funcionalidade com comportamentos diferentes+ e
programadores podem ac/ar pr9tico detectar 6ual navegador est9 rodando e mudar o comportamento de
seus scripts para se ade6uar a isso' -rogramadores podem tambm usar bibliotecas ou ferramentas 6ue
abstraem tais diferenas entre navegadores'
Alm disso+ scripts podem n%o funcionar para alguns usu9rios' -or e2emplo+ um usu9rio pode7
5sar um navegador antigo ou raro com suporte F"M incompleto ou incomum'
5sar um navegador de um -FA ou telefone m*vel 6ue n%o est9 apto a e2ecutar JavaScript'
Jer a e2ecu%o do JavaScript desabilitada por normas de segurana'
-ara suportar tais usu9rios+ programadores &eb tentam criar p9ginas 6ue se)am robustas a agentes
6ue n%o suportem o JavaScript da p9gina' Em particular+ uma p9gina deve funcionar a despeito das
funcionalidades e2tras 6ue um JavaScript provD' 5ma abordagem alternativa 6ue muitos ac/am prefer0vel
a p9gina se desenvolvida por primeiro a partir de tecnologias b9sicas 6ue funcionem em todos os
navegadores+ e ent%o aprimor9-la para os usu9rios 6ue possuam JavaScript'
Acessibilidade
Assumindo 6ue o usu9rio n%o ten/a desabilitado sua e2ecu%o+ pode-se utilizar JavasScript do
lado cliente para mel/orar a e2periDncia de um usu9rio como deficiDncia f0sica ou visual'
Keitores de tela utilizados por pessoas cegas ou com vis%o parcial podem detectar a presena de
JavaScript e dessa forma acessar e ler o F"M da p9gina depois 6ue seus scripts foram e2ecutados' Bestes
casos recomenda-se 6ue o IJMK se)a o mais conciso+ naveg9vel e rico semanticamente poss0vel+ tendo a
p9gina scripts ou n%o' B%o se recomenda 6ue o c*digo JavaScript de uma p9gina se)a totalmente
dependente do eventos provenientes do mouse )9 6ue usu9rios 6ue n%o conseguem ou optam por n%o usar
o mouse n%o estar%o aptos a col/er os benef0cios de tal c*digo' Fa mesma forma+ embora /<perlin;s e
&ebforms possam ser navegados e operados do teclado+ JavaScript voltado para acessibilidade n%o deve
re6uerer um teclado para acessar tais eventos' JavaScript conta com eventos independentes do dispositivo
de usu9rio tais como onfocus e onc/ange 6ue s%o mais recomendados na maioria dos casos'
B%o se recomenda utilizar JavaScript de um )eito 6ue se)a confuso ou desorientador para 6ual6uer
usu9rio da internet' -or e2emplo+ usar JavaScript para alterar ou desabilitar a funcionalidade normal de
um navegador+ tal como mudar a forma com 6ue o bot%o direito ou o evento de atualiza%o funcionam+
deve ser evitado' Fa mesma forma+ eventos de interrup%o 6ue o usu9rio pode n%o estar ciente reduzem a
sensa%o de controle do usu9rio+ assim como scripts inesperados 6ue mudam o conte:do da p9gina'
(re6uentemente o processo de fazer p9ginas &eb comple2as t%o acess0veis 6uanto poss0vel se
transforma em um problema n%o trivial+ onde certas decises s%o assunto de debate e opini%o' Entretanto+
tecnologias assistivas est%o constantemente evoluindo e novas recomendaes e informaes relevantes
vem sendo continuamente publicadas na &eb'
)egurana
JavaScript e o F"M representam uma potencialidade para programadores maliciosos escreverem
scripts para rodarem em um cliente via &eb' Bavegadores s%o pro)etados para conter este risco de duas
maneiras' A primeira 6ue scripts s%o rodados em uma sandbo2 na 6ual s* podem e2ecutar aes
relacionadas . internet+ n%o tarefas de programa%o de prop*sito geral como criar ar6uivos' A segunda
6ue scripts s%o limitados pela regra da mesma origem7 scripts de um &eb site n%o tDm acesso a
informaes como nomes de usu9rio+ sen/as ou coo;ies enviados de outro site' A maioria dos bugs em
JavaScript relacionados . segurana s%o brec/as de uma das regras'
/ulnerabilidades inter0sites
5m problema comum relacionado . segurana a escrita de scripts inter-sites+ ou RSS+ uma
viola%o da regra da mesma origem' Jais vulnerabilidades ocorrem 6uando um atacante est9 apto a causar
em um site alvo+ como um site de banco+ a inclus%o de um script malicioso na p9gina &eb apresentada .
v0tima' " script neste e2emplo pode ent%o acessar a aplica%o do banco com privilgios da v0tima+
potencialmente revelando informaes secretas ou transferindo din/eiro sem a autoriza%o da v0tima'
Alguns navegadores incluem prote%o parcial contra ata6ues RSS refletidos+ no 6ual o atacante
fornece uma 5PK incluindo o script malicioso' Bo entanto+ mesmo usu9rios destes sites est%o vulner9veis
a outros ata6ues RSS+ como a6ueles onde o c*digo malicioso guardado em um banco de dados' Apenas
o correto desen/o de aplicaes &eb no servidor pode prevenir inteiramente ata6ues RSS'
Sulnerabilidades RSS tambm podem ocorrer por causa de erros de implementa%o por parte de
programadores de navegadores'
"utra vulnerabilidade inter-sites a falsifica%o de re6uisi%o inter-sites ou CSP(' Bo CSP(+ o
c*digo no site de um atacante faz com 6ue o navegador da v0tima tome aes n%o dese)adas pelo usu9rio
em um site alvo 3como transferDncia de din/eiro em um banco4' Ela funciona por6ue+ se o site alvo conta
apenas com coo;ies para autenticar re6uisies+ ent%o re6uisies iniciadas pelo c*digo no site do
atacante levar%o as mesmas credenciais leg0timas de login 6ue as re6uisies iniciadas pelo usu9rio' Em
geral a solu%o para CSP( re6uerer um valor de autentica%o em um campo &ebform escondido+ e n%o
somente nos coo;ies+ para autenticar 6ual6uer re6uisi%o 6ue possa ter efeitos duradouros' Serificar o
cabeal/o do IJJ- Peferrer tambm pode a)udar'
@Se6uestro JavaScript@ um tipo de ata6ue CSP( no 6ual uma tag TscriptU no site do atacante
e2plora uma p9gina no lado da v0tima 6ue retorna informa%o privada tal como JS"B ou JavaScript'
Solues poss0veis incluem re6uerer um to;en de autentica%o nos par,metros -"SJ e LEJ para
6ual6uer resposta 6ue retorne um JS"B privado 3mesmo 6ue n%o ten/a efeitos colaterais4G utilizar -"SJ
e nunca LEJ para re6uisies 6ue retornem um JS"B privadoG e modificar a resposta de forma 6ue n%o
possa ser usada via uma tag TscriptU 3atravs+ por e2emplo+ de um &rapping de um JS"B em um
coment9rio JavaScript4'
PHP
-I- 3um acrMnimo recursivo para @-I-7 I<perte2t -reprocessor@+ originalmente -ersonal Iome
-age4 uma linguagem interpretada livre e utilizada para gerar conte:do din,mico na Qorld Qide Qeb'
A linguagem surgiu em meados de $VVW+ como um pacote de programas CL! criados por Pasmus
Kerdorf+ com o nome -ersonal Iome -age Jools+ para substituir um con)unto de scripts -erl 6ue ele
usava no desenvolvimento de sua p9gina pessoal' Em $VV8 foi lanado o novo pacote da linguagem com
o nome de -I-#(!+ trazendo a ferramenta (orms !nterpreter+ um interpretador de comandos SHK' Mais
tarde+ Xeev Suras;i desenvolveu o analisador do -I- O 6ue contava com o primeiro recurso de orienta%o
a ob)etos+ 6ue dava poder de alcanar alguns pacotes+ tin/a /erana e dava aos desenvolvedores somente
a possibilidade de implementar propriedades e mtodos' -ouco depois+ Xeev e Andi Lutmans+
escreveram o -I- W+ abandonando por completo o -I- O+ dando mais poder . m96uina da linguagem e
maior n:mero de recursos de orienta%o a ob)etos' " problema srio 6ue apresentou o -I- W foi a cria%o
de c*pias de ob)etos+ pois a linguagem ainda n%o trabal/ava com apontadores ou /andlers+ como s%o as
linguagens Java+ Pub< e outras' " problema fora resolvido na vers%o atual do -I-+ a vers%o Y+ 6ue )9
trabal/a com /andlers' Caso se copie um ob)eto+ na verdade copiaremos um apontador+ pois+ caso /a)a
alguma mudana na vers%o original do ob)eto+ todas as outras tambm sofrem a altera%o+ o 6ue n%o
acontecia na -I- W'
Jrata-se de uma linguagem e2tremamente modularizada+ o 6ue a torna ideal para instala%o e uso
em servidores &eb' Fiversos m*dulos s%o criados no reposit*rio de e2tenses -ECK 3-I- E2tension
Communit< Kibrar<4 e alguns destes m*dulos s%o introduzidos como padr%o em novas verses da
linguagem' E muito parecida+ em tipos de dados+ sinta2e e mesmo funes+ com a linguagem C e com a
C11' -ode ser+ dependendo da configura%o do servidor+ embarcada no c*digo IJMK' E2istem verses
do -I- dispon0veis para os seguintes sistemas operacionais7 Qindo&s+ Kinu2+ (reeNSF+ Mac "S+ "S#2+
AS#W>>+ Bovell Bet&are+ P!SC "S+ A!R+ !P!R e Solaris'
Construir uma p9gina din,mica baseada em bases de dados simples com -I-+ 3em parte+ vale
lembrar4+ este provD suporte a um grande n:mero de bases de dados7 "racle+ S<base+ -ostgreSHK+
!nterNase+ M<SHK+ SHKite+ MSSHK+ (irebird+ etc'+ podendo abstrair o banco com a biblioteca AF"db+
entre outras' A Qi;ipdia funciona sobre um soft&are inteiramente escrito em -I-+ usando bases de
dados M<SHK7 o MediaQi;i'
-I- tem suporte aos protocolos7 !MA-+ SBM-+ BBJ-+ -"-O+ IJJ-+ KFA-+ RMK-P-C+ S"A-' E
poss0vel abrir soc;ets e interagir com outros protocolos' E as bibliotecas de terceiros e2pandem ainda
mais estas funcionalidades' E2istem iniciativas para utilizar o -I- como linguagem de programa%o de
sistemas fi2os' A mais not9vel a -I--LJZ' Jrata-se de um con)unto do -I- com a biblioteca LJZ+
portada do C11+ fazendo assim soft&ares inter-operacionais entre Qindo&s e Kinu2' Ba pr9tica+ essa
e2tens%o tem sido muito pouco utilizada para pro)etos reais'
*+INCI*AI) CA+ACTE+1)TICA)
A linguagem -I- uma linguagem de programa%o de dom0nio espec0fico+ ou se)a+ seu escopo se
estende a um campo de atua%o 6ue o desenvolvimento &eb+ embora ten/a variantes como o -I--LJZ'
Seu prop*sito principal de implementar solues &eb velozes+ simples e eficientes' Caracter0sticas7
Selocidade e robustez
Estruturado e orienta%o a ob)etos
-ortabilidade - independDncia de plataforma - escreva uma vez+ rode em 6ual6uer lugar
Jipagem din,mica
Sinta2e similar a C#C11 e o -erl
"pen-source
/etores e matri2es
"s vetores e matrizes em -I-+ diferente do 6ue ocorre em C#C11 e -ascal+ uma estrutura
din,mica+ o 6ue pode facilitar muito o trabal/o do programador'
5m e2emplo7
T[p/p
\vet>$ = arra<34G
\vet>$?A = @Sistemas operacionais@G
\vet>$?A = @Compiladores@G
\vet>$?A = @Nancos de dados@G
\vet>2 = arra<3$+ 2+ O+ W+ Y4G
\vet>O = arra<3 > =U >+ 2 =U O+ $> =U @item $>@4G
for 3\i = >G \i T count3\vet>$4G \i114 ]
ec/o \vet>$?\iA ' @Tbr #U@G
^
[U
" e2emplo acima demonstra trDs maneiras diferentes de declarar vetores'
*3* 4
Em )un/o de 2>>W foi lanada a vers%o Y do -I-+ introduzindo um novo modelo de orienta%o a
ob)eto+ incluindo a reformula%o dos construtores e adi%o de destrutores 3ver e2emplo conte2tualizado
em ane2o4+ visibilidade de acesso+ abstra%o de ob)eto e interfaces de ob)etos'
" tratamento de ob)etos do -I- foi completamente reescrito+ permitindo um desempen/o mel/or
e mais vantagens' En6uanto na vers%o anterior era preciso muito esforo para atender . orienta%o a
ob)etos e aos padres de pro)ectos 3alguns n%o eram poss0veis4+ o -I- Y veio para sanar essa deficiDncia'
Ainda sofre nesse sentido+ contudo+ por problemas devido a ser uma linguagem de tipagem fraca'
Indu!o de tipo
Besse sentido+ foi adicionada uma caracter0stica c/amada de indu%o de tipo+ de acordo com a
6ual podemos ter uma certa tipagem 6uando passamos ob)etos aos par,metros de uma fun%o 3ou
mtodo4+ algo inconceb0vel na vers%o anterior' Ser e2emplo conte2tualizado em ane2o'
/isibilidade
A visibilidade de uma propriedade ou mtodo pode ser definida com os seguintes modificadores
de acesso7 public+ protected ou private' !tens declarados como p:blicos podem ser acessados pelo ob)eto
3inst,ncia da classe4' Membros protegidos est%o acess0veis .s classes fil/as 3/erdadas4' A visibilidade
privada limita a apenas a classe 6ue define o atributo ou mtodo' Ser e2emplo conte2tualizado em ane2o'
*%&IM%+#I)M%
*olimor5ismo *aram.trico
Bo polimorfismo paramtrico+ um mesmo ob)eto pode ser utilizado uniformemente como
par,metro em diferentes conte2tos sem necessidade de alteraes' 5m mtodo 6ue e2ibe polimorfismo
paramtrico 3tambm c/amada de mtodo genrico4 permite 6ue o tipo do seu argumento se)a
determinado por um par,metro de tipo impl0cito ou e2pl0cito+ e2ecutando uma mesma opera%o+
independente do tipo do argumento' " -I- n%o re6uer 3ou suporta4 a defini%o de tipo e2pl0cita na
declara%o de vari9veis7 o tipo de uma vari9vel determinado pelo7
conte2to em 6ue a vari9vel utilizada' !sto significa 6ue+ se vocD atribuir um valor string para a
vari9vel \var+ \var se torna uma string
Se vocD ent%o atribuir um valor inteiro para \var+ ela se torna um inteiro' -or isso o -I- n%o adota
este tipo de polimorfismo+ pois n%o possui par,metros genricos'
*olimor5ismo por Inclus!o
Bo polimorfismo por inclus%o um ob)eto pode ser visto como pertencendo a diferentes classes 6ue
n%o precisam ser dis)untas' " -I- adota esse tipo de polimorfismo+ pois uma linguagem orientada a
ob)eto 6ue permite recursos de /erana'
*olimor5ismo por Coer!o
" -I- tambm suporta o polimorfismo por coer%o+ no 6ual a linguagem dispe de uma opera%o
sem,ntica para converter um argumento para um tipo esperado por uma fun%o+ em uma situa%o 6ue de
outra forma resultaria em um erro de tipo'
VETORES E MATRIZES
Jemos os seguintes tipos de dados b9sicos 7 inteiros+ reais+ l*gicos e literais' -ara trabal/ar com
con)untos de vari9veis do mesmo tipo b9sico+ usamos o conceito de matriz'
Conceito e6uivalente ao da matem9tica'
Matri2
Matriz um con)unto de vari9veis+ cada uma com um valor associado+ como se fossem vari9veis
simples+ mas todas compartil/am o mesmo nome' _ndices s%o utilizados para referenciar os elementos
deste con)unto'
E2emplo7
um con)unto A de O elementos representado por A$ A2 AO onde A o nome do con)unto e a
identifica%o dos elementos individuais feita pelo nome do con)unto seguido do 0ndice' Kogo+ A2 o
segundo elemento'
Nota!o Matri2es
Jipo nome`vari9vel?dimens%o$Aa?dimens%oBAG
E2emplo7 S?OA uma matriz com uma dimens%o de taman/o O'
E2emplo7 M?O+OA uma matriz de duas dimenses+ respectivamente O lin/as e O colunas'
/etores
Setores s%o matrizes 6ue possuem somente uma dimens%o' -odem ser vistos como listas de elementos
do mesmo tipo' "peraes principais sobre vetores7
leitura
escrita
soma dos elementos
ordena%o
Keitura de um vetor v?OA7
para i = > at O
leia3 v?iA 4G
fim para
Escrita de um vetor v?OA7
para ) = > at O
escreva3 v?)A4G
fim para
Soma dos elementos de um vetor v?OA7
soma = >
para i = > at O
soma = soma 1 v?iAG
fim para
C$IDAD%6 a varia!o do ndice do vetor deve 5icar dentro dos limites da dimens!o 7ue o ndice
representa8
E2emplo7 Feclara uma matriz de Y lin/as e $> colunas no total de Y> posies' Keia estas posies e
imprima o valor na tela'
/etor do Tipo de Dado Caracter
-ara armazenar o nome de uma pessoa+ por e2emplo+ se deve criar uma estrutura de dados composta
/omogDnea do tipo de dado caracter' Jodo nome consiste em um con)unto de caracteres 3letras+ caracteres
especiais e at d0gitos numricos+ se assim os pais desta pessoa dese)arem4'
Especificamente para este tipo de vetor+ 6ue envolve um con)unto de caracteres+ estabelecida uma
e2press%o 6ue a caracteriza facilmente+ sendo est9 e2press%o importante na 9rea de !nform9tica7 string ou
simplesmente cadeia de caracteres'
A sinta2e a seguir declara um vetor de caracteres com a capacidade de armazenar at $> caracteres+ sendo
esta declara%o representada graficamente ap*s a instru%o de cria%o deste vetor c/amado nome'
nome 6 vetor 9>88V: de caracter
nome
A B A C K A P A '
> $ 2 O W Y 8 b V
A representa%o acima mostra um vetor de dez elementos+ isto + tem a capaciadade de $> vari9veis do
tipo caracter agrupadas em um idenmtificador+ nome + independentes por sua posi%o dentro do vetor+
indicadas por seu 0ndice 6ue varia de zero at V 3nove4'
"bserve 6ue o caracter espao entre a palavra ABA e CKAPA 3no 0ndice O4 consiste em um :nico
caracter especial 3espao em branco4+ ocupando sua respectiva posi%o no vetor nome' -ara acessar cada
uma de suas posies ser9 usado o identificador do vetor+ seguido do valor de seu 0ndice entre colc/etes'
Jodo conte:do estudado at o momento n%o solicitava a cria%o de um vetor de caracteres para o
armazenamento de nomes+ frases e e2presses de caracteres importantes para solu%o de seu problema
computacional' !sso acontece somente nesta ferramenta de aprendizagem inicial ao desenvolvimento de
algoritmos+ 6ue se tornaram programas computacionais traduzidos corretamente para uma linguagem de
programa%o'
Bestas linguagens fundamental a correta e completa declara%o do recurso 6ue seu futuro programa ir9
manipular em mem*ria+ sendo relevante compreender o 6ue o Sisualg cria+ mas esconde de n*s iniciantes
nesta 9rea fundamental para !nform9tica como um todo 3sub9rea da -rograma%o4'
Bo entanto+ a assimila%o deste conte:do sobre estrutura de dados permitir9 6ue os vetores de tipo
caracter possam ser declarados de forma e2plicita no pr*2imos algoritmo 6ue ten/am a necessidade de
trabal/ar com as string no pr*prio Sisualg+ agilizando a aprendizagem sobre estas estruturas de dados'
Se for criada uma vari9vel caracter com identificador de nome usando a sinta2e simples estudada at o
momento+ esta vari9vel s* ter9 a capacidade da armazenar uma letra como sendo o nome de uma pessoa'
-ortanto+ ser9 necess9rio criar um vetor do tipo caracter com taman/o coerente com o armazenamento
dese)ado'
algoritmo cnome de pessoad
;; )ntese
;; %bjetivo6 arma2ena o nome de uma pessoa
;; Entrada6 < nome
;; )ada6 a primeira letra do nome in5ormado pelo usu=rio
;; Declara'es
var
au2iliar 6 inteiro
nome 6 vetor ?>88VA de caracter
inicio
au2iliar >
escreva3cFigite o nome de uma pessoa ou ponto final para terminar7 c4
repita
leia 3nome9au"iliar:4
au2iliar au2iliar 1 $
ate 3nome?au2iliar - $A = c8d ou au2iliar = $>4
escreva3nome9>:4
5imalgoritmo
Beste e2emplo o usu9rio digitar9 uma letra de cada vez+ pressionando a tecla EBJEP ap*s cada letra
digitada+ sendo todas elas armazenadas no vetor nome' -ara o e2emplo+ onde o usu9rio informe o nome
P5!+ cada letra ser9 armazenada em uma posi%o do vetor+ estando o P no 0ndice >+ ou se)a+ no vetor
nome?>A' A letra 5 estar9 no nome?$A e a letra ! em nome?2A' Caso o usu9rio digite o caracter especial
ponto final 384 o algoritmo terminar9 sua e2ecu%o de leitura e mostrar9 somente o primeiro caracter do
nome informado'