SlideShare uma empresa Scribd logo
1 de 168
Baixar para ler offline
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).....................................................................................................................71
5.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;
ƒƒ aordemdasaçõeséimportante:primeirodescasca-seabatata,pica-seabatata,paradepoisfritá-la...
Exemplos de algoritmos conhecidos:
ƒƒ Qual é o algoritmo que você descreve para vir estudar?
ƒƒ Qual é o algoritmo para se fazer uma feijoada?
ƒƒ Qual é o algoritmo para 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
Figura2–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 identificador em 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 formado por 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> forVERDADEIRA, 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 a numeraçã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 forVERDADEIRA, 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ção
Unisa | 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.	Escrevaumcomandoparacalcularoquadradodeumnúmerointeiron1etambémn1elevadoa3.
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 quer selecionar atletas para o time de basquete. As exi-
gências são: ter 1.85 m de altura ou mais, ter menos de 21 anos e ter, pelo menos, o primeiro
grau completo. Escreva um comando para verificar se um candidato pode ser ou não aprova-
do para o time de basquete. O grau de instrução é definido como:“0= sem instrução”,“1=pri-
meiro grau”,“2=segundo grau”,“3=superior”.
Observe que, ao se fazer a comparação da altura, não se faz referência à unidade de medida “me-
tros”, quer dizer, estaria errada uma comparação do tipo “altura >= 1.85 m”. O mesmo acontece
com a idade, em que os “anos” foram (e devem) ser omitidos.
Algoritmos e Linguagem de Programação
Unisa | Educação a Distância | www.unisa.br
51
28.	Suponha que o clube esportivo deseje, agora, formar um time masculino (sexo ==‘m’) e outro
feminino (sexo ==‘f’) e tenha mudado um pouco seus critérios. As exigências passaram a ser:
ter 1.85m de altura ou mais para os homens e 1.75 ou mais para as mulheres e ter menos de
21 anos. Escreva um comando para verificar se um candidato ou candidata pode ser ou não
aprovado(a) para o time de basquete.
Observe que surgiu o conectivo “ou” ligando as comparações de altura para os sexos diferentes,
que continuaram a ser ligados pelo conectivo “e” na comparação de idade! Pense por que é assim.
3.6 Resumo do Capítulo
3.7 Atividades Propostas
Caro(a) aluno(a), este capítulo foi uma excelente oportunidade para exercitarmos a linguagem de
programação.
Agora é hora de você praticar um pouco sozinho(a)! A minha forte recomendação é que você faça
os exercícios sozinho(a), consultando os exemplos anteriores para ajudá-lo(a). Somente depois da sua
tentativa, é que você deve conferir as respostas. Boa sorte!
1.	 Escreva um algoritmo que leia e imprima o nome e as duas notas de um aluno.
2.	 Escreva um comando que calcule a média das duas notas lidas no exercício 3.1.1.
3.	 Escreva um comando que verifique se a média calculada no exercício 3.1.2 é maior ou igual a
7.0; se for, imprima uma frase dizendo que o aluno foi aprovado, caso contrário, imprima uma
frase dizendo que foi reprovado.
4.	 Escreva um algoritmo que leia o nome e as duas notas de um aluno, calcule a média das notas
e imprima uma frase dizendo se ele foi aprovado (média maior ou igual a 7.0) ou reprovado.
Elisamara de Oliveira
Unisa | Educação a Distância | www.unisa.br
52
5.	 Considere o trecho de algoritmo em PortuCê:
se (B1)
C1;
senão se (B2)
se (B3)
C2;
senão
{ C3;
C4;
}
C5;
Em PortuCê, não existe uma variável do tipo “lógico” a qual se possa atribuir um valor “verda-
deiro”ou“falso”. No entanto, o PortuCê considera o valor 0 (zero) como sendo falso e qualquer
outro valor diferente de zero como sendo verdadeiro. Nos exercícios que se seguem, considere
que os valores de B1, B2 e B3 representam valores“verdadeiros”(diferentes de zero) ou“falsos”
(iguais a zero) e responda à pergunta:“quais comandos serão executados”.
a)	 Se B1= Verdadeiro B2 =Verdadeiro e B3=Falso?
b)	 Se B1=Falso B2= Verdadeiro e B3= Falso?
c)	 Se B1=Falso B2=Verdadeiro e B3=Verdadeiro?
d)	 Quais os valores de B1, B2 e B3 para que somente o comando C5 seja executado?
6.	 Dado um conjunto de respostas “sim” ou “não” de várias pessoas e seu sexo (F=feminino,
M=masculino), escreva comandos em PortuCê para calcular:
a)	 o número de mulheres que responderam sim;
b)	 o número de homens que responderam não;
c)	 o número de mulheres e homens que responderam não.
Algoritmos e Linguagem de Programação
Unisa | Educação a Distância | www.unisa.br
53
7.	 Observe o algoritmo a seguir. Qual o valor de L após a execução deste algoritmo?
inteiro A, B, C;
real X, Y;
inteiro L;
principal()
{ A = 0; /* falso */
B = 1; /* verdadeiro */
C = 0; /* falso */
X = 1.5;
Y = 3.2;
se (C ou (X+Y>5) ou não(A e B))
L = 0;
senão
L = 1;
}
8.	 Escreva trechos de algoritmo em PortuCê que ajudem o Instituto Brasileiro de Geografia e Es-
tatística (IBGE) a fazer o censo populacional de uma certa cidade. Sabendo-se que os seguin-
tes dados foram pedidos aos cidadãos: SEXO (‘H’= homem,‘M’= mulher) e RENDA (número de
salários-mínimos – sm), os trechos de algoritmo devem fornecer:
a)	 o total de homens;
b)	 o total de mulheres;
c)	 o total de pessoas da classe C (até 4 sm), da classe B (até 20 sm) e da classe A (acima de 20 sm).
9.	 Fornecidos os dados das candidatas a modelo: ALTURA, PESO e IDADE, escreva um trecho de
algoritmo para verificar se os dados se enquadram nos seguintes limites:
ALTURA: de 1.70 a 1.85 m
PESO: de 48.0 a 60.0 kg
IDADE: de 17 a 21 anos
Se os dados da candidata corresponderem a esses limites, deve ser impressa uma frase dizendo
que ela foi aprovada; caso contrário, que não foi aprovada.
10.	Modifique o exercício anterior para que uma frase seja impressa após a verificação de cada
quesito, dizendo se a candidata foi aprovada ou não em cada um deles e uma frase final dizen-
do se foi aprovada ou não como modelo.
Unisa | Educação a Distância | www.unisa.br
55
Neste capítulo, caro(a) aluno(a), você aprenderá uma metodologia que facilitará o processo de de-
senvolvimento de soluções algorítmicas para os problemas que serão propostos para você resolver. A
metodologia é composta de uma sequência de passos, cujo principal objetivo é ajudá-lo(la) a resolver
problemas dividindo-os por partes, diminuindo, assim, a sua complexidade. Como ficará bem claro logo
adiante, resolvendo cada parte do problema por vez, consegue-se chegar a soluções completas e com-
plexas a partir de soluções simples, que já foram, muitas vezes, encontradas para diversos outros proble-
mas semelhantes.
Você conhecerá os passos da metodologia e vários exemplos práticos serão fornecidos de maneira
a familiarizá-lo(la) com o método. É importante ressaltar que a metodologia é um processo dinâmico.
Você pode estar num passo mais adiante e identificar uma variável auxiliar e voltar aos passos anteriores
e alterá-los, por exemplo. Portanto, não se detenha aos detalhes, pelo contrário, sinta-se livre para criar
suas soluções. O método pretende ajudá-lo(la) e não engessá-lo(LA)! Vamos em frente!
METODOLOGIA PARA A CONSTRUÇÃO
DE ALGORITMOS4
Passo 1: Ler e entender o problema
É importante ler e reler, pelo menos 3 vezes, o problema até que ele seja completamente compreen-
dido. Não adianta querer buscar a solução de um problema que não esteja suficientemente esclarecido!
Passo 2: Listar todos os dados de entrada do problema
Um dado de entrada é aquele que será fornecido pelo usuário, ou seja, o dado que será lido pelo
programa.
Passo 3: Listar todos os dados de saída do problema
	 Um dado de saída é algo que será produzido ou calculado pelo programa; tudo aquilo que deve
