Buscar

Computação Aplicada - (Desbloqueado) (1)

Prévia do material em texto

WFernando Bastos  1
 
 
 
Computação Aplicada 
 
Engenharia 
 
WFernando Bastos 
 
 
 
WFernando Bastos  2
Admirável mundo 
novo 
 
A velocidade da evolução da informática cria 
uma sucessão de novidades e desafia o 
profissional da área a um aprendizado contínuo 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
WFernando Bastos  3
História 
 
Entre a invenção do ábaco, o primitivo instrumento de calcular desenvolvido 
pelo homem na Antiguidade, e a criação do primeiro computador eletrônico, 
em 1946, passaram-se mais de 5 mil anos. Desde então, o ritmo de 
evolução nessa área da tecnologia vem se acelerando de tal modo que, em 
poucas décadas, já representa a maior revolução no estilo de vida do ser 
humano de que se tem notícia. 
A moderna Tecnologia da Informação e Comunicação (TIC), ou 
simplesmente TI, contudo, parece mal ter começado, se considerarmos sua 
incrível capacidade de inovação: desde que se consolidou no final do século 
passado, a informática é a área que mais cresce, cria empregos e inova em 
todo o planeta. Uma frase célebre de Bill Gates, fundador da Microsoft, é 
ilustrativa nesse sentido: “Se a General Motors tivesse evoluído 
tecnologicamente tanto quanto a indústria de computadores evoluiu, 
estaríamos todos dirigindo carros que custariam 25 dólares e rodando 420 
quilômetros por litro”. 
No comando e na retaguarda de tamanho desenvolvimento, estão 
verdadeiros exércitos de cientistas, engenheiros e técnicos, que 
desempenham um variado e instigante leque de funções. “Não existe um 
dia igual ao outro nessa área”, conta Edson Luiz Pereira, executivo de 
parcerias educacionais da IBM. 
Esse dinamismo permite ao técnico em informática algo que parece 
impossível para a imensa maioria dos trabalhadores de outras áreas: 
divertir-se enquanto trabalha. 
Infelizmente, porém, os mesmos jovens que usufruem diariamente as 
novas tecnologias não têm consciência das possibilidades oferecidas por 
esse mercado de trabalho. 
“Há um certo preconceito. Ainda se acredita que informática é algo para 
nerds”, diz Walter José Dias, gerente acadêmico da Microsoft no Brasil. 
A figura do nerd, o gênio precoce de óculos com lentes grossas e imbatível 
no jogo de xadrez, que horrorizava a juventude rebelde dos anos 1970, 
permanece no imaginário dos adolescentes até hoje. Mas não é preciso ser 
genial para ser bom em informática. Ao contrário. A primeira condição é 
simplesmente gostar de aprender. 
A segunda, ter um raciocínio lógico bem desenvolvido. 
Sem raciocínio lógico, fica difícil mergulhar no criativo mundo da 
informática. 
Quem se aventura nessa área, no entanto, garante que vale a pena. Entre 
seus pontos mais positivos está a abrangência de diferentes temas, que 
possibilita ao profissional mudar frequentemente de função e mesmo de 
especialidade. Isso sem falar em outro atrativo bastante valorizado nos 
tempos de hoje: os salários. 
 
Mercado promissor 
 
WFernando Bastos  4
Os técnicos em TI recebem, em média, salários 80% mais altos do que os 
pagos no mercado formal de trabalho no Brasil. Nas empresas, algumas 
funções técnicas são tão bem remuneradas quanto altos cargos executivos. 
Isso porque a demanda por profissionais da área ainda supera largamente a 
quantidade de técnicos disponíveis. Para se ter uma idéia, no ano 2008, 
apesar da crise financeira global, a demanda não atendida por profissionais 
de informática no País chegou a 100 mil postos de trabalho. Um fenômeno 
que, em diferentes proporções, ocorre no mundo inteiro. 
“Deixamos de exportar serviços de TI por falta de técnicos capacitados”, diz 
Pereira, da IBM. “O mercado externo é o grande gerador de empregos 
atualmente. Para programar aplicativos ou operar sistemas, já não é preciso 
estar ao lado do cliente.” 
Outra tendência que vem se consolidando no setor é a expansão mais 
acelerada na área de desenvolvimento de softwares do que na de 
manutenção de sistemas. 
“Programação é o segmento que mais vai gerar emprego, em relação a 
qualquer outra área da economia”, diz Pereira, referindo-se aos próximos 
anos. Um efeito direto da internet – em que as novidades se sucedem em 
velocidade quase inacreditável – bem como das diferentes aplicações a ela 
associadas. Além disso, computadores passaram a fazer parte de nossas 
vidas mesmo em lugares onde nem sequer percebemos sua presença: 
automóveis, utilitários domésticos, repartições públicas etc. 
A microeletrônica comandada por softwares é a alma invisível no setor de 
serviços – em especial nos segmentos financeiro, comercial e de 
telecomunicações –assim como na área de educação, cultura e 
entretenimento. Na indústria, os processos produtivos há muito se tornaram 
automáticos e os bens de consumo adquirem cada vez mais funções 
inteligentes. Não é por acaso que nossa época recebeu o nome de era 
digital. 
 
Formação profissional 
 
