23
Programação 1 Prof. Bruno Vilela Oliveira

Programação 1 Prof. Bruno Vilela Oliveirafiles.brunovilela.webnode.com.br/200000245-af1beafe83/apostila prog1... · auxiliar na compreensão de conceitos abordados ao longo do curso

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Programação 1 Prof. Bruno Vilela Oliveirafiles.brunovilela.webnode.com.br/200000245-af1beafe83/apostila prog1... · auxiliar na compreensão de conceitos abordados ao longo do curso

Programação 1

Prof. Bruno Vilela Oliveira

Page 2: Programação 1 Prof. Bruno Vilela Oliveirafiles.brunovilela.webnode.com.br/200000245-af1beafe83/apostila prog1... · auxiliar na compreensão de conceitos abordados ao longo do curso

Apresentação

Os computadores mudaram sensivelmente o estilo de vida da sociedade moderna. Muitas pessoas já sabem como usá-los, mas nem todas sabem como programá-los. A disciplina Programação 1 tem por objetivo introduzir os conceitos e técnicas fundamentais da atividade de programação de computadores. Assimilando esse conteúdo, o aluno será capaz elaborar soluções algorítmicas estruturadas e posteriormente traduzi-las em programas de computador através um ambiente de programação.

Esta apostila foi elaborada a partir das notas de aula, dos livros da bibliografia recomendada e de outros materiais encontrados na Internet. O estudante deve considerar que, por se tratar de uma apostila, alguns detalhes relevantes em determinado contexto podem não ser abordados no texto, cujo objetivo principal é auxiliar na compreensão de conceitos abordados ao longo do curso em sala de aula (ou mesmo em outras leituras), permitir ao aluno planejar seus estudos e promover a prática na construção de algoritmos e de programas através de exercícios (apresentados ao fim de cada capítulo). O bom acompanhamento do curso exige a consulta de diversas fontes de informação: o estudante deve ter em mente que JAMAIS deverá abandonar os livros. Além disso, a programação é uma área (que como muitas outras) requer prática.

Fazer os exercícios (colocar em prática a programação) após o estudo dos conceitos e detalhes relevantes é a única maneira de realmente aprender a programar. Outro detalhe interessante é que a programação não deve ser tomada como uma atividade puramente individual. A interação com outros estudantes, professores e até mesmo com pessoas que não são programadores, mas que possuem conhecimentos sobre o problema a ser resolvido computacionalmente pode ser de extrema importância para o sucesso na escrita de programas.

Todo material utilizado nesta apostila não elaborado exclusivamente por mim está protegido pelas leis de direitos autorais de seus respectivos proprietários e foi empregado apenas com finalidade acadêmica sem qualquer fim lucrativo. Na seção de referências todas as fontes estão disponibilizadas.

No mais, desejo a todos que eventualmente acompanharem (ou não) este curso um bom aproveitamento deste simples material, e me coloco à disposição para tirar dúvidas, receber críticas ou sugestões.

Bruno Vilela Oliveira http://www.brunovilela.webnode.com.br

Page 3: Programação 1 Prof. Bruno Vilela Oliveirafiles.brunovilela.webnode.com.br/200000245-af1beafe83/apostila prog1... · auxiliar na compreensão de conceitos abordados ao longo do curso

Programação 1

Não seria um sonho se existisse uma apostila introdutória de programação que não lhe fizesse desejar estar em

qualquer outro lugar em vez de sentado em frente ao computador

escrevendo programas? Acho que é só uma fantasia...

Page 4: Programação 1 Prof. Bruno Vilela Oliveirafiles.brunovilela.webnode.com.br/200000245-af1beafe83/apostila prog1... · auxiliar na compreensão de conceitos abordados ao longo do curso

Sobre o professor Bruno Vilela Oliveira concluiu o MESTRADO em Engenharia Civil na área interdisciplinar de

Computação de Alto Desempenho/Sistemas Computacionais pela Universidade Federal do Rio de Janeiro em 2008. Sua formação acadêmica inclui a graduação em Ciência da Computação pela Universidade Federal de Juiz de Fora (2002) e especialização Lato Sensu em Gestão da Educação à Distância (2004). Possui experiência na área de Ciência da Computação, atuando principalmente nos seguintes temas: Data e Text Mining, Redes Neurais Artificiais, Engenharia de Software, Web Design, Design Gráfico. Atualmente é aluno de DOUTORADO do Programa de Engenharia Civil - Área Interdisciplinar de Computação de Alto Desempenho/Sistemas Computacionais - na Universidade Federal do Rio de Janeiro e é PROFESSOR ASSISTENTE do Centro de Ciências Agrárias da Universidade Federal do Espírito Santo, situado na cidade de Alegre. Durante o período dedicado ao MESTRADO foi bolsista da CAPES. Ao ingressar no DOUTORADO foi bolsista da ANP e do CNPq.

Dicas de estudo

1) Vá com calma. Quanto mais você compreende menos você tem que memorizar. Não fique somente lendo seu material didático. Pare e pense. Quando se deparar com uma pergunta ou exercício, não vá direto a um gabarito procurando as respostas. Imagine que alguém realmente está lhe fazendo uma pergunta. Quanto mais você forçar seu cérebro a pensar, melhores serão as chances de você aprender e se lembrar. 2) Faça os exercícios e escreva suas próprias anotações. Colocamos vários exercícios na apostila, mas se os fizermos por você, seria como ter alguém para realizar suas tarefas. Não fique apenas olhando para os exercícios. Use um lápis. Existem diversas evidências de que a atividade física durante a aprendizagem melhora os resultados. 3) Faça com que seu material de estudo seja a última coisa a ser lida antes de ir dormir. Ou ao menos a última coisa desafiadora. Parte do aprendizado (especialmente o que é transferido para a memória de longo prazo) acontece depois que você fecha o livro. Seu cérebro precisa de um tempo para realizar mais processamento. Se você colocar algo novo durante esse tempo de processamento, algo que você acabou de aprender será perdido. 4) Fale sobre o assunto. Bem alto. Falar ativa uma parte diferente do cérebro. Se você está tentando entender algo, ou querendo aumentar a chance de lembrar-se de algo posteriormente, diga em voz alta. Melhor ainda, tente explicar o assunto para um colega. Você aprenderá mais rapidamente, e poderá ter ideias que não teve quando estava lendo.

