Buscar

ALGORITMOS 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 98 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 98 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 98 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 
ALGORITMOS E PROGRAMAÇÃO 
DE COMPUTADORES 
 
FILIPE COSTA FERNANDES 
 
2 
 
 
 
Menu de Ícones 
Com o intuito de facilitar o seu estudo e uma melhor compreensão do conteúdo aplicado 
ao longo do livro, você irá encontrar ícones ao lado dos textos. Elas 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: 
 
 
 
 
 
 
 
 
3 
 
UNIDADE 
01 
Sumário 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
UNIDADE 
02 
UNIDADE 
03 
UNIDADE 
04 
ESTRUTURAS DE CONTROLE 
4.1. Comandos de seleção 62 
4.2. Seleção com IF 62 
4.2.1 IF encadeado 63 
4.3. Os comandos IF-ELSE 64 
4.4. Operadores lógicos 66 
4.5. O comando SWITCH-CASE 67 
4.5.1 O comando BREAK 69 
4.6. Operador condicional ternário (?:) 69 
4.7. Laços de repetição 70 
4.7.1 Estrutura de repetição FOR 72 
4.7.2 Laços aninhados 74 
4.7.3 O laço WHILE 76 
4.7.4 O laço DO- WHILE 77 
4.7.5 O comando continue 79 
 -Fixando o Conteúdo 80 
 
 
 
LINGUAGEM DE PROGRAMAÇÃO C 
3.1 Introdução 41 
3.2. Estrutura básica da linguagem C 41 
3.21.Blocos de comando 44 
3.3. A função main () 44 
3.4. Biblioteca e funções complementares 45 
3.5. Constantes variáveis 46 
3.6. Entrada e saída de dados 49 
3.6.1 A função printf() 50 
3.6.2 A função scanf() 52 
3.6.3 Entrada e saída com getchar, getch e putchar getchar() 53 
3.7. Operadores aritméticos 54 
3.8. Operadores relacionais 57 
 -Fixando o Conteúdo 59 
 
LÓGICA DE PROGRAMAÇÃO 
2.1 Estruturas condicionais 22 
2.2 Estruturas condicionais composta 24 
2.3. Operadores lógicos 30 
2.4 Laços de repetição 32 
2.4.1 Laço “para” 33 
2.4.2 Laço “enquanto” 35 
 -Fixando o Conteúdo 38 
 
INTRODUÇÃO 
1.1 Introdução 06 
1.2. Compiladores 06 
1.2.1. Os níveis da linguagem 07 
1.3. Algoritmos 07 
1.3.1 Algoritmo x programa 08 
1.4. Linguagem de programação 08 
1.4.1. Portugol 09 
 1.5. Constantes 12 
1.5.1.Palavras reservadas 13 
1.6 Operadores aritméticos 14 
1.7. Operadores relacionais 15 
1.8. Operador de atribuição 16 
 -Fixando o Conteúdo 19 
 
 
4 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
UNIDADE 
05 
UNIDADE 
06 
FUNÇÕES 
5.1 Funções 82 
5.2. Variáveis locais 83 
5.3. Variáveis globais 84 
5.4. O comando return 84 
 -Fixando o Conteúdo 85 
 
ESTRUTURA DE DADOS 
6.1 Arranjos (array) 88 
6.2. Array multidimensional 89 
6.3. Estruturas 89 
6.4. Ordenação 91 
6.4.1 Ordenação por seleção 92 
6.5. Pesquisa em conjuntos (busca) 93 
 -Fixando o Conteúdo 95 
 
REFERÊNCIAS BILIOGRÁFICAS 99 
 
 
 
5 
 
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. 
 
CONFIRA NO LIVRO 
 
 
 
 
 
 
 
 
 
UNIDADE 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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. 
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 utilizando esta 
linguagem. Aqui são apresentados os principais conceitos e comandos 
básicos da linguagem de programação C. 
Controlando o fluxo de execução dos códigos. Na unidade 4 veremos 
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 estruturas de repetição para melhores 
resultados e controle do fluxo e quantidade de informações tratadas 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écnicas 
para construção de funções e todas as suas variações, com 
recebimento 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 
coleçõ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. 
 
 
6 
 