Atender a todas essas necessidades do mundo moderno requer uma boa 
formação. 
Fazer um curso técnico costuma ser o primeiro passo em direção a uma 
carreira em TI. Como são muitas funções e constantes novidades, o 
profissional deve procurar, primeiro, um segmento específico de atuação e, 
depois, continuar se atualizando nele: “É preciso escolher uma 
especialidade ao concluir o curso técnico ou faculdade. Não existem no 
mercado vagas para técnicos em TI, mas sim para programadores Java, 
Cobol, administradores de bancos de dados”, explica Walter Dias, da 
Microsoft. 
Para o técnico habilitado, as principais companhias de software, como IBM, 
Microsoft e Oracle, entre outras, emitem certificações comprovando que o 
profissional conhece bem suas respectivas tecnologias – e, portanto, será 
capaz de desenvolver e criar aplicativos a partir dessas bases. Quanto mais 
certificações de conhecimento de produtos e de experiência profissional o 
técnico possuir, mais valorizado será seu trabalho. 
WFernando Bastos  5
Historicamente, a Informática vem causando grandes transformações no 
modo de vida do ser humano, cada vez mais dependente dessa tecnologia 
para trabalhar, divertir-se e se comunicar. Em breve, quem não conseguir 
operar um computador pessoal poderá se tornar uma espécie de 
analfabeto: sua comunicação com o mundo será restrita, uma vez que os 
conteúdos de todas as áreas da cultura estão migrando velozmente para a 
internet. 
Assim, nem é preciso aspirar a uma carreira técnica para perceber o quanto 
é útil estudar Informática. “Com o advento da internet, todos têm de ter 
conhecimentos básicos. Estudar é recomendável, inclusive, para poder 
aproveitar essa enorme gama de recursos da era digital”, diz Luiz Eduardo 
Gonzalez, professor do Centro Paula Souza, que tem a formação profissional 
por competências como uma das metas político-pedagógicas de sua 
Unidade de Ensino Médio Técnico – CETEC (consulte o quadro Formação por 
Competências). 
 
 
Passado, presente e futuro 
 
Na opinião de diversos especialistas, uma das transformações mais radicais 
nos modos de comunicação social do ser humano foi o advento da chamada 
Web 2.0, que nada mais é do que o conceito que define a utilização da 
internet de maneira colaborativa, dinâmica, com trocas de arquivos e 
informações diretamente entre os participantes. Foi ela que pavimentou o 
caminho para as redes sociais (como Orkut e Facebook) e os sites de 
informação e conteúdo alimentados abertamente, como a Wikipédia, o 
YouTube, entre outros. Essa nova maneira de usar a internet foi sendo 
engendrada aos poucos por um grupo anônimo de cientistas, pesquisadores 
e técnicos do mundo inteiro. Eles foram aperfeiçoando as descobertas uns 
dos outros e quase nem perceberam como, num certo momento, no início 
do século XXI, a sonhada Web 2.0 havia se imposto ao mundo de modo 
retumbante. “Não há um dono, um criador. Quando percebemos, 
a Web 2.0 eraalgo presente”, diz Gonzalez. “A rede mundial não é apenas 
um depósito de conteúdos, como o livro, por exemplo. A grande diferença é 
que possibilita a interação do usuário diretamente com a informação.” 
Essa dinâmica tecno-social começa a impactar de modo explícito a forma 
como estruturamos nossos pensamentos, idéias e percepções. Olhando para 
as novas gerações, é possível perceber que a internet já foi incorporada a 
uma nova forma de construção e articulação do conhecimento. Tudo o que 
se quer saber está lá, em sistemas de busca cada vez mais inteligentes e 
eficazes, disponíveis gratuitamente para consulta a apenas alguns cliques 
de distância. E, o mais interessante, com milhares de pessoas dispostas a 
discutir os mais variados assuntos, sejam especialistas, leigos, sejam 
simplesmente curiosos. “Isso sem contar as novidades que estão chegando 
por aí: redes Wimax e 3G, que permitem conexão sem fio em alta 
velocidade em locais públicos; a IPTV, que é o conteúdo de TV sob 
demanda, em que você poderá criar seu próprio canal; e o papel eletrônico, 
ou iPaper, uma superfície fina como um papel que funciona como uma tela 
de computador”, comenta Rafael Lamardo, professor de Tecnologia da 
WFernando Bastos  6
Informação dos cursos de Pós-Graduação da Escola Superior de Propaganda 
e Marketing (ESPM). 
Outra novidade importante é o conceito de Web 3.0, também conhecida 
como a web semântica, que para muitos representa a terceira onda da 
internet. Trata se de um novo modo de organização e disponibilização das 
informações oferecidas na rede, mais ágil e inteligente que a atual. 
Com tantas novidades e tecnologias em desenvolvimento, as possibilidades 
desse novo ambiente 100% conectado são incríveis. Aplicações envolvendo 
localização por GPS e base de dados da rede nos permitirão que encontrar o 
que desejarmos ao nosso redor, de um bom restaurante a um amigo, bem 
como acionar comandos e acessar arquivos remotos. Filmes e programas de 
TV não terão mais horários, pois poderão ser vistos na hora que quisermos. 
Poderemos acessar tudo o que o conhecimento humano já produziu com 
apenas um clique. E o melhor é que isso será possível para qualquer 
pessoa, em qualquer momento, em qualquer lugar. É nesse futuro 
assombroso que os profissionais de TI terão um papel de destaque, 
ajudando de maneira decisiva na construção de um mundo melhor. 
 
 
 
 
 
 
 
 
 
 
WFernando Bastos  7
 
 
 
 
Introdução ao 
desenvolviment
o de software 
 
 
 
 
WFernando Bastos  8
 
 
A automação, há algum tempo, tornou-se um diferencial 
competitivo para as organizações. Tal modernização pode ser entendida 
como o esforço para transformar as tarefas manuais repetitivas em 
processos independentes, realizados por máquinas. Com isso, a gestão 
passou por uma verdadeira revolução: erros que antes eram cometidos por 
falhas de cálculos agora são quase nulos. As empresas não precisam se 
voltar tanto para atividades contínuas e podem se dedicar mais ao foco do 
seu negócio. Os benefícios disso se estendem por toda a cadeia de valor, 
desde compra de materiais, produção e vendas até entrega de produtos 
para os clientes e pós-venda. 
O desenvolvimento de software é uma atividade muito complexa. Sim, 
porque não existe uma solução pronta para cada cenário. O trabalho é 
sempre realizado por pessoas, o que torna o sucesso do projeto 
diretamente relacionado à competência da equipe e à maneira como se 
trabalha. Outra dificuldade considerável é o fato de, muitas vezes, não ser 
adotado um processo definido para apoiar essa tarefa. 
A tecnologia da informação passou por uma grande evolução nos últimos 
anos. 
Com isso, há exigências contínuas e renovadas de aumento na qualificação 
dos profissionais da área, o que, consequentemente, favorece o seu 
desenvolvimento. 
Afinal, esse segmento é composto pela tríade pessoas, gestão e tecnologia. 
O emprego desse tripé levou a uma significativa melhoria no 
desenvolvimento das companhias chamadas inteligentes, aquelas que 
necessitam de sistemas tolerantes a falhas e capazes de gerar informações 
críticas para o processo de decisão. Na década de 1960 as empresas 
trabalhavam com o conceito de processamento centralizado de dados e 
muitos dos seus recursos eram direcionados ao CPD (Centro de 
Processamento de Dados). Os sistemas daquela época rodavam de forma 
mecanizada e em batch (processamento em lote). 
Com o passar do tempo, porém, as corporações perceberam a necessidade 
e a importância de se basear em informações concretas para tomar suas 
decisões e, assim, aprimorar a gestão dos negócios. Então, abandonaram o 
padrão do tradicional processamento de dados e passaram a trabalhar com 
WFernando Bastos  9
centro de informações. Nesse modelo, já havia integração dos sistemas, 
mesmo que ainda existissem algumas redundâncias, ou seja, dados 
duplicados que levavam ao retrabalho. 
Atualmente, as organizações vivem a era da Tecnologia da Informação (TI). 
Agora, os sistemas são todos integrados, possibilitando a otimização dos 
processos e a diminuição da redundância de dados. Com isso, é possível 
melhorar muito o desempenho da empresa, pois os processos se tornam 
mais estruturados, fato que minimiza o retrabalho (REZENDE, 2002). 
 