5) Beba água. Bastante. Seu cérebro funciona melhor em uma grande banheira de líquido. Desidratação (que pode ocorrer antes mesmo de você sentir sede) diminui a função cognitiva. 6) Escute seu cérebro. Preste atenção quando seu cérebro começar a ficar sobrecarregado. Se perceber que você começou a atingir o limite ou esquecer o que acabou de ler é hora de dar uma pausa. No momento em que você ultrapassar este ponto, não irá aprender mais rapidamente tentando ir mais adiante e pode até mesmo prejudicar o processo. 7) Escreva muitos programas! Só há um jeito de aprender a programar: codificando bastante. E é isso que você irá fazer ao longo do curso. Programar é uma habilidade e o único jeito de aprender bem é praticando. Esta apostila lhe dará a oportunidade de praticar muito: cada capítulo possui vários exercícios que lhe impõem problemas para resolver. Não evite os exercícios – Boa parte do aprendizado acontece quando você os resolve. Em alguns momentos poderei dar algumas dicas de como lidar com algum problema, não se acanhe de verificar estas dicas se estiver “agarrado” (é fácil se “enrolar” em algum detalhe simples). Entretanto, tente resolver os problemas antes de procurar um gabarito ou dicas para a solução. E definitivamente resolva as dúvidas e os desafios antes de ir para uma próxima seção da apostila.

Page 5: Programação 1 Prof. Bruno Vilela Oliveirafiles.brunovilela.webnode.com.br/200000245-af1beafe83/apostila prog1... · auxiliar na compreensão de conceitos abordados ao longo do curso

iii

Índice

1 Introdução aos computadores ............................................... 5

1.1. Introdução .................................................................................................... 6

1.2. Indústria da computação e pesquisas............................................................. 6

1.3. Computadores: Hardware e Software ............................................................ 8

1.4. Organização de computadores....................................................................... 9

1.5. O Sistema Binário e a Linguagem dos computadores .................................... 10 1.5.1. Linguagens de Máquina ............................................................................................ 12 Exercícios de revisão ........................................................................................................... 13

2 Conceitos Fundamentais de Programação ........................... 14

Escrever programas lhe dá o poder de controlar seu PC. ..................................... 15

Ser programado ou programar? ......................................................................... 15

2.2. Resolução de problemas com o computador ................................................ 16

2.3. Lógica de programação ................................................................................ 17

2.4. Instruções ................................................................................................... 18

2.5. Sequências lógicas ....................................................................................... 18

2.6. Programação ............................................................................................... 18 2.7.1. Abordagens de programação .................................................................................... 19 Exercícios de Revisão .......................................................................................................... 20

Referências ........................................................................................................ 21

Page 6: Programação 1 Prof. Bruno Vilela Oliveirafiles.brunovilela.webnode.com.br/200000245-af1beafe83/apostila prog1... · auxiliar na compreensão de conceitos abordados ao longo do curso

iv

Escrever programas lhe dá o poder de controlar seu PC. Quase todos sabem como usar um computador, mas poucos dão o próximo

passo e aprendem como controlá-lo. Se você usa software de outras pessoas, estará sempre limitado pelo que eles pensam que você quer fazer. Escreva seus próprios programas e o único limite será sua própria imaginação. A programação lhe tornará mais criativo, lhe fará pensar de forma mais precisa e lhe ensinará a analisar e resolver problemas de forma mais eficaz através do raciocínio lógico.

Você quer ser programado ou ser o programador?

When faced with a decision, I always ask, ―What would be the most fun?‖

—Peggy Walker

Page 7: Programação 1 Prof. Bruno Vilela Oliveirafiles.brunovilela.webnode.com.br/200000245-af1beafe83/apostila prog1... · auxiliar na compreensão de conceitos abordados ao longo do curso

1 Introdução aos computadores

Objetivos Nesta seção você estudará:

Exemplos de aplicações da computação.

Hardware e Software de computadores.

Como o computador representa as informações.

Page 8: Programação 1 Prof. Bruno Vilela Oliveirafiles.brunovilela.webnode.com.br/200000245-af1beafe83/apostila prog1... · auxiliar na compreensão de conceitos abordados ao longo do curso

Capítulo 1 – Introdução aos computadores

Programação 1 – Bruno Vilela Oliveira 6

1.1. Introdução

Atualmente há mais de um bilhão de computadores de uso geral em uso e bilhões de celulares, smartphones e dispositivos portáteis (tais como computadores do tipo tablet). A computação moderna é algo muito mais abrangente do que há alguns anos, quando ao se falar em computadores você logo pensava em desktops ou laptops, não incluindo nesta área outros dispositivos que também poderiam ser considerados computadores.

De acordo com um estudo realizado por eMarketer, o número de usuários que acessam a internet via dispositivos móveis alcançará aproximadamente 134 milhões em 20131. Outros estudos projetaram que as vendas de smartphones ultrapassariam as vendas de computadores pessoais em 20112 e que a venda de tablets representará 20% de todas as vendas de computadores pessoais em 2015. Em 2014, espera-se que o mercado de aplicações para smartphones exceda $40 bilhões3, o que tem gerado significativas oportunidades no ramo da programação de aplicações para dispositivos portáteis.

1.2. Indústria da computação e pesquisas

Vive-se uma época excitante na área da computação. Muitos dos negócios mais influentes e de sucesso das últimas duas décadas são conduzidos por companhias de tecnologia como a Apple, IBM, Hewlett Packard, Dell, Intel, Motorola, Cisco, Microsoft, Google, Amazon, Facebook, Twitter, Groupon, Foursquare, Yahoo!, eBay e muitas outras – Estas são as maiores empregadoras de estudantes de ciência da computação, Sistemas de Informação e de áreas correlatas. Há aproximadamente um ano e meio a Apple era a segunda companhia mais valiosa no mundo e a companhia de tecnologia mais valiosa4. Computadores também são usados extensivamente em pesquisas acadêmicas e da indústria.

Na tabela 1.1 são apresentados alguns exemplos de como os computadores são usados em pesquisas e na indústria.

Tabela 1.1 – Aplicações da computação

Nome Descrição Internet A Internet – rede mundial de computadores – se tornou possível pela convergência

da computação e dos recursos de comunicação. Suas origens datam da década de 1960, por meio de financiamento de pesquisas oferecido pelo Departamento de Defesa dos EUA. Originalmente projetada para conectar os principais sistemas de computação de universidades e organizações de pesquisa, hoje a Internet é acessível por bilhões de computadores e dispositivos controlados por computadores ao redor do mundo. No terminal remetente, os computadores quebram grandes porções de dados a transmitir em pacotes, encaminham esses pacotes aos destinatários pretendidos e certificam-se de que eles foram recebidos em sequência e sem erros nos terminais de destino. De acordo com um estudo realizado pela Forrester Research, a população média de “internautas” consumidores nos EUA passam na internet tempo equivalente ao que assistem TV. (forrester.com/rb/ Research/understanding_changing_needs_of_us_online_consumer/ q/id/57861/t/2).

1 www.circleid.com/posts/mobile_internet_users_to_reach_134_million_by_2013/.

2 www.pcworld.com/article/171380/more_smartphones_than_desktop_pcs_by_2011.html.

3 Inc., December 2010/January 2011, pages 116–123.

