Buscar

Algoritmo e Linguagem de Programação

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 168 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 168 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 168 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Algoritmos e 
Linguagem de 
Programação
Elisamara de Oliveira
Revisada por Clausia Mara Antoneli (janeiro/2013)
APRESENTAÇÃO
É com satisfação que a Unisa Digital oferece a você, aluno(a), esta apostila de Algoritmos e Lingua-
gem de Programação, parte integrante de um conjunto de materiais de pesquisa voltado ao aprendizado 
dinâmico e autônomo que a educação a distância exige. O principal objetivo desta apostila é propiciar 
aos(às) alunos(as) uma apresentação do conteúdo básico da disciplina.
A Unisa Digital oferece outras formas de solidificar seu aprendizado, por meio de recursos multidis-
ciplinares, como chats, fóruns, aulas web, material de apoio e e-mail.
Para enriquecer o seu aprendizado, você ainda pode contar com a Biblioteca Virtual: www.unisa.br, 
a Biblioteca Central da Unisa, juntamente às bibliotecas setoriais, que fornecem acervo digital e impresso, 
bem como acesso a redes de informação e documentação.
Nesse contexto, os recursos disponíveis e necessários para apoiá-lo(a) no seu estudo são o suple-
mento que a Unisa Digital oferece, tornando seu aprendizado eficiente e prazeroso, concorrendo para 
uma formação completa, na qual o conteúdo aprendido influencia sua vida profissional e pessoal.
A Unisa Digital é assim para você: Universidade a qualquer hora e em qualquer lugar!
Unisa Digital
SUMÁRIO
INTRODUÇÃO ............................................................................................................................................... 5
1 ALGORITMOS ........................................................................................................................................... 7
1.1 O que é um Algoritmo? .................................................................................................................................................7
1.2 Conceitos Básicos da Programação de Computadores ....................................................................................9
1.3 Etapas da Programação de Computadores ........................................................................................................12
1.4 Expressão de Algoritmos ..........................................................................................................................................13
1.5 Os Algoritmos serão Expressos em Pseudolinguagem .................................................................................18
1.6 Resumo do Capítulo ....................................................................................................................................................19
1.7 Atividade Proposta .......................................................................................................................................................19
2 PSEUDOLINGUAGEM DE PROGRAMAÇÃO: PORTUCÊ ............................................. 21
2.1 Identificadores ...............................................................................................................................................................21
2.2 Tipos Básicos e Declaração de Variáveis ...............................................................................................................22
2.3 Comando de Atribuição .............................................................................................................................................23
2.4 Operadores Aritméticos ............................................................................................................................................24
2.5 Operadores Lógicos ....................................................................................................................................................25
2.6 Operadores Relacionais..............................................................................................................................................28
2.7 Comando Condicional ................................................................................................................................................29
2.8 Comando de Repetição..............................................................................................................................................31
2.9 Comandos de Entrada e Saída .................................................................................................................................33
2.10 Separador de Comandos .......................................................................................................................................37
2.11 Comentários .................................................................................................................................................................37
2.12 Bloco de Programa ....................................................................................................................................................38
2.13 Resumo do Capítulo .................................................................................................................................................41
3 CONSTRUÇÃO DE ALGORITMOS EM PORTUCÊ: PRATICANDO OS 
COMANDOS E FAZENDO CÁLCULOS .................................................................................... 43
3.1 Declaração de Variáveis – Comandos “leia” e “imprima” ................................................................................43
3.2 Comando Condicional “se” ........................................................................................................................................44
3.3 Bloco de Programa .......................................................................................................................................................45
3.4 Operações Básicas com Números ..........................................................................................................................46
3.5 Operações com Operadores Lógicos e Relacionais .........................................................................................49
3.6 Resumo do Capítulo ....................................................................................................................................................51
3.7 Atividades Propostas ...................................................................................................................................................51
4 METODOLOGIA PARA A CONSTRUÇÃO DE ALGORITMOS ................................... 55
4.1 Os Passos da Metodologia ........................................................................................................................................55
4.2 Solução de Exercícios utilizando a Metodologia ..............................................................................................57
4.3 Resumo do Capítulo ....................................................................................................................................................57
4.4 Atividades Propostas ...................................................................................................................................................58
5 A LINGUAGEM DE PROGRAMAÇÃO C .................................................................................. 61
5.1 Tipos Básicos e Declaração de Variáveis em C ...................................................................................................61
5.2 Operadores de Atribuição, Aritméticos, Relacionais e Lógicos (Binários) em C ..................................62
5.3 Comando Condicional em C (if) ..............................................................................................................................65
5.4 Comando de Seleção Múltipla em C (switch) ....................................................................................................68
5.5 Comando de Repetição em C (while) ....................................................................................................................715.6 Comando de Repetição em C (for) .........................................................................................................................72
5.7 Comandos de Leitura e Escrita em C ....................................................................................................................76
5.8 Comentários em C .......................................................................................................................................................79
5.9 Bloco de Programa em C ..........................................................................................................................................79
5.10 Funções Úteis em C ...................................................................................................................................................81
5.11 Tradução de PortuCê para a Linguagem C .......................................................................................................84
5.12 Resumo do Capítulo .................................................................................................................................................89
5.13 Atividades Propostas ................................................................................................................................................89
6 USANDO COMANDOS DE REPETIÇÃO EM C ................................................................... 91
6.1 Comando de Repetição – Entrada Indeterminada de Dados (uso de flags) ..........................................91
6.2 Comando de Repetição – Entrada de Dados Determinada .........................................................................94
6.3 Exemplo dos Minutos Telefônicos ..........................................................................................................................96
6.4 Exemplo do Preço Final de Automóveis ............................................................................................................100
6.5 Exemplo da Eleição ....................................................................................................................................................104
6.6 Exemplo da Série Numérica ...................................................................................................................................108
6.7 Resumo do Capítulo ..................................................................................................................................................112
6.8 Atividades Propostas .................................................................................................................................................112
7 OUTROS PROGRAMAS EM C .....................................................................................................119
8 PRÁTICA EM LABORATÓRIO ......................................................................................................127
8.1 Estudo Dirigido ........................................................................................................................................................... 127
9 CONSIDERAÇÕES FINAIS .............................................................................................................131
RESPOSTAS COMENTADAS DAS ATIVIDADES PROPOSTAS ...................................133
REFERÊNCIAS ...........................................................................................................................................175
Unisa | Educação a Distância | www.unisa.br
5
INTRODUÇÃO
Esta apostila se refere à disciplina Algoritmos e Linguagem de Programação do curso de Engenha-
ria de Produção, na modalidade a distância, da Unisa. 
O objetivo desta disciplina é capacitar você, caro(a) aluno(a), a fazer os primeiros programas de 
computador utilizando uma linguagem de programação. Escrever programas de computador é uma ta-
refa muito interessante, instigante e desafiadora! Vamos começar entendendo o que é um algoritmo, 
que é um roteiro com instruções sequenciais para se resolver um problema ou se realizar alguma tarefa. 
É como uma receita de bolo, que indica os ingredientes e as instruções para se fazer o bolo passo a passo. 
Usando essa analogia, os ingredientes seriam os dados, os passos seriam as instruções do programa e o 
forno para assar o bolo seria o computador!
O universo dos computadores é muito simples, muito limitado, mas muito poderoso: tudo se ba-
seia na base 2, que possui apenas 2 algarismos: 0 e 1. Esses dois dígitos binários, ou bits, formam a lingua-
gem de máquina, que é a única linguagem que o computador digital entende. Mas nós vamos aprender 
a escrever as instruções dos nossos programas numa linguagem de programação chamada C, que é mais 
próxima da nossa linguagem de comunicação. Nós nos comunicamos em Português, certo? Então vamos 
começar a escrever nossos primeiros algoritmos em PortuCê, uma pseudolinguagem, e depois traduzi-
-los para um programa em linguagem C. Isso ainda não resolve nosso problema: para que o computador 
possa executar nosso programa em C, ele precisa ser traduzido para linguagem de máquina! Mas isso 
será feito facilmente pelo compilador C, um programa que faz exatamente isso: traduz programas em C 
para instruções binárias (linguagem de máquina).
Como você pode ver, será um belo desafio! Então, caro(a) aluno(a), afie seu raciocínio lógico e pre-
pare-se para entrar num mundo em que a lógica será o carro-chefe! Não tema nada, pois tudo será 
ensinado de forma simples e didática... Mais algumas páginas à frente e você já estará programando seu 
computador!
Profa. Dra. Elisamara de Oliveira
Unisa | Educação a Distância | www.unisa.br
7
ALGORITMOS1 
Em nosso dia a dia, executamos mecanicamente uma série de ações, que são seguidas sequencial-
mente e que provocam o acontecimento de algo. Por exemplo, temos um trajeto frequente ao sairmos 
diariamente de casa em direção ao nosso trabalho ou à nossa universidade, que, sempre que seguido, 
nos leva ao nosso destino. Isso é um algoritmo. Em outras palavras, um algoritmo descreve eventos com 
duração finita, que envolvem um conjunto de objetos cujas características podem ser alteradas, através 
de ações que ocorrem sequencialmente.
1.1 O que é um Algoritmo?
Vamos, juntos, entender o que são algoritmos, utilizando inicialmente alguns conceitos já definidos 
na literatura técnica da área:
 Além dessas importantes definições, acrescentemos que, num algoritmo, podem-se observar os 