1.1. Conceitos iniciais 
 
Com a crescente necessidade das empresas de contar com informações 
cada vez mais rápidas e confiáveis, foi necessário desenvolver não apenas 
sistemas, como também novos hardwares. Era preciso ter máquinas que 
atendessem às especificações de softwares de alto desempenho e de 
grande disponibilidade. 
 
I.2. Gerações de computadores 
 
Vamos conhecer agora as cinco gerações de equipamentos, a tecnologia 
empregada 
em cada uma delas, suas vantagens e desvantagens. 
• Primeira (1940-1958) 
 
O primeiro computador digital eletrônico de grande escala foi o Eniac 
(Electrical Numerical Integrator and Calculator, ou integradora e calculadora 
numérica elétrica). Começou a ser desenvolvido em 1943, durante a 
Segunda Guerra Mundial, para auxiliar o Exército dos Estados Unidos nos 
cálculos de balística. Foi lançado em fevereiro de 1946 pelos cientistas 
norte-americanos John Presper Eckert e John W. Mauchly, da Electronic 
Control Company. O Eniac realizava 5 mil operações por segundo, 
velocidade mil vezes superior à das máquinas da época. No entanto, se 
comparado com os computadores atuais, o seu poder de processamento 
seria menor do que o de uma simples calculadora de bolso. 
Mas a primeira geração de máquinas teve como marco histórico o 
lançamento do primeiro computador comercial, o Univac I (Universal 
Automatic Computer ou computador automático universal), em 1951. Ele 
possuía cem vezes a capacidade do Eniac, era dez vezes mais rápido e tinha 
um décimo de seu tamanho. 
O Univac I tinha como componentes entre 10 mil e 20 mil válvulas 
eletrônicas, com duração média de oitocentos a mil horas. 
O primeiro modelo do Univac foi construído pela empresa Eckert-Mauchly 
Computer Corporation, adquirida pela Remington Rand pouco depois. Hoje, 
os direitos sobre o nome Univac pertencem à Unisys, que aponta a Força 
Aérea Americana, o Exército e a Comissão de Energia Atômica norte-
americanos como seus primeiros clientes. Inicialmente, o Univac era usado 
para executar funções no Escritório de Censo dos Estados Unidos. Além de 
órgãos governamentais, eram usuárias do computador empresas como a 
General Electric, a Metropolitan Life e a Du Pont. Naquela época, cada uma 
WFernando Bastos  10
das 46 unidades fabricadas do Univac custava US$ 1 milhão. Em 1953, 
surgiu o IBM 701 e, em 1954, o IBM 650. Ambos tiveram muito sucesso de 
vendas para a época, chegando a 2 mil unidades em cinco anos. 
 
• Segunda (1958-1964) 
 
A fabricação dos computadores foi alterada e as válvulas deram lugar aos 
transistores, cuja vida útil era bemmaior (90 mil horas). Com isso, as 
máquinas ficaram mais rápidas e menores. Pertence a essa segunda 
geração 
o IBM 7090, que possuía 40 mil transistores e 1,2 milhão de núcleos 
magnéticos. 
Ocupava uma área de 40 m2, contra a de 180 m2 do Eniac. 
 
• Terceira (1964-1971) 
 
Em 1964, a IBM anunciou o lançamento da série 360 com circuito 
integrado. 
Os circuitos impressos são milimétricos e podem conter transistores, 
resistências 
e condensadores. Para se ter uma idéia, 50 mil desses conjuntos cabem em 
um 
dedal. A novidade permitiu um grande aumento na velocidade de 
computação 
de dados, passando de milionésimos de segundo para bilionésimos de 
segundo. 
Assim, um programa que era executado em uma hora, no modelo de 
computador 
de 1951, levava entre três e quatro segundos para rodar nos equipamentos 
da terceira geração. 
• Quarta (1971-1987) 
 
A integração de circuitos teve grandes incrementos, com crescimento de mil 
vezes a cada dez anos. Foram introduzidas várias escalas de incorporação, 
definidas pelo número de conjuntos que podem ser colocados em uma única 
lâmina miniaturizada feita de silício, o famoso chip. Assim, foram surgindo 
tecnologias consecutivas: em 1970, LSI (Large Scale Integration – 
integração em larga escala); em 1975, VLSI (Very Large Scale Integration – 
integração em muito larga escala); e, em 1980, ULSI (Ultra Large Scale 
Integration – integração em ultralarga escala). 
 
• Quinta (1987- primeira década do século 21) 
 
