Introdução à Programação (Fascículo I)

Introdução à Programação (Fascículo I)

(Parte 1 de 3)

Universidade Federal Rural de Pernambuco

Reitor: Prof. Valmar Corrêa de Andrade Vice-Reitor: Prof. Reginaldo Barros Pró-Reitor de Administração: Prof. Francisco Fernando Ramos Carvalho Pró-Reitor de Extensão: Prof. Paulo Donizeti Siepierski Pró-Reitor de Pesquisa e Pós-Graduação: Prof. Fernando José Freire Pró-Reitor de Planejamento: Prof. Rinaldo Luiz Caraciolo Ferreira Pró-Reitora de Ensino de Graduação: Profª. Maria José de Sena Coordenação de Ensino a Distância: Profª Marizete Silva Santos

Coordenação Acadêmica: Coordenação Conteúdo: Coordenação de Ambiente Virtual: Coordenação Pedagógica: Coordenação de Infra-Estrutura e Pólos:

Produção Gráfica e Editorial Capa e Editoração: Allyson Vila Nova, Rafael Lira e Ana Carolina Lobo Revisão Ortográfica: Ilustrações: Coordenação de Produção: Marizete Silva Santos

Carta aberta aos alunos5

Sumário

Objetivos do Capítulo 17
Conteúdo Programático do Capítulo 17
Unidade 1 – Introdução a Algoritmos e à Lógica de Programação9
Fases Básicas da Construção de Algoritmos12
Representação de Algoritmos14

Carta aberta aos alunos

Para a maior parte dos alunos que ingressa em algum curso de informática, em qualquer nível (ensino técnico ou superior), uma grande curiosidade ou desejo é aprender a programar um computador. Fazer o computador fazer o que se quer. Daí vem uma grande questão: qual o caminho a percorrer para atingir esse objetivo? Até porque essa não é uma tarefa fácil para a maior parte das pessoas. É aí que esta disciplina de Introdução à Programação entra, porque antes de começar a programar, você precisa desenvolver a sua lógica de programação, precisa saber construir um algoritmo.

Mas o que danado é um algoritmo? Um algoritmo é um conjunto de passos bem definidos para chegar à resolução de um problema, algo como uma receita, um passo a passo. Como todo programa de computador objetiva resolver um problema, sempre você vai precisar construir um algoritmo para iniciar a programação.

Algumas pessoas consideram uma perda de tempo aprender algoritmos e querem logo passar para uma linguagem de programação diretamente. Porém, aprender algoritmo não é uma perda de tempo antes da programação, mas a programação é que pode se tornar uma perda de tempo quando não se parou para raciocinar sobre qual algoritmo deve ser aplicado. Pense assim: não se pode construir uma casa, sem os seus alicerces. Ou até você poderia, mas a casa não ficaria de pé muito tempo. E aí, você gostaria de construir uma casa que pode vir a cair?

Além disso, de uma forma ou de outra, o algoritmo sempre vai existir, mesmo que você diga que não o escreveu, ele existe! Mesmo que apenas no seu pensamento! Isso porque, para programar, você sempre vai precisar organizar as idéias, a fim de definir os passos que resolverão o problema e vai precisar estabelecer a ordem que esses passos deverão ser executados. E isso, amigo, construir um algoritmo será uma das primeiras coisas que você vai aprender nesta disciplina!

Depois, já sabendo definir passos, receitas para resolução de problemas, essa receita, esses passos, serão convertidos para uma linguagem de programação que o computador entenda. E aí sim, você vai começar verdadeiramente a programar!

Porém, amigos, não vou iludi-los, não é um caminho fácil e haverá momentos que você sentirá vontade de desistir, momentos que parecerá que nada tem lógica! Mas, não desista! Você verá que a prática, as tentativas e erros vão lhe ajudar a amadurecer e alguns algoritmos que pareciam um GRANDE desafio, em algum tempo, vão se tornando mais fáceis. Basta ter perseverança, exercitar bastante e colocar a cuca pra funcionar!

Lembre-se! Essa disciplina é a base para muita coisa que vem pela frente no curso.

E é o grande diferencial entre quem sempre vai apenas usar o computador e quem vai fazer o computador fazer exatamente o que se quer que ele faça! E aí, vamos programar?