4 www.zdnet.com/blog/apple/apple-becomes-worlds-second-most-valuable-company/9047.

Page 9: Programação 1 Prof. Bruno Vilela Oliveirafiles.brunovilela.webnode.com.br/200000245-af1beafe83/apostila prog1... · auxiliar na compreensão de conceitos abordados ao longo do curso

Capítulo 1 – Introdução aos computadores

Programação 1 – Bruno Vilela Oliveira 7

Projeto Genoma Humano

O projeto Genoma Humano (Human Genome Project) foi criado para identificar e analisar os mais de 20000 genes presentes no DNA humano. O projeto utilizou programas de computador para analisar dados genéticos complexos, determinar as sequências de bilhões de pares de bases químicas que configuram o DNA humano e armazenar a informação obtida em bancos de dados que foram disponibilizados para pesquisadores de diversas áreas. Esta pesquisa gerou uma enorme inovação e crescimento na indústria da biotecnologia.

Comunidade Mundial do Grid

A comunidade Mundial do Grid (www.worldcommunitygrid.org) é uma malha de computação sem fins lucrativos. Pessoas ao redor do mundo doam o potencial de processamento de seus computadores que não está sendo utilizado através da instalação de um sistema de software livre e seguro que permite que a Comunidade Mundial do Grid obtenha poder de processamento extra quando os computadores estão ociosos. O potencial de computação é usado como substituto a supercomputadores para conduzir projetos de pesquisa científicos que devido aos resultados se tornaram famosos. Entre os projetos se destacam o emprego acessível da energia solar, fornecimento de água tratada aos países em desenvolvimento, luta contra o câncer, busca por medicamentos contra os vírus da gripe, cultivo de grãos (como arroz) mais nutritivos para regiões que lutam contra a fome, entre outros.

Geração de imagens médicas

Imagens de Raio-X em Tomografia computadorizada são geradas a partir de centenas de ângulos diferentes. Computadores são usados para ajustar a intensidade do Raio-X, otimizando a imagem para cada tipo de tecido, e então combinar toda a informação obtida para criar uma imagem em 3D.

GPS Dispositivos com Sistema de Posicionamento Global (Global Positioning System – GPS) usam uma rede de satélites para obter informações de localização. Vários satélites enviam sinais com informação de data e hora ao dispositivo GPS, que calcula a distância em relação a cada satélite com base na informação temporal do momento que o sinal deixou o satélite e no qual o sinal foi recebido pelo GPS. A localização de cada satélite e a distância em relação a eles são usados para determinar a localização exata do dispositivo. Baseado em sua localização, um GPS pode fornecer instruções passo a passo de direcionamento, ajudá-lo a encontrar facilmente restaurantes, postos de gasolina além de outros locais de interesse, ou a localizar amigos.

Robôs Robôs são máquinas computadorizadas que podem realizar tarefas (incluindo tarefas físicas), responder a estímulos e muito mais. Podem ser usados para tarefas do dia a dia (faxina), entretenimento (robôs de estimação), combates militares, exploração espacial e submarina, manufatura entre outras atividades. Em 2004, o Mars Rover (astromóvel de Marte, controlado remotamente) da NASA explorou a superfície de Marte para o estudo do histórico de água no planeta.

Programação de Jogos

A indústria dos jogos de computador tornou-se enorme. O desenvolvimento de video-games mais sofisticados pode chegar $100 milhões. O jogo Call of Duty 2: Modern Warfare, lançado em 2009, rendeu $310 milhões em um único dia na américa do norte e Reino Unido (news.cnet.com/8301-13772_3- 10396593-52.html?tag=mncol;txt)! Jogos sociais online, que permitem a usuários de todo mundo competirem uns com os outros, estão se destacando cada vez mais. A desenvolvedora Zynga – criadora de jogos populares como FarmVille e Mafia Wars – foi fundada em 2007 e já tem mais de 215 milhões de usuários mensais. Para acomodar o tráfego crescente, a Zynga acrescenta aproximadamente 1000 servidores por semana (techcrunch.com/2010/09/22/zynga-moves-1-petabyte-of-data-daily-adds-1000-servers-aweek/)! Os consoles também se tornaram cada vez mais sofisticados. O Remote, controle para o Wii, da Nintendo, utiliza um acelerômetro (para detectar a inclinação e aceleração) e um sensor que determina para onde o dispositivo é apontado, permitindo ao console responder à movimentos. Através de gestos com o Wii Remote nas mãos, você pode controlar o jogo na tela. Com o Kinect da Microsoft para o Xbox 360, você – o jogador – torna-se o controlador. O Kinect usa uma

Page 10: Programação 1 Prof. Bruno Vilela Oliveirafiles.brunovilela.webnode.com.br/200000245-af1beafe83/apostila prog1... · auxiliar na compreensão de conceitos abordados ao longo do curso

Capítulo 1 – Introdução aos computadores

Programação 1 – Bruno Vilela Oliveira 8

câmera, sensor de profundidade e um software sofisticado para acompanhar os movimentos do corpo do jogador, permitindo-o controlar o jogo (pt.wikipedia.org/wiki/Kinect). Os jogos do Kinect incluem jogos de dança, exercícios, esportes, treinamento de animais virtuais, aventuras e outros temas.

1.3. Computadores: Hardware e Software

Um computador é um dispositivo que pode realizar cálculos e tomar decisões lógicas em uma velocidade extremamente superior aos seres humanos. Muitos dos computadores pessoais da atualidade podem realizar bilhões de cálculos em um segundo – mais do que um ser humano pode realizar durante a vida toda. Supercomputadores já realizam milhares de trilhões (quatrilhões) de instruções por segundo! Para se ter ideia, um computador de um quatrilhão de instruções por segundo pode realizar em um segundo mais de 100000 cálculos para cada pessoa do planeta! E o desenvolvimento não para por aí: esses limites “superiores” estão crescendo rapidamente.

Computadores processam dados sob o controle de conjuntos de instruções, chamadas programa de computador. Tais programas guiam o computador por meio de conjuntos ordenados de ações especificadas por pessoas chamadas programadores de computador. Os programas que são executados em um computador são denominados software. Ao aprender a programar, você deverá sempre buscar por técnicas e metodologias que aumentam a produtividade e reduzem os custos de desenvolvimento.

Um computador consiste de vários dispositivos definidos como hardware (ex. o teclado, a tela, o mouse, discos rígidos, memória, DVDs e unidades de processamento). Os custos com da computação têm caído sensivelmente, possibilitando um acelerado desenvolvimento nas tecnologias de hardware e de software. Computadores que ocupavam enormes salas e custavam milhões de dólares décadas atrás são agora construídos em chips de silício menores que uma unha, custando talvez alguns dólares a unidade. Ironicamente, o silício é um dos materiais mais abundantes – é um ingrediente da areia comum. A tecnologia do chip de silício tornou a computação tão econômica que mais de um bilhão de computadores de uso geral estão em uso no mundo, e prevê-se que estes números dobrarão em poucos anos.

