Buscar

ALGORITMO E PROGRAMAÇÃO

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

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

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

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

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

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

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

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

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

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

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

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

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

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

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

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

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

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

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

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

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

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

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

1 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
FACULDADE ÚNICA 
DE IPATINGA 
 
 
 
 
 
 
 
 
 
2 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Filipe Costa Fernandes 
 
Mestre em Modelagem Matemática e Computacional pelo Centro de Formação Tecno-
lógocia de Minas Gerais (CEFET-MG) (2009), Especialista em Redes de Computadores e E-
Commerce (2007) e Bacharel em Ciência da Computação (2003) pelas Faculdades Inte-
gradas de Caratinga (FIC). Atualmente é Coordenador dos Cursos de Ciência da Compu-
tação e Sistemas de Informação e Professor na Faculdade Única de Ipatinga. Além disso 
também é Analista de Sistemas Web na empresa Vale Telecom (Ipatinga). Tem experiência 
na área de Ciência da Computação e Sistemas de Informação, atuando principalmente 
nos seguintes temas: Análise e Desenvolvimento Web (Asp.Net, C#, MySql, Sql Server, php), 
Desenvolvimento (Java, C#), Software Livre, Estruturas de Dados, Inteligência Artificial e 
Pesquisa Operacional. 
ALGORITMOS E PROGRAMAÇÃO DE 
COMPUTADORES 
 
1ª edição 
Ipatinga – MG 
2020 
 
 
 
 
 
 
 
 
 
3 
 
 
FACULDADE ÚNICA EDITORIAL 
 
Diretor Geral: Valdir Henrique Valério 
Diretor Executivo: William José Ferreira 
Ger. do Núcleo de Educação a Distância: Cristiane Lelis dos Santos 
Coord. Pedag. da Equipe Multidisciplinar: Gilvânia Barcelos Dias Teixeira 
Revisão Gramatical e Ortográfica: Izabel Cristina da Costa 
Revisão/Diagramação/Estruturação: Bárbara Carla Amorim O. Silva 
 Carla Jordânia G. de Souza 
 Rubens Henrique L. de Oliveira 
Design: Brayan Lazarino Santos 
 Élen Cristina Teixeira Oliveira 
 Maria Luiza Filgueiras 
 
 
 
 
 
 
 
 
© 2021, Faculdade Única. 
 
Este livro ou parte dele não podem ser reproduzidos por qualquer meio sem Autorização 
escrita do Editor. 
 
 
F391a 
 
 
Fernandes, Filipe Costa. 
Algoritmos e programação de computadores / Filipe Costa Fernandes. – 
1. ed. Ipatinga, MG: Editora Única, 2020. 
105 p. il. 
 
Inclui referências. 
 
ISBN: 978-65-89764-12-0. 
 
1. Algoritmo. 2. Programação de Computadores. 3. Linguagem de Programa-
ção. I. Fernandes, Filipe Costa. II. Título. 
 
CDD: 005.1 
CDU: 004.43 
Ficha catalográfica elaborada pela bibliotecária Melina Lacerda Vaz CRB – 6/2920. 
 
 
 
 
NEaD – Núcleo de Educação a Distância FACULDADE ÚNICA 
Rua Salermo, 299 
Anexo 03 – Bairro Bethânia – CEP: 35164-779 – Ipatinga/MG 
Tel (31) 2109 -2300 – 0800 724 2300 
www.faculdadeunica.com.br
 
 
 
 
 
 
 
 
 
4 
 
 
Menu de Ícones 
Com o intuito de facilitar o seu estudo e uma melhor compreensão do conteúdo apli-
cado ao longo do livro didático, você irá encontrar ícones ao lado dos textos. Eles são 
para chamar a sua atenção para determinado trecho do conteúdo, cada um com 
uma função específica, mostradas a seguir: 
 
 
 
São sugestões de links para vídeos, documentos cientí-
fico (artigos, monografias, dissertações e teses), sites ou 
links das Bibliotecas Virtuais (Minha Biblioteca e Biblio-
teca Pearson) relacionados com o conteúdo abor-
dado. 
 
Trata-se dos conceitos, definições ou afirmações im-
portantes nas quais você deve ter um maior grau de 
atenção! 
 
São exercícios de fixação do conteúdo abordado em 
cada unidade do livro. 
 
São para o esclarecimento do significado de determi-
nados termos/palavras mostradas ao longo do livro. 
 
Este espaço é destinado para a reflexão sobre ques-
tões citadas em cada unidade, associando-o a suas 
ações, seja no ambiente profissional ou em seu cotidi-
ano. 
 
 
 
 
 
 
 
 
 
5 
 
 
SUMÁRIO 
INTRODUÇÃO ............................................................................................ 8 
1.2.1 Os níveis das linguagens ................................................................................ 8 
1.3.1 Algoritmo x programa .................................................................................. 10 
1.4.1 Portugol (lê-se portugól) .............................................................................. 10 
1.5.1 Palavras reservadas ...................................................................................... 14 
LÓGICA DE PROGRAMAÇÃO ................................................................ 24 
2.4.1 Laço “para” ................................................................................................... 33 
2.4.2 Laço “enquanto” .......................................................................................... 35 
LINGUAGEM DE PROGRAMAÇÃO – C ................................................... 42 
3.2.1 Blocos de comandos .................................................................................... 45 
3.5.1 Tipos de dados básicos ................................................................................ 49 
3.6.1 A Função printf() ........................................................................................... 51 
3.6.2 A função scanf() ........................................................................................... 53 
3.6.3 Entrada e saída com getchar, getch e putchar getchar() .................. 55 
ESTRUTURAS DE CONTROLE ..................................................................... 65 
4.5.1 O comando BREAK ....................................................................................... 73 
4.7.1 Estrutura de repetição FOR ......................................................................... 75 
4.7.2 Laços aninhados ........................................................................................... 78 
4.7.3 O laço WHILE .................................................................................................. 79 
4.7.4 O laço DO-WHILE .......................................................................................... 80 
4.7.5 O comando CONTINUE ................................................................................ 82 
UNIDADE 
02 
UNIDADE 
03 
UNIDADE 
04 
UNIDADE 
01 
 
 
 
 
 
 
 
 
 
6 
 
 
FUNÇÕES ................................................................................................. 87 
ESTRUTURA DE DADOS............................................................................. 94 
6.4.1 Ordenação por seleção ............................................................................................98 
RESPOSTAS DO FIXANDO O CONTEÚDO ............................................. 105 
REFERÊNCIAS ......................................................................................... 106 
UNIDADE 
05 
UNIDADE 
06 
 
 
 
 
 
 
 
 
 
7 
 
 
CONFIRA NO LIVRO 
 
Na unidade 01 vamos conhecer a lógica de programação e todas 
as definições e teorias que nos auxiliam para uma boa prática de 
programação. Nesta unidade discutiremos sobre Computação, 
computadores, sistemas e fluxo de dados. Você será convidado a 
imergir no mundo da lógica de programação e exercitar o raciocí-
nio lógico e estruturado, de forma a construir rotinas de tarefas que 
se assemelham aos algoritmos reais de programação. 
Na unidade 02 veremos alguns conceitos avançados sobre a lógica 
de programação e a construção de algoritmos estruturados e bem 
definidos. Nesta unidade exercitamos a lógica sobre as estruturas de 
controle e sua importância para o tratamento do fluxo das informa-
ções dentro de um algoritmo. 
 
 
Olá mundo! Na unidade 03 faremos uma introdução à programa-
ção de computadores utilizando uma linguagem real. Ainda nesta 
unidade vamos conhecer os conceitos básicos das linguagens de 
programação e como iniciar a programação de computadores uti-
lizando esta linguagem. Aqui são apresentados os principais concei-
tos e comandos básicos da linguagem de programação C. 
Controlando o fluxo de execução dos códigos. Na unidade 4 vere-
mos como controlar o fluxo de execução e tomadas de decisão em 
um programa. Nesta unidade trataremos as estruturas de seleção 
para tomada de decisão e as estruturasde repetição para melhores 
resultados e controle do fluxo e quantidade de informações trata-
das em nosso programa. 
 
 
Modularização e reutilização, o princípio básico da eficiência na 
programação. Nesta unidade trataremos de funções (blocos de có-
digos que executam quando solicitados). Veremos todas as técni-
cas para construção de funções e todas as suas variações, com re-
cebimento de parâmetros e retorno ou não de valores. 
Em nossa unidade final, trataremos dos conjuntos de dados e suas 
formas de agrupamento e tratamento. Iremos abordar o uso de co-
leções de dados com a definição de Vetores e Matrizes (Arrays). 
Também iremos tratar sobre pesquisa e ordenação utilizando estes 
elementos em nossos programas. 
 
 
 
 
 
 
 
, 
 
 
8 
 
 
INTRODUÇÃO 
 
 
 
 INTRODUÇÃO 
Para que as pessoas se entendam e possam se comunicar, é necessário que 
ambas falem uma linguagem em comum. Esta observação também é válida quando 
estamos analisando a relação homem-máquina. Se nos posicionarmos em frente a 
um computador e começarmos a lhe ditar ordens em uma linguagem diferente a 
qual o mesmo conhece (foi programado), o equipamento não irá identificar as ins-
truções e consequentemente não conseguirá produzir o resultado esperado. Isto 
acontece porque os computadores são programados para entender e executar nos-
sos comandos de acordo com um vocabulário pré-determinado e por eles conhe-
cido. Quando surgiram os primeiros computadores, no final dos anos 40, tornou-se 
necessário programa-los. Tudo que um equipamento pode fazer baseia-se no conhe-
cimento, pela máquina, de dois estados de corrente elétrica: ligado ou desligado. 
 
 COMPILADORES 
Quando duas pessoas, que falam idiomas diferentes precisam se comunicar, 
existem duas saídas: ou uma delas aprende e procura se expressar no outro idioma, 
ou ambas, continuam falando suas línguas com o auxílio de um tradutor para inter-
mediá-las. 
Um compilador é uma ferramenta computacional que faz esta tarefa de inter-
mediar a comunicação entre o homem e máquina. O compilador recebe um código 
fonte (escrito em alguma linguagem de programação) e transforma este código em 
um programa executável, um programa real que irá rodar no computador e executar 
as tarefas predefinidas para o mesmo. 
 
1.2.1 Os níveis das linguagens 
Assim como os computadores, as linguagens de programação também têm 
evoluído. Costuma-se dizer que uma linguagem de computação se encontra em um 
determinado nível em relação à linguagem humana. 
UNIDADE 
 
 
 
 
 
 
, 
 
 
9 
 
 
As linguagens em que sua sintaxe está mais próxima da linguagem humana, 
são chamadas de linguagens de alto nível, já a linguagem mais próxima da lingua-
gem das máquinas (ligado ou desligado) são chamadas de linguagem de baixo ní-
vel. 
 
 ALGORITMOS 
Um algoritmo é uma sequência lógica de instruções para realizar uma deter-
minada tarefa. Os algoritmos não representam necessariamente programas de com-
putador, e sim os passos necessários para se realizar uma tarefa. Diferentes algoritmos 
podem realizar a mesma tarefa usando um conjunto diferenciado de instruções em 
mais ou menos tempo, espaço ou esforço do que outros. Por exemplo, um algoritmo 
para se vestir pode especificar que você vista primeiro as meias e os sapatos antes 
de vestir a calça enquanto outro algoritmo especifica que você deve primeiro vestir 
a calça e depois as meias e os sapatos. Fica claro que o primeiro algoritmo é mais 
difícil de executar que o segundo. 
Estas instruções definidas por algoritmos, podem ser uma receita de bolo, 
manual de instruções de um aparelho qualquer, uma sequência para somar dois 
números, etc. Desde que estas intruções sigam uma sequência lógica e tenham início 
e fim. 
Vamos pensar no caso de uma receita de bolo. Não podemos colocar o bolo 
para assar sem antes misturar (de forma correta) todos os ingredientes, que por sua 
vez não podem ser misturados, se eles não existem. Então, neste caso, devemos 
primeiro adquirir os ingredientes, depois misturá-los e por fim, levar tudo ao forno, que 
por sua vez deve estar ligado ou poderá ser ligado futuramente. 
Então, esta sequência lógica (que deve ser um pouco mais refinada) pode ser 
definida como um algoritmo para se fazer um bolo (é claro que este algoritmo deve 
ser muito mais detalhado do que está em nosso exemplo, como por exemplo, 
devemos definir quais são os ingredientes). 
A sequência lógica também pode ser chamada de “Roteiro” ou “Algoritmo”. 
 
Um roteiro para chupar uma bala pode ser escrito da seguinte forma: 
“Pegar a Bala” 
“Retirar o Papel” 
 
 
 
 
 
 
, 
 
 
10 
 
 
“Chupar a Bala” 
 “Jogar o Papel no lixo” 
Um roteiro para somar dois números pode ser escrito da seguinte forma: 
“Obter o primeiro número” 
“Obter o segundo número” 
“Somar os dois números obtidos” 
“Apresentar o resultado da soma” 
 
1.3.1 Algoritmo x programa 
Como vimos antes, um algoritmo é uma sequência lógica e bem estruturada 
de ações a serem executadas para se realizar uma determinada tarefa. 
Um programa é a conversão de um algoritmo em uma determinada lingua-
gem de programação, segundo suas regras de sintaxe e semântica, de forma a per-
mitir que o compilador possa entender a sequência de ações para transformar este 
programa (fonte) em um programa executável e realizar a tarefa. 
 
 
 
 LINGUAGEM DE PROGRAMAÇÃO 
É um conjunto de símbolos e regras de sintaxe que permitem a construção de 
sentenças que descrevem de forma precisa ações compreensíveis e executáveis 
para o computador. 
 
1.4.1 Portugol (lê-se portugól) 
O portugol é um algoritmo (escrito em português estruturado) utilizando as sin-
taxes e semânticas parecidas com uma linguagem de programação, geralmente (foi 
proposto para ser baseado no pascal) o portugol é baseado na extinta linguagem 
Sintaxe é o termo utilizado para descrever a forma como um comando ou instrução é 
definida. A sintaxe demonstra a título de exemplo o comportamento de uma determinada 
escrita de código. 
 
 
 
 
 
 
, 
 
 
11 
 
 
Pascal, mas como todo tipo de algoritmo ele deve ter portabilidade para outras lin-
guagens de programação e podemos adaptá-lo para fica mais parecido com lin-
guagem que iremos utilizar. 
Como vimos antes, todo algoritmo deve obrigatoriamente ter um início e um 
fim, e entre eles algumas instruções a serem realizadas. 
Então um exemplo de um algoritmo pode ser escrito da seguinte forma: 
 
Início 
 Instruções a serem realizadas 
Fim 
 
Tomando como exemplo a receita de bolo citada anteriormente, concluímos 
que antes de fazer qualquer coisa, temos que adquirir os ingredientes necessários 
para o nosso bolo (esta é a sequência lógica correta). Com os algoritmos também 
funciona desta forma devemos primeiro definir quais serão os ingredientes (que em 
algoritmos chamamos de definições, ou declarações) utilizado para a instrução em 
questão. 
O processo de criação e execução de programas (no nosso caso algoritmos) 
se divide em três partes básicas: entrada, processamento e saída. 
 
 
 
EXEMPLOS 
Um algoritmo para somar dois números: 
Início 
Variáveis 
Numero1 : inteiro 
Numero2 : inteiro 
A entrada é toda a informação que o algoritmo recebe. Esta entrada sempre deverá ser 
armazenada em algum lugar, como por exemplo, em variáveis. O processamento é todo 
tipo de processamento que o algoritmo realiza, como atribuir um valor a alguma variável, 
realizar alguns tipos de tomada de decisão e algum tipo de repetição (falaremos sobre 
tomadas de decisão e sobre estruturas de repetição mais adiante). E a saída é a exibição 
dos resultados em tela, ou escrita em arquivos, ou em impressora. 
 
 
 
 
 
 
, 
 
 
12 
 
 
Soma: inteiro 
Leia numero1 
Leia numero2 
Soma = numero1 + numero2 
Escreve soma 
Fim 
 
Neste exemplo temos na quarta e na quinta linha elementos de entrada (leia 
numero1 e leia numero2), na sextalinha temos um processamento (soma=nu-
mero1+numero2) e na penúltima linha temos uma saída (escreve soma). As demais 
linhas representam declarações em nosso algoritmo. 
Estes elementos de entrada e saída são chamados de comandos. Os coman-
dos são palavras reservadas das linguagens de programação que realizam alguma 
tarefa. Como por exemplo, a palavra reservada (comando) leia que vai capturar o 
número que o usuário digitar e armazenar em algum local para futuro processamento 
e/ou saída. 
Este local de armazenamento é chamado de variável. As variáveis são por-
ções de memória predefinidas para receber algum tipo de informação. Estas prede-
finições de variáveis podem ser definidas como o tipo de informação que a variável 
vai receber, e o tamanho da informação que a variável vai suportar. 
Os tipos de variáveis são chamados de tipos ou tipos de dados e o tamanho é 
chamado de tamanho mesmo. Os tipos de dados mais conhecidos e comumente 
utilizados são definidos quadro abaixo: 
 
Quadro 1: Tipos de Dados mais comuns 
NOME DO TIPO DESCRIÇÃO 
Inteiro 
Recebe números inteiros positivos ou negativos. 
Ex. 1; 2; 3; -4; -50; +100; etc. 
Real 
Recebe números fracionários positivos ou negativos. 
Ex. 1.0; 2.0; 1.3; -5.4; etc. 
Char Recebe caracteres únicos, ou seja, suporta somente uma letra ou um nú-
mero. Ex. ‘A’; ‘a’; ‘1’; etc. 
String 
Recebe cadeias de caracteres. Devemos definir o tamanho máximo de 
cada variável string declarada, e esta variável poderá receber um único 
caractere ou uma cadeia de caracteres de no máximo o tamanho defi-
nido para ela. Ex. “UNIPAC”; “Computação”; “1”; “1.3” 
 
 
 
 
 
 
, 
 
 
13 
 
 
Logico 
Recebe um dos dois valores lógicos: Verdadeiro ou Falso. 
Uma variável do tipo lógico, poderá receber somente um dos valores ló-
gicos por vez. 
Fonte: Elaborado pelo Autor (2020) 
 
 
 
Para declararmos uma variável devemos usar a palavra reservada variáveis e 
depois definimos as variáveis que necessitamos, separando o nome da variável do 
seu tipo por dois pontos (:). 
 
Sintaxe: 
Variáveis 
 <nome_da_variavel> : <tipo_da_variavel> 
Exemplo: 
Variáveis 
 X : inteiro 
 Nome : String 
 Sexo : Char 
 Nota : Real 
 Controle : Logico 
 
 
 
 CONSTANTES 
As constantes são tipos de dados predefinidos e que não podem ter seus va-
lores alterados em tempo de execução de um programa. Por exemplo, podemos usar 
uma variável do tipo inteiro para ler um número qualquer, esta variável pode ter o 
Perceba que para tipos de dados CHAR usamos aspas simples (‘A’) e para tipos de dados 
STRING usamos aspas duplas (“A”). Assim quando tivermos um caractere somente, sabe-
remos identificar o tipo de dados da variável em questão. 
Sintaxe é um termo utilizado em algoritmos e programação para descrever a forma básica 
de uma instrução ou comando, ou seja, a sua forma geral. 
 
 
 
 
 
 
, 
 
 
14 
 
 
seu valor alterado quantas vezes forem necessárias no decorrer do programa. Por 
outro lado podemos definir uma constante para definir o valor de PI, que é um valor 
que não será alterado no decorrer do programa, então criamos uma constante cha-
mada de PI que recebe o valor de 3,14159265 e toda vez que precisarmos de PI, basta 
chamar esta constante. 
Valores numéricos e strings também são chamados de Constantes. Os valores: 
1; 10; -10; “Programação”; ‘C’, são exemplos de constantes. 
Para declarar uma constante, usamos a palavra reservada Constantes e de-
pois declaramos todas as constantes necessárias. 
 
Sintaxe: 
Constantes 
 <nome_da_constante> = <valor_da_constante> 
Exemplos: 
Constantes 
 PI = 3,14159265 
 ValorMaximo = 1000 
 Instituição = “UNICA” 
 
No exemplo acima, foram definidas três constantes, π, Valor Máximo e Institui-
ção. Assim, no decorrer do programa, toda vez que precisar do valor de pi, não pre-
cisa informar o valor 3,1416 e sim utilizar a constante π. O mesmo se aplica para as 
outras constantes. 
Lembre-se que estes valores não podem ser alterados em tempo de execução 
do programa, portanto, se no meio do programa você tentar atribuir um outro valor 
qualquer para uma constante, isso vai ocasionar um erro na execução do programa. 
 
1.5.1 Palavras reservadas 
As palavras reservadas são todas as palavras reservadas para alguma funcio-
nalidade em uma determinada linguagem de programação, estas funcionalidades 
são: ler, escrever, estrutura condicional, estrutura de repetição, definição de início de 
bloco de código, definição de final de bloco de código, nomes de tipos de dados, 
etc. 
 
 
 
 
 
 
, 
 
 
15 
 
 
 
 OPERADORES ARITMÉTICOS 
Os operadores aritméticos são: +, -, *, /. Com eles podemos realizar cálculos 
matemáticos com variáveis numéricas, inteiras ou reais. 
Na matemática para realizar um cálculo de uma expressão, devemos montar 
toda a expressão, separando os blocos de prioridade por parêntesis “()”, colchetes 
“[]”, ou chaves “{}”, em programação usamos somente parêntesis “()” e a ordem de 
precedência dos operadores. 
A ordem de precedência dos operadores, é como se fossem parêntesis invisí-
veis que o compilador coloca na expressão quando não indicamos onde queremos 
ter parêntesis. O operador de Divisão tem a maior precedência, ou seja, em uma 
expressão sem separação por parêntesis a divisão será executada primeiro. Depois 
vem o operador de Multiplicação e por fim Adição e Subtração, nesta ordem. 
 
Quadro 2: Operadores Aritméticos 
OPERADOR SIGNIFICADO 
/ Operador de Divisão 
* Operador de Multiplicação 
+ Operador de Adição 
- Operador de Subtração 
Fonte: Elaborado pelo Autor (2020) 
 
A sintaxe dos operadores aritméticos é a seguinte: 
<valor_A> <operador aritmético> <valor_B> 
Exemplos: 
10 + 10 
2 – 1 
15 / 3 
250 * 24 
 
 
 
 
Também podemos substituir os valores numéricos por variáveis. 
 
 
 
 
 
 
, 
 
 
16 
 
 
 OPERADORES RELACIONAIS 
Em certo ponto de nosso programa, teremos a necessidade de tomar algum 
tipo de decisão, como por exemplo definir se um certo aluno foi aprovado ou repro-
vado em uma determinada disciplina, ou até mesmo descobrir de um número é par 
ou ímpar. 
Para isso devemos usar uma estrutura condicional (ou estrutura de tomada de 
decisão) e nesta estrutura deveremos utilizar os operadores relacionais, que irão de-
terminar o valor exato do item em questão. 
 
Os operadores relacionais são: ==, !=, <, >, <=, >=. 
 
O quadro a seguir a seguir mostra os operadores relacionais e seus respectivos 
significados. 
 
Quadro 3: Operadores Relacionais 
OPERADOR 
RELACIONAL 
SIGNIFICADO 
== Igual 
!= Diferente 
< Menor que 
> Maior que 
<= Menor ou igual 
>= Maior ou igual 
Fonte: Elaborado pelo Autor (2020) 
 
A sintaxe dos operadores relacionais é a seguinte: 
<valor_A> <operador relacional> <valor_B> 
 
Exemplos: 
 10 == 10 
12 > 10 
5 < 6 
X <= 50 
 
 OPERADOR DE ATRIBUIÇÃO ( = ) 
 
 
 
 
 
 
, 
 
 
17 
 
 
Para atribuirmos um valor a uma variável, devemos utilizar o operador de atri-
buição. Este operador é o = (igual) e ele serve para pegar o valor que está a sua 
direita e atribuir à variável que está a sua esquerda. Este operador também é cha-
mado de recebe, uma vez que a variável que está à esquerda recebe o valor que 
está à direita. 
 
Sintaxe: 
<Variável_Destino> = <valor_original> 
Exemplos:(Dada uma variável do tipo inteiro X) 
X = 10; (a variável X recebe o valor 10) 
 
 
 
EXEMPLO PRÁTICO 1 
Elaborar um algoritmo para escrever na tela a seguinte mensagem: Olá Mundo! 
Início 
 Escreva “Olá Mundo!” 
Fim 
 
Perceba que neste algoritmo não declaramos variáveis, nem utilizamos al-
guma outra técnica que vimos até aqui, porque o algoritmo deveria simplesmente 
escrever uma string (constante) na tela. 
 
EXEMPLO PRÁTICO 2 
Elaborar um algoritmo para ler o nome do usuário e escrever este nome na tela; 
 Variáveis 
 Nome : String 
Início 
 Leia Nome 
Algumas linguagensde programação, geralmente baseadas em object pascal, utilizam 
atribuição com: = (dois pontos igual). A maioria das linguagens reais utiliza somente o = 
(igual). Mas é sempre importante consultar a lista de palavras reservadas e comandos de 
uma linguagem antes de iniciar algum tipo de programação. 
 
 
 
 
 
 
, 
 
 
18 
 
 
 Escreva Nome 
Fim 
Note que neste algoritmo já utilizamos o comando para ler algo do teclado, 
isso se dá pelo fato de que surgiu a necessidade de interagir com o usuário, o algo-
ritmo necessitou do nome do usuário, então este nome foi lido do teclado. Mas note 
que nada informou ao usuário que ele deveria digitar o seu nome, então é sempre 
importante informarmos o usuário o que desejamos que ela faça. Portanto uma cor-
reção para o algoritmo do exemplo anterior fica da seguinte forma: 
 
 Variáveis 
 Nome : String 
Início 
 Escreva “Digite o seu Nome:” 
 Leia Nome 
 Escreva Nome 
Fim 
 
Você percebeu que a palavra Nome apareceu algumas vezes distintas no 
corpo do algoritmo? 
Bom, na primeira vez que a palavra Nome aparece, ela está entre aspas du-
plas e é um texto a ser exibido na tela. Na segunda vez que a palavra Nome aparece, 
ela está sem aspas e é uma variável que irá armazenar a informação que o usuário 
digitar no teclado. 
 
 
 
EXEMPLO PRÁTICO 3 
Elaborar um algoritmo para ler DOIS números e escrever a soma dos números. 
Variáveis 
Numero1 : inteiro 
 Numero2 : inteiro 
Portanto, sempre que estiver usando VARIÁVEIS não utilize aspas, pois com aspas a sua 
variável deixará de ser uma variável e será um TEXTO SIMPLES. 
 
 
 
 
 
 
, 
 
 
19 
 
 
 Resultado : inteiro 
Início 
 Escreva “Digite um número para somar” 
 Leia Numero1 
 Escreva “Digite outro número para somar” 
 Leia Numero2 
 Resultado = Numero1 + Numero2 
 Escreva Resultado 
Fim 
 
 
 
 
 
Os algoritmos e programas servem para definir estruturas computacionais que automati-
zam parte ou o todo de tarefas do nosso dia a dia. Com programação de computadores 
podemos facilitar e agilizar muito diversas tarefas repetitivas e cruciais nas nossas ativida-
des. Podemos informatizar tudo o que fazemos, todas as tarefas de nossa profissão podem 
receber alguma ajuda da programação de computadores para se tornar mais eficiente 
e rápida. Pense em uma atividade que você realiza em seu dia a dia, agora imagine esta 
atividade automatizada. Proponha um algoritmo para resolver isto para você. 
Prezado aluno (a), para que você expanda um pouco mais seus conhecimentos sobre os 
temas abordados nesta unidade sugerimos duas obras para leitura: 
 O livro “Algoritmos: lógica para desenvolvimento de programacão de computadores"” 
(2016) de José Augusto N. G. Manzano, Jayr Figueiredo de Oliveira. Disponível em: 
https://bit.ly/2LVQDU1. Acesso em: 08 maio 2020; 
“Introdução a Programação e aos algoritimos” (2019) de João Araujo Ribeiro. Disponí-
vel em: https://bit.ly/3pu9Vxs. Acesso em: 08 maio 2020.
 
 
 
 
 
 
, 
 
 
20 
 
 
FIXANDO O CONTEÚDO 
1. Sobre Compiladores de Linguagens de Programação, marque a alternativa cor-
reta. 
 
a) Um Compilador é um programa de computador que realiza tarefas do nosso dia 
a dia. 
b) O compilador recebe um código executável e transforma este código em um có-
digo fonte, um algoritmo que será lido por um programador. 
c) Compiladores são máquinas de transformação que conseguem transformar qual-
quer algoritmo em programas de computador. 
d) O compilador recebe um código fonte e transforma este código em um programa 
executável, um programa real que irá rodar no computador e executar as tarefas 
predefinidas para o mesmo. 
e) Para compilar um programa de computador é preciso fazer isso no mesmo com-
putador que o programa irá rodar, se a compilação for outro computador o pro-
grama não irá rodar. 
 