ser apenas impresso não deve ser considerado um dado de saída.
4.1 Os Passos da Metodologia
Elisamara de Oliveira
Unisa | Educação a Distância | www.unisa.br
56
Passo 4: Listar todas as variáveis auxiliares do programa
Uma variável auxiliar é identificada como aquela que é necessária para o cálculo de alguma variável
de saída e não é variável de entrada. Por exemplo, num problema em que vários números serão lidos e
sua média deve ser calculada, o número é uma variável de entrada e a média é uma variável de saída,
mas como, para calcular a média, é necessário somar os números e dividir a soma pela quantidade de
números lidos, a soma e a quantidade de números são variáveis auxiliares do programa.
Assim, para identificar as variáveis auxiliares, basta analisar cada uma das saídas e verificar se, dadas
as entradas, há necessidade de mais alguma variável para facilitar o seu cálculo.
Passo 5: Declarar todas as variáveis do programa
Cada dado de entrada, cada dado de saída e cada variável auxiliar“geram”uma variável. As variáveis
do programa deverão ser uma para cada dado de entrada, uma para cada dado de saída e uma para cada
variável auxiliar.
É extremamente importante que o programador escolha nomes de variáveis significativos, que
possam exprimir a função da variável. Por exemplo, uma variável que receberá a idade de uma pessoa
não deveria se chamar“x”, nem mesmo“i”seria bom, o ideal seria“idade”.
Passo 6: Inicializar as variáveis do programa
Há um conjunto de pequenas regras que pode nos ajudar a encontrar os valores iniciais de cada
variável do programa, apesar de que nem todas as variáveis precisam ter valores iniciais:
ƒƒ toda variável de entrada é inicializada com o comando “leia”;
ƒƒ todo contador e todo somador devem ser inicializados com 0 ( zero);
ƒƒ todo produto deve ser inicializado com 1 (um).
Passo 7: Escrever o código para calcular cada uma das saídas do programa
Os principais problemas a serem solucionados, na maior parte das vezes, resumem-se no cálculo
das saídas do programa. Portanto, neste passo, cada uma das saídas deve ser analisada individualmente
e sua solução encontrada separadamente.
Passo 8: Imprimir os resultados do programa
Aqui, só devem ser impressos os resultados pedidos na especificação do problema.
Passo 9: Montar o algoritmo unindo os resultados dos passos 5 a 8
Os passos 5 a 8 têm a solução do problema. A montagem do algoritmo/programa pode seguir um
esquema básico, mas vai depender muito da lógica de cada problema. Portanto, o esquema a seguir
Algoritmos e Linguagem de Programação
Unisa | Educação a Distância | www.unisa.br
57
serve apenas de orientação. Cada problema deve, no entanto, ser analisado logicamente para chegar ao
seu algoritmo.
Passo 10: Fazer o“teste de mesa”do programa a partir de diferentes valores iniciais
O “teste de mesa” consiste na execução de todas as instruções do programa a partir de conjuntos
de valores iniciais. Os valores iniciais devem ser escolhidos de maneira que as “condições de contorno”
do problema sejam verificadas. Por exemplo, num programa que trabalhe com flags, deve ser testada a
condição em que o valor do flag seja fornecido como dado inicial; num programa que só leia números
positivos, devem ser fornecidos números negativos e zero; entre outras situações possíveis.
4.2 Solução de Exercícios utilizando a Metodologia
4.3 Resumo do Capítulo
A estratégia que utilizaremos nesta seção é propor uma lista de exercícios e resolver alguns de-
les usando a metodologia, deixando outros para que você, utilizando soluções semelhantes, resolva-os
sozinho(a), ok? Então, vamos lá!
Neste capítulo, caro(a) aluno(a), você aprendeu uma metodologia que facilitará o processo de de-
senvolvimento de soluções algorítmicas para os problemas que serão propostos para você resolver. A
metodologia é composta de uma sequência de passos, cujo principal objetivo é ajudá-lo a resolver pro-
blemas dividindo-os por partes, diminuindo, assim, a sua complexidade. Como ficará bem claro logo
adiante, resolvendo cada parte do problema por vez, consegue-se chegar a soluções completas e com-
plexas a partir de soluções simples que já foram, muitas vezes, encontradas para diversos outros proble-
mas semelhantes.
Você conhecerá os passos da metodologia e vários exemplos práticos serão fornecidos de maneira
a familiarizá-lo com o método.
AtençãoAtenção
/* Nome do Programa e o que ele faz */
<passo 5 – declarar todas as variáveis do programa>
principal()
{ <passo 6 – inicializar as variáveis do programa >
<passo 7 – calcular cada uma das saídas do programa>
<passo 8 – imprimir os resultados do programa>
imprima(“Fim do programa”);
}
Elisamara de Oliveira
Unisa | Educação a Distância | www.unisa.br
58
1.	 Escreva um algoritmo em PortuCê para calcular e imprimir a área e o perímetro de uma sala
retangular, sendo que os comprimentos das paredes (comprimento e largura) são fornecidos
pelo usuário.
2.	 Escreva um algoritmo em PortuCê para calcular e imprimir a área de uma esfera. O raio da es-
fera será fornecido pelo usuário. Obs.: A = 3.14*R2
.
3.	 Escreva um algoritmo em PortuCê que calcule e imprima o valor em reais correspondente aos
dólares que um turista possui no cofre do hotel. O programa deve solicitar os seguintes dados:
quantidade de dólares guardada no cofre e cotação do dólar naquele dia.
4.	 Escreva um algoritmo em PortuCê que leia um número e informe se ele é par ou ímpar.
5.	 Escreva um algoritmo em PortuCê que leia 2 números e diga qual deles é o maior.
6.	 Escreva um algoritmo em PortuCê que calcule e imprima a quantidade de tijolos iguais neces-
sária para construir uma determinada parede. São dados de entrada do programa: dimensões
do tijolo (comprimento e largura) e dimensões da parede a ser construída (comprimento e
largura).
7.	 Escreva um algoritmo em PortuCê que calcule S, o alcance de um projétil, dados a velocidade
inicial v0 e o ângulo θ entre o cano do canhão e o solo. O valor de g corresponde à gravidade
que é de 9.8 m/s2
. A fórmula a ser utilizada é:
8.	 Escreva um algoritmo em PortuCê que calcule a área A de um triângulo pela fórmula de Herão,
lendo os valores de entrada s, que é o semiperímetro, e a, b e c, que são os lados do triângulo:
9.	 Escreva um algoritmo em PortuCê para calcular o valor do desconto, sendo que o preço do
produto é fornecido pelo usuário e o desconto é de 5%. Apresentar o preço do produto, o valor
do desconto e o preço final com o desconto.
4.4 Atividades Propostas
Algoritmos e Linguagem de Programação
Unisa | Educação a Distância | www.unisa.br
59
10.	Escreva um algoritmo em PortuCê para calcular e imprimir qual foi a porcentagem de desconto
dada em um determinado produto, sabendo-se o preço original do produto e o preço que foi
cobrado por ele depois do desconto serão fornecidos pelo usuário.
11.	Escreva um algoritmo em PortuCê que receba dois valores inteiros nas variáveis A e B. O progra-
ma deve trocar os valores entre as variáveis (ou seja, ao término do programa, a variável A deve
ter o valor inicial de B e vice-versa). Apresentar as duas variáveis no final.
12.	Escreva um algoritmo em PortuCê para calcular e imprimir o valor a ser pago pelo período de es-
tacionamento do automóvel. O usuário entra com os seguintes dados: hora e minuto de entra-
da, hora e minuto de saída. Sabe-se que esse estacionamento cobra R$ 10,00 por hora ou fração.
13.	Escreva um algoritmo em PortuCê que leia o valor de uma conta de luz e, caso o valor seja
maior que R$ 50,00, apresente a mensagem:“Você está gastando muito”. Caso contrário, exiba
a mensagem:“Seu gasto foi normal, parabéns”.
14.	Escreva um algoritmo em PortuCê que receba a leitura do termômetro. Caso a temperatura
esteja abaixo de 100 °C, apresentar a mensagem de que a temperatura está muito baixa. Caso
a temperatura esteja entre 100 e 200 °C, apresentar a mensagem de que a temperatura está
baixa. Caso a temperatura esteja acima de 200 °C e inferior a 500 °C, apresentar a mensagem de
que a temperatura está normal. Caso contrário, apresentar a mensagem de que a temperatura
está muito alta.
15.	Escreva um algoritmo em PortuCê que leia o valor do salário atual, calcule e imprima o valor
do novo salário de um funcionário. Considere que o funcionário deverá receber um reajuste de
15% caso seu salário seja menor que R$ 500.00. Se o salário for maior ou igual a 500, mas menor
ou igual a R$ 1000.00, o reajuste deve ser de 10%. Caso o salário seja maior que R$ 1000.00, o
reajuste deve ser de 5%.
16.	Escreva um algoritmo em PortuCê que determine quanto será gasto para encher o tanque de
um carro, sabendo-se que o preço da gasolina é R$ 2.60 e o preço do álcool é R$ 1.80. O usuário
fornecerá os seguintes dados: tipo de carro (as opções como tipo de carro são a letra“G”– gaso-
lina ou a letra“A”– álcool; rejeitar valores inválidos) e capacidade do tanque em litros.
Unisa | Educação a Distância | www.unisa.br
61
Neste capítulo, você, caro(a) aluno(a), poderá começar a traduzir seus primeiros algoritmos para a
linguagem de programação C. Isso o(a) capacitará a realizar as primeiras aulas práticas em laboratório.
Recomenda-se que você prepare em seu computador um ambiente adequado à programação em C e
comece a trabalhar sozinho(a), fazendo os programas da lista 4.1 como atividades extraclasse. O interes-
sante em se utilizar o PortuCê como pseudolinguagem é que ele segue quase totalmente as mesmas
regras da linguagem C. Assim, começar a programar em C será muito fácil, você verá!
A LINGUAGEM DE PROGRAMAÇÃO C5
5.1 Tipos Básicos e Declaração de Variáveis em C
Saiba maisSaiba mais
•	Um identificador em C é formado por caracteres alfanuméricos.
•	O primeiro caractere tem que ser _ ou 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 C (como main, if, else, int, char).
•	Na linguagem C, há 5 tipos básicos (int, float, double, char e void) e quatro modificadores de tipos (long, short, signed
e unsigned), o que amplia muito os tipos de variáveis, mas, neste curso, usaremos apenas 3 tipos básicos:
•	int;
•	float;
•	char.
•	O tipo de dados“double (%Lf)”corresponde ao float, mas com maior capacidade de armazenamento.
•	Para se declarar uma variável, escreve-se o nome de seu tipo, salta-se um espaço em branco, em seguida o nome do
seu identificador e ponto e vírgula 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.
•	Pode-se inicializar uma variável na sua declaração atribuindo-se a ela um valor inicial compatível com
seu tipo.
•	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.
Elisamara de Oliveira
Unisa | Educação a Distância | www.unisa.br
62
Exemplo de declaração de variáveis válida:
char nome[20], letra, zero=’0’;
float soma=0;
int n1, n2;
float raiz1, Total_dos_Salarios;
char nome_de_familia[30]=“Menezes”;
int idade, cont=0;
5.2OperadoresdeAtribuição,Aritméticos,RelacionaiseLógicos(Binários)emC
AtençãoAtenção
•	O operador de atribuição é: = .
•	Há os operadores de atribuição compostos:
•	+=
•	-=
•	*=
•	/=
•	Os operadores aritméticos básicos são:
•	+ (adição);
•	- (subtração);
•	* (multiplicação);
•	/ (quociente da 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).
•	Os operadores relacionais são:
•	> (maior que);
•	>= (maior ou igual a);
•	< (menor que);
•	<= (menor ou igual a);
•	== (igual a);
•	!= (diferente de).
•	Os operadores lógicos são:
•	&& (operador e – conjunção);
•	|| (operador ou – disjunção);
•	! (operador não – negação).
Apostila
Apostila
Apostila
Apostila
Apostila
Apostila
Apostila
Apostila
Apostila
Apostila
Apostila
Apostila
Apostila
Apostila
Apostila
Apostila
Apostila
Apostila
Apostila
Apostila
Apostila
Apostila
Apostila
Apostila
Apostila
Apostila
Apostila
Apostila
Apostila
Apostila
Apostila
Apostila
Apostila
Apostila
Apostila
Apostila
Apostila
Apostila
Apostila
Apostila
Apostila
Apostila
Apostila
Apostila
Apostila
Apostila
Apostila
Apostila
Apostila
Apostila
Apostila
Apostila
Apostila
Apostila
Apostila
Apostila
Apostila
Apostila
Apostila
Apostila
Apostila
Apostila
Apostila
Apostila
Apostila
Apostila
Apostila
Apostila
Apostila
Apostila
Apostila
Apostila
Apostila
Apostila
Apostila
Apostila
Apostila
Apostila
Apostila
Apostila
Apostila
Apostila
Apostila
Apostila
Apostila
Apostila
Apostila
Apostila
Apostila
Apostila
Apostila
Apostila
Apostila
Apostila
Apostila
Apostila
Apostila
Apostila
Apostila
Apostila
Apostila
Apostila
Apostila
Apostila
Apostila
Apostila
Apostila
Apostila
Apostila
Apostila
Apostila

