Você está na página 1de 18

Falando sobre

Programação
©2018 Copyright ©Católica EAD. Ensino a distância (EAD) com a qualidade da

Apresentação 

Fonte: https://goo.gl/bQJ3YL

Bem-vindo (a) à disciplina "Práticas Profissionais:


Programação Estruturada". Nesta disciplina, poderá
ampliar os conhecimentos que já construiu no âmbito da
disciplina "Algoritmos de Programação". Você
aprenderá a se comunicar com o computador de uma
forma mais ampla, "ensinando" o computador a realizar
tarefas mais complexas, gerando daí novos aplicativos
ou, até mesmo, a correção (manutenção) de sistemas já
existentes. Deste modo, a intenção da disciplina
"Práticas Profissionais: Programação Estruturada" é
prepara-lo para este segmento de mercado carente de
profissionais especializados, para atender de forma
eficiente as demandas da sociedade.

Nesta aula, você estudará alguns pontos importantes em


relação a práticas profissionais que abrange de forma
genérica qualquer linguagem de programação como, por
exemplo, o processo de compilação e linkedição dos
códigos-fontes, para posteriormente iniciar o estudo da
programação de linguagem estruturada de fato.

Recapitulando o que foi dito na disciplina "Algoritmos


de Programação": Você deve estar ansioso para sair
programando, mas vá com calma! Preste muita atenção
nesta aula, pois o entendimento claro desse conteúdo
introdutório será essencial para te ajudar a ser um bom
programador futuramente.
©2018 Copyright ©Católica EAD. Ensino a distância (EAD) com a qualidade da

Desafio 
Leia a seguir os trechos de duas reportagens sobre o mercado de
TI.

A primeira reportagem é da gerente da área de inteligência da


Softex, Virgínia Duarte , com o título: "Falta de recursos humanos
qualificados em TI desafia a economia global", publicada em
27/11/2015.

A falta de recursos humanos qualificados para atividades em


software e serviços de TI é um tema que tem sido tratado em
várias publicações do Observatório Softex, apontando uma
falta crescente de profissionais especializados, principal
insumo da área de TI, e avaliando os impactos provocados no
crescimento do setor e na economia do país. Um dos
estudos aponta para um déficit de cerca de quatrocentos mil
profissionais de TI até 2022, uma escassez capaz de gerar
uma perda acumulada de receita de R$ 139 bilhões.

Esse prejuízo, certamente, pode ser minorado por medidas


adaptativas, entre as quais a reorientação nos negócios e a
adoção de novos modelos de desenvolvimento, tomadas
pelas empresas para se adaptar à falta de mão de obra.
Entretanto, é de se esperar que a capacidade de adaptação
empresarial tenha um limite, não podendo perdurar por anos
a fio, o que torna fundamental a busca por soluções mais
efetivas para enfrentar o problema.

O desafio é global. Existe, por todo o mundo, uma quantidade


elevada de jovens desempregados paralelamente a uma
escassez de talentos, ou seja, de candidatos com as
habilidades requeridas pelos empregadores. E o cenário
tende a piorar. A McKinsey estima que, até 2020, faltarão 85
milhões de trabalhadores com perfil de competências
desejado pelas empresas.

Fonte: http://cio.com.br/opiniao/2015/11/27/falta-de-
recursos-humanos-qualificados-em-ti-desafia-a-economia-
global/ 

A segunda reportagem é dos jornalistas Antônio Loureiro 


e Marcelo Vianna , que são sócios fundadores da Conquest One,
consultoria brasileira de TI com atuação
em Outsourcing e Hunting com o título: "O que mercado e
profissionais de TI devem esperar para 2016?", publicada em
02/02/2016.
Vamos agora à notícia não tão boa, bem antiga até, mas que
pode continuar significando oportunidades: faltam
profissionais qualificados para ocupar as vagas abertas pela
área de TI! Sim, as empresas estão cada vez mais exigentes
na hora de contratar. Como as tecnologias se modernizam e
avançam de modo muito acelerado, o Brasil tem que correr
para tentar acompanhar esse ritmo. O que acontece é que os
profissionais brasileiros apresentam dificuldade para se
manterem atualizados, e as empresas, por sua vez, precisam
acompanhar a demanda de tecnologia imposta mundo afora.
Resultado: não se encontram profissionais à altura das
exigências, cada vez maiores, impostas pelo mercado.