2. Sobre as definições de níveis das linguagens, marque a alternativa correta. 
 
a) O nível de uma linguagem determina a quantidade de código que ela tem. 
b) Uma linguagem de alto nível é mais eficiente que uma linguagem de baixo nível. 
c) Os níveis servem para classificar as linguagens de programação em eficientes ou 
ineficientes, enquanto maior o nível de uma linguagem, mais eficiente ela é. 
d) Uma linguagem de baixo nível não deveria ser utilizada para programas que reali-
zam boas tarefas. 
e) As linguagens de programação que estão mais próximas da linguagem humana 
são chamadas de linguagens de alto nível. 
 
3. Leia as afirmativas abaixo e marque a alternativa CORRETA. 
 
I. Um algoritmo é uma sequência lógica de instruções para realizar uma determi-
nada tarefa. 
II. Um algoritmo não necessita ter um conjunto muito claro de instruções, uma vez 
 
 
 
 
 
 
, 
 
 
21 
 
 
que algumas dicas sobre a realização das tarefas sejam informadas, já é o sufi-
ciente para sua execução. 
III. As instruções definidas por um algoritmo podem ser uma receita de bolo, um 
manual de instruções de um aparelho qualquer, uma sequência para somar 
dois números, dentre outros. 
 
a) Apenas I está correta. 
b) Apenas I e II estão corretas. 
c) Apenas II está correta. 
d) Apenas I e III estão corretas. 
e) Todas as alternativas estão corretas. 
 