Os chips de computador (microprocessadores) controlam incontáveis dispositivos. Estes sistemas embutidos incluem sistemas anti-bloqueio de frenagem em carros, sistemas de navegação, eletrodomésticos inteligentes, sistemas de segurança residencial, celulares e smartphones, robôs, semáforos inteligentes para cruzamentos em ruas, sistemas anti-colisões, controles de videogames, etc. Grande parte dos microprocessadores produzidos anualmente é embutida em dispositivos que não são computadores de uso geral5.

5 www.eetimes.com/electronics-blogs/industrial-control-designline-blog/4027479/

Real-men-program-in-C?pageNumber=1.

Page 11: Programação 1 Prof. Bruno Vilela Oliveirafiles.brunovilela.webnode.com.br/200000245-af1beafe83/apostila prog1... · auxiliar na compreensão de conceitos abordados ao longo do curso

Capítulo 1 – Introdução aos computadores

Programação 1 – Bruno Vilela Oliveira 9

1.4. Organização de computadores

Independente de diferenças na aparência física, os computadores podem ser imaginados como divididos em várias unidades lógicas, ou seções (tabela 1.2).

Tabela 1.2 – Unidades Lógicas de um computador

Unidade Lógica Descrição Unidade de entrada Esta seção de “recebimento” obtém informação (dados e programas de

computador) a partir de dispositivos de entrada e a disponibiliza para as outras unidades para processamento. Grande parte da informação é inserida nos computadores através de teclados, telas de toque e mouse. Outras formas de entrada incluem comandos de voz, digitalização de imagens e leitura de códigos de barra, leitura de dispositivos de armazenamento (discos rígidos, unidades de DVD, Discos Blu-ray™ e unidades de memória flash – também conhecidas como cartões de memória, pen drives ou memory sticks), recepção de vídeo de uma webcam e através da recepção de informação da internet (como quando você faz download de vídeos do YouTube™ ou uma apostila do site do professor). Novas formas de entrada incluem a leitura de dados de posicionamento a partir de GPS e informações de orientação por meio de gestos através de um dispositivo como em um smartphone ou controlador de vídeo-game.

Unidade de saída Esta seção de “envio” toma informação que o computador processou e a coloca em vários dispositivos de saída para torna-la disponível para uso fora do computador. Atualmente, grande parte da informação que sai de um computador é exibida em telas, impressa em papel, reproduzida como áudio ou vídeo em reprodutores de mídia portátil (iPods, mp4 players etc), transmitida pela internet ou usada para controlar outros dispositivos, como robôs e eletrodomésticos inteligentes.

Unidade de memória Esta seção de ”armazenamento” de acesso rápido e capacidade relativamente baixa retém a informação que foi inserida no computador através de unidades de entrada, tornando a informação imediatamente disponível para processamento quando necessário. A unidade de memória também retém a informação processada até que ela possa ser colocada em dispositivos de saída pela unidade de saída. A informação na unidade de memória é volátil – normalmente é perdida quando o sistema é desligado. A unidade de memória muitas vezes é chamada de memória ou memória primária. A memória principal típica em computadores Desktop e Notebooks contém entre 1 GB e 8 GB (GB significa gigabytes; um gigabyte é aproximadamente um bilhão de bytes).

Unidade Lógica e Aritmética (ULA ou ALU)

Esta seção de “produção” realiza cálculos, tais como adição, subtração, multiplicação e divisão. Também possui o mecanismo de decisão que permite o computador, por exemplo, comparar dois itens na unidade de memória para determinar se eles são iguais. Nos sistemas atuais, a ALU normalmente é implementada como parte da CPU.

Unidade Central de Processamento (CPU)

Esta seção “administrativa” coordena e supervisiona toda a operação das outras seções. A CPU diz à unidade de entrada quando uma informação deve ser lida para envio à unidade de memória, diz à ALU quando a informação da unidade de memória deve ser usada em cálculos e diz à unidade de saída quando enviar informação da unidade de memória a determinado dispositivo de saída. Muitos dos computadores atuais possuem múltiplas CPUs e, assim, podem realizar muitas operações de forma simultânea. Um processador multi-core implementa um sistema multiprocessador em um único chip de circuito integrado – um

Page 12: Programação 1 Prof. Bruno Vilela Oliveirafiles.brunovilela.webnode.com.br/200000245-af1beafe83/apostila prog1... · auxiliar na compreensão de conceitos abordados ao longo do curso

Capítulo 1 – Introdução aos computadores

Programação 1 – Bruno Vilela Oliveira 10