INTRODUÇÃO 
 
 
 
 
1.1 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 instruções e 
consequentemente não conseguirá produzir o resultado esperado. Isto acontece 
porque os computadores são programados para entender e executar nossos 
comandos de acordo com um vocabulário pré-determinado e por eles conhecido. 
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 
conhecimento, pela máquina, de dois estados de corrente elétrica: ligado ou 
desligado. 
 
1.2 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 
intermediá-las. 
Um compilador é uma ferramenta computacional que faz esta tarefa de 
intermediar 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. 
 
UNIDADE
 
 
7 
 
 
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. 
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 linguagem 
das máquinas (ligado ou desligado) são chamadas de linguagem de baixo nível. 
1.3 ALGORITMOS 
Um algoritmo é uma sequência lógica de instruções para realizar uma 
determinada tarefa. Os algoritmos não representam necessariamente programas de 
computador, 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çõesde 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”. 
Sarah Henrique
Highlight
Sarah Henrique
Highlight
Sarah Henrique
Highlight
 
8 
 
 
Um roteiro para chupar uma bala pode ser escrito da seguinte forma: 
“Pegar a Bala” 
“Retirar o Papel” 
“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 linguagem 
de programação, segundo suas regras de sintaxe e semântica, de forma a permitir 
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. 
 
 
 
 
 1.4 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. 
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. 
 
9 
 
 
1.4.1 Portugol (lê-se portugól) 
O portugol é um algoritmo (escrito em português estruturado) utilizando as 
sintaxes e semânticas parecidas com uma linguagem de programação, geralmente 
(foi proposto para ser baseado no pascal) o portugol é baseado na extinta linguagem 
Pascal, mas como todo tipo de algoritmo ele deve ter portabilidade para outras 
linguagens de programação e podemos adaptá-lo para fica mais parecido com 
linguagem 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. 
 
 
 
 
 
 
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. 
Sarah Henrique
Highlight
 