4. Como vimos no texto, um algoritmo é uma sequência lógica e bem estruturada de 
ações a serem executadas para se realizar uma determinada: 
 
a) conversa. 
b) tarefa. 
c) corrida. 
d) leitura. 
e) escrita. 
 
5. Leia as afirmativas abaixo e marque a alternativa CORRETA. 
 
I. Sintaxe é o termo utilizado para descrever a forma como um comando ou ins-
trução é definida. 
II. Uma linguagem de programação é um conjunto de símbolos e regras de sintaxe 
que permitem a construção de sentenças que descrevem de forma precisa 
ações compreensíveis e executáveis para o computador. 
III. O portugol é um algoritmo (escrito em português estruturado) utilizando as sin-
taxes e semânticas parecidas com uma linguagem de programação. 
 
a) Apenas I está correta. 
b) Apenas I e II estão corretas. 
c) Apenas II está correta. 
 
 
 
 
 
 
, 
 
 
22 
 
 
d) Apenas I e III estão corretas. 
e) Todas as alternativas estão corretas. 
 
6. Leia as afirmativas abaixo e marque a alternativa CORRETA. 
 
I. Uma variável é um espaço reservado na memória para armazenar os valores 
utilizados em tempo de execução dentro de um programa de computador. 
II. Independente do tipo de linguagem de programação utilizada, não temos a 
obrigação de definir tipos de dados para as variáveis, já que os tipos de dados 
são definidos pelos valores assumidos por cada variável. 
III. As constantes são variáveis que recebem valores predefinidos, como textos e 
números e armazenam estes valores até que os mesmos precisam ser modifica-
dos. 
 