processador dual-core possui duas CPUs e um quadcore tem quatro CPUs. A Apple disponibiliza um sistema com 12 núcleos de processamento (dois processadores six-core) em seu Mac Pro (http://www.apple.com/macpro/features/processor.html). Os desktops atuais podem ser equipados com processadores que são capazes de executar bilhões de instruções por segundo. Alguns autores definem que a CPU é constituída por uma unidade lógica e aritmética e por uma unidade de controle (UC), sendo a segunda responsável pelas tarefas descritas para a CPU neste quadro.

Unidade de armazenamento secundário (ou memória secundária)

Esta é a seção de “armazenamento de longo-prazo”. Programas ou dados que não são usados ativamente por outras unidades normalmente são colocados em dispositivos de armazenamento secundário (ex. seu disco rígido) até que os mesmos sejam necessários novamente, após horas, dias ou mesmo anos depois. A informação nos dispositivos de memória secundária é persistente – é preservada mesmo quando o computador está desligado. O acesso à informação no armazenamento secundário é muito mais lento que na memória principal, mas o custo por unidade de armazenamento secundário é muito menor em relação ao custo da memória principal. Exemplos de dispositivos de armazenamento secundário são as unidades de CD, DVD, Blu-ray™ e memórias flash, alguns destes podendo armazenar até 128 GB. Discos rígidos típicos em computadores desktop e notebooks podem armazenar até 3 TB (TB significa terabytes; um terabyte é aproximadamente um trilhão de bytes).

Na figura 1.1 é mostrada uma arquitetura tipicamente adotada para ilustrar a

organização das seções lógicas (ou unidades) dos computadores.

Figura 1.1 – arquitetura típica de um computador

1.5. O Sistema Binário e a Linguagem dos computadores

O sistema binário, ou base 2, é um sistema de numeração posicional em que todas as quantidades se representam com base em dois números, com o que se dispõe dos símbolos zero e um (0 e 1).

Page 13: Programação 1 Prof. Bruno Vilela Oliveirafiles.brunovilela.webnode.com.br/200000245-af1beafe83/apostila prog1... · auxiliar na compreensão de conceitos abordados ao longo do curso

Capítulo 1 – Introdução aos computadores

Programação 1 – Bruno Vilela Oliveira 11

Os computadores digitais trabalham internamente com dois níveis de tensão, implementando um sistema binário de representação de informações para seus dados e instruções. Em computação, chama-se um dígito binário de Bit (simplificação para "BInary digiT" em inglês), e um bit é a menor unidade de informação que pode ser armazenada ou transmitida. Um bit pode assumir somente 2 valores, conforme o sistema binário, por exemplo: 0 ou 1, verdadeiro ou falso. Um agrupamento de bits corresponde a um byte (BinarY TErm). Um agrupamento de 4 bits é chamado de nibble. Para o tratamento de informações representadas em binário, existem diversas regras matemáticas que indicam como os bits devem ser manipulados. Num sistema simples como este é possível simplificar o cálculo, com o auxílio da lógica booleana.

O sistema binário é base para a Álgebra booleana (de George Boole - matemático inglês), que permite fazer operações lógicas e aritméticas usando-se apenas os dois dígitos (ou estados) do sistema binário (sim e não, falso e verdadeiro, tudo ou nada, 1 ou 0, ligado e desligado). Toda a eletrônica digital da computação está baseada nesse sistema binário e na lógica de Boole, que permite representar por circuitos eletrônicos digitais (portas lógicas) os números, caracteres, realizar operações lógicas e aritméticas. Os programas de computadores são codificados sob forma binária e armazenados nas mídias (memórias, discos, etc.) sob esse formato.

Fisicamente, o valor de um bit é, de uma maneira geral, armazenado como uma carga elétrica acima ou abaixo de um nível padrão em um único capacitor dentro de um dispositivo de memória. Mas, bits podem ser representados fisicamente por vários meios. Os meios e técnicas comumente usados são: Pela eletricidade, como já citado, por via da luz (em fibras ópticas, ou em leitores e gravadores de discos ópticos por exemplo), por via de ondas eletromagnéticas (rede wireless), ou também, por via de polarização magnética (discos rígidos).

Como em outras linguagens (naturais ou artificiais) uma informação especificada através do sistema binário é constituída por uma sequência (cadeia ou palavra) de um ou mais bits. Embora os computadores tenham instruções (ou comandos) que possam testar e manipular bits, geralmente são idealizados para armazenar instruções e dados em múltiplos de bits, (os bytes). No princípio, o byte tinha tamanho variável, mas atualmente é comum usar o termo para especificar uma sequência de oito bits. Bytes de oito bits também são chamados de octetos.

É comum o uso de termos para referir-se a múltiplos de bits usando padrões prefixados, como quilo bit (kb), mega bit (Mb), giga bit (Gb). Deve-se observar que a notação para bit utiliza um "b" minúsculo, em oposição à notação para byte que utiliza um "B" maiúsculo como em kB (para quilo Byte), MB (para megabyte) e GB (para Giga Byte). Na tabela 1.1 estão sumarizados valores dos múltiplos do byte e as siglas padronizadas para especificá-los seguinte o padrão da Comissão Eletrotécnica

Internacional (IEC) 6 e do Sistema Internacional de Unidades (SI) 7.

6 http://pt.wikipedia.org/wiki/Comiss%C3%A3o_Eletrot%C3%A9cnica_Internacional

7 http://pt.wikipedia.org/wiki/Sistema_Internacional_de_Unidades

Page 14: Programação 1 Prof. Bruno Vilela Oliveirafiles.brunovilela.webnode.com.br/200000245-af1beafe83/apostila prog1... · auxiliar na compreensão de conceitos abordados ao longo do curso

Capítulo 1 – Introdução aos computadores

Programação 1 – Bruno Vilela Oliveira 12

Tabela 1.1 – Múltiplos do Byte

Múltiplos do byte

Prefixo binário (IEC) Prefixo do SI

Nome Símbolo Múltiplo Nome Símbolo Múltiplo

byte B 20 byte B 100

kibibyte(quilobyte) KiB 210 quilobyte kB 103

mebibyte(megabyte) MiB 220 megabyte MB 106

gibibyte(gigabyte) GiB 230 gigabyte GB 109

tebibyte(terabyte) TiB 240 terabyte TB 1012

pebibyte(petabyte) PiB 250 petabyte PB 1015

exbibyte(exabyte) EiB 260 exabyte EB 1018

zebibyte(zettabyte) ZiB 270 zettabyte ZB 1021

yobibyte(yottabyte) YiB 280 yottabyte YB 1024 Assim, tem-se que 1 KB equivale a 1.024 bytes, 1 MB equivale a 1.048.576

bytes, 1 GB equivale a 1.073.741.824 bytes e assim por diante. Na área de Telecomunicações, o volume de tráfego em redes de

computadores é geralmente descrito em termos de bits por segundo. Por exemplo, "um modem de 56 kbps é capaz de transferir dados a 56 quilobits em um único segundo" (o que equivale a 6,8 quilobytes (kibibyte), 6,8 kB, com B maiúsculo para mostrar que estamos nos referindo a bytes e não a bits. Ethernet transfere dados a velocidades que variam de 10 megabits por segundo a 1 gigabit por segundo (de 1,19 a 119 megabytes(mebibyte) por segundo). No Sistema Internacional (SI), os prefixos quilo-, mega-, etc às vezes têm o significado modificado quando aplicados a bits e bytes.

1.5.1. Linguagens de Máquina

De modo geral, considera-se que os computadores só compreendem a linguagem binária. Embora no sistema numérico binário existam regras aritméticas bem definidas, em um computador existem detalhes importantes sobre como são manipuladas as palavras binárias.

O projeto de unidades de processamento (CPUs) envolve a definição de um conjunto (ou sistema) de instruções indivisíveis que o computador é capaz de executar diretamente. Cada instrução possível é representada por uma codificação binária específica (uma sequência de 0s e 1s). Este conjunto de instruções reconhecidas pelo processador é denominado código de máquina ou Linguagem de Máquina. Consequentemente, cada programa executável é constituído por uma série destas instruções atómicas.

O conjunto de instruções válidas para um determinado processador pode ser diferente do conjunto reconhecido por outros. Supondo que a seguinte codificação binária (fictícia) “00110110” significasse uma instrução válida para certo tipo de CPU X. Se submetida para execução em outro tipo de CPU (digamos Y) que também aceite instruções com esse tamanho (8 bits neste caso), o significado dessa instrução para a CPU do tipo Y pode ser diferente do significado para a CPU do tipo X (ou mesmo a instrução pode não ter significado algum para a CPU do tipo Y, não sendo possível executar ação alguma neste caso).

A programação de computadores seria extremamente tediosa, difícil, trabalhosa e propensa a erros caso tivéssemos que escrever os programas diretamente na linguagem de máquina. Este foi um dos principais fatores que motivou o desenvolvimento de linguagens de programação de alto nível, que constituem uma linguagem artificial mais acessível a humanos para a programação de

Page 15: Programação 1 Prof. Bruno Vilela Oliveirafiles.brunovilela.webnode.com.br/200000245-af1beafe83/apostila prog1... · auxiliar na compreensão de conceitos abordados ao longo do curso

Capítulo 1 – Introdução aos computadores

Programação 1 – Bruno Vilela Oliveira 13

computadores. Sem as linguagens de alto nível todo programador teria, ainda hoje, que “aprender” uma linguagem de máquina específica para cada tipo de CPU na qual ele quisesse executar seus programas.

Exercícios de revisão

1) Preencha as lacunas: a) Computadores processam dados sob o controle de conjuntos de instruções chamados