10 
 
 
EXEMPLOS 
Um algoritmo para somar dois números: 
Início 
Variáveis 
Numero1 : inteiro 
Numero2 : inteiro 
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 sexta linha temos um processamento 
(soma=numero1+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 
comandos 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 predefiniçõ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. 
Sarah Henrique
Highlight
Sarah Henrique
Highlight
 
11 
 
Os tipos de dados mais conhecidos e comumente utilizados são definidos na 
tabela abaixo: 
TABELA 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 definido para ela. 
Ex. “UNIPAC”; 
“Computação”; “1”; “1.3” 
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. 
Sarah Henrique
Highlight
Sarah Henrique
Highlight
 
12 
 
 
 
 
 
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 
 
 
 
 
1.5 CONSTANTES 
As constantes são tipos de dados predefinidos e que não podem ter seus 
valores 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 seu valor alterado quantas vezes forem necessárias no decorrer do programa. Por 
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, saberemos 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. 
 
13 
 
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 
chamada 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 
depois 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, PI, Valor Máximo e 
Instituição. Assim, no decorrer do programa, toda vez que precisar do valor de pi, não 
precisa informar o valor 3,1416 e sim utilizar a constante PI. 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 
funcionalidade em uma determinada linguagem de programação, estas 
funcionalidades são: ler, escrever, estrutura condicional, estrutura de repetição, 
 
14 
 
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. 
1.6 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. 
TABELA 2 - Operadores Aritméticos 
OPERADOR SIGNIFICADO 
/ Operador de Divisão 
* Operador de Multiplicação 
+ Operador de Adição 
- Operador de Subtração 
A sintaxe dos operadores aritméticos é a seguinte: 
<valor_A> <operador aritmético> <valor_B> 
Exemplos: 
10 + 10 
2 – 1 
15 / 3 
250 * 24 
 
15 
 
 
 
1.7 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 reprovado 
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 
determinar o valor exato do item em questão. 
Os operadores relacionais são: ==, !=, <, >, <=, >=. 
A tabela a seguir mostra os operadores relacionais e seus respectivos 
significados. 
TABELA 3 - Operadores Relacionais 
OPERADOR RELACIONAL SIGNIFICADO 
== Igual 
!= Diferente 
< Menor que 
> Maior que 
<= Menor ou igual 
>= Maior ou igual 
 
A sintaxe dos operadores relacionais é a seguinte: 
<valor_A> <operador relacional> <valor_B> 
 
 
Também podemos substituir os valores numéricos por variáveis. 
 
16 
 
Exemplos: 
 10 == 10 
12 > 10 
5 < 6 
X <= 50 
1.8 OPERADOR DE ATRIBUIÇÃO ( = ) 
Para atribuirmos um valor a uma variável, devemos utilizar o operador de 
atribuiçã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 é chamado 
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 
Algumas linguagens de 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. 
 
17 
 
Perceba que neste algoritmo não declaramos variáveis, nem utilizamos alguma 
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 
 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 algoritmo 
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 
correçã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 duplas 
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. 
 
 
18 
 
 
 
 
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 
 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 
 
 
 
 
 
 
 
 
 
 
 
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. 
 
Os algoritmos e programas servem para definir estruturas computacionais que 
automatizam 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 atividades. 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ê. 
 MANZANO, José Augusto N. G. Algoritmos: lógica para desenvolvimento de 
programação de computadores / José Augusto N. G. Manzano, Jayr Figuei- redo de 
Oliveira. - 28. ed. - São Paulo: Érica, 2016 
https://integrada.minhabiblioteca.com.br/books/9788536518657 
RIBEIRO, João Araujo Introdução à programação e aos algoritmos / João Araujo 
Ribeiro. - 1. ed. - Rio de Janeiro : LTC, 2019. 
https://integrada.minhabiblioteca.com.br/books/9788521636410 
 
19 
 
 
1. Sobre Compiladores de Linguagens de Programação, marque a alternativa 
correta. 
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 
qualquer 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 
computador que o programa irá rodar, se a compilação for outro computador o 
programa 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 
realizam 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 determinada 
tarefa. 
II – Um algoritmo não necessita ter um conjunto muito claro de instruções, uma vez 
que algumas dicas sobre a realização das tarefas sejam informadas, já é o suficiente 
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. 
 
 
Sarah Henrique
Highlight
 
20 
 
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 instruçã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 
sintaxes 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. 
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 modificados. 
 
Sarah Henrique
Highlight
 
21 
 
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 deverá 
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 
impressora. 
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. 
 
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. 
 
 
 
Sarah Henrique
Highlight
Sarah Henrique
Highlight
 
22 
 
LÓGICA DE PROGRAMAÇÃO 
 
 
 
 
 
2.1 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 é utilizada 
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 
comandos para a estrutura em questão. 
UNIDADE
 
 
23 
 
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 
reservadas início e fim. 
 
 
Entre as linhas que contém as palavras reservadas início e fim, devemos 
escrever as linhas que desejamos executar se a (condição) for estabelecida como 
verdadeira. 
 
 
 
 
 
 
 
 
 
 
 
 
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 
informaçã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 
 
24 
 
 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 
 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 
2.2 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 
 
25 
 
 Escreva “O aluno está APROVADO” 
 Se (Resultado <70) então 
 Escreva “O aluno está REPROVADO” 
Fim 
Vamos pegara 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 
testes lógicos e fique mais complicado entender, por que as estruturas estão 
separadas. 
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 
determinar 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ódigos conforme já definimos antes. 
 
 
Sarah Henrique
Highlight
 
26 
 
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 
 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 
 
 
27 
 
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 
Vamos analisar este algoritmo: 
se o usuário digitar a senha “senha123” o algoritmo informa que a senha é 
correta, 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á 
 
28 
 
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 
 Início 
 
29 
 
 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 
correspondente a este número, sendo, número 1 = Caratinga, número 2 = Ipatinga e 
número 3 = Cel. Fabriciano. E para qualquer outro número escreva Belo Horizonte. 
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 
 
30 
 
 Se (num == 3) entao 
 Início 
 Escreva “Cel. Fabriciano” 
 Fim 
 Senão 
 Início 
 Escreva “Belo Horizonte” 
 Fim 
Fim 
 
2.3 OPERADORES LÓGICOS 
Os operadores lógicos são palavras reservadas que iremos utilizar para juntar 
duas ou mais condições lógicas. 
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 expressõ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 expressões for VERDADEIRO. 
Este operador retornará FALSO somente quando as 
duas expressõ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. 
 
 
31 
 
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 
expressã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: 
 em um determinado concurso público, foi determinado que os 
candidatos 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 
 
 
 
32 
 
 
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. 
2.4 LAÇOS DE REPETIÇÃO 
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 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 algoritmo 
para a Faculdade Única, que deve ler o nome de todos os seus alunos, que 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 DOIStipos de laços de repetição mais conhecidos e usados, que são os laços 
PARA e ENQUANTO. 
 
 
 
 
 
 
 
 
 
33 
 
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; 
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 
controle 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). 
 
 
34 
 
 
 
 
 
 
 
 
EXEMPLOS: 
 um laço que roda 10 vezes: 