seguintes aspectos: 
ƒƒ ação: evento que ocorre num período de tempo finito;
ƒƒ estado: propriedades de um objeto numa dada situação;
ƒƒ processo: sequência temporal de ações;
ƒƒ padrão de comportamento: toda vez que é seguido, um evento ocorre.
AtençãoAtenção
“Programar é construir algoritmos.”
“Programa = algoritmo + estruturas de dados.”
“No processo de construção de programas, a formulação do algoritmo e a definição das estruturas de dados estão 
intimamente ligadas.”
Elisamara de Oliveira
Unisa | Educação a Distância | www.unisa.br
8
Apesar de muito simples, algumas observações importantes podem ser notadas nesse algoritmo: 
ƒƒ o tempo verbal está na forma imperativa (“faça”, “traga”, “frite” etc.);
ƒƒ há um sequenciamento das ações, que estão separadas por um ponto e vírgula;
ƒƒ o avental não é usado toda vez: existe um motivo para colocá-lo, ou seja, há uma condição para 
que o avental seja colocado;
ƒƒ o número de batatas descascadas varia; a ação de “descascar uma batata” repete-se até que a 
condição de parada (ser suficiente para alimentar as pessoas que irão jantar) seja alcançada;
ƒƒ a ordem das ações é importante: primeiro descasca-se a batata, pica-se a batata, para depois fritá-la...
Exemplos de algoritmos conhecidos:
ƒƒ Qual é o algoritmo que você descreve para vir estudar?
ƒƒ Qual é o algoritmo para se fazer uma feijoada?
ƒƒ Qual é o algoritmopara se trocar uma lâmpada?
Apesar de receitas culinárias e trajetos rotineiramente percorridos encaixarem-se perfeitamente no 
conceito inicial de algoritmo, no nosso curso, estamos interessados num tipo de algoritmo especial, que 
seja capaz de ser executado por um computador. Para tanto, é necessário que identifiquemos problemas 
do mundo real que possam ser traduzidos em ações primitivas finitas e dos quais se possa extrair um 
padrão de comportamento.
Saiba maisSaiba mais
Exemplo de um algoritmo
Algoritmo para fazer “batatas fritas para o jantar”
“Traga a cesta com batatas da despensa”;
“Traga a panela do armário”;
“Coloque óleo na panela”;
Se “a roupa é clara”
 então “coloque o avental”;
Enquanto “nº de batatas é insuficiente para o número de pessoas” faça
 “descasque as batatas”;
“Pique as batatas”;
“Esquente o óleo da panela”;
“Frite as batatas na panela”;
“Escorra o excesso de óleo das batatas fritas”;
“Coloque as batatas fritas numa vasilha com papel absorvente”. 
Algoritmos e Linguagem de Programação
Unisa | Educação a Distância | www.unisa.br
9
 Com base nos exemplos apresentados até aqui, estamos prontos para definir o que é um algoritmo.
Um algoritmo é a descrição de um padrão de comportamento, expresso em termos de um 
repertório bem definido e finito de ações primitivas que podem ser executadas.
Analise a definição e veja como é coerente com o que apresentamos; não é mesmo? Além disso, é 
importante observar que, num algoritmo, distinguem-se claramente dois aspectos:
ƒƒ aspecto estático: que corresponde ao texto;
ƒƒ aspecto dinâmico: que corresponde à sua execução (a partir de valores iniciais).
O curso de Algoritmos e Linguagem de Programação é, na realidade, um curso de Programação de 
Computadores para alunos(as) que iniciam cursos superiores na área de Engenharia e Informática. Sei 
que você está curioso(a) para conhecer um algoritmo, mas, para começar a construir seus algoritmos e 
fazer seus primeiros programas de computador, é necessário que você domine uma série de conceitos 
básicos, que são apresentados a seguir, a começar pelo próprio computador!
1.2 Conceitos Básicos da Programação de Computadores
Fonte: http://evotecinformatica.blogspot.com/p/como-
-cuidar-do-seu-computador.html.
Computador: é uma máquina capaz de seguir uma espécie de algoritmo chamado programa, que 
está escrito em linguagem de máquina.
Linguagem de máquina: internamente, o computador executa uma série de instruções que ficam 
armazenadas em sua memória principal em código binário, ou seja, em linguagem de máquina (zeros (0) 
e uns (1), que são os dígitos binários ou bits).
Linguagem de alto nível: para escrever os programas de computador, os programadores utilizam 
linguagens que estão mais próximas da linguagem humana, que são chamadas linguagens de alto nível 
ou, simplesmente, linguagens de programação. Exemplos de linguagens de programação (alto nível) 
são: C, C++, C#, Pascal, Delphi, Java, Basic, VisualBasic, Fortran, Cobol, entre muitas outras. 
Elisamara de Oliveira
Unisa | Educação a Distância | www.unisa.br
10
Linguagem de montagem ou Assembly: há programas de computador que precisam interferir 
diretamente no hardware da máquina para permitir a execução de funções específicas, como as ofere-
cidas por sistemas operacionais, por exemplo. Nesse caso, os programadores utilizam as linguagens de 
montagem ou linguagens assembly, que estão muito próximas da linguagem de máquina e mais distan-
tes das linguagens de programação, sendo, por isso, chamadas linguagem de baixo nível.
A Figura 1 mostra a relação entre as linguagens discutidas anteriormente.
Figura 1 – Relação entre linguagens de baixo e de alto nível.
Numa ponta da Figura 1, está a linguagem de máquina e, no outro extremo, estão as linguagens 
humanas. Quanto mais próxima da linguagem de máquina, mais de “baixo nível” é a linguagem; em con-
trapartida, quanto mais próxima das linguagens humanas, mais “alto nível”. As linguagens de programa-
ção fazem uma espécie de ponte entre a linguagem binária, ou linguagem que o computador entende, 
e a linguagem que nós humanos utilizamos. 
Linguagem de programação: “Uma linguagem de programação é uma linguagem utilizada por 
uma pessoa para expressar um processo através do qual o computador possa resolver um problema.” 
(SEBESTA, 2000). Pessoas que possuem uma compreensão limitada da linguagem natural tendem a ser 
mais limitadas para expressar seus pensamentos, especialmente em termos de capacidade de abstração. 
Programadores que tiveram pouca educação formal em disciplinas de Computação tendem a continuar 
a usar a mesma linguagem de programação, mesmo que esta esteja em desuso. A aprendizagem con-
tínua é fundamental. É necessário que os programadores conheçam os fundamentos das linguagens 
de programação para que possam ler, entender e aprender com os manuais e livros técnicos das novas 
linguagens e os novos paradigmas que venham a surgir. 
 Compilador: permite que os programadores utilizem linguagens de alto nível para escrever os 
programas de computador, pois se encarrega de traduzi-los para linguagem de máquina. O compilador 
é um programa que traduz uma determinada linguagem de programação para linguagem de máquina. 
Dessa forma, existem diversos compiladores específicos para cada uma das linguagens de programação 
e para cada sistema operacional, conforme ilustra a Figura 2. 
Algoritmos e Linguagem de Programação
Unisa | Educação a Distância | www.unisa.br
11
Figura 2 – Os compiladores são específicos para cada linguagem e para cada sistema operacional.
Conforme ilustra a Figura 2, um compilador C para o sistema operacional Windows (compilador 
X) é diferente de um compilador C para o sistema operacional Linux (compilador Y), que também é di-
ferente de um compilador C para o sistema operacional Mac OS (compilador Z), por exemplo, embora a 
linguagem de programação (C) seja a mesma (linguagem de alto nível). O compilador de linguagem de 
montagem ou linguagem assembly é chamado assembler. 
Caro(a) aluno(a), dadas essas explicações básicas, como unir todas essas informações para come-
çarmos a programar? A Figura 3 vai nos ajudar, mostrando o ciclo completo da elaboração do algoritmo 
à execução de um programa de computador. Cada um dos componentes desse ciclo é explicado a seguir.
 Figura 3 – Do algoritmo à execução de um programa de computador.