A geração de equipamentos em uso na primeira década do século 21 surgiu 
em 1987, com o uso de novas tecnologias, principalmente relacionadas a 
dispositivos ópticos e a telecomunicações. Houve aumento de 
processamento paralelo, diversidade de formato, incremento da capacidade 
computacional e de armazenamento, assim como difusão do processamento 
distribuído. Além disso, delineou-se a tendência de convergência de 
WFernando Bastos  11
computadores e aparelhos de comunicação, o que facilitou a 
interoperabilidade e a universalização da operação do 
sistemas, assim como a sua normatização. 
 
1.3. Gerações de linguagem de programação 
 
É importante conhecer as gerações de linguagens de programação, para 
entender bem o contexto atual (SWEBOK, 2004). 
 
Primeira (1Gl) 
 
A primeira geração de programação utiliza apenas linguagem de máquina, 
ou seja, o sistema binário de 0 (zero) e 1 (um) para o desenvolvimento dos 
softwares. 
Sua desvantagem é ser pouco intuitiva, pois não utiliza linguagens mais 
sofisticadas que permitem a portabilidade do programa, isto é, o código 
utilizado acaba restrito a um único tipo de hardware e à arquitetura 
utilizada. 
 
Segunda (2Gl) 
 
A linguagem de programação chamada Assembly representa a segunda 
geração. 
Mais próxima do ser humano do que da máquina (como acontecia na 
1GL), cada Assembly ainda é bastante associada à arquitetura do 
computador, fazendo com que a 2GL também seja pouco portável entre 
ambientes. 
 
Terceira (3Gl) 
 
A terceira geração das linguagens de programação está muito próxima do 
ser 
humano, pois é facilmente entendida por uma pessoa com pouco – ou 
nenhum 
– conhecimento de informática. Isso porque é similar à comunicação do dia 
a dia. Essa geração é representada pelas linguagens Cobol, Fortran, Algol, 
Basic, C, C++, entre outras. Para mais informações sobre a 3GL veja 
quadro abaixo. 
 
Quarta (4Gl) 
 
A linguagem SQL (Structured Query Language, ou Linguagem de Consulta 
Estruturada) tornou-se tão popular que passou a representar toda a quarta 
geração. Ainda hoje, é bastante utilizada como linguagem de manipulação e 
consulta de banco de dados, como o SQL-Server da Microsoft, Oracle 
Database da Oracle e MySQL da Sun. 
A principal característica das linguagens de quarta geração é descrever o 
que deve ser feito, permitindo ao programador visar um resultado imediato. 
São consideradas capazes de, por si sós, gerar códigos, ou seja, os RADs 
(Rapid Application Development, ou Desenvolvimento Rápido de Aplicação), 
WFernando Bastos  12
com os quais podem ser criadas aplicações, mesmo sem se especializar na 
linguagem. 
Também nesse grupo estão as linguagens orientadas a objetos. 
 
Quinta (5Gl) 
 
A quinta geração ainda está pouco desenvolvida e engloba as linguagens 
para inteligência artificial. Sua maior representante é a LISP, nome 
originado da expressão LISt Processing (Processamento em Lista), já que a 
lista é a sua estrutura de dados fundamental. 
Para desenvolver um software pode-se utilizar uma geração de linguagem 
ou um conjunto delas. Entretanto, o melhor resultado no projeto final é 
obtido quando se vence o desafio de adequar a programação aos sistemas 
de informação de diversas áreas do conhecimento. 
 
Roger S. Pressman indica sete áreas ou categorias potenciais de aplicação 
de softwares em seu livro Engenharia de Software (PRESSMAN, 2006). 
Para saber mais sobre essas sete áreas, consulte o quadro abaixo. 
 
1.4. processo de desenvolvimento 
 
Na área de tecnologia da informação, desenvolvimento de sistemas significa 
o ato de elaborar e implementar um programa, ou seja, entender as 
necessidades dos usuários e transformá-las em um produto denominado 
software, de acordo com a definição de Ana Regina Cavalcanti da Rocha, 
no seu livro Qualidade de Software: Teoria e Prática (DA ROCHA, 2004). 
Os processos de desenvolvimento são essenciais para o bom andamento do 
projeto de um software, assim como a compreensão do sistema como um 
todo. 
Quanto mais aumenta a complexidade dos sistemas, mais difícil se torna a 
sua visibilidade e compreensão, portanto, sem um processo bem definido o 
projeto tem grande chance de insucesso. 
O processo envolve atividades necessárias para definir, desenvolver, testar 
e manter um software. Exige inúmeras tentativas de lidar com a 
complexidade e de minimizar os problemas envolvidos no seu 
desenvolvimento. E devem ser levados em consideração fatores críticos: 
entrega do que o cliente deseja, com a qualidade, o prazo e o custo 
acordados (PMI, 2004). 
Para assegurar qualidade e padrão aos projetos, devem ser seguidos 
modelos de desenvolvimento de software: em cascata, iterativo ou 
incremental e prototipagem. 
Também é importante levar em conta o ciclo de vida de um programa, 
desde a sua concepção até a sua extinção. Logo, é necessário saber quanto 
tempo o software ficará em funcionamento e quais os benefícios gerados 
durante esse período, sempre tendo em mente o retorno do investimento 
(FOWLER, 2009). 
É crucial entender perfeitamente os entraves envolvidos no 
desenvolvimento de um software. Embora não exista uma conduta padrão, 
é sempre bom partir do princípio de que se está em busca de soluções para 
os problemas do cliente. 
WFernando Bastos  13
Com a definição de objetivos, atividades e participantes, consegue-se a 
excelência no desenvolvimento de software, pois há gestão, controle e 
padronização do processo. Tudo isso diminui os riscos de problemas com 
cronograma, treinamento, qualidade e aceitação do sistema pelos usuários. 
Vejamos quais são os objetivos, as atividades e os participantes. 
 
1.4.1. objetivos 
 
Definição: alinhar todas as atividades a executar no decorrer de todo o 
projeto e, assim, desenvolver tudo o que foi previsto no seu escopo. 
Planejamento: definir, em um cronograma, quando, como (quais os 
recursos de hardware e de software necessário) e quem irá realizar 
determinada tarefa. 
Controle: ter sempre meios de saber se o cronograma está sendo cumprido 
e criar planos de contingência caso haja problemas no fluxo. 
Padronização: seguir as mesmas metodologias por todos os envolvidos no 
projeto para não haver dificuldades de entendimento. 
 