As empresas precisam de profissionais que tenham


conhecimento universalizado. No setor de TI, simplesmente
não funciona aquele pensamento: "vou passar no processo
seletivo e depois aprendo como se faz". Esse profissional não
vai sequer ser considerado. A competitividade atualmente no
ambiente de TI é mundial. Se a companhia que precisa do
serviço não encontrar profissional habilitado a desenvolver
isso no Brasil, vai procurar em outros países.

Nesse contexto, profissionais mais bem preparados,


antenados, criativos, atualizados com as tendências e
inovações globais se sobressaem. Isso explica por que os
salários em TI continuam sendo mais altos que a média de
outros setores. É a velha lei da oferta e procura.

E onde estão, afinal, as áreas mais quentes para quem busca


ascensão nessa carreira? Com toda a certeza, o segmento de
Desenvolvimento de Aplicativos para Smartphones é um dos
mais promissores para os próximos anos. Pouquíssimas
empresas hoje têm domínio sobre essa tecnologia. É um
vasto mercado para quem quer investir na área de TI, seja na
parte de arquitetura de soluções, programação,
comunicação. Se como usuários finais já temos os apps
incorporados ao nosso dia a dia, no mundo corporativo
também queremos ter esses benefícios para aplicações
empresariais.

Em resumo: embora impactada pela crise como qualquer


outra indústria no Brasil, a TI nunca deixou de respirar e tende
a ter um ano mais próspero em 2016 do que ocorreu em
2015. A falta de mão de obra qualificada para ocupar as
vagas, se por um lado é um problema imediato, por outro
indica uma oportunidade para profissionais que consigam
investir para se capacitar e se atualizar. Resolver essa
equação obviamente não é algo que poderá ser feito da noite
para o dia, mas cabe a todos uma reflexão sobre a
necessidade de um projeto de país que privilegie a formação
de bons profissionais para um setor vital como é a
Tecnologia.

Fonte: http://computerworld.com.br/o-que-mercado-e-
profissionais-de-ti-devem-esperar-para-2016 

Considerando as argumentações acima, reflita sobre as seguintes


questões:
1. Tendo em vista a escassez significativa prevista de
profissionais qualificados até 2022, em detrimento da
necessidade crescente do uso de programas por parte da
população, parece uma boa opção investir na área de
desenvolvimento de sistemas da TI? Quais caminhos podem
contribuir para se obter a qualificação exigida pelas
empresas?
2. Para ampliar os conhecimentos e, posteriormente, conquistar
uma boa posição no mercado de trabalho de TI, o primeiro
passo é a realização do curso de graduação. Você, enquanto
estudante, tem se dedicado de forma adequada nas
disciplinas cursadas? Se considerarmos o fato de a área de
desenvolvimento ser a mais crítica, de acordo com as
informações mostradas nos textos, e a necessidade de o eixo
de programação do nosso curso ser, neste contexto, o mais
desafiador, qual a importância das disciplinas "Algoritmos de
Programação" "e Práticas Profissionais: Programação
Estruturada"? Qual a relação entre as duas disciplinas?
©2018 Copyright ©Católica EAD. Ensino a distância (EAD) com a qualidade da

Conteúdo 
A Programação Estruturada
Na década de 1950, quando os computadores começaram a ser
fabricados em escala industrial, eles eram ainda máquinas
bastante lentas e com pouca capacidade de memória. Nesta
época, o tamanho ou a complexidade dos problemas que podiam
ser processados pelos computadores eram limitados. No entanto,
com o desenvolvimento da tecnologia na área eletrônica, a rapidez,
a memória e as potencialidades dos computadores cresceram
imensamente Farrer  (2008).

Como consequência desta evolução, os problemas computacionais