Sandra de Albuquerque Siebra

Introdução à Programação

Capítulo 1 - Conceitos Básicos sobre Lógica de Programação e Algoritmos

Carga horária do capítulo: 30 horas

Objetivos do Capítulo 1

• Apresentar os conceitos básicos sobre algoritmos e lógica de programação.

• Apresentar formas distintas para representação do raciocínio da lógica algorítmica

• Apresentar os tipos de problema algorítmicos

• Apresentar componentes básicos de um programa em linguagem algorítmica (pseudocódigo).

• Desenvolver a lógica de programação fazendo uso, de forma ainda básica, de elementos, variáveis, operadores, expressões, estruturas seqüenciais, estruturas condicionais e estruturas de repetição.

Conteúdo Programático do Capítulo 1

Unidade 1 – Introdução a Algoritmos e Linguagens (10 horas) • Noções de Lógica de Programação e Algoritmos

• Fases Básicas da Construção de Algoritmos.

• Representação de Algoritmos: fluxogramas, português estruturado e linguagem algorítmica (pseudocódigo)

• Conceitos Básicos de Lógica de Programação e Linguagens de Programação

Introdução à Programação

Unidade 2 – Linguagem Algorítmica (20 horas) • Identificadores

• Constantes, Variáveis e Tipos de Dados

• Operadores e Expressões (aritméticos, relacionais e lógicos)

• Instruções Primitivas (entrada e saída)

• Sintaxe e Semântica

• Estrutura seqüencial (início/fim)

• Estruturas de Decisão (simples, composta e múltipla)

• Estruturas de Repetição (condicional e com contador)

• Dicas para escrever bons algoritmos

Cada unidade conterá exercícios para fixação do assunto apresentado, assim como indicações de leituras adicionais. A Unidade 1 exigirá 10 horas de sua dedicação e a Unidade 2, o dobro de dedicação (20 horas).

Introdução à Programação

Unidade 1 – Introdução a Algoritmos e à Lógica de Programação

A programação é a arte de fazer com que o computador faça exatamente o que desejamos que ele faça. Dessa forma, programar é criar uma rotina para que, seguindo uma lógica passo-a-passo, possamos alcançar a resolução de um problema computacional. A esse passo a passo para resolução do problema, chamamos de algoritmo. A palavra ALGORITMO pode parecer estranha, mas fazemos uso de algoritmos constantemente na nossa vida cotidiana, nas mais diversas situações (ex: para acordar, para dirigir, para fazer a barba, para cozinhar, etc). Vamos exemplificar melhor. Olhando para o quadro I, seria ele um algoritmo?

Quadro 1 - Seria este um algoritmo?

Para resolver um problema qualquer é necessário que seja, primeiramente, encontrada uma maneira de descrever este problema de uma forma clara e precisa. Depois, é preciso que encontremos uma seqüência de passos que permitam que o problema possa ser resolvido. Justamente a essa seqüência de passos chamamos algoritmo. Logo, como o quadro I descreve os passos para resolver o problema de “trocar um pneu furado”, ele é um algoritmo. Outro exemplo clássico de um algoritmo é uma receita de bolo. Se você

Introdução à Programação seguir a receita direitinho, ao final, você vai ter um bolo pronto. Logo, escrever um algoritmo nada mais é do que criar uma receita para resolver um problema qualquer (e no nosso caso, essa receita vai ser executada pelo computador).

Você poderia me perguntar: qualquer um pode aprender a construir um algoritmo? E prontamente eu responderia: Claro que pode! Apesar de alguns acharem que um programador nasce com o dom de programar, não é bem assim. Ser um bom programador, pegar os “macetes” da lógica de programação, conseguir construir o algoritmo que vai dar origem ao programa é algo que pode ser aprendido e desenvolvido por qualquer um que decida abraçar esse estudo com perseverança e interesse. Ah, também é necessário praticar. Sem praticar, nunca vai ser fácil construir um algoritmo. Outro fator é possuir o desejo de programar computadores, é realmente querer programar. Caso contrário, será sempre uma perda de tempo. Fazer o que não se gosta, simplesmente por fazer, é perda de tempo.