1.4.2. atividades 
 
Levantamento de requisitos: entender a necessidade do cliente e as 
regras do seu negócio (é a fase mais importante do desenvolvimento). 
Análisede requisitos: definir o que fazer sob o ponto de vista de análise 
de sistemas. 
Projeto: desenvolver o sistema já com cronograma, necessidades e riscos 
preestabelecidos. 
Implementação: começar a usar um novo processo. 
Testes: analisar se todas as funcionalidades solicitadas pelo cliente no 
levantamento de requisitos estão funcionando corretamente. 
Implantação: disponibilizar os processos para utilização pelo usuário final. 
 
 
 
 
 
 
 
WFernando Bastos  14
 
Lógica de 
programação 
 
Fluxograma e pseudocódigo 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
WFernando Bastos  15
A lógica computacional é um dos primeiros passos para quem 
pretende entrar no mundo da computação. Normalmente, 
não percebemos sua aplicação para resolver diferentes níveis 
de problemas nem sua relação com outras áreas da ciência. Isso porque, 
em geral, a lógica computacional está associada à lógica matemática 
(FORBELONE, 2005). É um recurso que permite a criação de alternativas 
viáveis e tecnicamente corretas, eficientes e rápidas. Antes de 
resolver um problema, no entanto, temos de saber interpretá-lo. Assim, 
evitam-se resultados indesejáveis ou desvios de percurso, da mesma 
maneira que surge a oportunidade de eliminar eventuais dúvidas, definindo 
o melhor algoritmo, que pode ser o pseudocódigo ou o fluxograma. 
A maioria das atividades que executamos é resultado de uma sequência de 
passos lógicos. Por exemplo, amarrar o cadarço de um tênis, abrir uma 
porta, trocar uma lâmpada ou fazer aquele delicioso bolo de chocolate. A 
sequência das etapas, ou melhor, das operações a executar, é determinada 
pelo algoritmo de forma lógica. Uma maneira mais simples de dizer isso é 
que a sucessão de ações faz todo o sentido. Usando o mesmo exemplo do 
bolo, o começo de tudo é reunir os ingredientes e usá-los na sequência 
certa. É assim também com as operações de cálculos, representadas pelo 
pseudocódigo a partir de comandos no formato de texto (exatamente como 
uma receita) ou pelo fluxograma de forma gráfica. E o fato de ser 
constituído por símbolos geométricos facilita o processo de visualização das 
operações. 
 
1.1. Fluxograma e pseudocódigo 
 
Para entender melhor o conceito, vamos elaborar, resumidamente, um 
algoritmo que represente os passos necessários para que alguém tome um 
refrigerante em uma lata: 1. pegar o recipiente; 2. abrir a tampa; 3. tomar 
o conteúdo. 
 
Pseudocódigo 
 
Os algoritmos são desenvolvidos em uma linguagem denominada 
pseudocódigo ou, como preferem alguns autores, português estruturado. 
Podem ser criados sem o formalismo das linguagens de programação, mas 
obedecem a uma regra básica de estruturação: cabeçalho, declaração e 
instruções. 
 
Um algoritmo deve ter como característica um número finito de passos, 
descritos de forma precisa e que possam ser executados em um 
determinado tempo. 
Pode permitir zero ou mais entradas de dados e gerar saídas de dados 
refinados. Para construir um algoritmo, é preciso usar informações claras e 
objetivas, geralmente compostas de um verbo ou de uma frase direta. 
WFernando Bastos  16
 
1.2. tipos de dados 
 
A manipulação de dados em um algoritmo – ou até mesmo nas linguagens 
de programação – só é possível com base em algumas regras fundamentais 
para a definição dos tipos de dados. É preciso diferenciar um dado com 
números ou outros tipos de caracteres. 
 
• numéricos inteiros 
 
Esse tipo de dado é representado por números não fracionados positivos ou 
negativos, 
como: 10, 50, -56, -1.000 etc. 
 
• numéricos flutuantes 
 
São representados por números fracionados positivos ou negativos, por 
exemplo: 
10.5, -45.78, 178.67 etc. 
 
• Caracteres ou literais 
 
É o maior conjunto de dados. São representados por letras, números, 
símbolos 
e espaço em branco, sempre entre aspas. Exemplo: “cadeira”, “100”, 
“R$ 10.00”, “11h00” etc. 
 
• atribuição e declaração 
 
Atribuir um valor qualquer para uma constante ou uma variável requer 
o uso do sinal de “” ou “=”. Isso quer dizer que o valor na frente do sinal 
será armazenado no elemento anterior ao sinal de atribuição. Veja: 
 
nome  “Joãozinho” idade  10 pi  3.14 
 
Independentemente do tipo de dado adotado – caracteres variados 
(“Joãozinho”), 
números inteiros (10) ou flutuantes (3.14) –, o processo de atribuição é o 
mesmo. 
Mas a declaração requer cuidado. Por isso, procure escolher o nome da 
variável de 
acordo com o tipo de dado que será recepcionado, inicie sempre com letras 
o nome 
de sua variável ou constante e não utilize espaço em branco ou caracteres 
especiais, 
com exceção do underline (_). Exemplos: 
 
nome  “Joãozinho” 
idade  0 
WFernando Bastos  17
minha_idade  15 
pag_final  “R$ 1.479,00” 
 
1.4. operadores 
 
Os operadores são utilizados pelos pseudocódigos. O mesmo acontece com 
as 
linguagens de programação, cuja função é realizar as diferentes operações 
de 
aritmética e de lógica em um ambiente computacional. 
• aritméticos 
Esse grupo tem como responsabilidade realizar as operações aritméticas 
(tabela 2) de um pseudocódigo. As operações serão realizadas de acordo 
com a prioridade, ou seja, parênteses, potência, multiplicação, divisão e, 
por último, soma e subtração. 
 