Mais conteúdo relacionado

Mais procurados

Exemolo relatorio
Exemolo relatorioExemolo relatorio
Exemolo relatorio2011990
 
Manual Photoshop Cs4
Manual Photoshop Cs4Manual Photoshop Cs4
Manual Photoshop Cs4JNR
 
Aprenda a fazer temas wordpress
Aprenda a fazer temas wordpressAprenda a fazer temas wordpress
Aprenda a fazer temas wordpressRafael Stromdahl
 
Trabalho de Graduação - Desenvolvimento de Ferramenta Móvel de CRM Social
Trabalho de Graduação - Desenvolvimento de Ferramenta Móvel de CRM SocialTrabalho de Graduação - Desenvolvimento de Ferramenta Móvel de CRM Social
Trabalho de Graduação - Desenvolvimento de Ferramenta Móvel de CRM SocialJuliana Fideles
 
Programacao gtk
Programacao gtkProgramacao gtk
Programacao gtkTiago
 
Apostila contabilidade
Apostila contabilidadeApostila contabilidade
Apostila contabilidadeRogério Otoch
 
Apostila Ministerio da Fazenda Assistente Administrativo
Apostila Ministerio da Fazenda Assistente AdministrativoApostila Ministerio da Fazenda Assistente Administrativo
Apostila Ministerio da Fazenda Assistente AdministrativoDaniel Alex Xavier
 