a) Apenas I está correta. 
b) Apenas I e II estão corretas. 
c) Apenas II está correta. 
d) Apenas I e III estão corretas. 
e) Todas as alternativas estão corretas. 
 
7. Leia as afirmativas abaixo e marque a alternativa CORRETA. 
 
I. Entrada é toda a informação que o algoritmo recebe. Esta entrada sempre de-
verá ser armazenada em algum lugar, como por exemplo, em variáveis. 
II. Processamento é todo tipo de processamento que o algoritmo realiza como 
atribuir um valor a alguma variável, realizar alguns tipos de tomada de decisão 
e algum tipo de repetição. 
III. Saída é a exibição dos resultados em tela, ou escrita em arquivos, ou em impres-
sora. 
 
a) Apenas I está correta. 
b) Apenas I e II estão corretas. 
c) Apenas II está correta. 
d) Apenas I e III estão corretas. 
 
 
 
 
 
 
, 
 
 
23 
 
 
e) Todas as alternativas estão corretas. 
 
8. Marque a alternativa correta. 
 
a) As palavras reservadas são algumas palavras de uma linguagem de programação 
que precisamos reservar antes de sua utilização. 
b) As tarefas de entrada e saída em um algoritmo são tarefas complementares de 
devem sempre ser realizadas em conjunto.c) Sintaxe é um termo utilizado em algoritmos e programação para descrever a forma 
básica de uma instrução ou comando. 
d) A ordem de precedência dos operadores determina a ordem que devemos utilizar 
os mesmos, não podendo utilizar um antes do outro que tenha maior precedência. 
e) Para atribuirmos um valor a uma variável, devemos utilizar o operador de lógica 
relacional atribuída. 
 
 
 
 
 
 
 
, 
 
 
24 
 
 
LÓGICA DE PROGRAMAÇÃO 
 
 
 
 
 ESTRUTURA CONDICIONAL – (TOMADA DE DECISÕES) 
Quando temos que tomar algum tipo de decisão ou verificar o conteúdo de 
alguma variável, devemos utilizar uma Estrutura Condicional ou tomada de decisão. 
Esta é uma estrutura binária (verificar dois operadores por vez) e que retorna um valor 
lógico (verdadeiro ou falso). 
A estrutura condicional verifica uma dada condição e retorna uma resposta 
de verdadeiro se a condição for verdadeira ou uma resposta de falso se a condição 
for falsa. 
 
SINTAXE: 
Se (condição) então 
Início 
 <executa se condição for verdadeira> 
Fim 
Onde: 
 
Se ... então, são palavras reservadas que representam a estrutura condicional. 
(Condição) é uma condição lógica. Geralmente esta condição lógica é utili-
zada com operadores relacionais (como: ==, !>, <, >, <=, >=). Ex.: (A == 10), verifica se 
a variável A é igual a 10, ou seja, se o conteúdo da variável A é o número 10. 
Início e fim são as palavras reservadas que determinam um bloco de coman-
dos para a estrutura em questão. 
Entre as linhas que contém as palavras reservadas início e fim, devemos escre-
ver as linhas que desejamos executar se a (condição) for estabelecida como verda-
deira. 
UNIDADE 
 
 
 
 
 
 
, 
 
 
25 
 
 
 
 
 
 
Já vimos os princípios básicos de entrada e saída, como por exemplo, como 
ler um valor referente a nota final de um determinado aluno e como exibir esta infor-
mação. 
Mas, agora, se desejarmos verificar se este aluno foi aprovado e escrever na 
tela uma mensagem informando esta situação, o que devemos fazer? 
A resposta é simples: utilizar uma estrutura de tomada de decisão, Se ... então. 
Vamos ver como isso funciona... 
 
Variáveis 
 Resultado : Real 
Início 
 Escreva “Digite a nota final do aluno : “ 
 Leia Resultado 
 Se (Resultado >= 70) então 
 Escreva “O aluno está APROVADO”; 
Fim 
 
Note que no exemplo acima foi omitido as palavras reservas início e fim dentro 
do se.…então. Mas, se desejar colocar o seu código ficará assim: 
Variáveis 
Em programação estruturada de computadores, mais especificamente em linguagens 
que limitam os seus blocos de comandos com palavras reservadas (no nosso caso início e 
fim), quando temos a definição de uma estrutura qualquer (por exemplo, o se ... então) 
esta estrutura executa somente a PROXIMA LINHA. Por isso quando temos mais de uma 
linha de código em nossa estrutura devemos usar as palavras reservadas para limitação 
de bloco de códigos início e fim. 
Então, quando temos mais de uma linha de código para executar com uma determinada 
tarefa, temos obrigatoriamente que usar início e fim, mas quando temos somente uma 
linha de código para executar, podemos escolher entre usar ou não as palavras reserva-
das início e fim. 
 
 
 
 
 
 
, 
 
 
26 
 
 
 Resultado : Real 
Início 
 Escreva “Digite a nota final do aluno : “ 
 Leia Resultado 
 Se (Resultado >= 70) então 
 início 
 Escreva “O aluno está APROVADO”; 
 fim 
Fim 
 
 ESTRUTURA CONDICIONAL COMPOSTA – (SE... ENTÃO ANINHADOS) 
Note que no exemplo do tópico anterior verificamos somente se o aluno foi 
aprovado. Para verificarmos se o aluno foi reprovado, teríamos que fazer outro se... 
então para verificar tal situação. Veja: 
 
Variáveis 
 Resultado : Real 
Início 
 Escreva “Digite a nota final do aluno : “ 
 Leia Resultado 
 Se (Resultado >= 70) então 
 Escreva “O aluno está APROVADO” 
 Se (Resultado <70) então 
 Escreva “O aluno está REPROVADO” 
Fim 
 
Vamos pegar a primeira estrutura condicional (se (resultado >=70) então) 
como sendo o teste1 e a segunda estrutura condicional (se (resultado <70) então ) 
como sendo o teste2. 
No trecho de código escrito no exemplo acima, será executado a teste1 e 
depois, independente do resultado do teste1, será executado o teste2. Isso, por que 
as estruturas condicionais estão separadas; elas não têm nenhuma relação uma com 
a outra, e isso faz com o código fique mais lendo de se executar, por que faz mais 
 
 
 
 
 
 
, 
 
 
27 
 
 
testes lógicos e fique mais complicado entender, por que as estruturas estão separa-
das. 
Para resolver este problema, e outros que ainda não citamos, devemos utilizar 
a estrutura condicional composta que é o uso da palavra reservada senão para de-
terminar a segunda opção de uma estrutura condicional sem ter que realizar outro 
teste, evitando com isso testes desnecessários, que tornam o programa mais lento e 
pesado. 
 
SINTAXE: 
 
Se (condição) então 
 <executa se condição for verdadeira> 
Senão 
 <executa se condição for falsa> 
 
Neste caso podemos usar ou não início e fim para determinar blocos de códi-
gos conforme já definimos antes. 
 
 
Veja: 
Se (condição) então 
início 
 <executa se condição for verdadeira> 
fim 
Senão 
inicio 
 <executa se condição for falsa> 
fim 
 
Note que, se aplicarmos este tipo de estrutura no nosso exemplo de aprovado 
ou reprovado, vamos eliminar o teste2. 
Assim, nosso exemplo fica da seguinte forma: 
 
Variáveis 
 
 
 
 
 
 
, 
 
 
28 
 
 
 Resultado : Real 
Início 
 Escreva “Digite a nota final do aluno : “ 
 Leia Resultado 
 Se (Resultado >= 70) então 
 Escreva “O aluno está APROVADO” 
 Senão 
 Escreva “O aluno está REPROVADO” 
Fim 
 
Em um modo geral, podemos dizer que a palavra reservada senão abrange 
tudo aquilo que o se... então deixou passar. Ela se comporta como o caso contrário 
da condição estipulada. 
Vamos analisar o exemplo acima: 
Na estrutura condicional perguntamos se o conteúdo da variável Resultado é 
maior ou igual a 70, por que se for, o aluno está aprovado. 
Depois usamos a palavra reservada senão, que quer dizer o seguinte: TUDO 
QUE NÃO FOR MAIOR OU IGUAL A 70. Ou seja, todos os valores que são menores que 
70. 
 
Vejamos outro exemplo... 
Um algoritmo verificador de SENHAS, verifica se uma determinada senha é 
igual a senha do sistema, suponhamos que a senha seja a seguinte string “senha123”. 
 
Variáveis 
 Senha : string 
Início 
 Escreva “Digite a Senha : “ 
 Leia Senha 
 Se (Senha = “senha123”) então 
 Escreva “Senha CORRETA” 
 Senão 
 Escreva “Senha ERRADA” 
Fim 
 
 
 
 
 
 
, 
 
 
29 
 
 
 
Vamos analisar este algoritmo: 
 
se o usuário digitar a senha “senha123” o algoritmo informa que a senha é cor-
reta, se não o algoritmo informa que a senha é errada. Ou seja, para qualquer valor 
diferente de “senha123” é informado que a senha é errada. Portanto, o senão será 
executado quando a condição assumir qualquer valor que não seja o definido no 
se.…então. 
 
EXEMPLOS 
 
 Algoritmo para ler o nome de uma pessoa e escrever na tela uma mensagem 
de boas-vindas se esta pessoa se chamar Lucca. 
 
Variáveis 
 Nome : string 
Início 
 Escreva “Digite o seu nome : “ 
 Leia nome 
 Se (nome == “Lucca”) então 
 Inicio 
 Escreva “Seja bem-vindo!” 
 Fim 
Fim 
 
 Algoritmo para ler um número e escrever uma mensagem na tela informando 
se este número é maior ou menor que 10. 
 
Variáveis 
 Num: inteiro 
Início 
 Escreva “Digite um número inteiro : “ 
 Leia num 
 Se (num > 10) então 
 
 
 
 
 
 
, 
 
 
30 
 
 
 Início 
 Escreva “Número é maior que 10” 
 Fim 
 Senão 
 Início 
 Escreva “Número não é maior que 10” 
 Fim 
Fim 
 
 Algoritmo para ler um número e escrever na tela o nome da cidade correspon-
dente a este número, sendo, número 1 = Caratinga, número 2 = Ipatinga e 
número 3 = Cel. Fabriciano. E paraqualquer outro número escreva Belo Hori-
zonte. 
 
Variáveis 
 Num: inteiro 