• Relacionais 
Os operadores relacionais (tabela 3) permitem a execução de testes entre 
constantes 
e variáveis. 
 
• lógicos e tabela Verdade 
Os operadores lógicos (tabela 4 ) executam funções especiais dentro dos 
pseudocódigos, 
quando relacionados aos testes condicionais ou a outros valores lógicos. 
 
1.5. Comandos 
 
Uma ação para o computador é definida com um comando que executa 
determinada 
operação (mostrar os dados e realizar um cálculo, por exemplo). Essas 
ações serão representadas nos pseudocódigos por meio de expressões 
predefinidas 
na lógica computacional. 
 
• Comando Escreva() 
 
É utilizado para mostrar a saída de dados, ou seja, quando uma mensagem 
ou resultado de uma operação deverá ser exibida ao usuário. Para que 
seja possível a visualização do dado, alguns cuidados são fundamentais: as 
expressões devem aparecer entre aspas, exceto as variáveis e valores 
(inteiros ou flutuantes). 
 
O pseudocódigo a seguir representa um exemplo mais completo, assim 
como o fluxograma, na sequência: 
 
Programa exemplo_escreva 
Declare 
 nome como caractere 
WFernando Bastos  18
 média, nota1, nota2 como flutuante 
Inicio 
 nome  “Fulaninho” 
 nota1  10.0 
 nota2  2.0 
 media  (nota1 + nota2)/2 
 Escreva(“Sua nota final é:”) 
 Escreva(média) 
Fim 
 
• Comando leia() 
 
Ao contrário do comando Escreva(), o Leia() permite a inserção de dados 
pela 
interação com o usuário. Eles serão armazenados em variáveis devidamente 
definidas. 
 
Leia(nome) 
Leia(nota1) 
Leia(nota2) 
Leia(temp) 
 
Ao realizar uma entrada de dados, o ideal é que o usuário seja notificado 
sobre 
o tipo de informação que deverá ser inserida. Veja como: 
Programa exemplo_leia 
Declare 
 nome como caractere 
 média, nota1, nota2 como flutuante 
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 final é:”) 
 Escreva(media) 
Fim 
 
• Estrutura de decisão – Se...Fim-Se 
Os algoritmos, assim como as linguagens de programação, executam as 
atividades de forma sequencial. Mas, às vezes, devemos definir alguns 
desvios de acordo com as condições estabelecidas no processo de execução 
do algoritmo conforme a interferência do usuário. Para que isso ocorra, é 
preciso executar o comando Se(), que permite realizar desvios condicionais 
com base em testes lógicos. A estrutura dos algoritmos é composta por um 
teste condicional e por um comando ou conjunto de comandos a seremWFernando Bastos  19
executados a partir desse teste, mas somente quando o resultado for 
verdadeiro 
 
Se (condição) Então 
 {comando(s)} 
Fim-Se 
 
No próximo exemplo, para estabelecer a condição vamos utilizar os 
operadores lógicos já vistos. 
 
Se (média >= 7.00) Então 
 Escreva(“Você está aprovado!!!! ”) 
Fim-Se 
 
• Estrutura de decisão – Se...Senão...Fim-Se 
Podemos organizar o comando Se(), para criar desvios condicionais de 
verdadeiro ou falso no mesmo teste. 
 
Se (condição) Então 
 {comando(s) condição verdadeira} 
Senão 
 {comando(s) condição falsa} 
Fim-Se 
Como ficaria a repetição do teste com a variável média. 
 
Se (media >= 7.00) Então 
 Escreva(“Você está aprovado!!!! ”) 
Senão 
 Escreva(“Você está reprovado!!!! ”) 
Fim-Se 
 
 
Vamos organizar todo o pseudocódigo. 
 
Programa exemplo_teste 
Declare 
 nome como caractere 
 media, nota1, nota2 como flutuante 
Início 
 Escreva(“calculando a média”) 
 Escreva(“Digite o seu primeiro nome.”) 
 Leia(nome) 
 Escreva(“Qual a sua nota 01?”) 
 Leia(nota1) 
 Escreva(“Qual a sua nota 02?”) 
 Leia(nota2) 
 média  (nota1 + nota2)/2 
 Escreva(“Sua nota final é:”) 
 Escreva(média) 
 Se (media >= 7.00) Então 
 Escreva(“Aprovado”) 
 Senão 
WFernando Bastos  20
 Escreva(“Reprovado”) 
 Fim-Se 
 Escreva(“Fim de programa”) 
Fim 
 
• Estrutura de decisão – 
Selecione Caso...Senão...Fim-Selecione 
Em alguns momentos, haverá necessidade de testar a mesma variável 
diversas vezes, como acontece no menu de opções. Para isso, utilizamos o 
comando “Selecione Caso” da seguinte forma 
 
Selecione Caso {variável} 
Caso condição 01 
 {comando(s)} 
Caso condição 02 
 {comando(s)} 
Caso condição 03 
 {comando(s)} 
Senão 
 {comando(s)} 
Fim-Selecione 
É preciso descobrir, em determinada situação, se o usuário escolheu os 
números 1, 2 ou 3. Qualquer outro diferente, deverá gerar a mensagem 
“número inválido” 
 
Leia(número) 
 Selecione Caso número 
 Caso 1 
 Escreva(“Você escolheu o número 01”) 
 Caso 2 
 Escreva(“Você escolheu o número 02”) 
 Caso 3 
 Escreva(“Você escolheu o número 03”) 
 Senão 
 Escreva(“Número inválido”) 
 Fim-Selecione 
 
• Estrutura de repetição – Para...Fim-Para 
Além dos desvios sequenciais, é possível criar desvios em loop, ou seja, 
repetir trechos do algoritmo sobre determinada condição e controlar a 
forma com que os loops serão executados. O comando Para...Fim-Para 
permite que uma variável realize a contagem do número de loops a 
executar, conforme a indicação inicial e final dessa contagem, e também 
identifique o formato em que essa tarefa será realizada. 
 
Para <variável> = <vlr.inicial> Até <vlr.final> Passo <arg> Faça 
 {comando(s)} 
Fim-Para 
 