Primeiro devemos declarar uma variável para este laço. Vamos pensar numa 
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 contagem é 
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 
dados 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 
 https://www.apoioinformatica.inf.br/produtos/item/14-comandos-de-repeticao 
 http://eletrica.ufpr.br/~rogerio/visualg/Help/linguagem3.htm 
 http://docente.ifsc.edu.br/vilson.junior/ip/IP_03_VisuALG_Repeticao.pdf 
 EDELWEISS,Nina. Algoritmos e programação com exemplos em Pascal e 
C [recurso eletrônico] / Nina Edelweiss, Maria Aparecida Castro Livi. – Dados 
eletrônicos. – Porto Alegre: Bookman, 2014. 
 https://integrada.minhabiblioteca.com.br/books/9788582601907 
 
35 
 
 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 
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 
separadamente. 
 
SINTAXE DO LAÇO ENQUANTO 
enquanto (condição) faça 
início 
 <comando a executar> 
fim 
Onde: 
ENQUANTO é a palavra reservada que determina o início do laço. 
 
36 
 
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. 
 
(condição) é uma condição de parada do laço, o laço ENQUANTO será 
executado 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. 
 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. 
 
 
37 
 
 
1. 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 
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 
corretamente 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 
algoritmos, 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 alguma 
variável 
a) devemos utilizar estrutura de repetição para encontrar o resultado. 
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. 
 
 
38 
 
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 
verdadeiro 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 
alternativa correta. 
Se (Resultado >= 70) então 
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á apresentadapara 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. 
 
39 
 
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 
(estruturada) 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. 
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. 
 
 
 
 
 
 
 
40 
 
 LINGUAGEM DE PROGRAMAÇÃO – C 
 
 
 
 
3.1 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 programaçã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 para criação de 
algoritmos que serão traduzidos em linguagem de máquina que define 
instruções a serem realizadas por um computador (Cebesta, 2003). 
 
 
 
 
 
 
 
UNIDADE
 
 
41 
 
3.2 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 
didático para o ensino de Linguagens de Programação e Programação de 
Computadores. Apesar da baixa produtividade em função de não ter componentes já 
prontos, o uso da linguagem C se justifica pela sua sintaxe e poder de processamento 
e execução. Basicamente quase todas as linguagens 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 
dedicaçã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 recebe 
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 é 
definitivamente 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. 
 
42 
 
Veja mais sobre identação em: 
 
 https://pt.stackoverflow.com/questions/190450/qual-%C3%A9-a-
import%C3%A2ncia-de-indentar-o-c%C3%B3digo 
 https://compilandotudo.wordpress.com/2009/09/10/a-importancia-da-identacao-do-
codigo-na-programacao/ 
 https://pt.wikipedia.org/wiki/Indenta%C3%A7%C3%A3o 
 
 
Podemos escrever nossos programas de diversas formas, inclusive se você 
quiser, pode escrever um programa inteiro em somente uma linha. Os exemplos 
abaixo 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 nossos 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 
indicando 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 
desenvolvido. 
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 
linha ( // )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. 
 
43 
 
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. 
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 limitadas 
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). 
3.3 A FUNÇÃO MAIN() 
Como citamos anteriormente, a função main(), também conhecida como funçãoprincipal 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. 
 
44 
 
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 
fechamento de bloco, dentre outras, não possuem ponto e vírgula ( ; ). 
No decorrer desta apostila 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: 
 http://excript.com/cpp/indentacao-espaco-em-branco-ponto-e-virgula-cpp.html 
 https://www.inf.pucrs.br/~pinho/LaproI/IntroC/IntroC.htm 
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 pertencente à 
linguagem. Todos os comandos de instrução devem ser encerrados com um 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). 
 
 
 
 
 
 
 
 
 
3.4 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 
adequadamente. 
Por isso, a linguagem C trabalho com o conceito de declaração de bibliotecas. 
As bibliotecas são coleções de funções/comandos complementares para proporcionar 
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 
linguagem C é definir as bibliotecas que iremos utilizar, antes mesmo de declarar a 
função main(). 
 