Python gtk
Python gtkPython gtk
Python gtkTiago
 
NÚCLEO BÁSICO_LINGUAGEM, TRABALHO E TECNOLOGIA_VOLUME 02
NÚCLEO BÁSICO_LINGUAGEM, TRABALHO E TECNOLOGIA_VOLUME 02NÚCLEO BÁSICO_LINGUAGEM, TRABALHO E TECNOLOGIA_VOLUME 02
NÚCLEO BÁSICO_LINGUAGEM, TRABALHO E TECNOLOGIA_VOLUME 02André Camargo
 
Grafia Braille Para A LíNgua Portuguesa
Grafia Braille Para A LíNgua PortuguesaGrafia Braille Para A LíNgua Portuguesa
Grafia Braille Para A LíNgua Portuguesaasustecnologia
 
Csi 1105 pt gestão de projectos de informática
Csi 1105 pt gestão de projectos de informáticaCsi 1105 pt gestão de projectos de informática
Csi 1105 pt gestão de projectos de informáticaCrimildo Lourenco Moises
 
Monitoramento
MonitoramentoMonitoramento
MonitoramentoTiago
 
Gerencia de condominio
Gerencia de condominioGerencia de condominio
Gerencia de condominiovaldeirjs
 

Mais procurados (19)

Exemolo relatorio
Exemolo relatorioExemolo relatorio
Exemolo relatorio
 
Manual Photoshop Cs4
Manual Photoshop Cs4Manual Photoshop Cs4
Manual Photoshop Cs4
 
Aprenda a fazer temas wordpress
Aprenda a fazer temas wordpressAprenda a fazer temas wordpress
Aprenda a fazer temas wordpress
 
Apostila Linux Educacional
Apostila Linux EducacionalApostila Linux Educacional
Apostila Linux Educacional
 
Trabalho de Graduação - Desenvolvimento de Ferramenta Móvel de CRM Social
Trabalho de Graduação - Desenvolvimento de Ferramenta Móvel de CRM SocialTrabalho de Graduação - Desenvolvimento de Ferramenta Móvel de CRM Social
Trabalho de Graduação - Desenvolvimento de Ferramenta Móvel de CRM Social
 
Programacao gtk
Programacao gtkProgramacao gtk
Programacao gtk
 
Apostila contabilidade
Apostila contabilidadeApostila contabilidade
Apostila contabilidade
 
Apostila Ministerio da Fazenda Assistente Administrativo
Apostila Ministerio da Fazenda Assistente AdministrativoApostila Ministerio da Fazenda Assistente Administrativo
Apostila Ministerio da Fazenda Assistente Administrativo
 
Python gtk
Python gtkPython gtk
Python gtk
 
NÚCLEO BÁSICO_LINGUAGEM, TRABALHO E TECNOLOGIA_VOLUME 02
NÚCLEO BÁSICO_LINGUAGEM, TRABALHO E TECNOLOGIA_VOLUME 02NÚCLEO BÁSICO_LINGUAGEM, TRABALHO E TECNOLOGIA_VOLUME 02
NÚCLEO BÁSICO_LINGUAGEM, TRABALHO E TECNOLOGIA_VOLUME 02
 
Grafia Braille Para A LíNgua Portuguesa
Grafia Braille Para A LíNgua PortuguesaGrafia Braille Para A LíNgua Portuguesa
Grafia Braille Para A LíNgua Portuguesa
 
Relatório de fim de curso
Relatório de fim de cursoRelatório de fim de curso
Relatório de fim de curso
 
Taxonomias
TaxonomiasTaxonomias
Taxonomias
 
Ferm
FermFerm
Ferm
 
Csi 1105 pt gestão de projectos de informática
Csi 1105 pt gestão de projectos de informáticaCsi 1105 pt gestão de projectos de informática
Csi 1105 pt gestão de projectos de informática
 
Monitoramento
MonitoramentoMonitoramento
Monitoramento
 
Estrutura do tc ftec(2)
Estrutura do tc ftec(2)Estrutura do tc ftec(2)
Estrutura do tc ftec(2)
 
Lp conteúdo - prof - 1ºano
Lp   conteúdo - prof - 1ºanoLp   conteúdo - prof - 1ºano
Lp conteúdo - prof - 1ºano
 
Gerencia de condominio
Gerencia de condominioGerencia de condominio
Gerencia de condominio
 

Destaque