Para aprender a construir um algoritmo, uma coisa que atrapalha, é que há poucas publicações especializadas que tratam do assunto de maneira clara e em um nível que os simples “mortais” possam entender e estudar. Além disso, muitas vezes são adotados livros sobre determinada linguagem de programação como livros-texto para aprender a programar. Porém, esses livros, nessa fase inicial, não são muito úteis, virão a ser depois. Porque, uma vez que você aprenda a construir um algoritmo, você vai passar esse algoritmo para alguma linguagem de programação qualquer com facilidade (tal como C ou Pascal) e aí, sim, o algoritmo vai ser executado pelo computador e você estará começando a programar! Logo, sabendo construir um algoritmo, você poderá, futuramente, programar em qualquer linguagem, com poucas adaptações.

Bom, vamos agora dar uma definição forma. Podemos dizer que:

“Algoritmo é um conjunto finito de regras que provê uma seqüência de operações para resolver um tipo de problema específico, em um tempo determinado” (KNUTH, 1997). A partir dessa definição, quais características podemos dizer que um algoritmo tem? Bem, um algoritmo apresenta características próprias que o distinguem de um simples conjunto de ações, são elas:

• Um algoritmo sempre termina, ele deve ter um fim. Na verdade, cada ação do algoritmo, cada passo, deve ser simples o bastante de forma a ser executada em um intervalo

Introdução à Programação de tempo finito.

• As instruções do algoritmo devem estar em uma seqüência lógica, ou seja, deve existir uma ordem de execução dos passos da seqüência.

• Cada ação é descrita precisamente e sem ambigüidades, ou seja, o algoritmo não pode dar margem à dupla interpretação.

• Um algoritmo sempre produz um ou mais resultados (saídas), podendo não exigir dados de entrada.

Parsons (1995) acrescenta a estas características a obrigatoriedade de um algoritmo sempre solucionar um determinado problema, justamente, para que tenha uma utilidade.

Um ponto importante a destacar é que um algoritmo é “uma solução” e não “a solução” de um problema. Isso porque um problema pode ser resolvido de diversas maneiras, logo, pode ser resolvido usando diversos algoritmos diferentes. Por exemplo, um algoritmo para trocar uma lâmpada queimada, pode variar. Para trocar a lâmpada um sujeito A pode dizer que precisa subir em uma cadeira para alcançar a lâmpada; outro sujeito B pode descrever o mesmo algoritmo, mas agora subindo em uma escada e ainda, um sujeito C pode ser alto o suficiente para no algoritmo dele não precisar nem de cadeira, nem de escada para trocar a lâmpada. Porém, o problema a resolver (trocar a lâmpada) é o mesmo e qualquer um dos algoritmos resolverá esse problema.

Figura 1

Introdução à Programação

E tudo pode virar um algoritmo? Podemos construir um algoritmo para qualquer coisa? Qualquer tarefa que siga um padrão poderá ser representada por um algoritmo. Por exemplo, qual o próximo número da seqüência numérica: 2, 4, 6, 8, _? Obviamente, estamos apresentando os números pares. Logo, o valor seguinte é o número anterior acrescentado de duas unidades, sendo próximo valor da seqüência o número 10.

E agora, a seqüência 1 1 2 3 5 8 13 _? Qual o próximo número? Se olhar bem, com exceção dos dois primeiros números que são o início da seqüência, todos os outros são a soma do último número escrito e de seu antecessor. Assim sendo, o próximo número da seqüência é 21 (ou seja, o último número 13 + o seu antecessor 8). Como há um padrão, seria fácil construir um algoritmo para essas tarefas.

Porém, se considerarmos a seqüência 0,1,4,9,17,25,_, qual seria o próximo número? Complicado? Como não conseguimos definir uma lógica para o cálculo do próximo número, nós não conseguiríamos construir um algoritmo para essa tarefa, pois não se teria uma “fórmula” para calcular quem vem a seguir. Dessa forma, para podermos construir um algoritmo para um problema, esse problema tem de ter uma lógica. Senão, não será possível solucionálo de forma a ser executado por um computador. Vale lembrar que, algumas vezes, pode ser complicado achar a lógica do problema a primeira vista, mas quanto mais você praticar, mais fácil será encontrála.