(em nível de softwares) estão cada vez maiores e mais complexos,
por outro lado, os algoritmos que resolvem esses problemas são
desenvolvidos por pessoas que possuem algumas limitações e
dificuldades em compreender as abstrações. No entanto, de certa
forma, as pessoas e os computadores se complementam, isto é,
onde um apresenta deficiência o outro tem competência Magri 
(2003). No Quadro resumo 1 é apresentada uma comparação
entre uma pessoa e um computador, no critério tomada de
decisões. Observe com atenção.

Quadro 1 – Comparação entre uma pessoa e um


computador.

Tomada de Decisões

As pessoas Os computadores

Podem criar conceitos gerais e Não podem operar nestas


empregam o raciocínio para condições.
tirar conclusões.

Nem sempre optam pela Podem adotar a melhor solução,


melhor solução por conta de desde que sejam fornecidos dados
um número grande de suficientes.
possibilidades.

Podem decidir mesmo sobre Normalmente exigem um conjunto


um conjunto de dados de informações completo.
incompleto.

Definem prioridades, objetivos e Exigem que sejam definidas


valores. prioridades, objetivos e valores.

Podem visualizar novas Não tem essa capacidade.


oportunidades.
Tomada de Decisões

As pessoas Os computadores

Cansa rapidamente e torna-se Não cansa e é extremamente


sujeito a erros principalmente preciso.
quando o trabalho é repetitivo.

Fonte: (MAGRI, 2003, com adaptações).

O quadro anterior mostrou que existem diferenças significativas


entre as pessoas e os computadores. Por outro lado, é possível
perceber que essas características são complementares, de modo
que é possível inferir que o trabalho dos computadores visa
"eliminar" as principais deficiências das pessoas, tornando-as
aptas para resolver problemas cada vez mais complexos.

Por esta razão e com a evolução crescente da área de informática,


surgiram algumas técnicas que permitem sistematizar e ajudar os
desenvolvedores em suas funções que são: o paradigma de
programação estruturada, o paradigma de programação orientada
a objetos e o paradigma de programação orientada a eventos.

Considerando que o foco desta disciplina é o paradigma de


programação estruturada, segue abaixo a lista dos seus principais
objetivos: Farrer (2008).

Facilitar o desenvolvimento dos algoritmos.


Facilitar o entendimento dos problemas por parte das
pessoas que trabalham com desenvolvimento.
Facilitar a manutenção e a sua modificação.
Permitir que o seu desenvolvimento possa ser empreendido
simultaneamente por uma equipe de pessoas.

Para tal, os objetivos descritos acima preconizam que os


algoritmos sejam desenvolvidos por refinamentos sucessivos
partindo de uma descrição geral para a gradativa. Os sucessivos
refinamentos são módulos, que delimitam funções e são o mais
independente possível. Nos módulos, deve ser usado um número
limitado de diferentes comandos e de diferentes estruturas de
controle, buscando simplicidade e clareza.

Por fim, simplicidade e clareza – características tão almejadas na


programação estruturada – são o ponto chave desse paradigma de
programação, representando atributos inestimáveis quando se faz
manutenção (melhoria, correção ou aperfeiçoamento de algum
algoritmo).
Importante 

O termo algoritmo, e não programa, continua sendo


empregado aqui, pois são os algoritmos que detêm a lógica e
a solução do problema, ou seja, representam um conjunto de
regras para a solução de um problema. Já, o programa, ou
código-fonte, por outro lado, consistirá somente na
transcrição do algoritmo obtido.

Para Refletir 

Com a introdução de novos paradigmas de programação,


com a programação orientada a objetos (que será objeto de
estudo da nossa próxima disciplina do eixo) e a programação
orientada a eventos, podemos afirmar que a programação
estruturada se tornou obsoleta? Quando falamos de
programação, o que é velho pode ser considerado obsoleto?

Nesta situação exposta no "Para Refletir", considere os seguintes


elementos: a linha do tempo entre a consolidação do paradigma de
programação orientado a objetos e o paradigma de programação
estruturado, existe tem uma distância relativa e, também, que a
informática evolui em passo acelerado.