Alguns exemplos: 
 
WFernando Bastos  21
Para x = 1 Até 5 Faça 
 Escreva(x) // Serão visualizados os números: 1,2,3,4 e 5. 
Fim-Para 
 
Para num = 3 Até 6 Faça 
 Escreva(num) // Serão visualizados os números: 3,4,5 e 6. 
Fim-Para 
 
Para vlr = 0 Até 10 Passo 2 Faça 
 Escreva(vlr) // Serão visualizados os números: 0,2,4,6,8 e10. 
Fim-Para 
 
Para cont = 3 Até 0 Passo -1 Faça 
 Escreva(cont) // Serão visualizados os números: 3,2,1 e 0. 
Fim-Para 
 
 
• Estrutura de repetição – Enquanto...Fim-Enquanto 
 
Assim como o comando Para...Fim-Para permite realizar loop, a instrução 
Enquanto... 
Fim-Enquanto executa o mesmo processo. Mas é preciso lembrar que esse 
comando não realiza a contagem automaticamente. Por isso, é 
necessário implementar um contador de passos. 
 
Enquanto (condição) Faça 
 {comando(s)} 
Fim-Enquanto 
 
Vamos repetir os exemplos da instrução Para...Fim-Para, mas agora com 
o 
comando Enquanto. 
 
x  1 
Enquanto (x<=5) Faça 
 Escreva(x) // Serão visualizados os números: 1,2,3,4 e 5. 
 x  x + 1 
Fim-Enquanto 
 
num  3 
Enquanto (num <=6) Faça 
 Escreva(num) // Serão visualizados os números: 3,4,5 e 6. 
 num  num + 1 
Fim-Enquanto 
 
vlr  0 
Enquanto (vlr <=10) Faça 
 Escreva(vlr) // Serão visualizados os números: 0,2,4,6,8 e 10. 
 vlr  vlr + 2 
Fim-Enquanto 
 
WFernando Bastos  22
cont  3 
Enquanto (cont >=0) Faça 
 Escreva(cont) // Serão visualizados os números: 3,2,1 e 0. 
 cont  cont -1 
Fim-Enquanto 
 
• Estrutura de repetição – Repita...até que 
O comando Repita tem a mesma finalidade do comando Enquanto, 
quando 
o assunto é funcionalidade. A única diferença é a localização da condição de 
teste, que ocorre no final da cadeia de loop garantindo a execução 
dos comandos no mínimo uma vez. 
 
Repita 
 {comando(s)} 
Até que (condição) 
 
x  1 
Repita 
 Escreva(x) // Serão visualizados os números: 1,2,3,4 e 5. 
 x  x + 1 
Até que (x<=5) 
 
 
num  3 
Repita 
 Escreva(num) // Serão visualizados os números: 3,4,5 e 6. 
 num  num + 1 
Até que (x<=6) 
 
vlr  0 
Repita 
 Escreva(vlr) // Serão visualizados os números: 0,2,4,6,8 e 10. 
 vlr = vlr + 2 
Até que (vlr <=10) 
 
 
cont  3 
Repita 
 Escreva(cont) // Serão visualizados os números: 3,2,1 e 0. 
 cont  cont -1 
Até que (cont >=0) 
 
 
1.6. Vetor 
 
Definido também como matriz unidimensional, um vetor (tabelas 6 e 7) é 
uma variável que possui vários dados, acessados por meio de uma posição 
relativa, seguindo a mesma regra da concepção e atribuição das variáveis. 
 
WFernando Bastos  23
 
No exemplo anterior, podemos verificar que cada elemento de um vetor é 
caracterizado por uma posição relativa. Observando o vetor de letras, 
teremos: 
 
Posição 1 à valor A 
Posição 5 à valor R 
Posição 8 à valor Q 
 
Em um pseudocódigo, realizamos a declaração de um vetor da seguinte 
forma: 
 
 
 
Programa vetores 
Declare 
 vet como conjunto[n..n1] de <tipo> 
Início 
 {comandos ou bloco de comandos} 
Fim 
 
O nome do vetor é representado pela expressão “vet”, cujo conjunto de 
informações é identificado por “n”, posição inicial, e “n1”, posição final, ou 
seja, um vetor de 10 posições poderá ser representado como [1..10]. E o 
“tipo” de informação que este vetor deverá receber. 
 
Programa vetores 
Declare 
 vet como conjunto[1..5] de inteiro 
Início 
 vet[1]  90 
 vet[2]  1 
 vet[3]  100 
 vet[4]  4 - 1 
 vet[5]  21 
Fim 
 
WFernando Bastos  24
Para realizar o acesso à posição de um vetor, é preciso identificar a posição 
que está entre os sinais de [], logo após o nome do vetor: 
 
Escreva(vet[3]) 
Leia(vet[2]) 
 
• trabalhando com vetor 
A entrada de dados em um vetor é realizada por intermédio de seu 
identificador. 
Para isso, utiliza-se um contador crescente ou decrescente, de acordo com 
a necessidade. Vamos carregar 10 informações numéricas dentro de um 
vetor. 
 
vet como conjunto[1..10] de inteiro 
Para i = 1 Até 10 Faça 
 Escreva(“Digite um valor na posição”, i, “do vetor”) 
 Leia(vet[i]) 
Fim-Para 
 
Seguindo a mesma lógica, podemos realizar a impressão do conteúdo desse 
vetor. 
 
Para i = 1 Até 10 Faça 
 Escreva(“Valor da posição:”, i, “do vetor é”, vet[i]) 
Fim-Para 
 
Vamos reunir os conceitos de leitura e impressão no mesmo algoritmo. 
 
Programa vetor_dados 
Declare 
vet como conjunto[1..10] de inteiro 
i como inteiro 
Início 
 Para i = 1 Até 10 Faça 
 Escreva(“Digite um valor na posição”, i, “do vetor”) 
 Leia(vet[i]) 
 Fim-Para 
 Para I = 1 Até 10 Faça 
 Escreva(“Valor da posição:”, i, “do vetor é”, vet[i]) 
 Fim-Para 
Fim 
 
Outro exemplo para analisar: 
 