Fases Básicas da Construção de Algoritmos

Sim, e agora, como fazemos para começar o algoritmo? Para montar um algoritmo, precisamos primeiro dividir o problema apresentado em três fases fundamentais: Entrada, Processamento E Saída. Essa definição vai ajudar você a encontrar a resolução do problema.

Entrada: São os dados de entrada do algoritmo, os valores que ele vai usar no processamento para chegar à solução do problema. Esses dados de entrada, geralmente, são fornecidos pelo usuário, fazendo uso de algum dispositivo de entrada de dados, tal como, um teclado, um mouse ou um leitor de código de barras (vide Figura a seguir).

Introdução à Programação

Figura 2 - Dispositivos para Entrada de Dados

Processamento: São os procedimentos utilizados para chegar ao resultado final, para alcançar a resolução do problema. Esses procedimentos são executados no processador do computador e os valores parciais são armazenados na memória (memória RAM).

Saída: São os dados já processados. É o resultado do processamento. Estes dados de saída são apresentados em algum dispositivo de saída. Por exemplo, a tela de um monitor (vide Figura aseguir).

Figura 3 - Dispositivo de Saída de Dados

Sendo assim, se formos pensar, veremos que muitas coisas que fazemos são um algoritmo e possuem essas três fases. Por exemplo, quando eu falo com alguém, eu espero o que a pessoa vai me dizer (entrada), então penso (processamento) e dou uma resposta para a pessoa (saída). Sempre ficará mais fácil começar a organizar a seqüência lógica do algoritmo, se você identificar no problema essas três fases:

Introdução à Programação

Figura 4

Por isso, antes de construir um algoritmo, pare para pensar e identificar:

• Quais dados são necessários para começar o algoritmo? Que dados ele vai precisar para executar? – ENTRADA

• Quais são os cálculos que precisam ser feitos e quais decisões precisam ser tomadas? – PROCESSAMENTO

• Quais dados devem ser exibidos para o usuário? – SAÍDA

Para ilustrar, suponha um algoritmo para calcular a média aritmética de dois números. Quais seriam as fases desse algoritmo?

Entrada: os dois números (afinal, para calcular a média, você precisa ter os dois valores)

Processamento: o cálculo da média (que seria somar os dois números e dividir por dois)

Saída: a média (que era o objetivo do problema)

Representação de Algoritmos

Agora que já identificamos as etapas do problema, como representar isso em um algoritmo? Um algoritmo pode ser representado de três formas: Descrição Narrativa, Fluxograma e Linguagem Algorítmica, também chamada de Pseudocódigo. A seguir, vamos descrever

Introdução à Programação melhor cada uma dessas representações.

Descrição Narrativa

Faz uso do português normal, sem tirar, nem por, com o objetivo de descrever os passos principais da solução para um problema. Uma receita de bolo, por exemplo, é uma descrição narrativa. Outros exemplos são tomar banho (ver Quadro 2) e calcular a média de um aluno (ver Quadro 3).

Figura 5

Quadro 2 - Algoritmo para tomar banho (Descrição Narrativa)

Introdução à Programação

Quadro 3 - Algoritmo para Calcular a Média de um Aluno (Descrição Narrativa)

Qual a vantagem? Todos falamos e conhecemos o português e sabemos, bem ou mal, fazer uma descrição, uma lista de atividades.

E as desvantagens? Bem, primeiro, não há um padrão. Cada pessoa pode escrever como quiser (em tópicos, sem tópicos, usando verbos no infinitivo ou não, etc). Outra desvantagem é a imprecisão, uma vez que a especificação pode não ficar clara ou ficar ambígua, ou seja, cada um pode interpretar de uma forma. Por exemplo, em algumas receitas de bolo você pode encontrar a frase “leve ao forno até assar”. Algumas pessoas poderiam saber exatamente quando o bolo está assado, outras pessoas não. Levando a pergunta “e aí, quando o bolo estará assado?” Por último, há o perigo de se escrever muito para dizer pouca coisa ou da pessoa não saber se expressar bem e ser confusa na escrita.

(Parte 1 de 3)

Comentários