Introdução à programação e aos algoritmos

João Araujo Ribeiro · Capítulo 27 de 103

Páginas do PDF

Introdução à programação e aos algoritmos

2.5 Pseudocódigo

A ideia aqui é usar uma linguagem mais formal, mas sem o rigor de uma linguagem de programação real. Podemos usar algo próximo ao português, escolhendo poucas palavras que indicam comandos simples e diretos, como nas linguagens formais de programação. Alguns chamam isso de “portugol”, um português algorítmico. Este nome é derivado de uma das primeiras linguagens de programação, a Algol (ALGOrithmic Language), hoje abandonada, que deu origem à sintaxe de diversas linguagens de programação atuais. Pessoalmente não gosto da palavra portugol, prefiro chamar de pseudocódigo. Fica ao gosto de leitor usar qualquer dos nomes, o importante é saber sobre o que estamos falando. No decorrer do livro usarei apenas pseudocódigo.

O algoritmo de busca de palavras apresentado na Seção 2.3 é um exemplo de pseudocódigo,

apesar de ainda não estar formalizado.

Uma vez escolhido o formato de apresentação de algoritmos, vamos definir quais tipos de

abstrações o algoritmo deve processar.

 

2.6 IDENTIFICADORES

Vamos começar com um problema numérico simples. Digamos que você precise fazer um programa que calcule a área de um triângulo. Você sabe a fórmula. Para calcular a área de um triângulo você precisa do valor de sua base e de sua altura. Com estes dados, você é capaz de calcular a área.

Isso nos leva ao primeiro conceito importante.

Um algoritmo manipula dados, ou seja, informações, mas devemos formalizar como é possível

representar uma informação no seu algoritmo. Lembre-se de que eu disse que dados são abstrações. Você é quem deve dizer ao computador o que essas abstrações significam. Cada dado manipulado será representado por um nome que chamamos de identificador. Assim, um identificador é um nome que identifica de forma inequívoca as abstrações que você cria dentro de um algoritmo.

 

Figura 2.4 Cálculo da área de um triângulo.

Todo objeto manipulado por seu programa, ou seja, todas as abstrações que você criar, precisam

possuir um identificador único. Esses objetos podem ser variáveis, constantes, funções e até mesmo o próprio algoritmo.

Variáveis são entidades que armazenam dados e esses dados podem mudar de valor durante a

execução de um programa. A cada instante uma variável só pode assumir um valor.

Constantes, como o nome indica, são entidades que não mudam de valor durante a execução do

algoritmo. Por exemplo, para calcular a área de um círculo você deve criar uma constante com o valor de p.

Os novatos têm sempre a tentação de escolher nomes para os identificadores com apenas uma

letra. Dessa forma, as variáveis são chamadas a, b, c, x, y.... Essa não é uma boa prática. Os identificadores devem ser escolhidos de maneira que representem a função que os objetos desempenham no programa. Veja o exemplo seguinte de uma expressão aritmética.

 

Na expressão da equação 2.1, o símbolo d significa que o valor do cálculo da expressão à direita

será atribuído à variável à esquerda. A forma geral de uma atribuição é:

 

em que identificador é um nome de variável, e expressão é um valor literal, um cálculo, uma chamada a funções ou qualquer combinação desses elementos que você possa imaginar.

O que essa expressão e esses nomes significam? Nesse caso, os nomes das variáveis não têm

muito significado, são apenas letras. Sabemos que atribuímos à variável a o valor da divisão por 2 do resultado da multiplicação de b por c. Fora do contexto do cálculo da área do triângulo, esses nomes dizem muito pouco. Mas, e se escrevêssemos a mesma expressão com outros nomes de variáveis?

 

Agora tudo mudou! É verdade que escrevemos bem mais, porém nossa compreensão do que esta

expressão representa aumentou consideravelmente. Para qualquer pessoa que leia esta expressão, mesmo fora de contexto, fica evidente que a expressão faz o cálculo da área de um triângulo, e mais, sabemos exatamente como esse cálculo é feito a partir da base e da altura do triângulo.

Como estamos limitados aos caracteres ASCII, alguns símbolos não poderão ser digitados no

teclado do seu computador. Portanto, devemos fazer algumas simplificações na equação 2.3 para podermos digitar: o símbolo de atribuição d será substituído pelo símbolo de igual (=), o símbolo de multiplicação × pelo asterisco (*), e o símbolo de divisão ÷ pela barra inclinada (/), de modo que a equação fique assim:

 

Com relação aos nomes usados pelos identificadores, na verdade, o mais importante é que você

escolha nomes que sejam compreensíveis e fáceis de ler. Isto não necessariamente implica um nome grande e completo. Você pode usar nomes mais curtos, desde que seu significado seja evidente dentro do contexto de seu programa. Assim, a expressão acima seria muito bem substituída pela expressão mais sucinta:

areaTriang = (base* altura) / 2.

Podemos perceber algumas características que diferenciam este nome das palavras em português.

A primeira característica evidente é que juntamos as palavras. Quando definimos identificadores não podemos usar espaços em branco. Seria confuso decifrar se uma sequência de palavras representa uma ou diversas variáveis.

Também não usamos acentuação. A maioria das linguagens de computador trabalha com um

conjunto limitado de caracteres, a partir da tabela ASCII (veja Seção 1.7). O conjunto de caracteres ASCII não possui caracteres acentuados nem cedilha; por isso ficamos limitados na nossa escolha de nomes.

Algumas regras devem ser, portanto, respeitadas no momento da escolha de nomes usados pelos

identificadores para um algoritmo ou programa:

1. O nome de uma variável pode conter letras maiúsculas ou minúsculas, números e alguns símbolos. 2. Não pode começar com número.

Não pode conter espaços ou símbolos que possam representar uma operação sobre os dados.

3. Alguns símbolos são permitidos, porém algumas linguagens reservam certos símbolos e deste

modo você não deve usá-los nos nomes de variáveis.

Alguns exemplos de nomes válidos:

1. base

2. altura

3. _altura

4. altura1

5. parede3lados

6. parede_reta

7. ParedeReta04

Os seguintes nomes não seriam válidos como identificadores:

1. 3base (começa com dígito)

2. altura principal (espaço em branco no meio do nome) 3. altura1+ (usa sinal de operação)

4. triângulo (usa caractere acentuado)

Dica 2.5 – Uma atribuição não é o mesmo que a igualdade na Matemática.

Você está acostumado a usar o símbolo de igualdade em expressões matemáticas. Em um algoritmo ou programa de computador,

o funcionamento do símbolo = é diferente. Por exemplo, você pode se deparar com uma expressão do tipo:

x = x + 1

Se fosse uma expressão matemática, fazendo as manipulações algébricas comuns, você chegaria à conclusão absurda de que

0 = 1! Não é este o caso. Em um programa, o símbolo de igualdade signi ca uma atribuição da expressão que está do lado direito à

variável que está do lado esquerdo.

Na expressão acima, devemos compreender o x do lado direito como o valor de x no momento atual de execução do

programa, e o x da esquerda como o valor que este vai assumir depois de feito o cálculo da expressão da direita. Assim, se o valor

de x fosse 5 no momento anterior à execução, após o cálculo seu valor passaria a ser 6.

Para você se acostumar com este tipo de notação, em vez de ler a expressão “x = x + 1” como se fosse uma expressão

matemática (“xis é igual a xis mais um”), leia o comando do algoritmo como “xis recebe o valor de xis mais um”. Isto irá ajudá-lo a

não confundir expressões computacionais com expressões matemáticas.

 

Dica 2.6 – Facilite a leitura, não a escrita.

Você escreve um programa uma vez, mas o programa será lido diversas vezes. Em vez de facilitar a escrita de programas, pense em

facilitar sua leitura. Além das regras citadas anteriormente, podemos seguir algumas convenções que facilitarão a leitura de

programas.

O que você acha do seguinte nome de variável?

umnomedevariavellongoedificildeler

e se o nome fosse:

umNomeDeVariavelLongoMasFacilDeLer

ou talvez:

um_nome_de_variavel_longo_mas_facil_de_ler

Há diversas maneiras de se escrever o nome de uma variável para torná-lo mais fácil de ler. Com

um nome composto, você pode separar cada palavra pelo caractere sublinha, ou pode usar a chamada notação camel case. O nome vem do inglês e faz uma analogia com a corcova do camelo, cada letra maiúscula lembrando uma corcova. Aparentemente o pessoal da Computação gosta de animais: a convenção de usar sublinhas para separar palavras é chamada de snake case, uma analogia com cobras. O camel case pode ser usado de duas formas, com a primeira letra do nome minúscula, quando é chamado de lowerCamelCase, ou maiúscula, quando é chamado de UpperCamelCase. A

Tabela 2.2 resume esses métodos.

Tabela 2.2 Tipos de convenções para nomes

Nome Exemplo

 

lowerCamelCase umNomeComposto

 

UpperCamelCase UmNomeComposto

 

snake um_nome_composto

 

Alguns nomes de variáveis não estão errados, mas como algumas linguagens de programação vão

usá-los para fins especiais, devemos evitá-los. Como estamos escrevendo em português, dificilmente um nome que você escolha será algum nome reservado pelas linguagens de programação, pois a quase totalidade baseia-se no inglês. Também é preciso ler a especificação da linguagem para saber quais caracteres não são permitidos em nomes de variáveis.

Dica 2.7 – Seja coerente.