__________________. b) As principais unidades lógicas do computador são _______________________,

_____________________,_____________________,_____________________,_____________________ e _________________________.

c) A unidade lógica do computador que recebe informação de fora do computador para uso interno é a _____________________________.

d) _____________________ é uma unidade lógica que envia informação que já foi processada pelo computador para vários dispositivos de forma que a informação possa ser usada fora do computador.

e) _________________________________ é uma unidade lógica do computador que realiza cálculos.

f) _________________________________ é uma unidade lógica do computador que toma decisões lógicas.

g) ___________________________________ é uma unidade lógica do computador que coordena as atividades de todas as outras unidades lógicas.

h) Os dois tipos de linguagens discutidos nesta seção foram _____________________ e ____________________________.

i) _____________________________ utiliza apenas dois símbolos para a codificação de informação, e tipicamente um conjunto de 8 ______ é chamado de __________.

j) Caso um disco rígido possuísse a capacidade real de 2147483648 Quilo Bytes, poderíamos dizer que ele pode armazenar ____________ Tera Bytes.

k) A única linguagem que um computador pode compreender diretamente é a _____________________________ do computador.

Page 16: Programação 1 Prof. Bruno Vilela Oliveirafiles.brunovilela.webnode.com.br/200000245-af1beafe83/apostila prog1... · auxiliar na compreensão de conceitos abordados ao longo do curso

2 Conceitos Fundamentais de Programação

Objetivos Nesta seção você estudará:

Motivos para aprender a programar.

Processo de resolução de problemas no computador.

Conceitos de lógica, lógica de programação, instruções e sequências lógicas.

A atividade de Programação.

Page 17: Programação 1 Prof. Bruno Vilela Oliveirafiles.brunovilela.webnode.com.br/200000245-af1beafe83/apostila prog1... · auxiliar na compreensão de conceitos abordados ao longo do curso

Capítulo 3 - Algoritmos e Raciocínio

Programação 1 – Bruno Vilela Oliveira 15

Como posso fazer meu website realizar a tarefa

que eu quero?

Cara, estou tão enjoado desses mesmos

joguinhos de sempre!

Se ao menos eu pudesse programar o Twitter...

Escrever programas lhe dá o poder de controlar seu PC.

Quase todo mundo sabe como usar um computador, mas poucas pessoas dão o próximo passo e aprendem como controlá-lo. Se você utilizar o software de outras pessoas, estará sempre limitado pelo que os outros pensam que você quer fazer. Escreva seus próprios programas e o único limite será sua imaginação.

A programação lhe tornará mais criativo, lhe fará pensar de forma mais

precisa e lhe ensinará a analisar e resolver problemas adotando o raciocínio lógico. Você quer ser programado ou ser um programador?

Ser programado ou programar?

A programação lhe permite fazer mais... Você tem problemas para resolver e trabalho a realizar, mas os softwares que

possui não atendem todas as necessidades. Mesmo com um “montão” de programas em seu computador, você ainda precisa fazer algo diferente, específico a você.

Você quer fazer mais com seu computador. Quer assumir o controle. Aprender a programar lhe dá o poder de criar e resolver. Aprender a programar coloca você no comando.

Mas, como funciona a programação?

Page 18: Programação 1 Prof. Bruno Vilela Oliveirafiles.brunovilela.webnode.com.br/200000245-af1beafe83/apostila prog1... · auxiliar na compreensão de conceitos abordados ao longo do curso

Capítulo 3 - Algoritmos e Raciocínio

Programação 1 – Bruno Vilela Oliveira 16

2.1. Resolução de problemas com o computador

As unidades lógicas apresentadas na seção 1.4 (Tabela 1.2 e Figura 1.1) permitem ao computador realizar de forma geral quatro tipos de operações básicas:

1) Operações de entrada e saída: ler dados do teclado e escrever dados na tela são exemplos destas operações. Elas servem para introduzir dados na memória do nosso computador e exibir os dados que já estejam lá armazenados;

2) Operações aritméticas: são utilizadas na realização de operações matemáticas (adição, subtração, multiplicação e divisão);

3) Operações lógicas e relacionais: têm aplicabilidade em comparações, testes de condições lógicas ( 2 > 6?; X = Y?);

4) Movimentação de dados entre os vários componentes: as operações aritméticas são executadas na Unidade Lógica e Aritmética, necessitando da transferência dos dados para essa unidade e da volta do resultado final para ser guardado na memória.

Os computadores podem ser usados de forma eficiente (devido à rapidez e

confiabilidade) na solução de certos tipos de problemas. Em geral são problemas que envolvem a manipulação de grandes quantidades de dados e/ou problemas de natureza complexa, exigindo a execução de um grande número de passos para alcançar a solução.

O computador é uma ferramenta que permite a realização do processamento automático (ou eletrônico) de dados. Define-se por Processamento de Dados qualquer atividade que, utilizando informações (ou dados), efetua transformações para obter novas informações (ou dados) como resultado. O computador é capaz de executar processos de acordo com regras precisamente definidas, sendo que:

Existe um repertório finito de instruções elementares que o computador entende e é capaz de executar.

Os elementos desse repertório finito podem ser agrupados (ou programados) de modo a dar origem a um número infinito de combinações. Exemplos: o Música (composta pela combinação das 7 notas musicais) o Representação decimal de números reais (a partir de dígitos de 0 a 9)

A tarefa desempenhada pelos computadores é apenas parte do processo de solução de problemas, sendo todo esse processo descrito pelas seguintes etapas:

1) Entendimento do problema; 2) Criação de uma sequência de operações (ou ações) que, quando executadas,

produzem a solução para o problema; 3) Execução desta sequência de operações. 4) Verificação da adequação da solução.

As etapas de entendimento do problema, criação de sequência de ações e verificação da adequação da solução são tarefas desempenhadas por pessoas. Já a execução das operações pode ser desempenhada por computadores. Os computadores têm a capacidade de executar processos complicados e com grande quantidade de informações com rapidez e confiabilidade.