Elisamara de Oliveira
Unisa | Educação a Distância | www.unisa.br
12
ƒƒ Algoritmo: estrutura do programa; instruções que descrevem a lógica do programa;
ƒƒ Editor de texto: permite que o código-fonte do programa seja editado em um arquivo-fonte. 
Alguns compiladores têm editores com ambiente de programação integrados, como é o caso 
do compilador Dev C++;
ƒƒ Código-fonte: conjunto de comandos escritos na linguagem de programação escolhida (que, 
neste curso, será a linguagem C). O código-fonte fica armazenado no arquivo-fonte em forma-
to ASCii, ou seja, em texto [o arquivo-fonte possui a extensão relativa à linguagem de progra-
mação usada, por exemplo, .pas (Pascal), .c (C), .cpp (C++), .cs (C#), .java (Java)];
ƒƒ Compilador: lê o código-fonte do programa e cria outro arquivo, com o mesmo programa 
escrito em linguagem de máquina;
ƒƒ Código-objeto: arquivo resultante da compilação do código-fonte. Contém informações so-
bre alocação de memória, os símbolos do programa (como nomes de variáveis e de funções) e 
também informações sobre debug (o arquivo-objeto possui a extensão .obj para a maioria das 
linguagens de programação);
ƒƒ Arquivos de biblioteca: contêm funções já compiladas que podem ser utilizadas no programa;
ƒƒ Linker: programa auxiliar do compilador que cria o programa executável a partir de arquivos-
-objeto e dos arquivos de biblioteca;
ƒƒ Código executável: programa que pode ser executado no computador(o arquivo executável 
possui a extensão .exe).
Resumindo todo esse processo, caro(a) aluno(a), vamos precisar passar por 5 etapas: obter um pro-
blema a ser resolvido; escrever um algoritmo em pseudolinguagem para solucionar esse problema; tra-
duzir o algoritmo para a linguagem de programação C; e, finalmente, editar esse programa e usar um 
compilador C para testar seu funcionamento!
1.3 Etapas da Programação de Computadores
Como acabamos de dizer, para conseguirmos construir programas de computador, é necessário 
cumprir 5 etapas básicas da programação. As 5 etapas da programação de computadores são:
1. identificação de um problema do mundo real;
2. confecção do algoritmo;
3. teste do algoritmo;
4. confecção do programa de computador;
5. execução do programa no computador.
 
Para realizarmos esse ciclo de etapas com sucesso, quer dizer, para conseguirmos fazer programas 
de computador com qualidade e confiáveis, é muito importante a utilização de técnicas de programação, 
como a programação estruturada. A programação estruturada é uma metodologia de projeto e desen-
volvimento que pretende:
Algoritmos e Linguagem de Programação
Unisa | Educação a Distância | www.unisa.br
13
ƒƒ facilitar a escrita;
ƒƒ facilitar o entendimento;
ƒƒ permitir a verificação;
ƒƒ facilitar a alteração e a manutenção dos programas de computador.
O principal objetivo da metodologia de programação estruturada é reduzir a complexidade dos 
problemas. Essa metodologia, quando utilizada, induz o programador a produzir programas:
ƒƒ confiáveis;
ƒƒ de fácil manutenção;
ƒƒ flexíveis;
ƒƒ documentados;
ƒƒ legíveis.
 
Sendo assim, caro(a) aluno(a), vamos aprender a programar da melhor maneira possível: utilizando 
as regras da programação estruturada!
1.4 Expressão de Algoritmos 
Os algoritmos podem ser expressos através de diagramas, de pseudolinguagens ou da própria lin-
guagem de programação. Vamos examinar cada uma dessas três opções e, no final deste capítulo, vamos 
optar por uma delas, para que possamos começar a fazer nossos primeiros algoritmos!
Expressão de Algoritmos Através de Diagramas
 
A utilização de diagramas para a expressão de algoritmos foi bastante utilizada até a década de 
1980. Diagramas de Chapin e fluxogramas foram os principais métodos utilizados então. Nos métodos 
baseados em diagramas, uma grande variedade de formas geométricas, como quadrados, retângulos, 
hexágonos, pentágonos etc., é utilizada para representar as instruções de leitura e impressão de dados, 
assim como os comandos condicionais, de repetição etc. Além disso, uma série de regras para a dispo-
sição dessas formas e/ou setas para representar o sequenciamento das instruções fazem parte desses 
métodos. 
Apesar de terem sido utilizados largamente pelas primeiras gerações de programadores, esses mé-
todos apresentam uma série de inconveniências, tais como:
ƒƒ o programador tem que memorizar todas as formas geométricas e conhecer as regras de in-
ter-relacionamento entre elas;
ƒƒ o programador perde um tempo considerável para fazer e refazer desenhos, tendo que possuir 
diversas réguas com os símbolos dos diagramas;
ƒƒ para algoritmos muito grandes, os desenhos começam a ocupar muitas páginas, tornando im-
Elisamara de Oliveira
Unisa | Educação a Distância | www.unisa.br
14
praticável a visualização de toda a solução;
ƒƒ a memorização de regras de expressão desvia a atenção do programador, que não tem apenas 
de se concentrar na lógica do problema, como seria desejável, mas tem as preocupações adi-
cionais de elaborar desenhos e consultar regras e regras.
Além de todos os inconvenientes citados, que de longe esgotam os seus problemas, os métodos 
baseados em diagramas se distanciam muito do alvo da programação, que é a expressão da lógica al-
gorítmica na própria linguagem de programação! Além disso, esses métodos não são nem um pouco 
intuitivos. Veja a Figura 4 e tente descobrir o que o programa faz, sem muito esforço, se for possível:
Figura 4 – Algoritmo expresso através de um diagrama de Chapin.
A Figura 5 mostra um exemplo de um algoritmo expresso através de um fluxograma. Observe a 
existência de diferentes formas geométricas para as diferentes instruções e o uso de setas para represen-
tar o fluxo dos dados. Você seria capaz de dizer o que esse algoritmo faz? Quais as variáveis que ele utiliza 
e de que tipo básico elas são? (Dica: esse algoritmo faz a mesma coisa que o expresso pelo diagrama de 
Chapin, da Figura 4).
Algoritmos e Linguagem de Programação
Unisa | Educação a Distância | www.unisa.br
15
Figura 5 – Algoritmo expresso através de um fluxograma.
Expressão de Algoritmos Através de Linguagem de Programação 
 
Expressar um algoritmo através de uma linguagem de programação é o objetivo, a meta do pro-
gramador, com certeza, mas isso é feito quando o programador já adquiriu bastante experiência de pro-
gramação, quer dizer, quando o programador já consegue programar diretamente da linguagem de pro-
gramação. Os programadores iniciantes podem ter grandes dificuldades para aprender a programar se 
forem diretamente às instruções da linguagem de programação.
Uma linguagem de programação permite, além da expressão do raciocínio algorítmico, a sua exe-
cução no computador (por causa do compilador, conforme já aprendemos). Embora as linguagens de 
programação sejam chamadas linguagens de alto nível, devido à sua proximidade com a linguagem hu-
mana, suas instruções vêm em inglês. O inglês é uma das diversas linguagens humanas, claro, mas pode 
oferecer certo desconforto aos estudantes, principalmente aos que falam português, como é o nosso 
caso.
Existem diversas linguagens de programação. Cada uma pode ser mais adequada à resolução de 
problemas específicos e recebe alguns rótulos por isso, como linguagens para aplicações científicas, lin-
guagens para desenvolvimento de software básico, linguagens para utilização intensiva de recursos 
Elisamara de Oliveira
Unisa | Educação a Distância | www.unisa.br
16
gráficos, para manipulação de bancos de dados etc. e linguagens para o ensino de programação! 
Veja a Figura 6. É um código escrito em Pascal.
Figura 6 – Algoritmo expresso na linguagem de programação Pascal.
A Figura 6 mostra um algoritmo expresso na linguagem de programação Pascal, ou seja, já é um 
programa de computador. Observe a estrutura do programa: começa com PROGRAM, depois tem a se-
ção VAR, na qual as variáveis são declaradas e, depois, vêm as instruções contidas entre o BEGIN (início) e 
o END (fim). Você seria capaz de dizer o que esse algoritmo faz? Quais as variáveis que ele utiliza e de que 
tipo básico elas são? (Dica: esse programa faz a mesma coisa que o expresso pelo diagrama de Chapin e 
pelo fluxograma, mostrados nas Figuras 4 e 5).
Agora, observe o exemplo de um programa escrito na linguagem de programação C. 
Figura 7 – Algoritmo expresso na linguagem de programação C.
Algoritmos e Linguagem de Programação
Unisa | Educação a Distância | www.unisa.br
17
A Figura 7 mostra um algoritmo expresso na linguagem de programação C, ou seja, também é um 
programa de computador. Observe a estrutura do programa: começa com um comentário, depois tem 
a inclusão de uma biblioteca de funções, depois a declaração das variáveis e, em seguida, vem a seção 
main, na qual as instruções do programa estão contidas entre o { (início) e o } (fim). Você seria capaz de 
dizer o que esse algoritmo faz? Quais as variáveis que ele utiliza e de que tipo básico elas são? (Dica: esse 
programa faz a mesma coisa que o expresso pelo diagrama de Chapin, pelo fluxograma e pelo programa 
Pascal, mostrados nas Figuras 4, 5 e 6).
O programa traz um comentário dizendo explicitamente o que ele faz. Portanto, garanto que você 
conseguiu responder à primeira pergunta. Com relaçãoàs variáveis que o programa utiliza e seu tipo 
básico, observe a declaração “int valor, menor;” no programa. Há duas variáveis ali declaradas: valor e 
menor; o tipo básico é int; um pouquinho de imaginação e int = inteiro!
Que tal você comparar o código C com o código Pascal? Semelhanças? Qual dos dois lhe pareceu 
mais fácil de entender? 
Bem, se sua resposta foi o código Pascal, digo-lhe que o Pascal tem o “rótulo” de linguagem mais 
adequado ao ensino de programação. Se sua resposta foi o código C, saiba que é uma linguagem que foi 
criada para ser utilizada por programadores experientes. Mas, se você teve dificuldade de entender am-
bos os códigos, não se preocupe! O curso está apenas começando e há muito que se aprender de lógica 
de programação! Garanto que no final do curso esse programa vai parecer muito, muito fácil para você!
Expressão de Algoritmos Através de Pseudolinguagem 
Uma pseudolinguagem é uma notação para expressão de algoritmos para ser utilizada nas 3 pri-
meiras etapas da programação definidas na seção 1.3, quais sejam, identificação de um problema do mun-
do real, confecção e teste do algoritmo. É apresentada na forma de português estruturado. Embora seja 
uma pseudolinguagem, possui estrutura, sintaxe e semântica semelhantes às de uma linguagem de pro-
gramação.
A principal diferença entre a pseudolinguagem e a linguagem de programação é que a primeira 
não possui um compilador. Isso significa que é possível expressar o raciocínio algorítmico utilizando-se 
uma pseudolinguagem, mas o programa não pode ser executado no computador.
São muitas as vantagens de se utilizar uma pseudolinguagem para escrever algoritmos:
ƒƒ é uma linguagem independente de máquina; o programador pensa somente no problema a 
ser resolvido, sem se preocupar com possíveis restrições do compilador ou do hardware (com-
putador);
ƒƒ o programador tem que conhecer a sintaxe, a semântica e a estrutura da pseudolinguagem, 
mas tem total liberdade para criar novos comandos ou usar instruções em alto nível (ou em 
forma de frases); por um lado, ele vai se acostumando com a rigidez da sintaxe das linguagens 
de programação, mas, por outro, tem a liberdade de expressar seu raciocínio sem esbarrar em 
limitações de contexto;
ƒƒ uma vez estando pronto o algoritmo na pseudolinguagem, a sua implementação no compu-
tador (etapas 4 e 5 da programação: confecção e execução do programa) fica muito facilitada, 
pois toda a lógica já foi desenvolvida e testada e somente uma tradução para a linguagem de 
programação-alvo se faz necessária.
Elisamara de Oliveira
Unisa | Educação a Distância | www.unisa.br
18
Veja o exemplo de um algoritmo escrito na pseudolinguagem PortuCê. 
Figura 8 – Algoritmo expresso na pseudolinguagem PortuCê.
A Figura 8 mostra um algoritmo expresso na pseudolinguagem PortuCê. Observe a estrutura do 
algoritmo: começa com um comentário dizendo o que o algoritmo faz, tem a declaração das variáveis 
e depois vem a seção principal ( ), em que são apresentadas as instruções contidas entre o { (início) e } 
(fim) do algoritmo. Você seria capaz de dizer o que esse algoritmo faz? Quais as variáveis que ele utiliza 
e de que tipo básico elas são? (Dica: esse algoritmo faz a mesma coisa que o expresso pelo diagrama de 
Chapin, pelo fluxograma, pela linguagem Pascal e pela linguagem C, mostrados nas Figuras 4, 5, 6 e 7).
Esse algoritmo em PortuCê corresponde ao programa em C mostrado na Figura 7. Observe a gran-
de semelhança entre eles. Essa semelhança é proposital, com certeza. O PortuCê é quase a tradução de 
um programa C para o português. As vantagens de se utilizar o PortuCê são muitas. Pense sobre elas, pois 
o PortuCê será nosso maior aliado no aprendizado de algoritmos!
Um exercício interessante para você fazer agora seria visitar os exemplos deste algoritmo escritos 
no diagrama de Chapin e no fluxograma e compará-los com o PortuCê. Diga-me: qual deles é mais fácil 
de entender? Qual dessas formas de expressão de algoritmos você escolheria?
1.5 Os Algoritmos serão Expressos em Pseudolinguagem
Em função de tudo o que foi dito e após conhecermos as 3 formas de expressão de algoritmos, usa-
remos pseudolinguagem para escrever nossos primeiros algoritmos! As justificativas dessa nossa esco-
lha são muitas e foram já fundamentadas. A pseudolinguagem PortuCê utiliza o português, numa forma 
estruturada, e tem estrutura, sintaxe e semântica muito semelhantes às da linguagem de programação 
C. 
Apesar de o Pascal ter se consagrado como uma linguagem adequada para o ensino da progra-
mação aos estudantes que a iniciam, ou seja, como primeira linguagem de programação, a linguagem 
C, antes restrita à comunidade científica, ganhou uma popularidade inquestionável na década de 1990 
que se estende aos dias atuais, pois é a base de novas linguagens, como o Java, o C# e até o Android. Em 
função disso, a linguagem C passou a ser alvo do interesse dos estudantes. A resistência, que já existiu, 
Algoritmos e Linguagem de Programação
Unisa | Educação a Distância | www.unisa.br
19
em utilizá-la como primeira linguagem de programação pelos professores se deveu, em parte, ao fato de 
seus criadores, Dennis Ritchie e Brian Kernighan, terem afirmado que “C retém a filosofia básica de que 
os programadores sabem o que estão fazendo” (KERNIGHAN; RITCHIE, 1989). Bem, se considerarmos que 
programadores iniciantes não têm condições de saber com segurança o que estão fazendo, exatamente 
pelo fato de serem inexperientes, a adoção da linguagem seria realmente questionável.
No entanto, as linguagens de programação evoluíram bastante e as mais utilizadas hoje, como o 
Java e o C#, têm como base a linguagem C. Além disso, a adoção de um método adequado e coerente 
para o ensino da programação de computadores pode atuar como um facilitador do processo de apren-
dizagem, permitindo que uma linguagem mais complexa, como o C, possa ser ensinado sem oferecer 
obstáculos à aprendizagem. 
Assim, a adoção do PortuCê, nossa pseudolinguagem, e da metodologia de ensino proposta pela 
professora viabiliza a adoção da linguagem de programação C como primeira linguagem. Isso vai ao en-
contro das expectativas dos estudantes e coloca o ensino da programação na direção da atual tendência 
da programação de computadores, que vem utilizando, cada vez mais, o C como base dos novos e mo-
dernos paradigmas de programação. 
1.6 Resumo do Capítulo
1.7 Atividade Proposta
Caro(a) aluno(a), o PortuCê, além de oferecer o conforto de utilizar nossa língua pátria, o que o 
torna muito familiar ao programador, não requer a memorização das abomináveis formas geométricas 
e setas e mais setas dos diagramas. Fique tranquilo, meu(minha) estudante, mais duas lições e você já 
estará fazendo seus primeiros programas de computador!
1. Tente deduzir qual o padrão de comportamento utilizado para gerar as sequências:
1, 5, 9, 13, 17, 21, 25 ...
1, 1, 2, 3, 5, 8, 13, 21, 34 ...
Unisa | Educação a Distância | www.unisa.br
21
Caro(a) aluno(a), suponha que você ganhou de presente uma viagem para os Estados Unidos. O 
que você deveria fazer antes de ir para lá? Estudar inglês! Já que os americanos falam essa língua, claro. 
Então, neste nosso curso, você está ganhando a chance única de aprender a programar. Este capítulo 
o convida a aprender PortuCê, que é a língua que os algoritmos (que são as bases dos programas de 
computador) falam! O PortuCê é, basicamente, uma tradução da linguagem C para Português. Assim, 
aprendendo bem o PortuCê, você já estará se preparando para aprender a própria linguagem C, de forma 
simples e fácil!
PSEUDOLINGUAGEM DE 
PROGRAMAÇÃO: PORTUCÊ2 
2.1 Identificadores
Todo programa de computador manipula dados, que são armazenados em variáveis. Uma variável 
precisa ter um nome que a identifique de forma única no programa: é o identificador.
AtençãoAtenção
•	Um identificadorem PortuCê é formado por caracteres alfanuméricos;
•	O primeiro caractere tem que ser uma letra; os outros caracteres podem ser:
•	 letras: A-Z, a-z;
•	dígitos: 0-9;
•	sublinhado: _ .
•	Não pode haver dois identificadores iguais.
•	Letras minúsculas e letras maiúsculas são diferentes.
•	Os identificadores não podem ser acentuados.
•	Não pode haver espaço em branco num identificador.
•	O caractere “ç” não pode ser usado num identificador.
•	Um identificador não pode ter o mesmo nome das palavras reservadas do PortuCê (como: principal, se, senão, 
inteiro, real etc.).
Exemplos de identificadores válidos:
NOME, raiz1, letra4, Total_dos_Salarios, Nome_de_Familia.
Elisamara de Oliveira
Unisa | Educação a Distância | www.unisa.br
22
Exemplos de identificadores INVÁLIDOS:
4pontos (começa com número)
CUSTO FINAL (tem espaço em branco)
PreçoTotal (caractere “ç” não pode ser usado)
Pessoa+Alta (caractere “+” não pode ser usado)
Preco-caro (caractere “-” não permitido)
Total_dos_salários (palavra acentuada)
inteiro (palavra reservada do PortuCê)
2.2 Tipos Básicos e Declaração de Variáveis
Os dados manipulados por um programa são armazenados em variáveis. As variáveis precisam ter 
um nome (identificador), um tipo associado, e precisam ser declaradas antes que possam ser utilizadas. 
Saiba maisSaiba mais
•	Há três tipos básicos que podem ser associados às variáveis:
•	inteiro;
•	real;
•	caractere.
•	Para declarar uma variável, escreve-se o nome de seu tipo, salta-se um espaço em branco, em seguida escreve-se o 
nome do seu identificador e “;” para finalizar a declaração.
•	Se mais de uma variável for do mesmo tipo básico, elas podem ser declaradas juntas, apenas separadas por vírgulas.
•	Toda variável precisa ser declarada antes de ser utilizada.
•	Não pode haver duas variáveis com mesmo nome, mesmo que tenham tipos básicos diferentes, a menos que algum 
caractere maiúsculo ou minúsculo as diferencie.
Exemplos de declaração de variáveis válida:
caractere NOME[20], letra;
inteiro soma;
real raiz1, Total_dos_Salarios;
caractere Nome_de_familia[30];
Exemplos de declaração de variáveis INVÁLIDA:
caractere NOME[20]; letra4; (o separador de identificadores deve ser a vírgula)
inteiro: SOMA; (não pode haver o sinal de dois-pontos após o nome do tipo)
raiz1, Total_dos_Salarios real; (o tipo básico deve vir antes dos identificadores)
caractere Nome_de_Familia[30]; (o nome do tipo básico está errado)
real SOMA; (a variável SOMA já foi declarada: um identificador não pode ser duplicado)
Algoritmos e Linguagem de Programação
Unisa | Educação a Distância | www.unisa.br
23
2.3 Comando de Atribuição
O conteúdo das variáveis do programa pode ser determinado através de dois tipos de comandos: 
comando de atribuição e comando de leitura. O comando de atribuição permite que um determinado 
valor seja armazenado numa variável.
AtençãoAtenção
•	O símbolo do comando de atribuição é = .
•	Não se deve atribuir a uma variável um valor que NÃO seja compatível com o tipo básico dessa variável, ou seja, 
números inteiros devem ser atribuídos a variáveis do tipo inteiro; números reais devem ser atribuídos a variáveis do 
tipo real; frases e letras devem ser atribuídas a variáveis do tipo caractere.
•	Caso não haja compatibilidade entre o dado e o tipo da variável, podem acontecer efeitos indesejados. Então, 
muito cuidado, pois nesse tipo de atribuição ocorre a CONVERSÃO AUTOMÁTICA DE TIPOS e o que chega 
na variável de destino pode ser um desastre!
•	Toda variável deve ter um valor a ela atribuído antes de ser usada no programa;
•	Em variáveis reais, SÓ EXISTE PONTO DECIMAL; não se pode usar vírgula decimal.
Exemplos de atribuições válidas:
letra = ‘L’;
soma = 0;
Total_dos_Salarios = 1275.50;
NOME = “Luiza”;
Exemplos de atribuições INVÁLIDAS:
NOME = Maria;
(a cadeia de caracteres tem que estar entre aspas)
NOME = ‘Maria’;
(o símbolo que delimita a cadeia de caracteres não pode ser apóstrofo, devem-se usar aspas)
Total_dos_Salarios = ‘1275.50’;
(o valor a ser atribuído a uma variável numérica não pode estar entre apóstrofos nem entre aspas)
Total_dos_Salarios = 1275,50;
(não existe vírgula decimal, o certo é usar ponto decimal) 
soma = 10.0;
(numa variável do tipo inteiro,como é o caso da variável soma, não pode haver parte decimal; 
esse caso está sujeito à conversão automática)
soma := 0;
(o símbolo do comando de atribuição é = e não :=)
Elisamara de Oliveira
Unisa | Educação a Distância | www.unisa.br
24
2.4 Operadores Aritméticos 
Os operadores aritméticos permitem que expressões da Matemática sejam atribuídas às variáveis. 
Os operadores aritméticos implementam as operações básicas (adição, subtração, divisão e multiplica-
ção) e algumas operações mais avançadas da Matemática (como logaritmo, raiz quadrada, seno, cosseno 
etc.). A variável que vai receber o resultado de uma operação aritmética tem que ser de um tipo numéri-
co compatível, capaz de armazenar o valor resultante, senão poderá ocorrer uma conversão automática 
com resultados muitas vezes indesejados ou mesmo imprevisíveis.
Saiba maisSaiba mais
•	Os operadores aritméticos básicos são:
•	+ (adição);
•	- (subtração);
•	* (multiplicação);
•	/ (divisão real);
•	++ (adiciona 1);
•	-- (subtrai 1). 
•	Alguns operadores aritméticos mais avançados são:
•	% (resto da divisão inteira);
•	/ (quociente da divisão inteira);
•	sqrt( ) (raiz quadrada);
•	abs( ) (valor absoluto).
Exemplos de expressões aritméticas válidas:
resto = 10 % 3;
quociente = 10 / 3;
salario = ((totaldehoras*32.50)+102.00) - descontoinss;
valoremdolares = salario / 1.85; 
impostoderenda = salario * (0.20); 
nome = nome + “da silva”;
contador = contador +1;
++contador;
--contador;
raiz = sqrt(numero); 
Algoritmos e Linguagem de Programação
Unisa | Educação a Distância | www.unisa.br
25
Exemplos de expressões aritméticas INVÁLIDAS:
resto = 10.0 % 3;
(o operador % só pode envolver números inteiros)
valoremdolares = salario / 1,85;
(não existe vírgula decimal, o separador é sempre o ponto decimal) 
salario = totaldehoras *+ 32.50;
(os operadores * e + são diádicos, envolvem sempre dois operadores, portanto não podem ser 
utilizados juntos)
nome = nome * 3;
(em variáveis do tipo caractere só pode ser feita adição ou subtração de caracteres)
contador = *1;
(o operador * é diádico, tem que envolver dois operandos)
2.5 Operadores Lógicos 
Os operadores lógicos permitem que os três principais operadores da Álgebra de Boole possam ser 
utilizados num programa: E, OU e NÃO. O estado dos operandos e o resultado de uma operação lógica 
são sempre FALSOS (avaliados como zero) ou VERDADEIROS (avaliados como diferentes de zero). 
Saiba maisSaiba mais
•	Os operadores lógicos são:
•	e (conjunção);
•	ou (disjunção);
•	! (negação).
•	O operador binário “e” envolve sempre dois operandos e o resultado é VERDADEIRO somente quando ambos os 
operandos forem VERDADEIROS, ou seja, basta que um operando seja FALSO para que o resultado seja FALSO.
•	O operador binário “ou” envolve sempre dois operandos e o resultado é FALSO somente quando ambos os operan-
dos forem FALSOS, ou seja, basta que um operando seja VERDADEIRO para que o resultado seja VERDADEIRO.
•	O operador unário “!” muda o estado do operando de FALSO para VERDADEIRO ou de VERDADEIRO para FALSO.
Caro(a) aluno(a), aqui cabe uma explicação um pouco mais detalhada para melhorar o entendi-
mento dos operadores lógicos E, OU e ! (não):
ƒƒ uma variável lógica é aquela que pode assumir apenas os valores VERDADEIRO ou FALSO;
ƒƒ na prática, as variáveis lógicas são utilizadas para descrever o funcionamento de um sistema, 
como um circuito formadopor uma bateria e uma lâmpada: 
Elisamara de Oliveira
Unisa | Educação a Distância | www.unisa.br
26
ƒƒ a representação dos níveis lógicos (1=verdadeiro e 0=falso) pode ser melhor entendida através 
de chaves que representam um circuito. Se a chave está fechada (valor 1 ou valor VERDADEI-
RO), a corrente pode passar, o que pode permitir que a lâmpada se acenda. Se a chave está 
aberta (valor 0 ou valor FALSO), a corrente não pode passar, o que pode impedir que a lâmpada 
se acenda;
ƒƒ uma função “E” resulta em 1=VERDADEIRO se, e somente se, todas as variáveis lógicas de en-
trada tiverem valor 1=VERDADEIRO. Em outras palavras, a lâmpada do circuito só acende se 
ambas as chaves estiverem fechadas, o que caracteriza um circuito com chaves em sequência, 
como o mostrado a seguir (na função “E”, somente se ambas as entradas forem verdadeiras a 
expressão é avaliada como verdadeira);
Algoritmos e Linguagem de Programação
Unisa | Educação a Distância | www.unisa.br
27
ƒƒ uma função “OU” resulta em 1=VERDADEIRO se, pelo menos, uma das variáveis lógicas de en-
trada tiver valor 1=VERDADEIRO. Em outras palavras, a lâmpada acende se uma das chaves 
estiver fechada ou quando as duas estiverem fechadas (forem verdadeiras), o que caracteriza 
um circuito com chaves em paralelo, como o mostrado a seguir (na função “OU”, basta que uma 
entrada seja verdadeira para a expressão ser avaliada como verdadeira);
ƒƒ uma função “!” (não) é uma operação de inversão. Ela converte o estado ou valor de uma variá-
vel lógica em seu inverso lógico: de VERDADEIRO para FALSO e de FALSO para VERDADEIRO. 
No caso do circuito, funciona assim: se a chave está aberta, ela se fecha e acende a luz, e, se está 
fechada, ela se abre e apaga a luz.
Exemplos de expressões lógicas válidas:
se (altura > 1.80 e idade < 21 e escolaridade >= 2)
se (idade >= 13 e idade <=20)
se ((media >= 7.0 e faltas <= 18) ou foiDispensado == 1)
se !( numero % 2 == 0)
Elisamara de Oliveira
Unisa | Educação a Distância | www.unisa.br
28
Exemplos de expressões lógicas INVÁLIDAS:
se (altura > 1.80 e ou idade < 21)
(os operadores “e” e “ou” são binários, envolvem sempre 2 operandos, portanto não podem ser 
utilizados juntos)
se (idade >=13 e <= 20) 
(a variável idade deveria ser repetida para obter o resultado lógico da comparação)
2.6 Operadores Relacionais
Os operadores relacionais permitem a comparação entre conteúdos de variáveis ou de valores e 
resultam sempre num resultado FALSO (avaliado como zero) ou VERDADEIRO (avaliado como diferente 
de zero). 
Saiba maisSaiba mais
•	Os operadores relacionais são:
•	> (maior que);
•	>= (maior ou igual a);
•	< (menor que);
•	<= (menor ou igual a);
•	== (igual a);
•	!= (diferente de).
Importante: o sinal “=” corresponde ao comando de atribuição e o sinal “==” significa comparação!
Exemplos de expressões relacionais válidas:
se (resposta == ‘S’)
se (resposta == ‘S’ ou resposta == ‘s’)
se (resposta != ‘S’ e resposta != ‘s’)
se (sexo == ‘F’ e altura <= 1.50)
Exemplos de expressões relacionais INVÁLIDAS:
se (resposta ! = ‘S’) 
(o símbolo do operador “diferente” está errado: não pode haver espaço em branco entre o “!” e 
o “=“)
se (altura < = 1.50) 
(o símbolo do operador “menor que” está errado: não pode haver espaço em branco entre o “<“ 
e o “=“)
Algoritmos e Linguagem de Programação
Unisa | Educação a Distância | www.unisa.br
29
 se (resposta = ‘S’)
(o problema aqui é o uso do símbolo “=”, que é do comando de atribuição, e não “==” que é a 
igualdade; na verdade, o comando não está errado, mas está sendo feita uma atribuição e não 
uma comparação. Portanto, muito cuidado!) 
2.7 Comando Condicional
O comando condicional permite que se tomem 2 caminhos diferentes e mutuamente exclusivos a 
partir da avaliação de uma condição. Se a condição é avaliada como verdadeira, um caminho é seguido; 
se é avaliada como falsa, outro caminho é escolhido, nunca ambos! 
A associação do comando condicional com fatos rotineiros é imediata: “se estiver chovendo eu vou 
de carro, senão eu vou de bicicleta”; nesse exemplo, a pessoa avalia a condição do tempo antes de decidir 
se sairá de carro ou de bicicleta e não há possibilidade de ela sair com ambos os meios de transporte!
AtençãoAtenção
•	A sintaxe do comando condicional é: 
se (<condição>) 
{ 
 <bloco de comandos 1>
}
senão 
{
 <bloco de comandos 2>
}
 
•	A semântica (como funciona) do comando condicional é:
•	a <condição> é avaliada como VERDADEIRA (valor diferente de zero) ou FALSA (valor igual a zero);
•	se a <condição> for VERDADEIRA, o <bloco de comandos 1> é executado e o comando condicional é finalizado;
•	se a <condição> for FALSA, o <bloco de comandos 2> é executado e o comando condicional é finalizado.
•	 “senão” é cláusula do comando “se”, ou seja, não é comando, apenas faz parte do comando “se”. 
•	A cláusula “senão” pode não existir num comando “se”. Nesse caso, (quando não existe a cláusula “senão”), quando 
a <condição> é avaliada como FALSA, nenhum comando é executado e o comando “se” é finalizado.
•	Os delimitadores de início { e de fim } são obrigatórios quando existe mais de um comando no <bloco de 
comandos 1> ou mais de um comando no <bloco de comandos 2>. Quando existir apenas um comando, os 
delimitadores ficam opcionais.
Elisamara de Oliveira
Unisa | Educação a Distância | www.unisa.br
30
Exemplos de comandos condicionais VÁLIDOS:
se (media >= 7.0)
aprovado = 1;
 
se (media >= 7.0)
{ aprovado = 1;
}
 
se (media >= 7.0)
{ aprovado = 1;
++contadoraprovados;
}
 
se (media >= 7.0)
aprovado = 1;
senão 
aprovado = 0;
 
se (media >= 7.0)
{ aprovado = 1;
++contadoraprovados;
}
senão 
aprovado = 0;
 
se (media >= 7.0 e faltas <= 9)
{ aprovado = 1;
++contadoraprovados;
}
senão
{ aprovado = 0;
++contadorreprovados;
}
 
Exemplos de comandos condicionais INVÁLIDOS:
 
se media >= 7.0
aprovado = 1; (faltou colocar parênteses na condição)
 
se (media >= 7.0)
{ aprovado = 1;
++contadoraprovados; 
 
 (faltou colocar o delimitador de fim { no final do comando ) 
 
Algoritmos e Linguagem de Programação
Unisa | Educação a Distância | www.unisa.br
31
se (media >= 7.0)
aprovado = 1
senão 
aprovado = 0;
(faltou ; depois do comando aprovado = 1)
 
se (media >= 7.0)
{ aprovado = 1;
++contadoraprovados;
} 
senão 
aprovado = 0
(novamente faltou ; após o comando aprovado = 0)
 
se (media >= 7.0 e faltas <= 9)
{ aprovado = 1;
++contadoraprovados;
}
senão
aprovado = 0;
++contadorreprovados;
}
(faltou o delimitador { após o “senão”)
 
se (media >= 7.0)
aprovado = 1;
++contadoraprovados;
senão 
aprovado = 0 
(faltaram os delimitadores { } após a condição do comando se caso verdadeiro (antes do senão))
2.8 Comando de Repetição
O comando de repetição permite que um comando ou um bloco de comandos seja executado 
diversas vezes. O número de vezes é determinado por uma condição que é constantemente avaliada. 
Enquanto a condição for avaliada como verdadeira (ou diferente de zero), o comando ou bloco de co-
mandos é executado repetidamente; quando a condição fica falsa, o comando de repetição para. 
A associação do comando de repetição com fatos rotineiros é possível: “enquanto o número da casa 
for menor que o procurado, continue subindo a rua e verificando se é a casa procurada”; nesse exemplo, a 
pessoa avalia a condição, que é a verificação do número desejado entre diversas casas de uma rua, por 
exemplo. Essa avaliação continua até que a casa procurada seja encontrada ou que se encontre uma casa 
cujo número seja superior ao procurado, supondo que anumeração esteja em ordem crescente.
Elisamara de Oliveira
Unisa | Educação a Distância | www.unisa.br
32
AtençãoAtenção
•	A sintaxe do comando de repetição é: 
 enquanto (condição) 
 { 
 <bloco de comandos>
 }
 
•	A semântica (como funciona) do comando de repetição é:
•	a condição é avaliada como VERDADEIRA (diferente de zero) ou FALSA (igual a zero);
•	se a condição for VERDADEIRA, o <bloco de comandos> é executado e, ao chegar ao delimitador de fim } ou final 
do comando, automaticamente se retorna à avaliação da condição;
•	se a condição for FALSA, o comando de repetição é finalizado.
•	 Entre os comandos do <bloco de comandos> é ESSENCIAL que exista um comando que altere a <condição> que 
é constantemente avaliada, pois, caso contrário, o comando “enquanto” NUNCA TERMINARÁ! 
•	 Os delimitadores { e } são obrigatórios quando existe mais de um comando no <bloco de comandos>. Quando 
existir apenas um comando, os delimitadores ficam opcionais e o “;” funcionará como delimitador de fim, 
indicando o final do comando “enquanto”.
Exemplos de comandos de repetição válidos:
enquanto (contador < 3) 
++contador;
 
numero = 1;
enquanto (numero <= 50) 
{ se (numero % 2 == 0)
 ++contapar;
 senão 
 ++contaimpar;
 
 ++numero;
}
Exemplos de comandos de repetição INVÁLIDOS:
enquanto contador <= 10
++contador; 
(faltaram parênteses na condição)
 
numero = 1;
enquanto (numero <= 50) 
{ se (numero % 2 == 0)
++contapar;
senão 
++contaimpar;
 
++numero;
 (faltou colocar o delimitador fim } após o último comando) 
Algoritmos e Linguagem de Programação
Unisa | Educação a Distância | www.unisa.br
33
 
numero = 1;
enquanto (numero <= 50) 
se (numero % 2 == 0)
++contapar;
senão 
++contaimpar;
 
++numero;
(como não existem os delimitadores de 
início e fim { }, somente o comando “se” faz parte do comando “enquanto” e, como o 
comando “se” não altera a variável numero, o comando “enquanto” nunca vai pa-
rar!)
 
numero = 1;
enquanto (numero <= 50); 
{ se (numero % 2 == 0)
++contapar;
senão 
++contaimpar;
 
++numero;
}
 (como foi colocado ; após a condição, o comando “enquanto” foi finalizado; a va-
riável numero não será alterada e o comando “enquanto” nunca vai parar!)
2.9 Comandos de Entrada e Saída
O comando de entrada permite que o usuário possa fornecer valores ao programa, através do te-
clado, que serão armazenados nas variáveis. O comando de saída permite que informações e valores de 
variáveis possam ser enviados ao usuário pela tela do monitor. 
É dessa forma que se consegue estabelecer um diálogo com o usuário. Se o programa deseja saber 
o nome do usuário, por exemplo, usa-se o comando de saída para fazer a pergunta “qual é o seu nome?” e 
usa-se o comando de entrada para obter a resposta e armazená-la numa variável. 
Elisamara de Oliveira
Unisa | Educação a Distância | www.unisa.br
34
AtençãoAtenção
•	A sintaxe do comando de entrada é: 
leia(“%letra”, [&] variável); 
em que:
“%letra” representa os especificadores de formato e depende do tipo associado à variável:
•	“%d” ou “%i” para variáveis do tipo inteiro (integer);
•	“%f” para variáveis do tipo real (float);
•	“%c” para variáveis do tipo caractere (único) (character);
•	“%s” para variáveis do tipo caractere (cadeia ou string);
•	O símbolo & deve ser utilizado apenas para os tipos numéricos, ou seja, para variáveis declaradas como inteiras ou 
reais.
•	A semântica (como funciona) do comando de entrada é:
•	a variável tem que ter sido previamente declarada; 
•	o usuário vai utilizar o teclado para fornecer o dado e, depois que ele teclar <ENTER>, tudo o que ele tiver digi-
tado será armazenado na variável automaticamente. 
•	Recomenda-se utilizar o comando “leia” para ler uma só <variável> de cada vez.
A tabela a seguir mostra um exemplo de declaração de variáveis de tipos básicos e a forma correta 
de leitura.
Declaração Leitura Exemplos de conteúdos
inteiro numero; leia(“%i”, &numero);
numero = -5;
numero = 2002;
real valor; leia(“%f”, &valor);
valor = -5.867;
valor = 2002.50;
caractere ch; leia(“%c”, ch);
ch = ‘5’;
ch = ‘s’;
ch = ‘#’;
caractere nome[20]; leia(“%s”, nome);
nome = “Maria”;
nome = “fim”;
Observe, na tabela, a diferença entre a declaração, a leitura e a atribuição de valores a um caractere 
único (%c) e a uma cadeia de caracteres (%s). Um único caractere vem entre apóstrofos (‘ ’) e uma cadeia 
de caracteres entre aspas (“ “)!
Algoritmos e Linguagem de Programação
Unisa | Educação a Distância | www.unisa.br
35
AtençãoAtenção
•	A sintaxe do comando de saída é: 
 
imprima(“ frase e %letra ” [, lista de variáveis] ); 
 
•	Entre aspas, podem ser escritas frases formadas por palavras intercaladas pelos especificadores de formato %s, %c, 
%i, %d ou %f, descritos no comando “leia”. Para cada especificador utilizado, a variável do tipo correspondente deve 
constar da lista de variáveis.
•	A lista de variáveis é opcional; deve existir somente quando um especificador de formato é colocado na frase entre 
aspas e, nesse caso, deve haver uma vírgula separando a frase da lista de variáveis e vírgulas separando as variáveis 
da lista.
•	A semântica (como funciona) do comando de saída é:
•	pode ser impressa qualquer frase e qualquer variável dentro de um comando “imprima”, desde que a frase esteja 
entre aspas e as variáveis estejam devidamente listadas após a vírgula que separa a frase da lista de variáveis;
•	a frase entre aspas é copiada integralmente para a tela e os especificadores de formato são substituídos pelas 
variáveis da lista de variáveis; 
•	quando existe uma variável, o seu conteúdo é copiado para a tela;
•	a ordem em que as palavras da frase e as variáveis aparecem no comando “imprima” é mantida quando é im-
pressa na tela. 
Exemplos de comandos de entrada e saída válidos:
imprima (“Qual é o seu nome? “);
leia(“%s”,nome);
 
imprima (“Qual é a sua idade? “);
leia (“%i”,&idade);
 
imprima (“Qual é a sua altura? “);
leia (“%f”,&altura);
 
imprima (“Qual é o seu sexo? (F/M) “);
leia (“%c”,sexo);
 
imprima (“O seu nome é: %s e você tem %i anos “,nome, idade);
 
imprima (“Você foi aprovado no curso com média= %f”, Media);
Exemplos de comandos de entrada e saída INVÁLIDOS:
imprima (“Qual é o seu nome? );
(faltaram aspas após a interrogação para delimitar a frase a ser impressa)
 
Elisamara de Oliveira
Unisa | Educação a Distância | www.unisa.br
36
imprima (“Qual é a sua idade? “);
leia (“%i”,idade);
(faltou o & antes do identificador idade, pois o tipo é numérico: %i)
 
imprima (“A sua idade é %i “ idade);
(faltou uma vírgula entre a frase entre aspas e a variável idade) 
 
imprima (“Você foi aprovado no curso com média= “, media);
(faltou o especificador de formato da variável Media (%f) após o = na frase entre aspas)
 
imprima (“Qual é o seu nome? “);
leia (“%s”,&nome);
(não pode haver & na leituras de variáveis do tipo caractere (%c e %s) )
Saiba maisSaiba mais
Explicação adicional – Passo a passo do comando de impressão:
imprima (frase variável1 variável2 variável3); 
(entre a frase e a variável e entre as variáveis deve haver uma vírgula separando-as).
imprima (frase , variável1, variável2, variável3); 
(a frase deve vir entre aspas).
imprima (“frase ” , variável1, variável2, variável3); 
(dentro da frase, deve vir um formato para cada variável, compatível com o seu tipo bási-
co).
imprima (“frase %s %i %f ”,variável1,variável2,variável3);
Exemplo:
imprima (“Vc se chama %s, tem %i anos e %f m de altura ”, nome, idade, altura); 
Algoritmos e Linguagem de Programação
Unisa | Educação a Distância | www.unisa.br
37
Todos os comandos do PortuCêsão separados por ponto e vírgula. 
2.10 Separador de Comandos 
2.11 Comentários
AtençãoAtenção
•	O separador de comandos é: ;
Exemplos de erro na separação de comandos:
se (resposta != ‘s’); 
{ <comandos> 
}
(o ; depois da condição finaliza o comando “se”)
enquanto (contador < 5) ;
{ <comandos> 
}
(o ; depois da condição do comando “enquanto” coloca o programa em loop infinito!) 
Os comentários não pertencem às instruções dos algoritmos, mas são úteis para que o programa-
dor explique o que está sendo feito. 
Saiba maisSaiba mais
•	Os comentários podem vir delimitados entre
 /* */
Ou podem ser comentários de linha
 //
Exemplos de comentários:
/* Este trecho calcula a media de notas */
desc = preco*0.15; // calcula desconto de 15%
 
Elisamara de Oliveira
Unisa | Educação a Distância | www.unisa.br
38
Bloco de programa é o nome que se dá à estrutura de um programa escrito numa determinada 
linguagem. O bloco de programa em PortuCê pode ser visto a seguir. 
2.12 Bloco de Programa
Exemplos de programas escritos em PortuCê válidos:
/* sexo.c: le o nome e o sexo de uma pessoa e imprime uma frase
 dizendo se é masculino, feminino ou invalido */
caractere nome[20], sexo;
principal ( )
{ imprima (“Qual eh o seu nome? “);
leia(“%s”,nome);
imprima (“Qual eh o seu sexo? (f/m) “);
leia (“%c”,sexo);
se (sexo == ‘f’ ou sexo == ‘F’)
imprima (“%s voce eh do sexo feminino. “,nome);
senão se (sexo == ‘m’ ou sexo == ‘M’)
imprima (“%s voce eh do sexo masculino. “,nome);
senão imprima (“Voce digitou um sexo invalido “); 
imprima(“Fim do programa.”);
}
Saiba maisSaiba mais
 O Bloco de Programa em PortuCê tem a forma: 
 /* comentários */
 
 <declaração de variáveis>;
 principal()
 {
 <bloco de comandos>;
 }
 
•	É desejável que todo algoritmo escrito em PortuCê comecer com um comentário dizendo o que o programa faz, 
embora comentários sejam opcionais. 
•	Em seguida, devem ser declaradas todas as variáveis que serão utilizadas no <bloco de comandos>. 
•	Após a declaração das variáveis, deve-se escrever a palavra principal( ), que delimita a seção em que os comandos 
podem ser utilizados.
•	O <bloco de comandos> pode conter todos os comandos válidos em PortuCê, separados por ponto e vírgula, e estes 
devem estar contidos entre os delimitadores { e }. Nenhum comando pode ser usado fora dessa seção. 
•	É importante notar que letras maiúsculas e minúsculas alteram os identificadores e as palavras reservadas do PortuCê.
Algoritmos e Linguagem de Programação
Unisa | Educação a Distância | www.unisa.br
39
/* nota.c: le a nota de um aluno e verifica se ele foi aprovado ou repro-
vado */
real nota;
 
principal()
{ imprima (“Digite sua nota final: “);
leia(“%f”,&nota);
se (nota >= 6.0)
 imprima (“Voce foi aprovado! “);
senão
 imprima (“Voce foi reprovado. “);
 
imprima(“Fim do programa.”);
}
/* idade.c: le o ano atual e o ano de nascimento de uma pessoa 
e imprime uma frase dizendo qual eh a idade da pessoa */
inteiro anoatual, anonasc, idade;
 
principal()
{ imprima (“Qual eh o ano atual? “);
leia(“%i”,&anoatual);
imprima (“Qual eh o seu ano de nascimento? “);
leia (“%i”,&anonasc);
idade = anoatual – anonasc;
imprima (“Voce fez ou fara %i anos “, idade);
 
imprima(“Fim do programa.”);
}
/* parimpar.c: le um numero e verifica se ele eh par ou impar */
inteiro n;
 
principal()
{ imprima (“Digite um numero inteiro: “);
leia(“%i”,&n);
se (n % 2 == 0)
 imprima (“O numero %i eh par “, n);
senão
 imprima (“O numero %i eh impar “, n);
 
imprima(“ Fim do programa.”);
}
Elisamara de Oliveira
Unisa | Educação a Distância | www.unisa.br
40
Exemplos de programas escritos em PortuCê INVÁLIDOS:
caractere sexo, caractere[20];
principal ( )
{ imprima (“Qual eh o seu nome? “);
leia(“%s”,caractere);
imprima (“Qual eh o seu sexo? (F/M) “);
leia (“%c”,sexo);
se (sexo == ‘F’)
imprima (“%s voce eh do sexo feminino. “,caractere);
senão 
imprima (“%s você eh do sexo masculino. “,caractere);
}
 (a variável caractere tem o mesmo nome da palavra reservada caractere)
 
real nota;
{ imprima (“Digite sua nota final: “);
leia(“%f”,&nota);
se (nota >= 6.0)
 imprima (“Voce foi aprovado! “);
senão
 imprima (“Voce foi reprovado... “);
 
imprima(“Fim do programa.”);
}
 (faltou a palavra principal( ) para dar início à seção de comandos)
 
real nota;
nota = 7.5; 
principal()
{ imprima (“Digite sua nota final: “);
 leia(“%f”,&nota);
se (nota >= 6.0)
 imprima (“Voce foi aprovado! “);
senão
 imprima (“Voce foi reprovado... “);
 
imprima(“ Fim do programa.”);
} 
 (há um comando de atribuição nota=7.5; na seção de declaração de variáveis: não pode!) 
 
Algoritmos e Linguagem de Programação
Unisa | Educação a Distância | www.unisa.br
41
inteiro anoatual, anonasc, idade;
 
principal()
imprima (“Qual eh o ano atual? “);
leia(“%i”,&anoatual);
imprima (“Qual eh o seu ano de nascimento? “);
leia (“%i”,&anonasc);
idade = anoatual – anonasc;
imprima (“Voce fez ou fara %i anos “, idade);
 
imprima(“Fim do programa.”);
}
 (faltou o delimitador { para iniciar a seção de comandos do programa)
 
inteiro N;
 
principal()
{ imprima (“Digite um numero inteiro: “);
 leia(“%i”,&n);
se (n % 2 == 0)
 imprima (“O numero %i eh par “, n);
senão
 imprima (“O numero %i eh impar “, n);
 
imprima(“ Fim do programa.”);
}
 
(não foi declarada a variável n ou foi declarada errada (N maiúsculo é diferente de n minúsculo))
2.13 Resumo do Capítulo
Caro(a) aluno(a), este capítulo foi um convite a aprender PortuCê, que é a língua que os algorit-
mos (que são as bases dos programas de computador) falam! O PortuCê é, basicamente, uma tradução 
da linguagem C para Português. Assim, aprendendo bem o PortuCê, você já estará se preparando para 
aprender a própria linguagem C, de forma simples e fácil!
Unisa | Educação a Distância | www.unisa.br
43
1. Escreva um comando que leia um número inteiro.
2. Escreva comandos para pedir e ler um número inteiro.
3. Escreva comandos para pedir, ler e imprimir um número inteiro.
4. Repita o exercício 3 para um número real.
CONSTRUÇÃO DE ALGORITMOS 
EM PORTUCÊ: PRATICANDO OS 
COMANDOS E FAZENDO CÁLCULOS
3 
3.1 Declaração de Variáveis – Comandos “leia” e “imprima”
Saiba maisSaiba mais
Ao invés de usar %f para apresentar a altura, usamos %.2f
O que isso significa? Que nós queremos apresentar a altura com apenas 2 dígitos na parte decimal! Afinal, a forma tra-
dicional de se apresentar uma altura é com 2 dígitos apenas, como 1.75, 1.62, 1.88 etc., não é mesmo?
5. Declare as variáveis utilizadas nos exercícios de 1 a 4.
Elisamara de Oliveira
Unisa | Educação a Distância | www.unisa.br
44
6. Escreva comandos para pedir, ler e imprimir o nome e a idade de uma pessoa.
7. Escreva um comando para verificar se a idade lida no exercício 6 corresponde a um adulto 
(maior que 17 anos). Se for verdadeiro, imprimir uma frase dizendo que é um adulto.
8. Escreva um comando para verificar se a idade lida no exercício 6 corresponde a uma criança 
(menor que 13 anos). Se for, imprima uma frase dizendo que é uma criança.
9. Escreva um comando para verificar se a idade lida no exercício 6 corresponde a um adolescen-
te (entre 13 e 17 anos). Se for, imprima uma frase dizendo que é um adolescente.
10. Escreva um único comando capaz de classificar uma pessoa pela faixa etária e ainda verificar 
se a idade é válida.
3.2 Comando Condicional “se”
Algoritmos e Linguagem de ProgramaçãoUnisa | Educação a Distância | www.unisa.br
45
11. Transforme o exercício 6 num algoritmo, ou seja, construa o Bloco de Programa em PortuCê.
12. Escreva um algoritmo que leia o nome e a idade de uma pessoa e imprima uma frase dizendo 
se a pessoa é uma criança, um adolescente, um adulto ou se a idade é inválida.
3.3 Bloco de Programa
Elisamara de Oliveira
Unisa | Educação a Distância | www.unisa.br
46
13. Escreva um comando para somar dois números: n1 e n2. 
Observe que soma é a variável na qual o resultado da adição de n1 com n2 será armazenado. São 
usados apenas o comando de atribuição “=“ e o operador “+”.
14. Escreva comandos para subtrair e multiplicar dois números: n1 e n2. 
O raciocínio para subtrair e multiplicar dois números é o mesmo usado na adição.
15. Escreva um comando para dividir dois números: n1 por n2. 
Antes de dividir um número n1 (numerador) por um número n2 (denominador) é necessário que 
verifiquemos se o denominador é diferente de zero, pois não existe divisão por zero! O comando 
“divisao = n1 / n2;” é válido do ponto de vista sintático, mas em programação temos que pensar 
nos erros que porventura possam ocorrer quando da execução dos comandos.
Para evitarmos a divisão eventual por zero, usamos o comando “se”. Somente se n2 for diferente de 
zero é que a divisão será calculada; caso contrário, uma mensagem é impressa para comunicar ao 
usuário o motivo pelo qual o cálculo não foi efetuado. O resultado da divisão é um número real.
16. Escreva um comando para calcular o quadrado de um número inteiro n1 e também n1 elevado a 3. 
Com certeza, é muito mais fácil do que você pensava, não é? São pequenos truques da programa-
ção. Mas se quisermos calcular n1 elevado a 1000 ou n1 elevado a um número qualquer, teremos 
que escrever um pequeno trecho de algoritmo. Depois eu mostro como fazer.
3.4 Operações Básicas com Números
Algoritmos e Linguagem de Programação
Unisa | Educação a Distância | www.unisa.br
47
17. Escreva um comando para calcular a raiz quadrada de um número n1. 
Novamente, para evitarmos um erro tentando calcular a raiz de um número negativo, usamos o 
comando “se”. Observe que sqrt( ) é um operador aritmético cuja sintaxe é diferente dos outros vis-
tos nos exercícios anteriores. Esse tipo de operador, na verdade, é uma função que recebe n1 como 
parâmetro e devolve a sua raiz quadrada calculada. Existem muitas outras funções e elas serão 
apresentadas na medida em que se fizer necessária a sua utilização.
18. Escreva comandos para fornecer o quociente e o resto da divisão inteira de n1 por n2. 
No caso da divisão inteira de n1 (numerador) por um número n2 (denominador), também é neces-
sário que o denominador seja diferente de zero. 
Nesse caso, é importante você notar que ambos os números (n1 e n2) têm que ser inteiros para 
que os operadores “/” (quociente da divisão) e “%” (resto da divisão inteira) possam ser utilizados! 
Como você pode notar, não existe um operador específico para o quociente da divisão inteira; usa-
-se o “/” (que é da divisão real), mas, como n1 e n2 são inteiros, haverá uma conversão automática 
de tipos, com o truncamento da parte fracionária do resultado, o que nos fornece o quociente da 
divisão inteira. Isso é um trunfo do PortuCê: nunca se esqueça disso! 
Se n1 for 7 e n2 for 3, por exemplo, quais seriam os valores de quociente e resto? (7 dividido por 3 
dá 2 (quociente) e sobra 1 (resto), não é?)
Saiba maisSaiba mais
 Qual a diferença entre divisão real e divisão inteira?
3.5 este é o resultado da divisão real
7 / 2 = 3 (quociente da divisão inteira)
7 % 2 = 1 (resto da divisão inteira)
Elisamara de Oliveira
Unisa | Educação a Distância | www.unisa.br
48
19. Escreva um comando para calcular 10% de um número.
Em primeiro lugar, vamos esclarecer que NÃO EXISTE O OPERADOR “porcentagem”. Na verdade, 
“%” é o resto da divisão inteira. Portanto, o cálculo da porcentagem tem que ser feito pela ope-
ração equivalente: 10% = 10/100 = 0.10. A variável “porc” deve ser do tipo real. Não recomendo 
o uso de 10/100, pois 10/100 pode ser zero, com a conversão automática de tipos. Então, use 
sempre 0.10 no cálculo de 10%.
20. Suponha que um produto custe um determinado preço, mas, se pago à vista, o cliente ganha 
5% de desconto. Escreva comandos para calcular o valor do desconto e o valor final do produto. 
21. Escreva comandos para separar os dígitos de um número inteiro menor que 100 em dezena 
e unidade. 
Vamos entender, primeiramente, o que se quer: dado um número menor que 100, por exemplo, 
29, deseja-se obter o dígito 2 (dezena) separado do dígito 9 (unidade); no caso de um número de 
um só dígito, por exemplo, 3, o resultado seria 0 (dezena) e 3 (unidade). Bem, este é um problema 
muito comum na programação e muito fácil de ser resolvido também! Basta usar os operadores 
“/” e “%” com números inteiros. 
Vamos fazer um pequeno teste: 29 dividido por 10 dá 2 e sobra 9, certo? 2 é a dezena de 29 e coinci-
de com o quociente da divisão inteira; 9 é a unidade de 29 e coincide com o resto da divisão inteira 
por 10! No caso de n1 ser igual a 3, ficaria assim: 3 dividido por 10 dá 0 e sobra 3. Nesse caso, 0 é a 
dezena (“/”) e 3 é a unidade (“%”).
Um bom teste aqui seria você responder: como poderíamos separar os 3 dígitos de números entre 
100 e 999? 
Se não conseguir resolver, esta é uma boa pergunta para o fórum!
Algoritmos e Linguagem de Programação
Unisa | Educação a Distância | www.unisa.br
49
22. Suponha que, numa certa universidade, os alunos têm um número de 5 dígitos que os identi-
ficam. Desses 5 dígitos, os 2 primeiros indicam o ano em que o aluno entrou na universidade. 
Escreva comandos para separar os 2 primeiros dígitos de um número inteiro de 5 dígitos que 
representa a identificação do aluno.
Vamos entender o que se quer: dado um número de 5 dígitos, por exemplo, 99211, se deseja obter 
os 2 primeiros dígitos, no caso, 99 (que indicaria que o aluno entrou em 1999 na universidade). 
Mas e se o aluno entrou em 2000 ou 2009? O resultado teria que ser ano de entrada = 0. Vamos 
fazer, agora, os testes. Vejamos: n1 é 00211. 00211 dividido por 1000 dá ZERO (que é o quociente) 
e sobra 211. Pode parecer estranho, mas pense: quando se divide um número por 1000, o menor 
resto é zero e o maior resto pode ser 999. Como queremos apenas o quociente da divisão inteira, o 
resultado será “anoentrada = 0” (que, no caso, representaria 2000). Funciona!
Outro teste: n1 igual a 10231. 10231 dividido por 1000 dá 10 e sobra 231, certo? 10 é o quociente, 
o que resulta em “anoentrada= 10” (que seria 2010)! Funciona mesmo!
Faça outros testes e verifique que dá certo. E como o cálculo é simples, não?
 
3.5 Operações com Operadores Lógicos e Relacionais
23. Escreva um comando para verificar se um número é positivo ou negativo. 
Observe que 0 pode ser considerado um número positivo e todo número menor que 0 é negativo.
24. Escreva um comando para verificar se um número é par ou ímpar. 
Um número par é aquele que, dividido por 2, tem resto zero: 0, 2, 4, 6, 8, 10..., e um número ímpar é 
aquele que, dividido por 2, tem resto diferente de zero: 1, 3, 5, 7, 9...
Elisamara de Oliveira
Unisa | Educação a Distância | www.unisa.br
50
25. Escreva um comando para verificar se um número é maior que 100. 
26. Escreva um comando para verificar se um número está entre 10 e 100. 
 
Para se verificar se um número está entre dois limites, são necessárias duas comparações: uma 
para o limite inferior e outra para o limite superior, e essas comparações têm que estar ligadas 
pelo conectivo lógico “e”, quer dizer, somente quando as duas comparações forem verdadeiras, o 
número está dentro dos limites. Não é como na Matemática, que usamos uma expressão do tipo 
“10 ≤ n1 ≤ 100”!
27. Suponha que certo clube esportivo

Outros materiais