A Linguagem C
A Linguagem de programação C foi criada em 1972 nos
laboratórios Bell-AT&T, por Dennis Ritchie, com a finalidade de
permitir a escrita de um sistema operacional (o Unix) utilizando
uma linguagem de relativo alto nível, evitando assim, o recurso
ao Assembly . Devido as suas capacidades e com a ampla
divulgação pelas universidades dos Estados Unidos, a linguagem C
disseminou-se e se tornou conhecida por todos os tipos de
programadores da época.

O C é uma linguagem de propósito geral, sendo apropriada à


programação estruturada. É amplamente utilizada para escrever
compiladores, analisadores léxicos, bancos de dados, editores de
texto, dentre outros.

Características da Linguagem C
Perante um enorme leque de linguagens de programação
disponíveis no mercado, seria necessário que uma delas se
destacasse em relação às outras para conseguir interessar por
tantos anos, tantos programadores. Esse é o caso da Linguagem
de Programação C, que é considerada uma linguagem poderosa e
flexível Damas  (1999). A seguir, são listadas algumas das
principais características da linguagem:

Performance: A linguagem C consegue obter performances


semelhantes às obtidas pelo Assembly.
Simplicidade: A linguagem possui uma sintaxe considerada
simples. Dispõe de um número de palavras reservadas,
operadores e tipos de dados reduzido.
Portabilidade: A linguagem foi construída seguindo os
padrões ANSI – adaptável a qualquer compilador – no tópico
1.3 dessa aula entenderemos esse conceito.
Modularidade: A linguagem permite o desenvolvimento
modular de aplicações, facilitando a separação de projetos
em módulos distintos e independentes.
Macros: A linguagem possibilita o uso de macros, cujo
objetivo é reduzir a necessidade de escrita de funções
distintas para a realização do mesmo processamento para
tipos de dados diferentes. As macros permitem aumentar a
velocidade de execução de uma aplicação sem ter a
necessidade de aumentar a complexidade de escrita do
código.
Case-sensitive: Assim como o Calango, a linguagem C é case-
sensitive, deste modo, existe diferenciação entre caracteres
maiúsculos e minúsculos.

Enfim, outro aspecto interessante a ser apontado é a evolução da


linguagem. A Linguagem C possui 3 versões, que evidencia uma
evolução e adaptação aos novos horizontes da programação
mundial: C (paradigma estruturado), C++ (paradigma orientado a
objetos) e C# (paradigma orientado a objetos, exclusivo para
aplicações web).

Ciclo de Desenvolvimento de uma


Aplicação
Tradicionalmente, o ciclo de desenvolvimento de uma aplicação
engloba quatro fases distintas Damas (1999), que serão abordadas
a seguir.

Escrita / Edição do Código-Fonte


Nesta etapa, você programador irá implementar o código-fonte.
Essa fase consiste na transição do algoritmo ou diagramas de
processo – conteúdo que será aprendido na disciplina de
Engenharia de Software – para código-fonte, é um trabalho que é
todo realizado pelo programador responsável pela demanda. O
código-fonte (produto a ser gerado nesta etapa), no caso do
arquivo em linguagem C, deverá ter a extensão ".c" ou ".cpp".
Exemplo: "moduloCadastro.cpp".

Compilação do Código-Fonte
Uma vez gerado o código-fonte, o próximo passo é verificar se o
mesmo foi escrito corretamente, isto é, verificar se a sintaxe
utilizada está correta ou não. Esse processo é realizado pelo
computador, e não mais pelo programador, sendo chamado de
compilação.

A compilação consiste na tradução do código-fonte para


linguagem de máquina – linguagem binária. Nesta fase, podem
ocorrer três situações distintas:
Caso seja detectado algum erro, o processo de compilação é
finalizado e o programador deverá voltar a etapa de edição do
código-fonte, fazer as alterações necessárias e reiniciar um
novo processo de compilação. É importante destacar que a
compilação ajuda a mapear os erros "informando" ao
programador, através de emissão de mensagens, quais foram
os erros encontrados e em qual linha do código-fonte o erro
se encontra.
Caso não seja detectado nenhum erro, mas seja identificado
um alerta, o processo de compilação é capaz, também, de
identificar situações "suspeitas", ou seja, o código-fonte não
apresenta nenhum erro de sintaxe, porém, identifica, por
exemplo, uma construção lógica inadequada. Neste caso, a
compilação segue e é emitido um aviso (warming) para cada
situação suspeita.

