PDF gerado usando o pacote de ferramentas em código aberto mwlib. Veja http://code.pediapress.com/ para mais informações.
PDF generated at: Mon, 07 May 2012 19:43:23 UTC
Introdução à programação
Conteúdo
Páginas
Índice 1
Prefácio 2
Programar 2
Como programar 4
Definições sobre Lógica de Programação 7
História da Programação 10
Lógica 11
Aprendizagem 13
Algoritmos 14
Estruturas de manipulação de dados 19
Pseudo-código 25
Expressões em pseudo-código 27
Orientação a objectos 28
Exercícios 30
Soluções dos exercícios 31
Anexo: Linguagens de programação 33
Anexo: Passagem para a linguagem de programação escolhida 36
Bibliografia 36
Referências
Fontes e Editores da Página 38
Fontes, Licenças e Editores da Imagem 39
Licenças das páginas
Licença 40
Índice 1
Índice
• Capa
• Prefácio
• Programar, o que é a programação?
• Como programar
• Estrutura interna de um computador
• Processamento de dados
• Definições sobre Lógica de Programação
• História da Programação
• Lógica
• Aprendizagem: o "padrão eficaz"
• Como Aprender
• O Padrão Eficaz
• Algoritmos
• Estruturas de manipulação de dados
• Estruturas básicas
• Estruturas de Controlo
• Funções
• Pseudo-código
• Expressões em pseudo-código
• Orientação a objectos
• Exercícios
• Soluções dos exercícios
• Bibliografia e ligações externas
Anexo
• Linguagens de programação
• História e evolução das linguagens
• Igualdades e diferenças nas linguagens
• Passagem para a linguagem de programação escolhida
Leia também
• Algoritmos e Estruturas de Dados - para explicações mais detalhadas e avançadas
• Programação em GUI
• Programar em C
• Programação orientada a objetos
• Python
Este livro foi eleito pelos colaboradores como um dos melhores do Wikilivros. Para mais informações, consulte a
página de votações
Prefácio 2
Prefácio
O Morse é uma sequência lógica muito parecida
com o código binário
Com a evolução da tecnologia, a cada dia mais pessoas têm acesso a
um computador, seja em casa, na escola, no trabalho. E para alguns
mais curiosos, surgem perguntas como: "como eles fazem isto?", "será
que posso fazer ou aprender?", "como será um computador por
dentro?".
Muitos já se aventuraram na procura de respostas das suas
auto-questões, porém nem sempre é fácil achar o que se pretende. Aqui
o leitor tem uma oportunidade de perceber como funciona tudo isto.
O objetivo deste livro é servir como base para qualquer pessoa que
queira mergulhar, ou apenas conhecer, o maravilhoso mundo da
programação, mesmo que saiba pouco ou nada sobre o assunto.
Este livro também pode servir como uma forma de enriquecimento
cultural sobre temas já esquecidos pelo tempo, pois ele aborda assuntos
desde a arquitetura de processadores e computadores, cálculos
computacionais, lógica e matemática até uma breve história sobre as
linguagens de programação e programação básica de algoritmos.
Este guia também se destina aos que querem participar na atividade comunitária de produção de software livre, mas
não receberam formação técnica do gênero, motivos para o fazer é que não faltam.
Programar
Motivação
Nos dias que correm, não saber trabalhar com computadores é considerada iliteracia (analfabetismo) e o custo por
não saber utilizar um computador pode ser caro.
Quando usamos computadores, podemos fazer muitas coisas. Uma criança pode usar a Internet para passar uma
mensagem, um estudante pode usar uma planilha eletrônica para calcular uma média ou quantos pontos precisa para
ser aprovado em cada matéria, um cozinheiro pode guardar suas receitas em software como o Word ou em um
produto especializado para receitas. Na verdade, a quantidade de produtos especializados é tão grande que, se você
procurar bem, certamente vai encontrar algum programa que faça algo bem próximo do que você deseja.
O problema é que, às vezes, queremos fazer algo específico: queremos um programa de computador que faça algo
que servirá de forma única a nós ou a nossa empresa. Nesse caso, em vez de comprar um programa pronto temos que
desenvolver o nosso próprio programa. Para isso é necessário dominar uma nova forma de manipular o computador:
a programação. Nosso motivo pode ser um negócio, um trabalho escolar, um hobby ou mera curiosidade. Hoje em
dia, programar um computador pode ser feito de várias formas. Você pode, por exemplo, modificar levemente o
comportamento de aplicações por meio de macros, como é permitido em programas como Microsoft Word. Você
pode fazer ainda modificações mais sérias por meio de linguagens embutidas, como pode ser feito também nos
programas do Microsoft Office ou até mesmo em jogos de computador como Neverwinter Nights. Você pode
também pegar um programa já existente de código aberto, ou software livre e modificá-lo. Ou você pode começar do
início e programar praticamente tudo, certamente com ajuda de bibliotecas prontas que fazem parte do trabalho.
Para programar você tem muitas opções: pacotes que podem ser estendidos com macros ou linguagens embutidas,
ambientes de programação point-and-click, linguagens mais fáceis de aprender e linguagens mais difíceis, mas que
Programar 3
apresentam grande poder ou características apropriadas para grandes sistemas. Em todo caso, o espírito por trás de
tudo é o mesmo: programar é dar ordens para o computador, mostrar como ele deve reagir ao usuário e como ele
deve processar os dados disponíveis.
Praticamente não há limite do que você pode fazer com um computador. Computadores ajudam pessoas a falar,
controlam aparelhos e levaram o homem a Lua de várias maneiras. Mesmo as coisas mais difíceis, como simular um
sentimento ou inteligência, são estudadas com afinco em todo mundo. Alguns problemas são muito grandes e
exigem a construção de computadores enormes. Outros são tão simples que podemos resolver em computadores
simples, que estão dentro de equipamentos. A noção de poderoso também muda com o tempo: um chip que era
usado em computadores pessoais em 1988, o w:Z80, hoje é usado em aparelhos como faxes.
Hoje é difícil imaginar um domínio da atividade humana onde a utilização de computadores não seja desejável.
Assim sendo o domínio da programação é substancialmente ditado pela imaginação e criatividade. Podemos dizer
que a grande vantagem de saber programar é a possibilidade de criar o que quiser, quando quiser. Não só para o PC,
mas celulares, PDAs, entre outros. Claro que exige um pouco de esforço, porém para muitos esse esforço é na
verdade um desafio cuja a recompensa é ver sua ideia transformada em realidade.
A programação
Provavelmente você já ouviu a palavra programação, conhece o seu significado, mas, provavelmente, desconhece o
que faz, como se faz e quem faz. Programar é fácil e divertido, a dificuldade, para maioria dos iniciantes pouco
persistentes, é começar a perceber como um computador funciona.
Bem, um computador pode ser entendido de várias maneiras. Dentro dele, o que existe são sinais eletrônicos. Os
humanos que os projetos normalmente pensam nesses sinais como "1"s e "0"s. Em certo ponto, passamos a pensar
em algo conhecido como linguagem de máquina, ou seja, sequências de "1"s e "0"s, normalmente escritos como
números inteiros, que indicam um certo comportamento, como somar dois números. Para ficar mais fácil ainda, essa
linguagem de máquina é normalmente transcrita para uma linguagem de montagem ou Assembly que descreve as
ações que um computador pode fazer por meio de w:mnemônicos, como ADD e MOV. Porém, já há algum tempo,
nós fazemos o computador funcionar por meio de programas escritos em linguagens de programação, que tentam
deixar a tarefa de explicar o que o computador tem que fazer mais fácil para os seres humanos, mesmo que, por
causa da alta especialização da linguagem, apenas a alguns deles. Todas as linguagens de programação têm
essencialmente o mesmo propósito, que é permitir ao programador humano dar instruções ao computador.
No nosso quotidiano a comunicação é feita de um modo natural e raramente temos consciência das regras que
aplicamos na nossa linguagem. O destino da aprendizagem de uma linguagem de programação é exatamente a
mesma: aplicação de regras, se possível de forma tão arraigada que pareça ser inconsciente (abstrair). Um bom
programador entende os "meandros" da linguagem que usa e pode até mesmo ver beleza, ou feiura, em um código,
da mesma forma que gostamos ou não de um texto as vezes não pelo seu conteúdo, mas pela forma como foi escrito.
As linguagens são criadas com duas motivações: linguagens de uso geral, que servem para fazer "qualquer coisa" e
linguagens de uso específico. Se você quer fazer programas que tratem de problemas estatísticos, provavelmente
linguagens como "R", uma linguagem criada para esse uso específico, são adequadas. Se você quer fazer um
programa para calcular a folha de pagamento de uma empresa, provavelmente linguagens como COBOL, C, C++ ou
Java, linguagens de uso geral, serão adequadas.
Programar 4
Um Programa de Computador
Um programa de computador é como uma receita de cozinha: uma sequência de passos a serem executados. Se
computadores cozinhassem em vez de processar dados, um programa típico poderia ser:
PROGRAMA FRITAR_OVO
RESERVAR OVO, FRIGIDEIRA, SAL, MANTEIGA ;
USAR FOGÃO;
COLOCAR FRIGIDEIRA NO FOGÃO;
COLOCAR MANTEIGA NA FRIGIDEIRA;
LIGAR FOGÃO;
ESPERAR MANTEIGA FICAR QUENTE;
QUEBRAR OVO;
DERRAMAR OVO NA FRIGIDEIRA;
COLOCAR SAL NO OVO;
ESPERAR OVO FICAR FRITO;
DESLIGAR FOGÃO;
SERVIR OVO;
END PROGRAMA
Porém, programas de computador trabalham com dados, e um programa típico real é (usando a linguagem Python)
def somar(num1, num2):
return num1 + num2
Este programa (ou melhor, essa função) retorna a soma de dois números.
Como programar
Estrutura interna de um computador
Um computador minimalista é constituído por três unidades básicas:
• Processador, como o nome indica, é o componente principal do processamento;
• Memória, quem mantém dados e programas;
• Dispositivos de entrada e saída (Input/Output), tais como teclado, monitor ou impressora.
Em um computador pessoal, esses componentes normalmente estão colocados em uma placa mãe.
É importante notar que os chamados dispositivos de memória secundária se comunicam com a parte principal do
computador por dispositivos de entrada e saída. Assim, um disco rígido só pode ser usado se conectado a placa mãe
por meio de uma interface (SCSI ou SATA, por exemplo).
Usualmente, representamos um computador de forma abstrata por um diagrama muito simples que mostra uma
unidade de processamento capaz de usar dados que provêm ou devem ser guardados tanto na memória quanto em
dispositivos de entrada e saída:
Figura 1: Esquema genérico de um computador
Como programar 5
Figura 2: Esquema genérico de uma placa mãe
Antes de ficar perplexo a tentar perceber que esquema é aquele ali em cima, irei explicá-lo para o leitor compreender
como um computador funciona no fundo.
O esquema apresenta dois dispositivos de entrada (PCI Express - aquelas onde nós colocamos a nossa placa gráfica,
placa de rede ou placa de som...), quatro pistas de encaminhamento de dados (são mais, muitas mais num
computador actual), onde circulam os dados, provavelmente codificados, provenientes das entradas, directas à
central de processamento (CPU ou Processador). Aí, os milhões de transístores existentes dentro dessa caixinha, irão
processar e criar novos dados que serão distribuídos pela rede interna do pc, segundo a codificação apresentada nos
dados de entrada. O Processador pode guardar dados dentro da memória RAM e na memória Cache, sendo que, para
a memória RAM irão dados menos usados e para a Cache os dados mais acessados pelo processador. Os Jumpers
controlam, além da velocidade de processamento, que tipo de entradas poderão gerar dados, entre outras coisas. O
mesmo processo se sucede aos dados que retornam aos dispositivos I/O. Et voilá, aqui está uma explicação muito,
muito resumidinha de toda a teoria de processamento de um computador.
Alargando um pouco mais a escala, dispositivos periféricos, tais como impressoras e scanners, acessam também ao
processador. Actualmente os dispositivos não são controlados pelo processador, cabendo isso a uma memória
EEPROM chamada BIOS.
Se quiser conhecer mais sobre este assunto sugiro que procure pelos excelentes tutoriais da Guia do Hardware [1]
sobre o tema (que, aliás, poderá ser uma casa interessante para quem quer aprender mais sobre hardware e Linux).
Como programar 6
Processamento de dados
O processador é a unidade central do computador, designado por CPU (Central Processing Unit). A sua função é a de
interpretar e executar instruções.
A unidade de medida da velocidade de um processador é o Hz (hertz). O hertz é a unidade de medida da frequência,
que, em física, é definida como sendo o número de ciclos que ocorrem por unidade de tempo - a frequência de um
relógio é 1/3600 Hz, ou seja, demora 1 hora até se dar uma volta completa. Nos computadores mais atuais, a
velocidade média é de 1 Gigahertz, ou 1 bilhão de ciclos de relógio por segundo, ou 1 bilhão de hertz, ou ainda,
analogamente, 1 bilhão de voltas completas no relógio em 1 segundo. No nosso exemplo, 01 hertz pode transportar
no mínimo 01 bit (1 informação), para efeito de comparação 1 bit (1 hertz) pode ser comparado a 1 letra deste texto,
logo computadores que trabalham com 2 bilhões de "letras" por segundo (02 Gigahertz) podem ler um livro mais
rápido que outro que os que somente leêm 1 bilhão de "letras" (01 Gigahertz).
Figura 2 - Esquema genérico de um processador
O Processador é formado por milhões de transístores, onde cada um processa um bit de cada vez, ou seja, apresenta
ou o estado 1 ou o estado 0. Esta diversidade de sequências possíveis cria um leque infinito de instruções. De facto
as limitações encontradas aquando da criação de software não são encaradas pelo processador mas sim pela estrutura
da máquina. O Processador, teoricamente, em termos de processamento de dados é ilimitado, não existe limites de
processamento.
Por vezes são necessárias várias operações matemáticas complexas. Existe, dentro do próprio processador, uma
pequena secção chamada Coprocessador Matemático FPU encarregada disso. Mas o processador não pode existir
isoladamente, logo precisa de estar ligado por "algo": os Barramentos BUS do processador são os "caminhos" por
onde a informação é encaminhada aos dispositivos do computador e vice-versa. Quanto maior o número de Bus mais
rapidamente se dão as transferências. Existem várias tecnologias e protocolos usados no BUS. Siga o link BUS para
saber mais sobre isso.
Referências
[1] http:/ / www. guiadohardware. net
Definições sobre Lógica de Programação 7
Definições sobre Lógica de Programação
Lógica de Programação é a técnica de desenvolver algoritmos (sequências lógicas) para atingir determinados
objetivos dentro de certos regras baseadas na Lógica matemática e em outras teorias básicas da Ciência da
Computação e que depois são adaptados para a Linguagem de Programação utilizada pelo programador para
construir seu software.
Um algoritmo é uma sequência não ambígua de instruções que é executada até que determinada condição se
verifique. Mais especificamente, em matemática, constitui o conjunto de processos (e símbolos que os representam)
para efectuar um cálculo.
O conceito de algoritmo é freqüentemente ilustrado pelo exemplo de uma receita, embora muitos algoritmos sejam
mais complexos. Eles podem repetir passos (fazer iterações) ou necessitar de decisões (tais como comparações ou
lógica) até que a tarefa seja completada. Um algoritmo corretamente executado não irá resolver um problema se
estiver implementado incorretamente ou se não for apropriado ao problema.
Um algoritmo não representa, necessariamente, um programa de computador, e sim os passos necessários para
realizar uma tarefa. Sua implementação pode ser feita por um computador, por outro tipo de autômato ou mesmo por
um ser humano. Diferentes algoritmos podem realizar a mesma tarefa usando um conjunto diferenciado de
instruções em mais ou menos tempo, espaço ou esforço do que outros. Tal diferença pode ser reflexo da
complexidade computacional aplicada, que depende de estruturas de dados adequadas ao algoritmo. Por exemplo,
um algoritmo para se vestir pode especificar que você vista primeiro as meias e os sapatos antes de vestir a calça
enquanto outro algoritmo especifica que você deve primeiro vestir a calça e depois as meias e os sapatos. Fica claro
que o primeiro algoritmo é mais difícil de executar que o segundo apesar de ambos levarem ao mesmo resultado.
O conceito de um algoritmo foi formalizado em 1936 pela Máquina de Turing de Alan Turing e pelo cálculo lambda
de Alonzo Church, que formaram as primeiras fundações da Ciência da Computação.
Comentários
Postar um comentário