Exemplo: Suponha que queiramos resolver o seguinte problema: a partir de dois números que serão informados, calcular a soma dos mesmos. Se você fosse encarregado de efetuar essa tarefa, seria bem provável que utilizasse os passos a seguir:

a) saber quais são os números; b) calcular a soma dos números; c) responder à questão com o valor do resultado.

Page 19: Programação 1 Prof. Bruno Vilela Oliveirafiles.brunovilela.webnode.com.br/200000245-af1beafe83/apostila prog1... · auxiliar na compreensão de conceitos abordados ao longo do curso

Capítulo 3 - Algoritmos e Raciocínio

Programação 1 – Bruno Vilela Oliveira 17

Entretanto, o computador é “burro”, apesar de ele saber somar, ele não sabe o que é “saber” e nem “responder”. A seguir é apresentada uma forma de como esse mesmo problema seria resolvido em termos das operações básicas citadas anteriormente:

a) operação de entrada de dados dos números; b1) movimento do valor dos números entre a memória e a ULA; b2) operação aritmética de somar os 2 números; b3) movimentação do resultado da ULA para guardar na memória; c) operação de saída do resultado, que está guardado na memória, para o

dispositivo de saída desejado. Deve-se salientar que os passos b1 e b3, normalmente, ficam embutidos na

operação matemática, não sendo explicitados. Esse tipo de especificação dos passos que devem ser executados para a

resolução de problemas é frequentemente chamado de algoritmo. Em resumo, pode-se dizer que escrever algoritmos ou, em última análise, programar consiste em dividir qualquer problema em muitos pequenos passos, usando uma ou mais das quatro operações básicas citadas.

Esses passos que compõem o algoritmo são denominados de comandos (ou instruções). Os comandos de uma linguagem de programação podem estar mais próximos da máquina (linguagens de baixo nível) ou serem mais facilmente entendidos pelo homem (linguagens de alto nível). A sequência de operações básicas, dada anteriormente, para resolver o problema de adicionar dois números, está em uma linguagem de baixo nível para o nosso computador hipotético. Em uma linguagem de alto nível teríamos um resultado assim:

leia (X,Y); SOMA X + Y; escreva (SOMA);

2.2. Lógica de programação

Para compreender o termo “Raciocínio lógico”, é válido tentar compreender o que seria lógica. Lógica pode ser definida como a técnica de encadear pensamentos para atingir determinado objetivo.

A lógica de programação é necessária para pessoas que desejam trabalhar com desenvolvimento de sistemas e programas, ela permite definir a sequência lógica para o desenvolvimento das soluções (algoritmos, programas etc.). A Lógica de Programação pode ser associada diretamente com o Raciocínio Matemático, onde o importante é a interpretação de um problema e a utilização correta de uma fórmula. O saber da Lógica está no “praticar”.

Não existem “fórmulas” em computação, o que existe é o aperfeiçoamento de nossa forma de pensar e raciocinar sobre um problema, podendo extrair do mesmo uma solução eficiente e eficaz, sob um determinado ângulo de visão. Assim, verificamos que é preciso aprender a pensar sobre os problemas, extraindo deles o máximo de informações.

De forma resumida, pode-se dizer que a lógica de programação é a técnica de encadear pensamentos para atingir determinado objetivo.

A solução que criamos para um determinado problema necessita ser exteriorizada e expressa numa linguagem publicamente conhecida. Assim, utilizamos a lógica de programação para desenvolver nossas soluções e os “algoritmos” para apresentar essas soluções ao mundo.

Page 20: Programação 1 Prof. Bruno Vilela Oliveirafiles.brunovilela.webnode.com.br/200000245-af1beafe83/apostila prog1... · auxiliar na compreensão de conceitos abordados ao longo do curso

Capítulo 3 - Algoritmos e Raciocínio

Programação 1 – Bruno Vilela Oliveira 18

2.3. Instruções

Na linguagem comum, entende-se por instruções “um conjunto de regras ou normas definidas para a realização ou emprego de algo”. Em informática, é o que indica a um computador uma ação elementar a executar.

Convém ressaltar que uma ordem isolada não permite realizar o processo completo, para isso é necessário um conjunto de instruções colocadas em ordem sequencial lógica.

Por exemplo, se quisermos fazer uma porção de batatas fritas, precisaremos colocar em prática uma série de instruções: descascar as batatas, colocar uma panela com óleo suficiente para a fritura no fogão, etc.

É evidente que essas instruções têm que ser executadas em uma ordem adequada – não se podem descascar as batatas depois de fritá-las.

Dessa maneira, uma instrução tomada em separado não tem muito sentido; para obtermos o resultado, precisamos colocar em prática o conjunto de todas as instruções, na ordem correta.

2.4. Sequências lógicas

Pode-se definir uma sequência lógica como sendo um conjunto de passos executados até atingir um objetivo ou solução de um problema.

Até mesmo as coisas mais simples, podem ser descritas por sequências lógicas. Por exemplo, assumindo que as instruções necessárias para a tarefa de comer uma barra de chocolate já são conhecidas e que elas podem ser realizadas por uma pessoa, a seguinte sequência lógica realizaria a tarefa:

Pegar o chocolate

Retirar a embalagem

Jogar a embalagem no lixo

Comer o chocolate

2.5. Programação

A programação pode ser descrita como o processo de: análise de um problema, projeto, escrita e teste de um conjunto de instruções organizadas logicamente, que quando executadas produzem uma solução para o problema analisado. O resultado da programação é, adotando uma visão simplista, uma especificação de instruções denominada programa (ou software).

Os programas de computadores nada mais são do que algoritmos escritos numa linguagem de programação e que são interpretados e executados por uma máquina, no caso um computador.

O programa pode ser escrito em linguagens como Java, Python, Pascal, C, C++, C#, Cobol, Fortran, Visual Basic, etc, embora seja possível, com alguma dificuldade, escrevê-lo diretamente em linguagem de máquina.

De qualquer forma, para que o programa possa ser executado em um computador real, as instruções devem estar codificadas em linguagem de máquina (binária).

A programação pode ser considerada uma arte e uma ciência. Arte porque existem muitas maneiras de se realizar o trabalho de programação. Existe espaço para uma considerável dose de criatividade. É também uma ciência, porque existem algumas regras que devem ser seguidas, porque é necessário o uso de lógica e

Page 21: Programação 1 Prof. Bruno Vilela Oliveirafiles.brunovilela.webnode.com.br/200000245-af1beafe83/apostila prog1... · auxiliar na compreensão de conceitos abordados ao longo do curso

Capítulo 3 - Algoritmos e Raciocínio

Programação 1 – Bruno Vilela Oliveira 19

porque existem alguns métodos rigorosos de programação que asseguram a eficiência, economia e a utilidade dos programas gerados.

O trabalho de programação pode se tornar mais fácil se o dividirmos sistematicamente em partes menos complexas (esta técnica denomina-se “dividir para conquistar”).