Diante desta situação, é importante que você, programador, volte à


etapa de edição do código-fonte e faça uma revisão dos pontos
de warming informados pelo compilador e consequentemente,
realize as alterações necessárias.

Caso não seja detectado nenhum erro e não seja identificado


nenhum alerta, o processo de compilação é finalizado e,
como resultado, é gerado um arquivo objeto, com nome igual
ao do programa e com extensão ".obj" (em DOS) ou ".o" (em
Unix). Exemplo: "moduloCadastro.obj".

É importante entendermos que a compilação serve para realizar a


verificação sintática do código-fonte e criar um novo arquivo de
código-fonte escrito em linguagem binária.

Linkedição dos Objetos


Com o arquivo objeto já criado após o processo de compilação,
vem a etapa da geração do arquivo executável. O arquivo
executável é criado a partir do arquivo objeto e dos arquivos de
biblioteca da linguagem (arquivos com extensão ".lib" em DOS e ".a"
em Unix). Esse processo quem realiza é o computador e é
chamado de linkedição dos objetos.

Os arquivos de biblioteca habilitam os comandos da linguagem


para serem utilizados, como, por exemplo, o printf(), scanf(), dentre
outros. Deste modo, esta fase agrupa em um arquivo único os
arquivos objetos e os arquivos de biblioteca dando origem ao
arquivo executável.

O processo da linkedição pode falhar, isso normalmente ocorre


quando algum símbolo ou função utilizada pelo programa não for
encontrado no arquivo objeto ou no arquivo de biblioteca. Neste
caso, o arquivo executável não é criado.

Execução do Programa
Se o processo da linkedição dos objetos for finalizado com
sucesso, teremos então disponível um arquivo executável, ou o
aplicativo pronto para uso.

A Figura 1 mostra o esquema de construção do processo de


compilação – linkedição completo.
Figura 1 – Processo de Compilação – Linkedição.

É importante dialogarmos um pouco aqui sobre a entrega para o


usuário final ou nosso cliente, que é uma etapa extremamente
importante, pós geração do executável, mas que não faz parte do
ciclo do desenvolvimento de uma aplicação e sim do conjunto de
fases clássicas do desenvolvimento de software - que será objeto
de estudo da disciplina de Engenharia de Software - são os testes
que deverão ser realizados no sistema para que daí sim, o sistema
possa ser disponibilizado para o ambiente de produção.

É sua função, enquanto programador, realizar os testes de sistema


para identificação de falhas. Essas falhas podem ser erros, como
resultados incorretos de transações no sistema, como, por
exemplo, a não inserção de um novo registro em uma tela de
cadastro, ou um erro de cálculo que está sendo apresentado,
dentre outros.

Para Refletir 

A pessoa que utiliza os programas pode ser chamada de


cliente ou pode ser chamada de usuário final? Qual é a
terminologia mais adequada?

Nesta situação exposta no "Para Refletir", considere as


seguintes afirmativas: o usuário é quem irá usufruir do
serviço prestado ou produto entregue. Já o cliente, embora
seja habitualmente confundido com o primeiro, possui um
papel bem diferente, o cliente exerce uma responsabilidade
tática e estratégica dentro do relacionamento entre TI e
negócio. O cliente é quem compra o produto, negocia, realiza
acordos, avalia os resultados.

Nesta aula, você teve como pontos centrais o


entendimento do paradigma da programação
estruturada e o processo de compilação – linkedição de
um código-fonte. Viu que o paradigma estruturado é uma
das técnicas que foi criada para facilitar como um todo o
trabalho das pessoas envolvidas na área de
desenvolvimento, já que essa técnica não atinge somente
os programadores, mas também os analistas de negócio
que criam os artefatos ou "desenhos" do sistema, dentre
outros.

Viu também que o processo de compilação – linkedição –