Ulus lg klima servisi 294 16 03
Ulus lg klima servisi 294 16 03Ulus lg klima servisi 294 16 03
Ulus lg klima servisi 294 16 03cuneyt452
 
Seyrantepe lg klima servisi 294 16 03
Seyrantepe lg klima servisi 294 16 03Seyrantepe lg klima servisi 294 16 03
Seyrantepe lg klima servisi 294 16 03cuneyt452
 
Guião para PasseAR é DescobrIR
Guião para PasseAR é DescobrIRGuião para PasseAR é DescobrIR
Guião para PasseAR é DescobrIRMarquês de Pombal
 
Istat, Aula Magna 13 settembre 2013 - L’economia non osservata nei conti nazi...
Istat, Aula Magna 13 settembre 2013 - L’economia non osservata nei conti nazi...Istat, Aula Magna 13 settembre 2013 - L’economia non osservata nei conti nazi...
Istat, Aula Magna 13 settembre 2013 - L’economia non osservata nei conti nazi...Istituto nazionale di statistica
 
Istat, Aula Magna 13 settembre 2016 "L'economia non osservata nei conti nazio...
Istat, Aula Magna 13 settembre 2016 "L'economia non osservata nei conti nazio...Istat, Aula Magna 13 settembre 2016 "L'economia non osservata nei conti nazio...
Istat, Aula Magna 13 settembre 2016 "L'economia non osservata nei conti nazio...Istituto nazionale di statistica
 

Destaque (12)

Pt lv
Pt lvPt lv
Pt lv
 
C.V._D.C.Kooy
C.V._D.C.KooyC.V._D.C.Kooy
C.V._D.C.Kooy
 
Med kynningin aba
Med kynningin   abaMed kynningin   aba
Med kynningin aba
 
ICT cognitive exhaustion
ICT cognitive exhaustionICT cognitive exhaustion
ICT cognitive exhaustion
 
National diploma
National diplomaNational diploma
National diploma
 
Stagiaire Bras Droit
Stagiaire Bras DroitStagiaire Bras Droit
Stagiaire Bras Droit
 
Ulus lg klima servisi 294 16 03
Ulus lg klima servisi 294 16 03Ulus lg klima servisi 294 16 03
Ulus lg klima servisi 294 16 03
 
Seyrantepe lg klima servisi 294 16 03
Seyrantepe lg klima servisi 294 16 03Seyrantepe lg klima servisi 294 16 03
Seyrantepe lg klima servisi 294 16 03
 
Studying Migrations Routes: New data and Tools
Studying Migrations Routes: New data and ToolsStudying Migrations Routes: New data and Tools
Studying Migrations Routes: New data and Tools
 
Guião para PasseAR é DescobrIR
Guião para PasseAR é DescobrIRGuião para PasseAR é DescobrIR
Guião para PasseAR é DescobrIR
 
Istat, Aula Magna 13 settembre 2013 - L’economia non osservata nei conti nazi...
Istat, Aula Magna 13 settembre 2013 - L’economia non osservata nei conti nazi...Istat, Aula Magna 13 settembre 2013 - L’economia non osservata nei conti nazi...
Istat, Aula Magna 13 settembre 2013 - L’economia non osservata nei conti nazi...
 
Istat, Aula Magna 13 settembre 2016 "L'economia non osservata nei conti nazio...
Istat, Aula Magna 13 settembre 2016 "L'economia non osservata nei conti nazio...Istat, Aula Magna 13 settembre 2016 "L'economia non osservata nei conti nazio...
Istat, Aula Magna 13 settembre 2016 "L'economia non osservata nei conti nazio...
 

Semelhante a Apostila

Quanta
QuantaQuanta
QuantaTiago
 
Java basico
Java basicoJava basico
Java basicoTiago
 
Linguagem c
Linguagem cLinguagem c
Linguagem cTiago
 
Servidor de emails_seguro
Servidor de emails_seguroServidor de emails_seguro
Servidor de emails_seguroTiago
 
Screen
ScreenScreen
ScreenTiago
 
Selinux
SelinuxSelinux
SelinuxTiago
 
Ferramentas da web ao serviço da formação
Ferramentas da web ao serviço da formaçãoFerramentas da web ao serviço da formação
Ferramentas da web ao serviço da formaçãoAnabela Protásio
 
Linguagem ruby
Linguagem rubyLinguagem ruby
Linguagem rubyTiago
 
Manual do usuario_i_educar_portabilis
Manual do usuario_i_educar_portabilisManual do usuario_i_educar_portabilis
Manual do usuario_i_educar_portabilisdavi audio
 
Javascript
JavascriptJavascript
JavascriptTiago
 
GráFia Braille Para InformáTica
GráFia Braille Para InformáTicaGráFia Braille Para InformáTica
GráFia Braille Para InformáTicaasustecnologia
 
X dialog
X dialogX dialog
X dialogTiago
 
Pascal
PascalPascal
PascalTiago
 

Semelhante a Apostila (20)

Apostila algoritmos
Apostila algoritmosApostila algoritmos
Apostila algoritmos
 
Quanta
QuantaQuanta
Quanta
 
Java basico
Java basicoJava basico
Java basico
 
Apostila
ApostilaApostila
Apostila
 
Nvu
NvuNvu
Nvu
 
J2me
J2meJ2me
J2me
 
Linguagem c
Linguagem cLinguagem c
Linguagem c
 
Guia do formador TICs 2013
Guia do formador TICs 2013Guia do formador TICs 2013
Guia do formador TICs 2013
 
Servidor de emails_seguro
Servidor de emails_seguroServidor de emails_seguro
Servidor de emails_seguro
 
Screen
ScreenScreen
Screen
 
Selinux
SelinuxSelinux
Selinux
 
Ferramentas da web ao serviço da formação
Ferramentas da web ao serviço da formaçãoFerramentas da web ao serviço da formação
Ferramentas da web ao serviço da formação
 
Linguagem ruby
Linguagem rubyLinguagem ruby
Linguagem ruby
 
Horde
HordeHorde
Horde
 
Manual do usuario_i_educar_portabilis
Manual do usuario_i_educar_portabilisManual do usuario_i_educar_portabilis
Manual do usuario_i_educar_portabilis
 
Javascript
JavascriptJavascript
Javascript
 
GráFia Braille Para InformáTica
GráFia Braille Para InformáTicaGráFia Braille Para InformáTica
GráFia Braille Para InformáTica
 
Xdmcp
XdmcpXdmcp
Xdmcp
 
X dialog
X dialogX dialog
X dialog
 
Pascal
PascalPascal
Pascal
 