45 
 
 http://linguagemc.com.br/a-biblioteca-padrao-da-linguagem-c/ 
 http://linguagemc.com.br/bibliotecas/ 
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> 
 
 
 
 
3.5 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 
valores predefinidos que podem ser utilizados no decorrer de um programa. Sempre 
utilizamos nomes para identificar estes valores. 
No decorrer de um programa que realiza operações matemáticas, onde 
precisarem 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. 
Para declarar 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 de PI, basta usar o nome da constante declarada para ele, pi. 
 
46 
 
O valor de uma constante não pode ser alterado no decorrer do programa, somente 
em sua declaração. 
 
 
 
 
Uma variável é uma definição de memória que utilizamos para armazenar 
alguma 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 
manipulando informações que estão em sua memória. Em um programa de 
computador, 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 declarar 
(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 
variável, finalizando com ponto e vírgula. 
Se uma variável é uma parte da memória do computador que é reservada para a 
utilização no meu programa, então a quantidade de variáveis que posso ter está 
limitada à quantidade de memória disponível que temos no computador que o 
programa está executando. 
 
47 
 
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 predominante 
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 
terminam 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, ...; 
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 
desejamos 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 
declarada. 
Cada tipo de dado tem um nome e é capaz de armazenar uma certa quantidade 
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. 
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) 
 
48 
 
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. 
 
 
Também podemos utilizar alguns modificadores de tipos para aumentar a 
capacidade 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 
armazenamento 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 
underline); 
- Deve sempre iniciar com uma letra (maiúscula ou minúscula) ou com o 
símbolo 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. 
- 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; 
 
 
 
 
 
49 
 
3.6 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 alguma 
coisa para a memória utilizada pelo sistema. Saída é a tarefa de “retirar” informaçõ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(){ 
 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. 
Sarah Henrique
Highlight
Sarah Henrique
Highlight
 
50 
 
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 desejamos que o número apareça e na lista de 
argumento colocamos o número desejado. Neste caso o resultado é mesmo que 
colocar 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. 
Caracteres de controle 
Código Descrição 
\n Nova linha 
\r Retorno do cursor 
\t Tabulação 
\b Retrocesso (backspace) 
\” Aspas 
\\ Barra 
\0 Nulo 
 
Código de formatação 
Código Descrição 
%c Caractere (char) 
%x Hexadecimal 
%d Decimal (int) 
 
51 
 
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. 
 https://pt.stackoverflow.com/questions/125793/qual-o-significado-do-operador-e-
comercial-na-linguagem-c 
 http://linguagemc.com.br/operacoes-de-entrada-e-saida-de-dados-em-linguagem-c/ 
 http://linguagemc.com.br/ponteiros-em-c/ 
 https://www.inf.pucrs.br/~pinho/LaproI/Funcoes/AulaDeFuncoes.htm 
%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 
memó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” é 
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. 
 
 
 
 
 
 
 
Sarah Henrique
Highlight
 
52 
 
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); 
 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 teclado 
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 leitura 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 
getchar(), 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(); 
 
53 
 
Exemplo: 
char letra; 
letra = gech(); 
No exemplo acima, após digitar uma letra, o valor digitado será imediatamente 
armazenado na variável letra. 
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. 
 
3.7 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 
linguagens 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, 
subtraçã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 realizamas 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; 
 