Programa média 
Declare 
 vetor como conjunto[1..8] de inteiro 
 soma, média como flutuante 
 ct como inteiro 
Início 
 soma = 0 
 Para ct = 1 Até 8 Faça 
WFernando Bastos  25
 Escreva(“Digite um valor na posição”, ct, “do vetor”) 
 Leia(vetor[ct]) 
 soma  soma + vetor[ct] 
 Fim-Para 
 média  soma / 8 ---- ou ---- média ß soma / ct 
 Escreva(“A média final é:”, média) 
Fim 
 
 
1.7. matriz 
 
A matriz, ao contrário do vetor, é multidimensional. Nesse caso, os dadossão armazenados ou lidos de acordo com a relação entre os eixos, e seu 
índice é representado por dois ou mais valores. Uma matriz 3x2, por 
exemplo, possui três linhas por duas colunas. Portanto, qualquer referência 
aos dados deverá apontar para ambas as posições da forma matriz[2,1], 
indicando que a informação referenciada está na linha 2 e na coluna 1 da 
matriz. Graficamente, tem-se: 
 
 
 
Programa matriz 
Declare 
 mat como conjunto[1..5][1..3] de inteiro 
Início 
 {comando ou bloco de comandos} 
Fim 
Assim como os vetores, para a atribuição de valores em uma matriz, 
devemos identificar a linha e a coluna. 
 
Programa matriz 
Declare 
 mat como conjunto[1..2][1..2] de inteiro 
Início 
 mat[1,1]  19 
 mat[1,2]  2 
 mat[2,1]  77 
 mat[2,2]  16 
Fim 
 
• trabalhando com matriz 
A leitura e a impressão das matrizes seguem o mesmo esquema dos 
vetores. Mas será necessário utilizar dois contadores: um para identificar a 
linha e outro, para coluna. Vejamos o exemplo de uma matriz 2x2. 
 
WFernando Bastos  26
Programa matriz 
Declare 
 matriz como conjunto[1..2][1..2] de flutuante 
 lin, col como inteiro 
Início 
 Para lin = 1 Até 2 Faça 
 Para col = 1 Até 2 Faça 
 Escreva(“Linha”, lin, “da matriz”) 
 Escreva(“Coluna”, col, “da matriz”) 
 Escreva(“Qual o valor?”) 
 Leia(matriz[lin,col]) 
 Fim-Para 
 Fim-Para 
 Escreva(“Visualizando os dados da matriz:”) 
 Para lin = 1 Até 2 Faça 
 Para col = 1 Até 2 Faça 
 Escreva(“Linha”, lin, “da matriz”) 
 Escreva(“Coluna”, col, “da matriz”) 
 Escreva(“O valor é:”) 
 Escreva(matriz[lin, col]) 
 Fim-para 
 Fim-para 
Fim 
 
Outro exemplo: 
 
Programa soma 
Declare 
 a,b,c como conjunto[1..8][1..4] de flutuante 
 ln, cl como inteiro 
Início 
 Para ln = 1 Até 8 Faça 
 Para cl = 1 Até 4 Faça 
 Escreva(“Digite o valor para a Matriz A:”) 
 Leia(a[ln, cl]) 
 Escreva(“Digite o valor para a Matriz B:”) 
 Leia(b[ln, cl]) 
 Escreva(“Valores somados para a Matriz C:”) 
 c[ln, cl] = a[ln, cl] + b[ln, cl] 
 Escreva(c[ln, cl]) 
 Fim-Para 
 Fim-Para 
Fim 
 
 
1.8. Programação modular 
 
Uma das técnicas bem empregadas para o desenvolvimento de programas é 
a modulação de parte do código. Isso significa que o programa principal é 
quebrado em partes menores. E cada parte representa uma unidade 
funcional. Essas sub-rotinas são identificadas como procedimentos ou 
WFernando Bastos  27
funções. Permitem que parte do código seja reaproveitada em outra parte 
do código principal ou, até mesmo, em projetos diferentes, por outros 
programadores. 
 
• Procedimento 
 
Um procedimento, assim como o programa principal, é formado por toda a 
estrutura lógica (início-fim, variáveis e instruções). Pode ser utilizado em 
qualquer parte de um programa que seja referenciado. Dessa forma, ao ser 
acionado, o procedimento assume o controle da execução. E, quando é 
finalizado, o controle retorna ao programa principal. 
 
Procedimento nome-do-procedimento ( parâmetro:tipo ) 
Declare {variáveis} 
 {comando ou bloco de comando 
Fim-Procedimento 
 
O nome-do-procedimento faz a identificação do programa – e é por essa 
expressão que ele será referenciado. Logo após essa etapa, encontramos os 
parâmetros e a definição de seu tipo, os quais representam variáveis que 
receberão valores no momento da chamada. Assim como o código principal, 
o procedimento possui as variáveis locais de manipulação de dados e os 
comandos necessários para a sua execução. 
 
 
 
 
• Variáveis locais ou globais 
 
As variáveis locais são consideradas apenas em uma sub-rotina 
(procedimento ou função). Dessa forma, são desconhecidas pelo algoritmo 
principal, ao contrário das globais, que são consideradas por todo o 
algoritmo. 
 
 
WFernando Bastos  28
 
 
 
O quadro em seguida mostra o campo de visualizações das variáveis, 
conforme o pseudocódigo apresentado anteriormente. 
 
 
 
 
 
 
 
• Passagem de parâmetro 
WFernando Bastos  29
 
A passagem de parâmetros por valor é utilizada para que as sub-rotinas 
possam receber informações e realizar qualquer tipo de manipulação fora 
do pseudocódigo principal. 
 
 
 
 
• Função 
 
Uma função tem as mesmas características estruturais de um 
procedimento, no que diz respeito a fatores como funcionalidade, 
visualização de variáveis e chamadas. 
Mas a sua principal vantagem é a possibilidade de retorno de valores em 
tempo real. Isso quer dizer que, quando chamamos determinada função, 
podemos receber valores em tempo real, armazenando o resultado em uma 
variável. 
 
WFernando Bastos  30

Outros materiais