Apostila

  • 1. Algoritmos e Linguagem de Programação Elisamara de Oliveira Revisada por Clausia Mara Antoneli (janeiro/2013)
  • 2. 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
  • 3. 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
  • 4. 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).....................................................................................................................71 5.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
  • 5. 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
  • 6. 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.”
  • 7. 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; ƒƒ aordemdasaçõeséimportante:primeirodescasca-seabatata,pica-seabatata,paradepoisfritá-la... Exemplos de algoritmos conhecidos: ƒƒ Qual é o algoritmo que você descreve para vir estudar? ƒƒ Qual é o algoritmo para se fazer uma feijoada? ƒƒ Qual é o algoritmo para 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”.
  • 8. 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.
  • 9. 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.
  • 10. Algoritmos e Linguagem de Programação Unisa | Educação a Distância | www.unisa.br 11 Figura2–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.
  • 11. 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:
  • 12. 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-
  • 13. 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).
  • 14. 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
  • 15. 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.
  • 16. 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.
  • 17. 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,
  • 18. 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 ...
  • 19. 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 identificador em 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.
  • 20. 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)
  • 21. 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 :=)
  • 22. 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);
  • 23. 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 formado por uma bateria e uma lâmpada:
  • 24. 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);
  • 25. 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)
  • 26. 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 “=“)
  • 27. 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> forVERDADEIRA, 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.
  • 28. 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 )
  • 29. 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 a numeração esteja em ordem crescente.
  • 30. 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 forVERDADEIRA, 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)
  • 31. 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.
  • 32. 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 (““)!
  • 33. 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)
  • 34. 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);
  • 35. 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%
  • 36. 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ê.
  • 37. 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.”); }
  • 38. 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!)
  • 39. 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!
  • 40. 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.
  • 41. 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”
  • 42. Algoritmos e Linguagem de Programação Unisa | 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
  • 43. 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. Escrevaumcomandoparacalcularoquadradodeumnúmerointeiron1etambémn1elevadoa3. 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
  • 44. 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)
  • 45. 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!
  • 46. 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...
  • 47. 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 quer selecionar atletas para o time de basquete. As exi- gências são: ter 1.85 m de altura ou mais, ter menos de 21 anos e ter, pelo menos, o primeiro grau completo. Escreva um comando para verificar se um candidato pode ser ou não aprova- do para o time de basquete. O grau de instrução é definido como:“0= sem instrução”,“1=pri- meiro grau”,“2=segundo grau”,“3=superior”. Observe que, ao se fazer a comparação da altura, não se faz referência à unidade de medida “me- tros”, quer dizer, estaria errada uma comparação do tipo “altura >= 1.85 m”. O mesmo acontece com a idade, em que os “anos” foram (e devem) ser omitidos.
  • 48. Algoritmos e Linguagem de Programação Unisa | Educação a Distância | www.unisa.br 51 28. Suponha que o clube esportivo deseje, agora, formar um time masculino (sexo ==‘m’) e outro feminino (sexo ==‘f’) e tenha mudado um pouco seus critérios. As exigências passaram a ser: ter 1.85m de altura ou mais para os homens e 1.75 ou mais para as mulheres e ter menos de 21 anos. Escreva um comando para verificar se um candidato ou candidata pode ser ou não aprovado(a) para o time de basquete. Observe que surgiu o conectivo “ou” ligando as comparações de altura para os sexos diferentes, que continuaram a ser ligados pelo conectivo “e” na comparação de idade! Pense por que é assim. 3.6 Resumo do Capítulo 3.7 Atividades Propostas Caro(a) aluno(a), este capítulo foi uma excelente oportunidade para exercitarmos a linguagem de programação. Agora é hora de você praticar um pouco sozinho(a)! A minha forte recomendação é que você faça os exercícios sozinho(a), consultando os exemplos anteriores para ajudá-lo(a). Somente depois da sua tentativa, é que você deve conferir as respostas. Boa sorte! 1. Escreva um algoritmo que leia e imprima o nome e as duas notas de um aluno. 2. Escreva um comando que calcule a média das duas notas lidas no exercício 3.1.1. 3. Escreva um comando que verifique se a média calculada no exercício 3.1.2 é maior ou igual a 7.0; se for, imprima uma frase dizendo que o aluno foi aprovado, caso contrário, imprima uma frase dizendo que foi reprovado. 4. Escreva um algoritmo que leia o nome e as duas notas de um aluno, calcule a média das notas e imprima uma frase dizendo se ele foi aprovado (média maior ou igual a 7.0) ou reprovado.
  • 49. Elisamara de Oliveira Unisa | Educação a Distância | www.unisa.br 52 5. Considere o trecho de algoritmo em PortuCê: se (B1) C1; senão se (B2) se (B3) C2; senão { C3; C4; } C5; Em PortuCê, não existe uma variável do tipo “lógico” a qual se possa atribuir um valor “verda- deiro”ou“falso”. No entanto, o PortuCê considera o valor 0 (zero) como sendo falso e qualquer outro valor diferente de zero como sendo verdadeiro. Nos exercícios que se seguem, considere que os valores de B1, B2 e B3 representam valores“verdadeiros”(diferentes de zero) ou“falsos” (iguais a zero) e responda à pergunta:“quais comandos serão executados”. a) Se B1= Verdadeiro B2 =Verdadeiro e B3=Falso? b) Se B1=Falso B2= Verdadeiro e B3= Falso? c) Se B1=Falso B2=Verdadeiro e B3=Verdadeiro? d) Quais os valores de B1, B2 e B3 para que somente o comando C5 seja executado? 6. Dado um conjunto de respostas “sim” ou “não” de várias pessoas e seu sexo (F=feminino, M=masculino), escreva comandos em PortuCê para calcular: a) o número de mulheres que responderam sim; b) o número de homens que responderam não; c) o número de mulheres e homens que responderam não.
  • 50. Algoritmos e Linguagem de Programação Unisa | Educação a Distância | www.unisa.br 53 7. Observe o algoritmo a seguir. Qual o valor de L após a execução deste algoritmo? inteiro A, B, C; real X, Y; inteiro L; principal() { A = 0; /* falso */ B = 1; /* verdadeiro */ C = 0; /* falso */ X = 1.5; Y = 3.2; se (C ou (X+Y>5) ou não(A e B)) L = 0; senão L = 1; } 8. Escreva trechos de algoritmo em PortuCê que ajudem o Instituto Brasileiro de Geografia e Es- tatística (IBGE) a fazer o censo populacional de uma certa cidade. Sabendo-se que os seguin- tes dados foram pedidos aos cidadãos: SEXO (‘H’= homem,‘M’= mulher) e RENDA (número de salários-mínimos – sm), os trechos de algoritmo devem fornecer: a) o total de homens; b) o total de mulheres; c) o total de pessoas da classe C (até 4 sm), da classe B (até 20 sm) e da classe A (acima de 20 sm). 9. Fornecidos os dados das candidatas a modelo: ALTURA, PESO e IDADE, escreva um trecho de algoritmo para verificar se os dados se enquadram nos seguintes limites: ALTURA: de 1.70 a 1.85 m PESO: de 48.0 a 60.0 kg IDADE: de 17 a 21 anos Se os dados da candidata corresponderem a esses limites, deve ser impressa uma frase dizendo que ela foi aprovada; caso contrário, que não foi aprovada. 10. Modifique o exercício anterior para que uma frase seja impressa após a verificação de cada quesito, dizendo se a candidata foi aprovada ou não em cada um deles e uma frase final dizen- do se foi aprovada ou não como modelo.
  • 51. Unisa | Educação a Distância | www.unisa.br 55 Neste capítulo, caro(a) aluno(a), você aprenderá uma metodologia que facilitará o processo de de- senvolvimento de soluções algorítmicas para os problemas que serão propostos para você resolver. A metodologia é composta de uma sequência de passos, cujo principal objetivo é ajudá-lo(la) a resolver problemas dividindo-os por partes, diminuindo, assim, a sua complexidade. Como ficará bem claro logo adiante, resolvendo cada parte do problema por vez, consegue-se chegar a soluções completas e com- plexas a partir de soluções simples, que já foram, muitas vezes, encontradas para diversos outros proble- mas semelhantes. Você conhecerá os passos da metodologia e vários exemplos práticos serão fornecidos de maneira a familiarizá-lo(la) com o método. É importante ressaltar que a metodologia é um processo dinâmico. Você pode estar num passo mais adiante e identificar uma variável auxiliar e voltar aos passos anteriores e alterá-los, por exemplo. Portanto, não se detenha aos detalhes, pelo contrário, sinta-se livre para criar suas soluções. O método pretende ajudá-lo(la) e não engessá-lo(LA)! Vamos em frente! METODOLOGIA PARA A CONSTRUÇÃO DE ALGORITMOS4 Passo 1: Ler e entender o problema É importante ler e reler, pelo menos 3 vezes, o problema até que ele seja completamente compreen- dido. Não adianta querer buscar a solução de um problema que não esteja suficientemente esclarecido! Passo 2: Listar todos os dados de entrada do problema Um dado de entrada é aquele que será fornecido pelo usuário, ou seja, o dado que será lido pelo programa. Passo 3: Listar todos os dados de saída do problema Um dado de saída é algo que será produzido ou calculado pelo programa; tudo aquilo que deve ser apenas impresso não deve ser considerado um dado de saída. 4.1 Os Passos da Metodologia
  • 52. Elisamara de Oliveira Unisa | Educação a Distância | www.unisa.br 56 Passo 4: Listar todas as variáveis auxiliares do programa Uma variável auxiliar é identificada como aquela que é necessária para o cálculo de alguma variável de saída e não é variável de entrada. Por exemplo, num problema em que vários números serão lidos e sua média deve ser calculada, o número é uma variável de entrada e a média é uma variável de saída, mas como, para calcular a média, é necessário somar os números e dividir a soma pela quantidade de números lidos, a soma e a quantidade de números são variáveis auxiliares do programa. Assim, para identificar as variáveis auxiliares, basta analisar cada uma das saídas e verificar se, dadas as entradas, há necessidade de mais alguma variável para facilitar o seu cálculo. Passo 5: Declarar todas as variáveis do programa Cada dado de entrada, cada dado de saída e cada variável auxiliar“geram”uma variável. As variáveis do programa deverão ser uma para cada dado de entrada, uma para cada dado de saída e uma para cada variável auxiliar. É extremamente importante que o programador escolha nomes de variáveis significativos, que possam exprimir a função da variável. Por exemplo, uma variável que receberá a idade de uma pessoa não deveria se chamar“x”, nem mesmo“i”seria bom, o ideal seria“idade”. Passo 6: Inicializar as variáveis do programa Há um conjunto de pequenas regras que pode nos ajudar a encontrar os valores iniciais de cada variável do programa, apesar de que nem todas as variáveis precisam ter valores iniciais: ƒƒ toda variável de entrada é inicializada com o comando “leia”; ƒƒ todo contador e todo somador devem ser inicializados com 0 ( zero); ƒƒ todo produto deve ser inicializado com 1 (um). Passo 7: Escrever o código para calcular cada uma das saídas do programa Os principais problemas a serem solucionados, na maior parte das vezes, resumem-se no cálculo das saídas do programa. Portanto, neste passo, cada uma das saídas deve ser analisada individualmente e sua solução encontrada separadamente. Passo 8: Imprimir os resultados do programa Aqui, só devem ser impressos os resultados pedidos na especificação do problema. Passo 9: Montar o algoritmo unindo os resultados dos passos 5 a 8 Os passos 5 a 8 têm a solução do problema. A montagem do algoritmo/programa pode seguir um esquema básico, mas vai depender muito da lógica de cada problema. Portanto, o esquema a seguir
  • 53. Algoritmos e Linguagem de Programação Unisa | Educação a Distância | www.unisa.br 57 serve apenas de orientação. Cada problema deve, no entanto, ser analisado logicamente para chegar ao seu algoritmo. Passo 10: Fazer o“teste de mesa”do programa a partir de diferentes valores iniciais O “teste de mesa” consiste na execução de todas as instruções do programa a partir de conjuntos de valores iniciais. Os valores iniciais devem ser escolhidos de maneira que as “condições de contorno” do problema sejam verificadas. Por exemplo, num programa que trabalhe com flags, deve ser testada a condição em que o valor do flag seja fornecido como dado inicial; num programa que só leia números positivos, devem ser fornecidos números negativos e zero; entre outras situações possíveis. 4.2 Solução de Exercícios utilizando a Metodologia 4.3 Resumo do Capítulo A estratégia que utilizaremos nesta seção é propor uma lista de exercícios e resolver alguns de- les usando a metodologia, deixando outros para que você, utilizando soluções semelhantes, resolva-os sozinho(a), ok? Então, vamos lá! Neste capítulo, caro(a) aluno(a), você aprendeu uma metodologia que facilitará o processo de de- senvolvimento de soluções algorítmicas para os problemas que serão propostos para você resolver. A metodologia é composta de uma sequência de passos, cujo principal objetivo é ajudá-lo a resolver pro- blemas dividindo-os por partes, diminuindo, assim, a sua complexidade. Como ficará bem claro logo adiante, resolvendo cada parte do problema por vez, consegue-se chegar a soluções completas e com- plexas a partir de soluções simples que já foram, muitas vezes, encontradas para diversos outros proble- mas semelhantes. Você conhecerá os passos da metodologia e vários exemplos práticos serão fornecidos de maneira a familiarizá-lo com o método. AtençãoAtenção /* Nome do Programa e o que ele faz */ <passo 5 – declarar todas as variáveis do programa> principal() { <passo 6 – inicializar as variáveis do programa > <passo 7 – calcular cada uma das saídas do programa> <passo 8 – imprimir os resultados do programa> imprima(“Fim do programa”); }
  • 54. Elisamara de Oliveira Unisa | Educação a Distância | www.unisa.br 58 1. Escreva um algoritmo em PortuCê para calcular e imprimir a área e o perímetro de uma sala retangular, sendo que os comprimentos das paredes (comprimento e largura) são fornecidos pelo usuário. 2. Escreva um algoritmo em PortuCê para calcular e imprimir a área de uma esfera. O raio da es- fera será fornecido pelo usuário. Obs.: A = 3.14*R2 . 3. Escreva um algoritmo em PortuCê que calcule e imprima o valor em reais correspondente aos dólares que um turista possui no cofre do hotel. O programa deve solicitar os seguintes dados: quantidade de dólares guardada no cofre e cotação do dólar naquele dia. 4. Escreva um algoritmo em PortuCê que leia um número e informe se ele é par ou ímpar. 5. Escreva um algoritmo em PortuCê que leia 2 números e diga qual deles é o maior. 6. Escreva um algoritmo em PortuCê que calcule e imprima a quantidade de tijolos iguais neces- sária para construir uma determinada parede. São dados de entrada do programa: dimensões do tijolo (comprimento e largura) e dimensões da parede a ser construída (comprimento e largura). 7. Escreva um algoritmo em PortuCê que calcule S, o alcance de um projétil, dados a velocidade inicial v0 e o ângulo θ entre o cano do canhão e o solo. O valor de g corresponde à gravidade que é de 9.8 m/s2 . A fórmula a ser utilizada é: 8. Escreva um algoritmo em PortuCê que calcule a área A de um triângulo pela fórmula de Herão, lendo os valores de entrada s, que é o semiperímetro, e a, b e c, que são os lados do triângulo: 9. Escreva um algoritmo em PortuCê para calcular o valor do desconto, sendo que o preço do produto é fornecido pelo usuário e o desconto é de 5%. Apresentar o preço do produto, o valor do desconto e o preço final com o desconto. 4.4 Atividades Propostas
  • 55. Algoritmos e Linguagem de Programação Unisa | Educação a Distância | www.unisa.br 59 10. Escreva um algoritmo em PortuCê para calcular e imprimir qual foi a porcentagem de desconto dada em um determinado produto, sabendo-se o preço original do produto e o preço que foi cobrado por ele depois do desconto serão fornecidos pelo usuário. 11. Escreva um algoritmo em PortuCê que receba dois valores inteiros nas variáveis A e B. O progra- ma deve trocar os valores entre as variáveis (ou seja, ao término do programa, a variável A deve ter o valor inicial de B e vice-versa). Apresentar as duas variáveis no final. 12. Escreva um algoritmo em PortuCê para calcular e imprimir o valor a ser pago pelo período de es- tacionamento do automóvel. O usuário entra com os seguintes dados: hora e minuto de entra- da, hora e minuto de saída. Sabe-se que esse estacionamento cobra R$ 10,00 por hora ou fração. 13. Escreva um algoritmo em PortuCê que leia o valor de uma conta de luz e, caso o valor seja maior que R$ 50,00, apresente a mensagem:“Você está gastando muito”. Caso contrário, exiba a mensagem:“Seu gasto foi normal, parabéns”. 14. Escreva um algoritmo em PortuCê que receba a leitura do termômetro. Caso a temperatura esteja abaixo de 100 °C, apresentar a mensagem de que a temperatura está muito baixa. Caso a temperatura esteja entre 100 e 200 °C, apresentar a mensagem de que a temperatura está baixa. Caso a temperatura esteja acima de 200 °C e inferior a 500 °C, apresentar a mensagem de que a temperatura está normal. Caso contrário, apresentar a mensagem de que a temperatura está muito alta. 15. Escreva um algoritmo em PortuCê que leia o valor do salário atual, calcule e imprima o valor do novo salário de um funcionário. Considere que o funcionário deverá receber um reajuste de 15% caso seu salário seja menor que R$ 500.00. Se o salário for maior ou igual a 500, mas menor ou igual a R$ 1000.00, o reajuste deve ser de 10%. Caso o salário seja maior que R$ 1000.00, o reajuste deve ser de 5%. 16. Escreva um algoritmo em PortuCê que determine quanto será gasto para encher o tanque de um carro, sabendo-se que o preço da gasolina é R$ 2.60 e o preço do álcool é R$ 1.80. O usuário fornecerá os seguintes dados: tipo de carro (as opções como tipo de carro são a letra“G”– gaso- lina ou a letra“A”– álcool; rejeitar valores inválidos) e capacidade do tanque em litros.
  • 56. Unisa | Educação a Distância | www.unisa.br 61 Neste capítulo, você, caro(a) aluno(a), poderá começar a traduzir seus primeiros algoritmos para a linguagem de programação C. Isso o(a) capacitará a realizar as primeiras aulas práticas em laboratório. Recomenda-se que você prepare em seu computador um ambiente adequado à programação em C e comece a trabalhar sozinho(a), fazendo os programas da lista 4.1 como atividades extraclasse. O interes- sante em se utilizar o PortuCê como pseudolinguagem é que ele segue quase totalmente as mesmas regras da linguagem C. Assim, começar a programar em C será muito fácil, você verá! A LINGUAGEM DE PROGRAMAÇÃO C5 5.1 Tipos Básicos e Declaração de Variáveis em C Saiba maisSaiba mais • Um identificador em C é formado por caracteres alfanuméricos. • O primeiro caractere tem que ser _ ou 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 C (como main, if, else, int, char). • Na linguagem C, há 5 tipos básicos (int, float, double, char e void) e quatro modificadores de tipos (long, short, signed e unsigned), o que amplia muito os tipos de variáveis, mas, neste curso, usaremos apenas 3 tipos básicos: • int; • float; • char. • O tipo de dados“double (%Lf)”corresponde ao float, mas com maior capacidade de armazenamento. • Para se declarar uma variável, escreve-se o nome de seu tipo, salta-se um espaço em branco, em seguida o nome do seu identificador e ponto e vírgula 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. • Pode-se inicializar uma variável na sua declaração atribuindo-se a ela um valor inicial compatível com seu tipo. • 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.
  • 57. Elisamara de Oliveira Unisa | Educação a Distância | www.unisa.br 62 Exemplo de declaração de variáveis válida: char nome[20], letra, zero=’0’; float soma=0; int n1, n2; float raiz1, Total_dos_Salarios; char nome_de_familia[30]=“Menezes”; int idade, cont=0; 5.2OperadoresdeAtribuição,Aritméticos,RelacionaiseLógicos(Binários)emC AtençãoAtenção • O operador de atribuição é: = . • Há os operadores de atribuição compostos: • += • -= • *= • /= • Os operadores aritméticos básicos são: • + (adição); • - (subtração); • * (multiplicação); • / (quociente da 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). • Os operadores relacionais são: • > (maior que); • >= (maior ou igual a); • < (menor que); • <= (menor ou igual a); • == (igual a); • != (diferente de). • Os operadores lógicos são: • && (operador e – conjunção); • || (operador ou – disjunção); • ! (operador não – negação).