Início 
 Escreva “Digite um número : “ 
 Leia num 
 Se (num == 1) então 
 Início 
 Escreva “Caratinga” 
 Fim 
 Senão 
 Se (num == 2) então 
 Início 
 Escreva “Ipatinga” 
 Fim 
 Senão 
 Se (num == 3) entao 
 Início 
 Escreva “Cel. Fabriciano” 
 Fim 
 Senão 
 
 
 
 
 
 
, 
 
 
31 
 
 
 Início 
 Escreva “Belo Horizonte” 
 Fim 
Fim 
 
 OPERADORES LÓGICOS 
Os operadores lógicos são palavras reservadas que iremos utilizar para juntar 
duas ou mais condições lógicas. 
 
Quadro 4: Operadores Lógicos 
OPERADOR FUNÇÃO 
E 
Este operador verifica o valor lógico de duas expressões e retorna 
um valor lógico VERDADEIRO somente se o valor das duas expres-
sões for VERDADEIRO. 
Se o valor lógico de pelo uma expressão for falso, o resultado será 
FALSO. 
OU 
Este operador verifica o valor lógico de duas expressões e retorna 
um valor lógico VERDADEIRO se pelo menos uma das duas ex-
pressões for VERDADEIRO. 
Este operador retornará FALSO somente quando as duas expres-
sões forem FALSAS. 
NÃO 
Este operador troca o valor lógico de uma expressão. 
Se a expressão tem o valor lógico VERDADEIRO, este operador 
retorna um valor FALSO. 
Se a expressão tem o valor lógico FALSO, este operador retorna 
um valor VERDADEIRO. 
Fonte: Elaborado pelo Autor (2020) 
 
Para utilizar os operadores lógicos “e” e “ou” devemos simplesmente colocá-
los entre duas expressões lógicas. 
Para utilizar o operador lógico “não” devemos colocá-lo à esquerda da ex-
pressão lógica em questão. 
 
SINTAXE: 
<expressão lógica> e <expressão lógica> 
<expressão lógica> ou <expressão lógica> 
Não <expressão lógica> 
EXEMPLO: 
 
 
 
 
 
 
, 
 
 
32 
 
 
 em um determinado concurso público, foi determinado que os candi-
datos poderiam ter somente entre 30 a 40 anos de idade. Candidatos mais novos que 
30 anos e candidatos mais velhos que 40 anos, devem ser eliminados. Elabore um 
algoritmo para LER a idade de um candidato e ESCREVER na tela uma mensagem 
informando se ele foi eliminado ou não. 
Variáveis 
 Idade : inteiro 
Início 
 Escreva “Informe a sua Idade : “ 
 Leia Idade 
 Se (Idade >=30) e (idade <=40) então 
 Inicio 
 Escreva “Candidato passou para próxima etapa” 
 Fim 
 Senão 
 Início 
 Escreva “Candidato NÃO passou para próxima etapa” 
 Fim 
fim 
 
 LAÇOS DE REPETIÇÃO 
Muitas vezes no desenvolvimento de programas temos a necessidade de re-
petir algum trecho várias vezes, para isso temos duas alternativas, reescrever este tre-
cho de código quantas vezes forem necessárias ou utilizar uma estrutura de repetição 
que irá pegar um trecho de código e repeti-lo quantas vezes forem necessárias. 
Com certeza a segunda alternativa é bem melhor que a primeira, você não 
acha? 
Imagine que você tem que fazer um algoritmo para ler 5 números. É tranquilo, 
não é? Basta pedir para o usuário digitar o primeiro número e depois armazená-lo em 
uma variável, agora vamos pedir o segundo número e depois armazená-lo em outra 
variável, e assim por diante até chegar no quinto número. Está bem, é tudo muito 
“bonitinho” e tranquilo de fazer, mas agora imagine você tendo que fazer um algo-
ritmo para a Faculdade Única, que deve ler o nome de todos os seus alunos, que 
 
 
 
 
 
 
, 
 
 
33 
 
 
devem ser mais de 200000 (duzentos mil). 
 
Faça isso individualmente, pedindo e armazenando nome por nome… 
 
Fica complicado não é mesmo? 
 
Para isso utilizamos os laços de repetição que são estruturas que repetem o seu 
conteúdo quantas vezes forem estabelecidas por uma condição. Veremos agora os 
DOIS tipos de laços de repetição mais conhecidos e usados, que são os laços PARA 
e ENQUANTO. 
 
 
 
2.4.1 Laço “para” 
No laço de repetição PARA a estrutura definida dentro do laço irá repetir uma 
quantidade finita de vezes. Essa quantidade finita de vezes será parametrizada na 
definição do laço, por uma variável de controle. Vejamos: 
SINTAXE DO LAÇO “PARA”: 
 
Para <variável> = <valor inicial> ate <valor final> Faça 
Início 
 <o que desejar repetir> 
Fim; 
 
Todo LAÇO DE REPETIÇÃO independente da Linguagem de programação (estruturada) ou 
do Tipo de Laço utilizado, tem as seguintes características: 
 Uma variável de controle. 
 Um teste para determinar o momento de parar. 
 Uma estrutura que irá modificar os valores testados. 
Em um modo geral, todo e qualquer laço de repetição deve ter, uma variável de controle, 
um valor inicial para esta variável, um teste lógico geralmente realizado nesta variável de 
controle, e um incremento, decremento ou outra ação que irá modificar o valor desta 
variável de controle. 
 
 
 
 
 
 
, 
 
 
34 
 
 
Na estrutura definida acima temos o seguinte: 
 
PARA é uma palavra reservada que indica o início da definição do laço de 
repetição. 
<VARIÁVEL> é uma variável do tipo inteiro, que será utilizada para controlar a 
quantidade de vezes que o nosso laço irá repetir (chamamos esta variável de variável 
de controle, porque é ela que controla o laço). 
= é o operador de ATRIBUIÇÃO, pois a variável de controle vai receber o valor 
inicial. 
<VALOR INICIAL> é o valor inicial que a variável de controle vai receber para 
iniciar a contagem de LOOP (voltas) do laço. 
ATE é uma palavra reservada que faz o papel de CHEFE no laço, é ele que 
verifica se a variável de controle já alcançou o valor final, e é ele que incrementa o 
valor da variável de controle. 
<VALOR FINAL> é a condição de parada do laço. Quando a variável de con-
trole atingir este valor, o laço será interrompido. 
FAÇA é uma palavra reservada que diz ao compilador para executar a pró-
xima linha de comando a cada vez que o laço der um loop (volta). 
 
 
 
EXEMPLOS: 
 
 Um laço que roda 10 vezes: 
 
Primeiro devemos declarar uma variável para este laço. Vamos pensar numa 
Para aprofundar seu conhecimentos, temos algumas sugestões de materiais. Vamos lá! 
 Alguns exemplos de comandos de repetição: https://bit.ly/3b7eFEa. (Acesso em: 09 
maio 2020); 
 Visual-G – Estruturas de Repetição: https://bit.ly/37kzjzr. (Acesso em: 09 maio 2020); 
 O livro “Algoritmos e programacão com exemplos em Pascal e C” (2014) de autoria 
de Nina Edelweiss e Maria Aparecida Castro Livi. Disponível em: 
https://bit.ly/3pmCcpD. Acesso em: 09 maio 2020. 
 
 
 
 
 
 
, 
 
 
35 
 
 
variável X do tipo inteiro. 
O nosso laço fica da seguinte forma: 
Para X = 1 até 10 faça 
O laço acima vai repetir 10 vezes porque na sua declaração foi definido que 
a variável de controle começa com 1 e vai até 10 contando de 1 em 1. Esta conta-
gem é feita pela palavra reservada ate. 
Portanto, X começa com o valor 1, quando o laço der um loop (volta) X será 
incrementado para 2, quando o laço der outro loop (volta) X será incrementado para 
3, e assim por diante até que X receba o valor 10. 
 
 Para lermos o nome e a idade de 10 pessoas, podemos pedir para ler estes da-
dos 10 vezes em nosso programa, ou pedir somente uma vez dentro de um laço, 
que irá repetir este pedido as 10 vezes que desejamos. 
 
Variáveis 
 i,idade : inteiro; 
 nome : string; 
Início 
 para i = 1 até 10 faça 
 Início 
 Escreva “Digite o seu nome: ” 
 Leia nome; 
 Escreva “Digite a sua idade: ” 
 Leia idade; 
 Fim; 
Fim. 
 
O código acima está lendo o nome e a idade de 10 pessoas, usando laço de 
repetição PARA. 
 
2.4.2 Laço “enquanto” 
Vimos que no Laço PARA todas as ações estão embutidas na declaração do 
mesmo, no laço ENQUANTO devemos especificar cada uma das ações executadas 
 
 
 
 
 
 
, 
 
 
36 
 
 
pelo laço de repetição. 
No laço PARA temos a inicialização da variável de controle, o incremento, e a 
condição de parada em uma só linha, a linha da declaração do laço. 
No laço ENQUANTO, devemos especificar cada uma destas etapas separada-
mente. 
 
SINTAXE DO LAÇO ENQUANTOenquanto (condição) faça 
início 
 <comando a executar> 
fim 
Onde: 
 
ENQUANTO é a palavra reservada que determina o início do laço. 
 
(condição) é uma condição de parada do laço, o laço ENQUANTO será exe-
cutado até que a condição seja falsa, ou, enquanto a condição for verdadeira. 
 
FAÇA é uma palavra reservada que diz ao compilador para executar a pró-
xima linha de comando a cada vez que o laço der um loop (volta). 
 
 
 
EXEMPLO: 
i = 1; 
Enquanto (i<10) faça 
Início 
 Escreve “Olá Mundo!” 
 i = i + 1 
fim. 
Devemos sempre lembrar que o laço enquanto não tem uma área para determinar o valor 
inicial e o tipo de incremento da variável de controle. Portanto devemos sempre fazer 
estas duas operações junto com o laço. 
 
 
 
 
 
 
, 
 
 
37 
 
 
 Reescrevendo o exemplo do laço PARA com o laço ENQUANTO, temos: 
Variáveis 
 i,idade : inteiro; 
 nome : string; 
Início 
 i = 1 
enquanto (i<10) faça 
 Início 
 Escreva “Digite o seu nome:” 
 Leia nome 
 Escreva “Digite a sua idade:” 
 Leia idade 
 i = i + 1 
 Fim; 
Fim. 
 
 
 
 
 
 
 
, 
 
 
38 
 
 
FIXANDO O CONTEÚDO 
1. Quando temos que tomar algum tipo de decisão ou verificar o conteúdo de al-
guma variável, devemos utilizar uma Estrutura Condicional ou tomada de decisão 
PORQUE 
As tomadas de decisão são realizadas por estruturas condicionais, que avaliam a 
condição em questão e retornam verdadeiro ou falso de acordo com o resultado 
da condição. 
 
