




























































































Estude fácil! Tem muito documento disponível na Docsity
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Prepare-se para as provas
Estude fácil! Tem muito documento disponível na Docsity
Prepare-se para as provas com trabalhos de outros alunos como você, aqui na Docsity
Encontra documentos específicos para os exames da tua universidade
Prepare-se com as videoaulas e exercícios resolvidos criados a partir da grade da sua Universidade
Responda perguntas de provas passadas e avalie sua preparação.
Ganhe pontos para baixar
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Apostilha descomplicada com linguagem facil e simples.
Tipologia: Resumos
1 / 103
Esta página não é visível na pré-visualização
Não perca as partes importantes!





























































































Editora da UFPB João Pessoa 2014
Acesse https://github.com/edusantana/introducao-a-programacao-livro/releases para ve- rificar se há uma versão mais o Histórico de revisões, na início do livro, para verificar o que mudou entre uma versão e outra.
Este livro é destinado a alunos de cursos como Ciência da Computação, Sistemas de Informação, Engenharia da Computação e, sobretudo, Licenciatura em Computação. Ele tem o objetivo de apre- sentar os principais conceitos da programação de computadores, de modo que sua utilização é mais adequado a disciplinas introdutórias como a de Introdução à Programação. De forma alguma o pre- sente livro tem a pretensão de cobrir todos os assuntos relacionados à área de programação. Sua principal finalidade é a de servir como guia para os alunos que estão dando os primeiros passos nessa área que é tão importante para a ciência da computação.
A disciplina de Introdução à Programação é a primeira de uma sequência de disciplinas que têm o ob- jetivo de tornar os alunos capazes dominar os fundamentos e as técnicas relacionadas à programação de computadores. Durante o curso de Licenciatura em Computação, especificamente, os alunos terão a chance de conhecer em detalhes algumas das linguagens de programação mais utilizadas atualmente e estarão habilitados a ministrar cursos de programação para diversos públicos.
Mais importante do que conhecer as peculiaridades das linguagens de programação é aprender como funciona a lógica aplicada na elaboração de soluções desenvolvidas a partir de algoritmos compu- tacionais. Sendo assim, o principal objetivo deste livro é ensiná-los a resolver problemas com base nos comandos e mecanismos presentes nas linguagens de programação, desenvolvendo assim o que chamamos de lógica de programação. No decorrer do livro, o leitor aprenderá gradativamente a dar instruções ao computador através de programas que ele próprio será capaz de criar. Para isso, conhe- cerá a linguagem de programação C, uma das mais utilizadas e mais importantes linguagens na área de Ciência da Computação.
No Capítulo 1 será abordado o conceito de algoritmo, e suas principais formas de representação serão apresentadas. No Capítulo 2, descrevemos todo o processo de tradução de um programa escrito em linguagem de alto nível para um programa equivalente em código de máquina, isto é, a linguagem que os computadores conhecem. Além disso, será apresentado ao leitor a estrutura de um programa na linguagem C, o que o habilitará o leitor a desenvolver seu primeiro programa. O Capítulo 3 consiste no conteúdo do livro que mais desenvolve a lógica de programação. É nele que se encontram as principais instruções de uma linguagem de programação: as estruturas de controle. No Capítulo 4 será apresentado o conceito de arranjos e, por fim, no Capítulo 5, explicaremos como programas complexos podem ser divididos em programas menores, mais fáceis de serem solucionados, através da utilização das funções.
Recomendamos ao aluno, iniciante na programação de computadores, que não se limite à leitura e ao conteúdo deste livro. Pesquise na internet outros materiais, leia outros livros e faça todos os exercícios
v
propostos. Programação, assim como matemática, requer muito exercício, muita prática. Como mencionado anteriormente, a programação de computadores é uma das subáreas mais importantes da carreira que você escolheu seguir. Boa parte das disciplinas do seu curso depende do conhecimento adquirido em Introdução à Programação. Portanto, dedique o máximo que puder ao aprendizado de uma área que vai permiti-lo transformar sonhos em realidade.
O público alvo desse livro são os alunos de Licenciatura em Computação, na modalidade a distância (^1). Ele foi concebido para ser utilizado numa disciplina de Introdução à Programação, no primeiro
semestre do curso.
Nesta seção apresentamos as caixas de diálogo que poderão ser utilizadas durante o texto. Confira os significados delas.
Nota Esta caixa é utilizada para realizar alguma reflexão.
Dica Esta caixa é utilizada quando desejamos remeter a materiais complementares.
(^1) Embora ele tenha sido feito para atender aos alunos da Universidade Federal da Paraíba, o seu uso não se restringe
a esta universidade, podendo ser adotado por outras universidades do sistema UAB.
vi
As referências são apresentadas conforme o elemento que está sendo referenciado:
Referências a capítulos Prefácio [v]
Referências a seções “Como você deve estudar cada capítulo” [vi], “Caixas de diálogo” [vi].
Referências a imagens Figura 2 [ix]
Nota Na versão impressa , o número que aparece entre chaves “[ ]” corresponde ao número da página onde está o conteúdo referenciado. Na versão digital do livro você poderá clicar no link da referência.
Você pode contribuir com a atualização e correção deste livro. Ao final de cada capítulo você será convidado a fazê-lo, enviando um feedback como a seguir:
Feedback sobre o capítulo Você pode contribuir para melhoria dos nossos livros. Encontrou algum erro? Gostaria de submeter uma sugestão ou crítica? Para compreender melhor como feedbacks funcionam consulte o guia do curso.
Nota A seção sobre o feedback, no guia do curso, pode ser acessado em: https://github.com/- edusantana/guia-geral-ead-computacao-ufpb/blob/master/livro/capitulos/livros- contribuicao.adoc.
viii
Figura 2: Exemplo de contribuição
ix
Figura 1.1: Monty Roberts.
Assim como os cavalos, os computadores também são instruídos por meio de uma linguagem par- ticular. Para que eles se comportem como desejamos, basta que sejam comandados a partir de uma linguagem que sejam capazes de entender.
Diferentemente do que ensina o senso o comum, os computadores não possuem inteligência. Seu único trabalho é processar dados, conforme uma sequência de instruções que fazem parte do voca- bulário da linguagem que eles conseguem compreender. A ilusão de que eles realizam tarefas de forma inteligente é proporcionada através desse conjunto ordenado de instruções, que é denominado de algoritmo. Neste caso, o “domador” do computador, responsável por elaborar o algoritmo que vai orientá-lo na execução de uma determinada tarefa, é chamado de programador de computadores.
A palavra “algoritmo” é derivada do nome Mohammed ibn Musa Al-Khowarizmique, que foi um matemático, astrólogo, astrônomo e autor persa. Ele fez parte de um centro acadêmico conhecido como a Casa da Sabedoria, em Bagdá, por volta de 800 d.C. Seus trabalhos introduziram o cálculo hindu aos árabes e, a partir daí, ao resto da Europa.
Não obstante os algoritmos representam um conceito central na Ciência da Computação, sua atuação não se limita a essa área do conhecimento. Rotineiramente, lidamos com algoritmos na realização das mais variadas tarefas. Eles podem ser utilizados para lavar um carro, preparar um bolo, tomar banho, montar um guarda-roupa, etc. Perceba que os algoritmos não devem ser confundidos com as atividades. Eles se referem aos passos seguidos para que estas sejam realizadas. Como exemplo de algoritmos, podemos citar as instruções para montagem de equipamentos, para utilização de cosmé- ticos como shampoos e condicionadores, para saída de emergência em meios de transporte, receitas culinárias, manuais de uso, entre outros.
A partir do que foi exposto, podemos definir algoritmo como uma sequência finita, ordenada e não ambígua de passos para solucionar determinado problema ou realizar uma tarefa.
Na ciência da computação, esse conceito foi formalizado em 1936, por Alan Turing e Alonzo Church, da seguinte forma:
DEFINIÇÃO DE ALGORÍTIMO Um algoritmo é um conjunto não ambíguo e ordenado de passos executáveis que definem um processo finito.
O exemplo a seguir mostra como pode ser elaborado um algoritmo para realizar uma atividade com a qual lidamos corriqueiramente:
ALGORITMO PARA FRITAR UM OVO
2 / 92
Agora considere o seguinte problema. Suponha que você dispõe de duas vasilhas de nove e quatro litros respectivamente. Como elas não possuem marcação, não é possível ter medidas intermediárias sobre o volume ocupado. O problema consiste, então, em elaborar uma sequência de passos, por meio da utilização das vasilhas de nove e quatro litros, a fim de encher uma terceira vasilha com seis litros de água. A figura abaixo ilustra dois possíveis passos de um algoritmo para resolver o problema.
Capacidade: 9 litros Utilização: 9 litros
Capacidade: 4 litros Utilização: 0 litros
Capacidade: 6 litros Utilização: 0 litros
Capacidade: 9 litros Utilização: 0 litros
Capacidade: 4 litros Utilização: 4 litros
Capacidade: 6 litros Utilização: 5 litros
(a)
(b)
Figura 1.2: Ilustra dois passos possíveis envolvendo as operações de encher e esvaziar as vasilhas. Em (a) apenas a primeira vasilha está cheia. Já em (b) os nove litros da primeira vasilha são colocados nas outras duas.
Uma solução para o problema pode ser alcançada a partir do seguinte algoritmo:
ALGORITMO PARA ENCHER VASILHAS
3 / 92
Os algoritmos são expressos em linguagem natural (português, inglês, francês, espanhol, etc.). Sua principal desvantagem se encontra no fato da linguagem natural estar bem distante da linguagem utilizada pelos computadores. Logo, a tradução de uma para a outra se torna uma atividade bastante dispendiosa. Além disso, linguagens naturais são mais propensas a ambiguidades. Muitas vezes uma palavra pode ter vários significados, dependendo do contexto no qual são utilizadas. Em contrapartida, é bem mais fácil elaborar um algoritmo por meio de uma linguagem com a qual já temos uma certa familiaridade, do que através de linguagens que não são utilizadas com frequência no dia a dia.
Os exemplos de algoritmos mostrados anteriormente (Algoritmo para fritar um ovo [2] e Algoritmo para encher vasilhas [3]) refletem esta forma de representação.
Consiste em usar formas geométricas padronizadas para descrever os passos a serem executados pelos algoritmos. As formas apresentadas na Figura 1.3 são as mais comumente utilizadas em fluxogramas.
Processamento.
Sentido do fluxo de execução do algoritmo.
Ponto de decisão.
Início/Fim.
Entrada de dados.
Saída de dados.
Figura 1.3: Formas geométricas utilizadas em fluxogramas
A vantagem de se fazer uso dos fluxogramas está na facilidade de compreendê-los. Descrições de algoritmos mediante formas gráficas são mais facilmente compreendidas do que descrições que en- volvem apenas textos. Além do mais, os fluxogramas possuem um padrão mundial no que se refere à sua simbologia, tornando sua utilização independente das peculiaridades das linguagens naturais.
Para exemplificar o uso de fluxogramas, a Figura 1.4 [6] mostra um algoritmo para calcular a média final de um aluno com base em suas notas e classificá-lo como aprovado ou reprovado. Analisando-a com mais cuidado, é possível perceber que os fluxogramas tendem a crescer bastante quando descre- vem algoritmos constituídos de muitos passos, o que dificulta tanto sua construção como sua visua- lização. Além dessa desvantagem, por impor regras para sua utilização de acordo com cada forma geométrica, há uma limitação no seu poder de expressão, se comparado com a descrição narrativa.
5 / 92
Início (^) Obter nota1 Obter nota
M=(nota1 + nota2) 2 M ≥ 7^
Aprovado
Reprovado Fim
Sim
Não
Figura 1.4: Fluxograma para calcular a média de um aluno e classificá-lo
A linguagem que o computador é capaz de compreender tem grande influência na elaboração de algoritmos projetados para ele. Seus passos não podem conter instruções desconhecidas ou fazer referência a símbolos ou expressões que os computadores não conseguem decifrar. Tal linguagem, tantas vezes mencionada neste capítulo, se baseia em conceitos e em arquiteturas de hardware que determinam o funcionamento básico de um computador. Dentre as existentes, a mais utilizada nos computadores atuais é a arquitetura de von Neumann. Seu autor, John Von Neumann (Figura 1.5 [6]), propôs um modelo em que as instruções e os dados ficam juntos na memória.
O processador busca as instruções na memória e as executa uma de cada vez, segundo o seguinte ciclo de execução:
Figura 1.5: John von Neumann
6 / 92
A linguagem algorítmica, também chamada de pseudocódigo ou pseudo-linguagem, por sua vez, consiste no emprego de uma linguagem intermediária entre a linguagem natural e uma linguagem de programação. Esse meio termo resulta em uma linguagem que se aproxima das construções de uma linguagem de programação, sem exigir, no entanto, rigidez na definição das regras para utilização de suas instruções. Geralmente, essa forma de representação de algoritmos é uma versão reduzida de linguagens de alto nível como C e Pascal. Segue abaixo o algoritmo da Figura 1.4 [6] em pseudocó- digo: 1 ALGORITMO 2 DECLARE nota1, nota2, M : NUMÉRICO 3 LEIA nota 4 LEIA nota 5 M ← (nota1 + nota2) / 2 6 SE M >= 7.0 ENTÃO 7 ESCREVA “Aprovado” 8 SENÃO 9 ESCREVA “Reprovado” 10 FIM-SE 11 FIM_ALGORITMO.
As palavras em letras maiúsculas correspondem a palavras reservadas que fazem parte do conjunto de regras que a linguagem algorítmica deve seguir. Embora sejam mais flexíveis do que as linguagens de programação em relação ao seu uso (a instrução LEIA, por exemplo, muitas vezes é substituída por LER, OBTER, etc.), algumas palavras são necessá- rias, pois facilitam o entendimento e aproximam o pseudocódigo de um programa de computador. As palavras INÍCIO e FIM, por exemplo, indicam onde começa e termina o algoritmo. Já as instruções LEIA e ESCREVA referem-se a operações de entrada e saída de dados (ex.: ler dados do teclado ou exibir uma frase no monitor), presentes na maioria das linguagens de programação. Seguindo com a explicação do algoritmo, perceba que a linha com a instrução M ← (nota1 + nota2) / 2 contém dois símbolos ainda não apresentados. O símbolo / diz respeito à operação aritmética da divisão, ao passo que o símbolo ← expressa uma operação de atribuição, que pode ser lida da seguinte forma: A posição de memória, representada simbolicamente por M, recebe o valor da soma de nota1 e nota2, dividido por dois. Para finalizar, a linha 6 apresenta uma estrutura de controle condicional essencial para as linguagens de programação. Operações de atribuição, expres- sões e estruturas de controle fazem parte do núcleo das linguagens de programação imperativas e são, portanto, fundamentais para o aprendizado da programação. Todos esses assuntos serão abordados de forma mais aprofundada em capítulos posteriores. A principal vantagem da forma de representação em linguagem algorítmica está na facilidade com a qual um pseudocódigo pode ser transcrito para uma linguagem de programação. Assim como os fluxogramas, a desvantagem fica por conta da limitação do seu poder de expressão, devido às regras impostas para a elaboração das instruções.
Neste capítulo você estudou algoritmos, suas principais características e suas formas de representação. Apesar de ser um tema mais abordado na ciência da computação, algoritmos estão presentes nas mais diversas áreas e em várias atividades do cotidiano. Lidamos com eles, por exemplo, quando tomamos
8 / 92
banho, cozinhamos, planejamos uma rota para fugirmos do trânsito, consultamos um manual de mon- tagem, enfim, sempre que nos deparamos com um conjunto lógico de passos para realizarmos uma tarefa ou solucionarmos um problema, estamos em contato com algoritmos. É por meio deles que os computadores passam a ilusão de que são inteligentes, realizando tarefas capazes de impressionar qualquer ser humano. No entanto, sabemos que eles apenas processam dados, segundo um conjunto de instruções que lhe são passadas — os algoritmos.
Você viu que os algoritmos computacionais, aqueles elaborados para serem executados em computa- dores, devem ser claros, ter um número finito de passos, e que estes devem ser simples o suficiente para serem executados de maneira exata e em um tempo finito. Além disso, os algoritmos computa- cionais devem possuir zero ou mais entradas e uma ou mais saídas.
As formas de representação de algoritmos mais comuns são a linguagem algorítmica, o fluxograma e o pseudocódigo. Da primeira à última há uma aproximação em relação às linguagens de programação, ou seja, o pseudocódigo é a forma de representação que mais se assemelha às linguagens utilizadas na programação de computadores. Na direção inversa, há uma maior liberdade na elaboração de algoritmos, aumentando, assim, a capacidade de expressá-los.
No próximo capítulo abordaremos o processo de tradução de um programa escrito em uma lingua- gem de alto nível, os paradigmas de programação existentes, e introduziremos os conceitos básicos da programação de computadores. Além disso, você terá o primeiro contato com a linguagem de programação a ser estudada neste livro: a linguagem C.
a. Trocar a lâmpada do seu quarto. b. Trocar o pneu do seu carro. c. Fazer uma vitamina de banana com açaí. d. Lavar e secar os pratos. e. Calcular quanto você precisar tirar na terceira nota para passar por média em Introdução à Programação.
9 / 92