é imprescindível para a geração dos arquivos
executáveis de sistemas, uma vez que o código-fonte é
algo não compreendido pelo computador. Para isso, é
necessário que o código-fonte seja traduzido para o
binário (linguagem de máquina) para que o computador
possa compreender e, posteriormente, validar. Esse é o
grande objetivo desse processo, pois devemos lembrar
que nós, seres humanos, não somos capazes nem de ler
nem de escrever em binário, isso fica a cargo exclusivo
dos computadores!
©2018 Copyright ©Católica EAD. Ensino a distância (EAD) com a qualidade da

Dica do Professor 

Fonte: https://goo.gl/yFnKqB

Além do Ciclo de Desenvolvimento de uma Aplicação, temos


também como complemento, o Ciclo de Desenvolvimento de
Sistema que abrange de forma mais ampla todo o processo de
desenvolvimento de um software. Para conhecer as fases
clássicas do desenvolvimento de software, leia o artigo Ciclo de
vida de desenvolvimento de sistemas – visão conceitual dos
modelos clássicos, espiral e prototipação , de Rafael Alves e
Rosângela Vanalle.
©2018 Copyright ©Católica EAD. Ensino a distância (EAD) com a qualidade da

Na Prática 
"Prezado(a) estudante,

Esta seção é composta por atividades que


objetivam consolidar a sua aprendizagem quanto
aos conteúdos estudados e discutidos. Caso
alguma dessas atividades seja avaliativa, seu
(sua) professor (a) indicará no Plano de Ensino e
lhe orientará quanto aos critérios e formas de
apresentação e de envio."

Bom Trabalho!

Atividade 01 

Pesquise a respeito de uma linguagem de programação estruturada


chamada COBOL e responda à questão: uma linguagem construída
nos primórdios da programação pode ser considerada obsoleta? Cite
elementos de empregabilidade relacionado a essa linguagem de
programação em específico e dê sua opinião se vale a pena o
investimento no aprendizado dessa linguagem.

Atividade 02 

Nesta aula você teve oportunidade de verificar que não existe


somente um paradigma de programação, mas sim três paradigmas.
Dentre esses três, faça uma pesquisa a respeito dos paradigmas de
programação estruturada e programação orientada a objetos.
Elabore um quadro comparativo, destacando as diferenças
encontradas. Segue um exemplo de pontos a serem verificados:

1. Armazenamento dos dados.


2. Modularização (Funções e Procedimentos).
3. Estruturas Heterogêneas.
Atividade 03 

Explique, com suas palavras, qual é a diferença entre o processo de


compilação e linkedição de um código-fonte. Qual é a importância
desses processos no ciclo de vida de desenvolvimento de um
aplicativo? É possível um aplicativo ser disponibilizado para uso sem
passar por essas etapas? Como?
©2018 Copyright ©Católica EAD. Ensino a distância (EAD) com a qualidade da

Saiba Mais 
Para ampliar seu conhecimento a respeito desse assunto, veja
abaixo a(s) sugestão(ões) do professor:

Para saber um pouco mais sobre essa evolução e também


conhecer algumas especificidades da linguagem C#, vale a
pena fazer a leitura do artigo A evolução da linguagem de
programação C# , de Thiago Toledo.
©2018 Copyright ©Católica EAD. Ensino a distância (EAD) com a qualidade da

Referências 
ALVES, Marcos. Notas de Aula – Capítulo 3 – Estruturas de
Decisão. In: IME – USP. Disponível em:
<http://www.ime.usp.br/~jef/CapC-03.pdf>. Acesso em: 20
out. 2016.

ALVES, Rafael; VANALLE, Rosângela. Ciclo de vida de


desenvolvimento de sistemas – visão conceitual dos
modelos clássicos, espiral e prototipação. In: ABEPRO.
Disponível em:
<http://www.abepro.org.br/biblioteca/enegep2001_tr93_0290.pdf>.
Acesso em: 4 out. 2016.

CAMARGO, Heloisa Arruda. Exemplos – Métodos de


Passagens de Parâmetros. In: UFSCAR. Disponível em:
<http://www2.dc.ufscar.br/~heloisa/PLP2009/ExemplosPP.pdf>.
Acesso em: 30 out. 2016.