Sobre essas duas afirmativas, é CORRETO afirmar que: 
 
a) as duas são verdadeiras, e a segunda é uma justificativa correta da primeira. 
b) as duas são verdadeiras, mas não estabelecem relação entre si. 
c) a primeira é uma afirmativa falsa; e a segunda, verdadeira. 
d) a primeira é uma afirmativa verdadeira; e a segunda, falsa. 
e) as duas são verdadeiras, e a primeira é uma justificativa correta da segunda. 
 
2. Sobre as estruturas condicionais, é correto afirmar que: 
 
a) a estrutura condicional verifica uma dada condição e retorna uma resposta de 
falso se a condição for verdadeira ou uma resposta de verdadeira se a condição 
for falsa. 
b) a estrutura condicional verifica uma dada condição e retorna uma resposta de 
verdadeiro se a condição for verdadeira ou uma resposta de falso se a condição 
for falsa. 
c) a estrutura condicional verifica se um bloco de código de condições de roda cor-
retamente ou não no algoritmo. 
d) uma estrutura condicional é utilizada para repetir determinada parte do algoritmo. 
e) as estruturas condicionais podem ser utilizadas em diversos pontos dentro dos al-
goritmos, mas não podem estar uma dentro da outra. 
 
3. Quando temos que tomar algum tipo de decisão ou verificar o conteúdo de al-
guma variável 
a) devemos utilizar estrutura de repetição para encontrar o resultado. 
 
 
 
 
 
 
, 
 
 
39 
 
 
b) podemos utilizar uma estrutura tipo array. 
c) devemos utilizar a área de declaração de variáveis. 
d) vamos encontrar uma situação difícil de resolver. 
e) devemos utilizar uma Estrutura Condicional ou tomada de decisão. 
 
4. Analise a afirmativa abaixo e marque a alternativa que preencha corretamente 
os espaços em branco na ordem que aparecem no texto. 
A estrutura condicional verifica uma dada ________ e retorna uma resposta de ver-
dadeiro se a condição for ________ ou uma resposta de ________ se a condição for 
falsa. 
 
a) Verdadeira; condição; falso. 
b) Estrutura; verdadeira; nula. 
c) Condição; verdadeira; falso. 
d) Variável; determinada; falso. 
e) Informação; analisada; retorno. 
 
5. Avalie a seguintes afirmativas e marque a alternativa correta. 
 
I. Os operadores lógicos são palavras reservadas que iremos utilizar para juntar 
duas ou mais condições lógicas. 
II. Para utilizar os operadores lógicos “e” e “ou” devemos simplesmente colocá-los 
entre duas expressões lógicas. 
III. O operador lógico “não” troca o valor lógico de uma expressão. 
 
a) Apenas I está correta. 
b) Apenas I e II estão corretas. 
c) Apenas I e III estão corretas. 
d) Apenas II está correta. 
e) Todas as alternativas estão corretas. 
 
6. Sobre o trecho de código abaixo, avalie a seguintes afirmativas e marque a alter-
nativa correta. 
Se (Resultado >= 70) então 
 
 
 
 
 
 
, 
 
 
40 
 
 
início 
Escreva “O aluno está APROVADO”; 
Fim 
 
I. Esta é uma estrutura que pode escrever mais de uma mensagem na tela. 
II. A mensagem de que o aluno está aprovado será apresentada para qualquer 
resultado acima de 70, mesmo sendo um valor muito alto. 
III. Se o resultado for menor que 70 irá apresentar que o aluno está reprovado. 
 
a) Apenas I está correta. 
b) Apenas II está correta. 
c) Apenas III está correta. 
d) Apenas I e II estão corretas. 
e) Apenas I e III estão corretas. 
 
7. Muitas vezes no desenvolvimento de programas temos a necessidade de repetir 
algum trecho várias vezes, para isso temos duas alternativas, reescrever este trecho 
de código quantas vezes forem necessárias ou utilizar uma: 
 
a) estrutura condicional. 
b) forma alternativa. 
c) variável de controle. 
d) estrutura de repetição. 
e) lógica mais elaborada. 
 
8. Todo LAÇO DE REPETIÇÃO independente da Linguagem de programação (estru-
turada) ou do Tipo de Laço utilizado, tem as seguintes características: 
 
a) um corpo que inicia obrigatoriamente com início; uma terminação obrigatória 
com fim. 
b) uma tomada de decisão sobre a validade dos valores; uma estrutura complexa 
que reduz a sua utilização. 
c) pode declarar diversas variáveis para utilização no programa; pode ter nomes pró-
prios em seu escopo. 
 
 
 
 
 
 
, 
 
 
41 
 
 
d) uma variável de controle; um teste para determinar o momento de parar; uma 
estrutura que irá modificar os valores testados. 
e) possui uma redefinição de tipos de dados; é utilizado para tomada de decisão; 
pode aparecer em qualquer lugar do programa. 
 
 
 
 
 
 
 
 
, 
 
 
42 
 
 
LINGUAGEM DE PROGRAMAÇÃO – 
C 
 
 
 
 INTRODUÇÃO 
Como vimos nos capítulos anteriores, um algoritmo pode ser definido como 
uma sequência lógica, bem definida e sem ambiguidade para descrever os passos 
necessários para se realizar uma tarefa. 
Estes algoritmos são rotinas computacionais que seguem o conceito básico de 
sistemas de computador, respeitando o fluxo de Entrada-Processamento-Saída. Estas 
rotinas, recebem valores de entrada e após o processamento destes, emite uma sa-
ída com informações processadas. 
Os tipos de dados são representações das classes de valores que podemos 
utilizar em nossos algoritmos (programas). 
Agora vamos utilizar o termo Programa para representar a codificação de um 
algoritmo em uma linguagem de programação, e é essa a definição de programa 
de computador, um algoritmo escrito em uma determinada linguagem de progra-
mação e traduzido para a linguagem de máquina. 
Programação de computadores é uma técnica de estruturar dados, abstrair 
os modelos reais, transformar as rotinas em fluxo estruturados, bem definidos e sem 
ambiguidade em uma linguagem de programação, ou seja, construir algoritmos em 
uma linguagem de programação e depois transformá-lo em um programa executá-
vel. 
Uma linguagem de programação é um conjunto de regras utilizadas para criar 
algoritmos, essas regras serão convertidas em linguagem de máquina, que define as 
instruções a serem executadas pelo computador 
 
 ESTRUTURA BÁSICA DE UM PROGRAMA C 
A linguagem de programação C é uma linguagem de programação que há 
muito tempo está consolidada no mercado e é extensamente utilizada como meio 
UNIDADE 
 
 
 
 
 
 
, 
 
 
43 
 
 
didático para o ensino de Linguagens de Programação e Programação de Compu-
tadores. Apesar da baixa produtividade em função de não ter componentes já pron-
tos, o uso da linguagem C se justifica pela sua sintaxe e poder de processamento e 
execução. Basicamente quase todas aslinguagens de programação existente hoje 
em dia são baseadas na linguagem C, então, um profissional que conhece de lógica 
de programação e conhece a estrutura de comandos e sintaxe da linguagem C, 
consegue programar em qualquer outra linguagem com o mínimo de esforço e de-
dicação. 
Basicamente tudo na linguagem C é função. Vamos falar mais à frente sobre 
funções, mas basicamente, uma função consiste em um bloco de códigos que re-
cebe um nome e é executado sempre que seu nome é chamado. 
Todo programa, escrito em qualquer linguagem de programação, precisa de 
um ponto inicial de execução, ou seja, de uma definição de qual parte do algoritmo 
(código) será executada primeiro. 
Na linguagem C, devemos criar uma função chamada de “main” (principal). 
Esta é a definição do ponto de início de execução do seu algoritmo (programa). 
A sintaxe de um código é a forma geral de escrita deste código, geralmente 
de forma explicativa e ilustrativa. 
Toda função na linguagem C tem um nome seguido de parêntesis e um corpo 
de execução limitado por chaves, Veja: 
 
main() 
{ 
} 
 
Na definição acima, temos a declaração de uma função principal. Main é o 
nome da função, os parêntesis são utilizados para representar que este nome é defi-
nitivamente uma função (nos capítulos seguintes trataremos um pouco mais sobre 
funções e conheceremos algumas formas de utilizar estes parêntesis). 
As chaves são utilizadas para limitar blocos de código, sempre utilizamos { 
(abre chaves) para iniciar um bloco de código e } (fecha chaves) para finalizar um 
bloco de código. 
Podemos escrever nossos programas de diversas formas, inclusive se você qui-
ser, pode escrever um programa inteiro em somente uma linha. Os exemplos abaixo 
 
 
 
 
 
 
, 
 
 
44 
 
 
ilustram estas possibilidades de escrita dos códigos. Por questão de organização e 
melhor legibilidade vamos adotar o ultimo código como estrutura de escrita dos nos-
sos programas. 
A forma de escrever um programa, sua organização visual, é chamada de 
identação. Uma boa identação consiste em um código escrito de maneira fácil para 
a leitura e identificação das instruções contidas no mesmo. 
 
 
 
main() { } 
 
main() 
 { } 
 