54 
 
 printf("Digite um número: "); 
 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/valor2)); 
 printf("O resto da divisão do primeiro número pelo segundo é 
%d",(valor1%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 
subtraem uma unidade, respectivamente, ++, --. 
Estes operadores são utilizados diretamente ligados às variáveis que 
desejamos incrementar ou decrementar. 
Sintaxe: 
Variável operador especial 
 
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. 
 
55 
 
Exemplo: 
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 
atribuiçã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 
correspondente e ao mesmo tempo atribuem o resultado a uma variável. Estes 
operadores são +=, -=, *=, /=, %=. Vamos tratar o primeiro como exemplo, sabendo 
que o mesmo se aplica a todos eles. 
O operador += soma dois valores e ao mesmo tempo atribui o resultado e uma 
variável. Este operador recebe uma variável à sua esquerda e um valor (constante ou 
variável) à sua direita. 
Sintaxe: 
variável += expressão 
Exemplo: 
x += 2; 
No exemplo acima estamos pegando o valor de x, somando 2 com este valor e 
atribuindo o resultado à própria variável x. 
 
 
56 
 
main() 
{ 
 int x,y; 
 x = 3; 
 y = 2; 
 x += 2; 
 y += x; 
} 
Neste código acima, temos duas variáveis, x e y. Inicialmente estamos 
atribuindo o valor 3 à variável x e o valor 2 à variável y. A operação x += 2 pega o valor 
de x, soma com dois e atribui o resultado ao próprio x. No final desta operação do 
nosso exemplo, a variável x contém o valor 5. A operação y += x faz a mesma coisa 
com a variável y, mas dessa vez não soma com valor constante e sim com o valor de 
uma variável. Uma vez que já aplicamos uma operação à variável x e seu valor foi 
alterado para 5, esse será o valor utilizado na atribuição de y, com isso, a operação y 
+= x, pega o valor de y (2) e soma com o novo valor de x (5) e atribui o resultado à 
variável y, que receberá 7. 
3.8 OPERADORES RELACIONAIS 
Os operadores relacionais, como o nome sugere estabelecem uma relação 
entre os operandos a qual são associados. Estes operadores servem para estabelecer 
uma relação de comparação entre os operando, retornando um valor de Verdadeiro 
ou Falso de acordo com o resultado de seus valores. 
A tabela abaixo apresenta os operadores relacionais e sua funcionalidade 
OPERADOR DESCRIÇÃO 
> Maior que 
>= Maior ou igual a 
< Menor que 
<= Menor ou igual a 
== Igual a (igualdade) 
!= Diferente de 
 
 
57 
 
Estes operadores comparam dos valores e informam a relação entre eles, 
retornando verdadeiro ou falso. Em C não existe um tipo de dados específico para 
representar valores booleanos (verdadeiro ou falso), então ele utiliza valores 
numéricos para auxiliar nesta situação, tomando como padrão a definição de que o 
número 0 (zero) representa o valor falso e qualquer coisa diferente de 0 (zero) 
representa um valor verdadeiro. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
58 
 
 
1. Analise a afirmativa abaixo e marque a alternativa que preencha corretamente os 
espaços em branco na ordem que aparecem no texto. 
Uma linguagem de _____ é um conjunto de _____ para criação de algoritmos que 
serão traduzidos em linguagem de máquina que define instruções a serem 
realizadas por um _____. 
a) computador; programação; software. 
b) conversa; palavras; ser humano. 
c) máquina; ações definidas; software. 
d) programação; regras; computador. 
e) conversação; gramáticas; computador. 
 
2. Avalie a seguintes afirmativas e marque a alternativa correta. 
I – 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. 
II – Os tipos de dados são representações das classes de valores que podemos 
utilizar em nossos algoritmos. 
III – Programação de computadores é uma técnica de concerta computadores, 
transformando suas características físicas e tornando mais eficiente. 
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. 
3. Avalie a seguintes afirmativas e marque a alternativa correta. 
I – A linguagem de programação C é uma linguagem de programação mais recente 
no mercado e por isso é extensamente utilizada como meio didático para o ensino 
de Linguagens de Programação e Programação de Computadores. 
II – Todas as linguagens de programação existente hoje em dia são baseadas na 
linguagem C, então, um profissional só precisa estudar a linguagem C para 
conseguir programar em todas as outras. 
III – Apesar da baixa produtividade em função de não ter componentes já prontos, o 
uso da linguagem C se justifica pela sua sintaxe e poder de processamento e 
execução. 
 
59 
 
a) Apenas I está correta. 
b) Apenas I e II estão corretas. 
c) Apenas I e III estão corretas. 
d) Apenas III está correta. 
e) Todas as alternativas estão corretas. 
 
4. Analise o trecho de código abaixo e marque a alternativa correta. 
main() 
{ 
} 
a) Este trecho de código representa a sintaxe básica de uma função qualquer na 
linguagem C. 
b) Este trecho de código representa a sintaxe básica de uma função principal na 
linguagem C. 
c) Este trecho de código representa a sintaxe básica de uma função recursiva na 
linguagem C. 
d) Este trecho de código representa a sintaxe básica da única função admitida na 
linguagem C. 
e) Este trecho de código representa a sintaxe básica de uma função secundária na 
linguagem C. 
 
5. Avalie a seguintes afirmativas e marque a alternativa correta. 
I – Um comentário é um comando no meio do seu código que serve, além de uma 
função a ser compilada do sistema, para informar

Outros materiais