Um programa é considerado confiável quando conseguir fazer com que o computador cumpra com o objetivo proposto. Os programas construídos devem ser eficazes quando realizam a tarefa definida, e eficientes quando utilizam os melhores meios para realizá-la.

O maior problema na construção de programas é a complexidade; esta complexidade representa a quantidade de situações diferentes que um problema pode apresentar e que devem ser previstas na solução do mesmo. Portanto, ao se construir um programa, o objetivo principal é vencer a complexidade do problema a ser solucionado.

A fim de lidar com esta complexidade, pode-se dividir a programação em duas fases distintas:

Modelização (ou Resolução) do Problema: determinação do modelo de solução para o problema proposto na forma de um “algoritmo computacional”. Assim, a elaboração de um algoritmo é o primeiro passo para a preparação de um programa de computador. Este algoritmo deve ser independente da linguagem de programação que será utilizada.

Implementação: é a transformação (ou codificação) do algoritmo em alguma Linguagem de Programação adequada ao modelo elaborado.

2.5.1. Abordagens de programação

Normalmente, as instruções em um programa são executadas uma após a outra, na ordem que foram escritas. Este processo é chamado de execução sequencial. A maioria das linguagens de programação disponibilizam várias instruções (discutidas em breve) que lhe possibilitam especificar que a próxima instrução a ser executada não é necessariamente a próxima na sequência. Este mecanismo é chamado transferência de controle.

Durante a década de 1960 tornou-se evidente que o uso indiscriminado da transferência de controle era a causa de muitas das dificuldades experimentadas por equipes de desenvolvimento de software. Toda “culpa” foi atribuída à instrução goto (usada na maioria das linguagens de programação da época), que lhe permite especificar uma transferência de controle de um ponto para uma grande quantidade de destinos em um programa.

O termo programação estruturada tornou-se quase que um sinônimo para “eliminação de goto”. A pesquisa de Bohm e Jacopini 8 demonstrou que programas poderiam ser escritos sem o uso de nenhuma instrução goto. O desafio da época para os programadores foi a mudança de seus estilos para uma programação “livre da instrução goto”. Somente após a década de 1970 é que os programadores começaram a “levar a programação estruturada a sério”. Os resultados foram impressionantes. As equipes de desenvolvimento de software relataram menores tempos de desenvolvimento, aumento no número de entregas dentro do prazo e do orçamento previsto. A chave desse sucesso era o fato de que os programas estruturados eram mais claros, mais fáceis de depurar e de modificar, e principalmente apresentavam menos defeitos (ou bugs). O trabalho de Bohm e Jacopini demonstrou que todos os programas poderiam ser escritos em termos de apenas três estruturas de controle – a estrutura sequencial, a estrutura de seleção e a estrutura de repetição. Na

8 Bohm, C., and G. Jacopini, “Flow Diagrams, Turing Machines, and Languages with Only Two Formation

Rules,” Communications of the ACM, Vol. 9, No. 5, May 1966, pp. 336–371.

Page 22: Programação 1 Prof. Bruno Vilela Oliveirafiles.brunovilela.webnode.com.br/200000245-af1beafe83/apostila prog1... · auxiliar na compreensão de conceitos abordados ao longo do curso

Capítulo 3 - Algoritmos e Raciocínio

Programação 1 – Bruno Vilela Oliveira 20

terminologia da literatura sobre certas linguagens de programação, tais estruturas são também denominadas “instruções de controle”.

A programação estruturada foi a forma dominante na criação de software entre a programação linear e a programação orientada a objetos (Object-oriented Programming (OOP)). Apesar de ter sido sucedida pela programação orientada a objetos, pode-se dizer que a programação estruturada ainda é marcantemente influente, uma vez que grande parte das pessoas ainda aprende programação através dela. Além disso, em outros paradigmas, como a programação orientada a objetos, diversas partes do código que constituem os programas são na realidade trechos de código estruturado.

Por exigir formas de pensar relativamente complexas, a programação orientada a objetos levou algum tempo até se tornar um dos paradigmas de programação mais utilizados atualmente. A relevância dos “objetos” é notável, como pode se perceber com o estabelecimento de padrões e metodologias orientados a objetos para análise (Object-oriented Analysis (OOA) ) e projeto (Object-oriented design (OOD) ) de sistemas computacionais.

Exercícios de Revisão

1) Você conhece algum tipo de aplicação da computação, diferente dos exemplos

apresentados neste capítulo? Caso afirmativo descreva-os.

2) Cite e explique com suas palavras as operações básicas executadas pelos

computadores.

3) Imagine que o computador queira multiplicar dois números e depois dividir o

resultado por 2 (tira a média). Descreva os passos para o computador realizar essa

tarefa (utilizando a entrada e manipulação pela ULA, memória etc...).

4) Descreva com suas palavras o significado de um “comando”.

5) Qual a possível diferença entre um programa eficiente e eficaz? Um mesmo

programa pode ser eficiente e eficaz?

6) Defina com suas palavras o que é implementação.

7) Em sua opinião, por que os computadores não são capazes de realizar, de forma

completamente automática (sem a intervenção de humanos), todo o processo de

programação?

8) Que motivo leva algumas pessoas a afirmarem que o computador é uma máquina

burra?

9) Faça uma associação entre programa de computador e inteligência humana.

10) Qual a principal característica da programação estruturada?

Page 23: Programação 1 Prof. Bruno Vilela Oliveirafiles.brunovilela.webnode.com.br/200000245-af1beafe83/apostila prog1... · auxiliar na compreensão de conceitos abordados ao longo do curso

Referências

Programação 1 – Bruno Vilela Oliveira 21

Referências

DEITEL, P. J.; DEITEL, H.M.; Java: How to program, 9th ed, Ed. Prentice-Hall, 2011. ISBN: 978-0-13-257566-9. FARRER, H.; BECKER, C. G.; FARIA, E. C.; MATOS, H. F.; et al. Algoritmos estruturados. 3ed, Ed. LTC, 1999. ISBN: 9788521611806. GUIMARÃES, A. M.; LAGES, N. A. C.; Algoritmos e estruturas de dados. 1ed, Ed. LTC, 1994. ISBN: 9788521603788. FARRER, H.; BECKER, C. G.; FARIA, E. C.; MATOS, H. F.; et al. Pascal estruturado. 3ed, Ed. LTC, 1999. ISBN: 9788521611745. GRIFFITHS,D., BARRY,P., Head First Programming – A learner's guide to programming using the Python language, O´Reilly, 2009, 406p. MAURI, G. R.; Notas de aula de Programação I. 2010. Velloso, F. C.; Informática: Conceitos Básicos. 7ed, Ed. Campus, 2004. ISBN: 9788535215366. http://www.hkbu.edu.hk/~bba_ism/ISM2110/index.htmj