main() 
{ 
} 
 
 
É uma boa prática de programação deixar informações nos seus códigos indi-
cando o motivo de alguns comandos ou explicando a necessidade algumas opera-
ções. Para isso existe a opção de adicionar comentários junto ao código desenvol-
vido. 
Um comentário é um texto no meio do seu código que não será compilado e 
não será utilizado pelo programa, ele serve somente para informar alguma coisa para 
a pessoa que estiver lendo o seu programa fonte. 
Basicamente podemos utilizar dois tipos de comentários, os comentários de li-
nha ( // )e os comentários de bloco (/* */). 
O comentário de linha ( // ) comenta a linha até o seu fim. Tudo que vier depois 
das duas barras // não será interpretado pelo compilador e não fará parte do seu 
programa. 
O comentário de bloco abre uma área para digitação de texto comentado, 
e tudo que estiver após /* e antes do */ não será interpretado pelo compilador. 
 
Veja mais sobre indentação em: 
 Qual é a importância de indentar o código?. Disponível em: https://bit.ly/3qqYQid. 
Acesso em: 16 maio 2020; 
A Importância da Identação do Código na Programação. Disponível em: 
https://bit.ly/3qE0nBi. Acesso em: 16 maio 2020.
 
 
 
 
 
 
, 
 
 
45 
 
 
Exemplo: 
 
int main() //esta é a declaração da função main; 
{ //início do bloco main() 
 int valor; //estou declarando esta variável para ler o valor. 
 /* As variáveis n1 e n2 servem para controlar a quantidade mínima e 
máxima do valor informado no programa. 
 Estas variáveis forma criadas para testar a funcionalidade do comentá-
rio de bloco, ondo eu utilizo mais de uma linha para explicar o motivo de utiliza estas 
variáveis em meu código. 
 */ 
floar n1, n2; 
} //final do bloco main() 
 
3.2.1 Blocos de comandos 
Os blocos de comandos são uma sequência de linhas de código agrupadas 
para executarem juntas, uma após a outra. Os blocos servem para limitar o corpo de 
execução das estruturas, como por exemplo dentro de uma função ou dentro de 
uma estrutura de repetição. As linhas de código de um bloco de comandos são limi-
tadas pelas palavras reservadas que determinam o início e o fim de estruturas. Na 
linguagem C as limitações de início e fim são representadas por { (abre chaves) e por 
} (fecha chaves). 
 
 A FUNÇÃO MAIN() 
Como citamos anteriormente, a função main(), também conhecida como fun-
ção principal ou função de início, é a função que irá indicar para o compilador onde 
deverá iniciar a execução do programa (quando este for transformado em um có-
digo de máquina). Esta função é obrigatória e deve ser implementada em algum 
lugar do programa para marcar o ponto de início da execução do mesmo. 
No corpo de execução da função main(), bem como em todas as outras fun-
ções que podemos criar, podemos escrever qualquer comando ou instrução perten-
cente à linguagem. Todos os comandos de instrução devem ser encerrados com um 
 
 
 
 
 
 
, 
 
 
46 
 
 
ponto e vírgula ( ; ) para indicar ao compilador que a instrução se encerra naquele 
ponto e tudo que vier posterior faz parte de uma nova instrução. No decorrer de nosso 
estudo vamos identificar e assimilar o que é uma instrução e o que não é uma instru-
ção (comando). 
 
 
 
 
 
 BIBLIOTECAS E FUNÇÕES COMPLEMENTARES 
A estrutura básica da linguagem C é muito enxuta e robusta e não possui todas 
as definições de comandos e estruturas que precisamos para trabalham adequada-
mente. 
Por isso, a linguagem C trabalha com o conceito de declaração de bibliote-
cas. As bibliotecas são coleções de funções/comandos complementares para pro-
porcionar todo o poder de desenvolvimento na linguagem C. 
Todo compilador C vem com um conjunto de bibliotecas mais comuns para 
uso geral, no decorrer de nosso estudo iremos conhecer algumas bibliotecas deste 
conjunto, sempre que forem necessárias. 
A primeira coisa que devemos fazer em nossos programas escritos na lingua-
gem C é definir as bibliotecas que iremos utilizar, antes mesmo de declarar a função 
main(). 
Nem todas a linhas de código são finalizadas com o ponto e vírgula ( ; ), somente as linhas 
de comandos de instrução que possuem esta definição de encerramento. As linhas de 
Declarações de funções, Estruturas Condicionais, Estruturas de Repetição, abertura e fe-
chamento de bloco, dentre outras, não possuem ponto e vírgula ( ; ). 
No decorrer deste livro iremos demonstrar onde tem e onde não tem ponto e vírgula no 
final das linhas. Veja um pouco mais sobre este assunto nas referências abaixo: 
 Indentação, Espaço em Branco e Ponto e Vírgula em C++. Disponível em: 
https://bit.ly/2NuR1cA. Acesso em: 16 maio 2020. 
 Introdução à Linguagem C (Prof. Márcio Sarroglia Pinho). Disponível em: 
https://bit.ly/2ZpIGcO. Acesso em: 16 maio 2020. 
 
 
 
 
 
 
, 
 
 
47 
 
 
Para declarar uma biblioteca (ou cabeçalho) usamos a diretiva de declara-
ção #include. 
Sintaxe: 
#include<nome_biblioteca.extensao_biblioteca> 
Ex.: 
#include<stdio.h> 
#include<string.h> 
 
 
 
 CONSTANTES E VARIÁVEIS 
Constantes e Variáveis são as principais formas de utilização de tipos de dados 
e memória nas linguagens de programação. 
As constantes, como o nome sugere, são definições fixas. Elas representam va-
lores predefinidos que podem ser utilizados no decorrer de um programa. Sempre uti-
lizamos nomes para identificar estes valores. 
No decorrer de um programa que realiza operações matemáticas, onde pre-
cisarem utilizar o valor de PI (π) em diversos locais dentro deste programa, podemos 
utilizar a notação numérica de pi (3.14159265359) ou, uma vez que este valor nunca 
muda, podemos utiliza uma constante de ntro de nosso programa para representar 
este item. 
Paradeclarar uma constante utilizamos a palavra reservada #define, seguida 
do nome da constante, seguindo do seu valor. 
 
Ex. 
#define pi 3.14159265359 
 
Uma vez declarada uma constante, podemos utilizar o seu nome em substitui-
ção ao seu valor. No caso do exemplo acima, toda vez que precisar utilizar o valor 
Bibliotecas par https://bit.ly/3qqm7Ra
 
 
 
 
 
 
, 
 
 
48 
 
 
de PI, basta usar o nome da constante declarada para ele, pi. 
 
 
 
Uma variável é uma definição de memória que utilizamos para armazenar al-
guma informação de entrada ou de processamento do nosso programa. As variáveis 
são utilizadas para armazenar valores. 
Quando estamos trabalhando com computadores, estamos na verdade ma-
nipulando informações que estão em sua memória. Em um programa de computa-
dor, para realizar a soma de dois números, por exemplo, estes números devem estar 
armazenados na memória, e o resultado também deve ser armazenado na memória. 
Portanto, todo dado que for trabalhado no seu programa deve estar na memória. 
Para utilizar um dado valor em nosso programa, precisamos colocar este valor 
na memória do computador para ser tratado. Uma variável é um pedaço da memó-
ria que é reservada para utilização no seu programa. Na linguagem C, toda variável 
deve ser declarada, ou seja, sempre é necessário informar para o compilador que 
precisamos de um espaço na memória. No exemplo citado acima, onde temos dois 
números para serem somados e o resultado guardado na memória, devemos decla-
rar (reservar espaço na memória) três variáveis, uma para cada número da soma e 
outra para o resultado. 
 
 
 
A linguagem C é uma linguagem tipada, ou seja, deve-se conhecer o tipo de 
dados de cada informação a ser tratada previamente. O tipo de dados define a 
classe de valores que contem na informação, por exemplo, números inteiros, letras, 
números com casas decimais, textos, etc. 
Para declarar uma variável devemos indicar o tipo de dados e o nome da 
O valor de uma constante não pode ser alterado no decorrer do programa, somente em 
sua declaração. 
 
 
 
 
 
 
, 
 
 
49 
 
 
variável, finalizando com ponto e vírgula. 
Veja o exemplo abaixo que declara uma variável inteira chamada número e 
atribui o valor 20 a esta variável: 
 
main(){ 
 int número; 
 idade = 20; 
} 
A sintaxe da declaração de variáveis é dada pelo tipo de dados predomi-
nante desta variável seguido do nome que daremos a esta porção de memória para 
conseguirmos acessá-lo posteriormente. As declarações de variáveis sempre termi-
nam com ponto e vírgula. Podemos declara somente uma variável, informando o seu 
tipo, o seu nome e ponto e vírgula, ou declarar mais de uma variável do mesmo tipo, 
informando o tipo e os nomes das variáveis desejadas separadas com vírgula, mas 
no final da linha sempre devemos digitar o ponto e vírgula. 
 
- tipo_de_dados nome_da_variável; 
- tipo_de_dados nome1, nome2, nome3, ...; 
 
3.5.1 Tipos de dados básicos 
Os tipos de dados são definições da linguagem para representar conjuntos 
(classes) de valores, eles servem para informar ao compilador que tipo de valor de-
sejamos colocar em nossas variáveis, isso é importante para o programa conseguir 
determinar o tamanho de memória que deverá ser alocado para cada variável de-
clarada. 
Cada tipo de dado tem um nome e é capaz de armazenar uma certa quan-
tidade de memória determinada em bytes. A tabela abaixo relaciona os principais 
tipos de dados da linguagem C com seus respectivos tamanhos e faixa de valores 
que podem assumir. 
 
 
 
 
 
 
 
 
 
 
, 
 
 
50 
 
 
Tabela 1: Principais tipos de dados da linguagem C 
Tipo Bytes Escala 
char 1 -128 a 127 
int 2 -32.768 a 32.767 
float 4 3.4e-38 a 3.4e+38 
double 8 1.7e-308 a 1.7e+308 
void 0 Sem valor (vazio) 
Fonte: Elaborado pelo Autor (2020) 
 
Também podemos utilizar alguns modificadores de tipos para aumentar a ca-
pacidade de armazenamento das variáveis ou mesmo para limitar a utilização de 
algum tipo de valor. 
O modificador long associado ao tipo de dado, dobra o tamanho de armaze-
namento do mesmo. 
O modificado unsigned não permite valores negativos, deixando a faixa de 
valores que o tipo de dados pertence sempre iniciando de 0 (zero). 
 
long int (4 bytes) 
unsigned char (0 a 255) 
unsigned int (0 a 65.535) 
 
Declarando algumas variáveis a título de exemplo: 
int idade; 
float nota1, nota2, nota3; 
long int código; 
char letra; 
int número, valor, escolha, op01; 
 
Existem algumas regras para definição dos nomes das variáveis, segui-las é 
muito importante para evitar que erros aconteçam no seu programa: 
- Não podemos utilizar caracteres especiais e nem acentuação (exceto under-
line); 
- Deve sempre iniciar com uma letra (maiúscula ou minúscula) ou com o sím-
bolo de _ (underline), não podendo iniciar com número; 
- Não pode ser igual às palavras reservada da língua. Ex. int, main, printf, dentre 
outros. 
 
 
 
 
 
 
, 
 
 
51 
 
 
- Não pode ter espaço em branco, ou seja, valor total não é um nome válido. 
Devemos utilizar valor total ou valor_total; 
 
 
 
 ENTRADA E SAÍDA DE DADOS 
Entrada e Saída consistem nas operações de inserir e retirar informações de 
sistemas de computador. Estamos sempre pensando no sistema, então, entrada é a 
tarefa de “entrar” com informações no sistema, é o momento que iremos enviar al-
guma coisa para a memória utilizada pelo sistema. Saída é a tarefa de “retirar” infor-
mações do sistema, é a saída de dados do mesmo, é quando uma mensagem é 
exibida na tela, uma informação é gravada no banco de dados ou enviada para a 
impressora. 
 
3.6.1 A Função printf() 
A função printf() é uma função utilizada para saída de dados, ou seja, para 
enviar informações do sistema para a tela do computador. Ela pertence à biblioteca 
básica de I/O (input/output ou entrada/saída) que é usada em C. 
Ela não faz parte da definição da linguagem e necessita ser importada com a 
declaração de uma biblioteca. Algumas bibliotecas já implementam a função printf 
em seu escopo, a principal é stdio.h. 
Geralmente as biblioteca tem um nome reduzido de suas funcionalidade, 
stdio.h por exemplo, é a redução de Standard Input/Output, ou seja, entrada e Saída 
padrão. O .h é a extensão do arquivo de biblioteca da linguagem, h de Header, ou 
Cabeçalho. 
 
Sintaxe da função printf() 
printf(“texto a exibir”, lista de argumentos); 
Exemplo: 
main(){ 
A linguagem de programação C é sensível à caixa (case sensitive), ou seja, ela faz distin-
ção entre letras maiúsculas e minúsculas. Portanto única é diferente. 
 
 
 
 
 
 
, 
 
 
52 
 
 
 printf(“Amo física”); //escreve Amo física na tela. 
} 
 
A função printf sempre exibe um texto na tela. O primeiro parâmetro desta 
função, o “texto a exibir” é obrigatório para o seu funcionamento e deve conter o 
que se deseja que apareça. 
Utilizamos a “lista de argumentos” quando desejamos exibir na tela o valor de 
variáveis ou constantes no nosso programa. Para isso a função printf utiliza de alguns 
caracteres de controle para auxiliar na junção de texto com variáveis. 
Para exibir alguma variável, é preciso inserir o código de formatação do tipo 
de dados desta variável junto ao texto da função printf e colocar o nome da variável 
na lista de argumentos. Se tivermos mais de uma variável, estas devem ser separadas 
por vírgula. 
Vejamos alguns exemplos de utilização da função printf: 
 
printf(“Olá mundo, meu primeiro programa em C”); 
printf(“Posso escrever o número 1, assim.”); 
printf(“Ou posso escrever o número %d, assim”,1); 
printf(“O valor de X é igual a %f”, x); 
 
O primeiro printf simplesmente exibe um texto. 
O segundo printf também somente exibe um texto, veja que o número 1 neste 
exemplo faz parte do texto. 
O terceiro printf utiliza lista de argumentos, onde no texto é inserido um código 
de formatação (%d) no lugar onde desejamosque o número apareça e na lista de 
argumento colocamos o número desejado. Neste caso o resultado é mesmo que co-
locar o número diretamente no texto. 
O quarto printf também utiliza uma lista de argumentos, mas dessa vez ela é 
obrigatória, pois estamos inserindo uma variável junto ao texto. O valor da variável irá 
aparecer no texto no lugar do código de formatação, que neste caso é o %f. 
 
 
 
 
 
 
 
 
 
 
, 
 
 
53 
 
 
Quadro 5: Caracteres de controle 
Código Descrição 
\n Nova linha 
\r Retorno do cursor 
\t Tabulação 
\b Retrocesso (backspace) 
\” Aspas 
\\ Barra 
\0 Nulo 
 
 
Quadro 6: Código de formatação 
Código Descrição 
%c Caractere (char) 
%x Hexadecimal 
%d Decimal (int) 
%e Notação científica 
%f Ponto flutuante (float) 
%o Octal 
%s Cadeia de caracteres (string) 
%u Decimal sem sinal 
 
 
3.6.2 A função scanf() 
A função scanf() é uma função utilizada para entrada de dados, ou seja, para 
enviar informações para o sistema, geralmente em uma variável declarada na me-
mória. Ela pertence à biblioteca básica de I/O (input/output ou entrada/saída) que 
é usada em C. 
Ela não faz parte da definição da linguagem e necessita ser importada com a 
declaração de uma biblioteca. Algumas bibliotecas já implementam a função scanf 
em seu escopo, a principal é stdio.h. 
 
Sintaxe: 
scanf(“código de formatação”, lista de argumentos); 
 
O principal objetivo da função scanf é obter um valor (geralmente via teclado) 
e armazenar o mesmo em uma variável. Em sua sintaxe, o “código de formatação” 
 
 
 
 
 
 
, 
 
 
54 
 
 
é o código referente ao tipo de dados que será tratado e a lista de argumentos são 
os nomes das variáveis que se deseja inserir os valores lidos. Na função scanf sempre 
devemos utilizar o sinal de & (‘e’ comercial) antes do nome da variável que receberá 
o valor. 
 
 
 
 
 
Exemplos: 
main(){ 
 int num; 
 printf(“Digite um número: “); 
 scanf(“%d”,&num); 
 printf(“O número digitado foi %d”,num); 
} 
main(){ 
 char letra; 
 printf(“Digite uma letra: “); 
 scanf(“%c”,&letra); 
Sempre que o valor de uma variável for modificado por uma função, como no caso do 
scanf, o nome desta variável deve ser precedido por um sinal de &. Isso é a característica 
de tratamento de memória, também chamado de ponteiros, da linguagem C. 
Que tal aprofundar um pouco mãos seus conheecimentos? Aqui vão alguns links muito 
interresantes: 
 Qual o significado do operador “&” (e comercial) na linguagem C?. Disponí-
vel em: https://bit.ly/3u8de18. Acesso em: 16 maio 2020. 
 Operações de entrada e saída de dados em Linguagem C. Disponível em: 
https://bit.ly/2Ng5MjD. Acesso em: 16 maio 2020; 
 Ponteiros em C. Disponível em: https://bit.ly/3djunyT. Acesso em: 16 maio 
2020; 
 Subalgoritmos (Funções) (Prof. Márcio Sarroglia Pinho). Disponível em: 
https://bit.ly/3pmPJhb. Acesso em: 16 maio 2020. 
 
 
 
 
 
 
, 
 
 
55 
 
 
 printf(“A letra digitada foi %c”,letra); 
} 
 
3.6.3 Entrada e saída com getchar, getch e putchar getchar() 
A função getchar() tem como objetivo ler um caractere (uma letra) do te-
clado com a obrigatoriedade de pressionar enter após a digitação do caractere, ou 
seja, deve-se digitar a letra desejada e teclar entre em seguida para confirmar a lei-
tura da letra e passar o valor da mesmas para a variável que receberá este valor. 
Sintaxe: 
getchar(); 
 
Exemplo: 
char letra; 
letra = gechar(); 
 
No exemplo acima, após digitar uma letra e teclar entre, o valor digitado será 
armazenado na variável letra. 
 
Getch() 
 
A função getch() tem o seu funcionamento muito parecido com a função ge-
tchar(), porém, esta não requer a digitação de enter após digitar a letra desejada, 
ou seja, a leitura do valor digitado é imediatamente após a digitação do mesmo, não 
sendo necessário teclar enter para confirmar a leitura. 
Sintaxe: 
getch(); 
 
Exemplo: 
char letra; 
letra = getch(); 
No exemplo acima, após digitar uma letra, o valor digitado será imediata-
mente armazenado na variável letra. 
 
 
 
 
 
 
 
, 
 
 
56 
 
 
Putchar() 
 
A função Putchar() exibe um caractere na tela. Ela recebe como parâmetro 
uma letra (constante) ou uma variável do tipo char e exibe este valor na tela. 
 
#include<stdio.h> 
main() { 
 char letra; 
 printf(“Digite um caractere: “); 
 letra = getchar(); 
 putchar(letra); 
putchar(‘a’); 
} 
O exemplo acima solicita a digitação de um caractere e em seguida escreve 
o caractere digitado e logo depois a letra a. 
 
 
 OPERADORES ARITMÉTICOS 
Assim como vimos nos algoritmos e lógica de programação no Capitulo 1, os 
operadores aritméticos nos permitem realizar operações aritméticas básicas em lin-
guagens de programação. Estes operadores fazem parte do pacote de operações 
elementares da linguagem e podem ser utilizados para as operações de adição, sub-
tração, multiplicação, divisão e o que chamamos em linguagens de programação 
de módulo (informar o resto da divisão entre dois números). 
Os operadores não +, -, *, / e %, que realizam as operações de adição, subtra-
ção, multiplicação, divisão e módulo, respectivamente. 
Estes operadores sempre recebem dois valores, um a sua esquerda e outro à 
sua direita e retornam o resultado da operação sobre estes valores. 
Vejamos um programa com exemplos destas operações: 
 
#include<stdio.h> 
main() { 
 int valor1, valor2; 
 printf("Digite um número: "); 
 
 
 
 
 
 
, 
 
 
57 
 
 
 scanf("%d",&valor1); 
 printf("Digite outro número: "); 
 scanf("%d",&valor2); 
 printf("A soma dos números é = %d",(valor1+valor2)); 
 printf("A diferença dos números é = %d",(valor1-valor2)); 
 printf("A multiplicação dos números é = %d",(valor*valor2)); 
 printf("A divisão do primeiro pelo segundo número é = %f",(valor1/va-
lor2)); 
 printf("O resto da divisão do primeiro número pelo segundo é %d",(va-
lor1%valor2)); 
} 
 
No exemplo acima foi solicitado ao usuário a digitação de dois números. Após 
informar os números e teclar entre o programa apresenta o resultado das operações 
aritméticas sobre estes números digitados. 
 
 
 
Existem dois operadores aritméticos especiais, são os operadores aritméticos 
de incremento e decremento, que somam uma unidade à variável aplicada ou sub-
traem uma unidade, respectivamente, ++, --. 
Estes operadores são utilizados diretamente ligados às variáveis que desejamos 
incrementar ou decrementar. 
Sintaxe: 
Variável operador especial 
 
Exemplo: 
 Note que para exibir o resultado das operações de adição, subtração e multiplica-
ção foi utilizado o caractere de formatação %d, pois o resultado destas operações 
é sempre igual ao tipo de dados dos valores utilizados. 
 Note que para exibir o resultado da divisão foi utilizado o caractere de formatação 
%f, pois o resultado da divisão sempre é obtido com casas decimais (mesmo que 
sejam de valor zero) e o tipo de dados padrão para casas decimais é o float. 
 
 
 
 
 
 
, 
 
 
58 
 
 
x++; y-- 
 
No exemplo acima, temos que a variável x será somada uma unidade e a 
variável y será subtraída uma unidade. 
 
main() 
{ 
 int numero = 2; 
 printf(“%d”,numero); 
 numero++; 
 printf(“%d”,numero); 
} 
 
Neste código temos a declaração de uma variável chamada número e a atri-
buição do valor 2 a esta variável. No primeiro printf ao escrever o valor da variável 
número, o sistema apresenta o número 2 na tela. Na linha seguinte, o operador de 
incremento adiciona uma unidade à variável número, ou seja, é a mesma coisa que 
utilizar numero = numero + 1, passando o seu valor para 3. O último printf, ao escrever 
o conteúdo da variável número na tela, apresenta o valor 3. 
Temos ainda outros tipos de operadores aritméticos que são muito úteis no dia-
a-dia de programação. Estes operadores simplificam algumas ações. 
Os operadores aritméticos de atribuição fazem a operação aritmética corres-
pondente e ao

Outros materiais