DAMAS, Luís. Linguagem C. 10. ed. Rio de Janeiro: LTC, 1999.


410 p.

DUARTE, Virgínia. Falta de recursos humanos qualificados


em TI desafia a economia global. In: CIO. 2015. Disponível
em: <http://cio.com.br/opiniao/2015/11/27/falta-de-recursos-
humanos-qualificados-em-ti-desafia-a-economia-global/>.
Acesso em: 25 set. 2016.

FARRER, H. Algoritmos estruturados. 3. ed. Rio de Janeiro:


LTC, 2008. 284 p.

GOULART, UFSJ. Strings em C++. In: UFSJ. Disponível em:


<http://www.ufsj.edu.br/portal2-
repositorio/File/prof_ngoulart/notas_aula/AEDS1/string_Cpp.pdf>.
Acesso em: 30 out. 2016.

KNUTH, D. E. Mathematical Analysis of Algorithms. 1. ed.


North Holland: IFPI, 1971. 135p.

LOUREIRO, Antônio; VIANA, Marcelo. O que mercado e


profissionais de TI devem esperar para 2016? In:
Computerworld. 2016. Disponível em:
<http://computerworld.com.br/o-que-mercado-e-
profissionais-de-ti-devem-esperar-para-2016>. Acesso em: 25
set. 2016.

MAGRI, João Alexandre. Lógica de programação: ensino


prático. São Paulo: Erica, 2003. 214 p.

MOURA, Arnaldo; FERBER, Daniel. Procedimentos recursivos.


In: Olimpíada Instituto de Computação, Unicamp. Disponível
em: <http://olimpiada.ic.unicamp.br/extras/cursoC/Cap14-
Recursao-texto.pdf>. Acesso em: 2 nov. 2016.

NAKAMURA, D. Geração de números aleatórios. In: IME –


DCC – USP. Disponível em:
<https://www.ime.usp.br/~isc2002/lsd/attachments/063_principal.pdf>.
Acesso em: 2 nov. 2016.

PEREIRA, Silvio. Linguagem C. In: IME – USP. Disponível em:


<https://www.ime.usp.br/~slago/slago-C.pdf>. Acesso em:
11 nov. 2016.

ROSA, João. Métodos de Busca. In: ICC – USP. Disponível em:


<http://wiki.icmc.usp.br/images/d/df/ICC2_12.Busca.pdf>.
Acesso em: 2 nov. 2016.

SANTOS, Alexandro. Os IDEs (Ambientes de


Desenvolvimento Integrado) como ferramentas de trabalho
em informática. In: UFSM. 2016. Disponível em: <http://www-
usr.inf.ufsm.br/~alexks/elc1020/artigo-elc1020-alexks.pdf>.
Acesso em: 13 out. 2016.

STEINMETZ, Henrique; FONTES, Roberto. Cartilha de Lógica


de Programação. In: IFB. Disponível em:
http://www.ifb.edu.br/attachments/6243_cartilha%20l%C3%B3gica%20de%20programa%C3%A7%C3
Acesso em: 20 out. 2016.

TOLEDO, Thiago. A evolução da linguagem de programação


C#. In: Devmedia. Disponível em:
<http://www.devmedia.com.br/articles/viewcomp_forprint.asp?
comp=28639>. Acesso em: 4 out. 2016.

TRIGO, Luis. Estruturas de Dados. In: IFSertão. Disponível em:


<http://professor.ifsertao-
pe.edu.br/nicolas.trigo/site/pe/[06]_C_-
_Estrutura_de_Dados_Homogeneas.pdf>. Acesso em: 23 out.
2016.

USP, Instituto de Astronomia e Geofísica. Matrizes e sistemas


lineares. In: IAG – USP. Disponível em:
<http://www.astro.iag.usp.br/~carciofi/AGA0503/apostila_cap05.pdf>.
Acesso em: 27 out. 2016.

KOWALSKI, Luis. Lição 1 – Teste de Mesa. In: TWiki.


Disponível em:
<http://wiki.marceloakira.com/bin/view/GrupoLogica/LicaoTesteDeMesa>
Acesso em: 21 out. 2016.

Você também pode gostar