Buscar

LTP_ebook

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 113 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 113 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 113 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

Linguagem e Técnica 
de Programação
Linguagem e Técnica 
de Programação
copyright © uVa 2019
Nenhuma parte desta publicação pode ser reproduzida por qualquer 
meio sem a prévia autorização desta instituição.
Texto de acordo com as normas do Novo Acordo Ortográfico 
da Língua Portuguesa.
auToria do conTeúdo
Claudio Fico Fonseca
reVisão
Marcia Glenadel
Isis Batista
Theo Cavalcanti
Lydianna Lima
ProjeTo gráfico
UVA
diagramação
UVA
F676 
 Fonseca, Claudio Fico 
 Linguagem e técnica de programação [livro eletrônico] / 
 Claudio Fico Fonseca. – Rio de Janeiro: UVA, 2020. 
 
 1.66 MB : PDF. 
 
 ISBN 978-65-5700-033-5.
 
 1. Linguagem de programação (Computadores). 2. Computador – 
 linguagem de programação. 3. C (Linguagem de programação de 
 computador). 4. Algorítmos. 5. Algorítmos computacionais. I. 
 Universidade Veiga de Almeida. II. Título. 
 
 CDD – 005.13
Bibliotecária Katia Cavalheiro CRB 7 - 4826.
Ficha Catalográfica elaborada pela Biblioteca Central da UVA.
sumário
apresentação
autor
6
7
construção de fluxograma e português estruturado 31
• Construção de fluxogramas
• Português estruturado 
• Estruturas de controle e repetição
Unidade 2
8
• Como resolver problemas algorítmicos
• Cálculo proposicional
• Introdução à álgebra de Boole
Lógica proposicional e linguagem proposicional 
Unidade 1
sumário
Vetores, matrizes e manipulação de arquivos 91
• Vetores (arrays)
• Matrizes
• Arquivos
Unidade 4
53
• Comandos e operadores em C
• Estruturas de controle e repetição em C
• Convertendo português estruturado para Linguagem C 
entender os conceitos e aplicações da Linguagem c
Unidade 3
6
A disciplina Linguagem e Técnica de Programação visa o entendimento do conceito de 
estruturas lógicas e sequenciais voltadas para o desenvolvimento de aplicações em em-
presas, jogos e sistemas operacionais. Por ser uma linguagem de uso atual compartilha-
da em grandes softwares, estudaremos, nesta unidade, a tecnologia Linguagem C, que 
consiste em um conjunto ordenado de ações que permite o fortalecimento e o engran-
decimento do negócio no mercado globalizado, além da execução de um determinado 
programa atendendo a uma ou mais necessidades.
Trabalharemos, também, a questão da identificação de possíveis erros de lógica de pro-
gramação e como esses erros podem ser tratados. Nesse processo, não apenas desen-
volveremos o uso de estruturas de decisão que auxiliam na verificação de entrada de 
dados como também faremos uso dessas estruturas de decisão para a verificação de 
uma série de condições para atender a demandas específicas.
Veremos, ainda, o uso da estrutura de repetição — estrutura que permite a execução de 
uma ou mais rotinas de forma repetitiva até que uma determinada condição seja findada.
aPresenTação
7
cLaudio fico fonseca
Graduado em Informática, Especialização em Marketing, MBA em Gestão Empresarial, 
MBA em Gerenciamento de Projetos, mestre em Educação e doutor em Gestão Educa-
cional. Exerce, na Universidade Veiga de Almeida – UVA, os cargos de diretor de Desen-
volvimento Institucional, coordenador do Curso de Sistemas da Informação – Presencial 
e EAD, coordenador do Curso de Análise e Desenvolvimento de Sistemas – EAD, coorde-
nador do Curso de Gestão da Tecnologia da Informação – EAD, coordenador do Núcleo 
de Certificação Profissional e Internacional, coordenador do MBA em Gestão Estratégica 
de TI. Exerceu os cargos de diretor da Escola de Tecnologia da Informação e Inovação 
das Faculdades Integradas de Jacarepaguá – FIJ, de diretor de Pós-Graduação e Ex-
tensão e consultor de Tecnologia da Informação na Master Educacional, de pró-reitor 
acadêmico e diretor de Tecnologia do Grupo Educacional Anglo-Americano, de vice-reitor 
adjunto, diretor de Certificação Profissional e gerente de TI do Centro Universitário da 
Cidade do Rio de Janeiro – UniverCidade. Atua como conselheiro de Educação e Novas 
Tecnologias, é membro da Associação Brasileira de Educação – ABE, membro titular do 
Conselho Ibero Americano, avaliador institucional e de cursos da área de Informática e 
cursos superiores de Tecnologia do Ministério da Educação/Inep, avaliador de cursos do 
Guia do Estudante e perito de Tecnologia da Informação da Justiça do Trabalho.
auTor
c. Lattes
http://lattes.cnpq.br/6387003742232768
Lógica proposicional e 
linguagem proposicional 
UNIDADE 1
9
Conhecer os fundamentos da programação estruturada, o histórico da linguagem de pro-
gramação, as bibliotecas pertinentes à Linguagem C, os tipos de dados e a estrutura da 
linguagem. Toda essa fundamentação irá proporcionar um conhecimento mais abran-
gente do raciocínio lógico, além de condições de conhecimento de uma linguagem de 
programação que irá permitir o desenvolvimento de soluções que implicarão a resolução 
de problemas no dia a dia de uma empresa. 
inTrodução
Nesta unidade você será capaz de:
• Apresentar os conceitos fundamentais usados na construção de algoritmos. 
Desenvolver no aluno a capacidade lógica de construir algoritmos para resolu-
ção de problemas de forma planejada e estruturada. Possibilitar a codificação de 
programas de baixa e média complexidade, usando uma linguagem de progra-
mação. Reconhecer a importância do planejamento e dos testes na resolução de 
problemas computacionais.
objeTiVo
10
como resolver problemas algorítmicos 
A lógica de programação é uma técnica que desenvolve algoritmos para atingir um con-
junto de objetivos com base em regras:
1. Pautadas na lógica matemática e em outras teorias clássicas oriundas da Ciên-
cia da Computação. 
2. Adequadas para a linguagem de programação escolhida pelo programador para 
a construção do seu software.
No contexto da Matemática, entendemos o algoritmo como a represen-
tação de um conjunto de processos e de símbolos para que determinado 
cálculo possa ser efetuado.
Um algoritmo não representa, obrigatoriamente, um programa para um computador, e 
sim as etapas e os passos importantes para que determinada tarefa seja realizada. A sua 
implementação pode ser feita por:
• Um computador.
• Um ser humano. 
• Outro tipo de autômato. 
É fato que existem diferentes algoritmos rodando no nosso universo e esses poderão 
executar a mesma atividade utilizando um conjunto de instruções com mais ou menos 
tempo, espaço ou esforço do que os outros. A diferença constada estará sempre na 
complexidade computacional aplicada, cuja relação algorítmica está relacionada às es-
truturas de dados adequadas ao algoritmo. 
O que é um algoritmo?
Um algoritmo nada mais é do que uma sequência não ambígua de instruções 
que é executada até que determinada condição seja atendida. Em outras pala-
vras, são sequências lógicas ordenadas. 
saiba mais
11
Lógica proposicional
Nas questões pertinentes à lógica e à matemática, temos a lógica proposicional. 
A lógica proposicional, também conhecida como álgebra das proposições, é um siste-
ma formal no qual as fórmulas representam proposições que podem ser constituídas 
por meio da combinação de proposições atômicas que usam conectivos lógicos e um 
sistema de regras de derivação.
Um cálculo sempre será apresentado como um sistema formal que de-
termina um conjunto de expressões sintáticas.
Também podemos constatar que a lógica proposicional é tida como um subconjunto 
distinto dessas expressões sintáticas — é um conjunto de regras formais que busca de-
terminara relação binária específica que se pretende interpretar como a equivalência 
lógica no contexto apresentado de uma ou mais expressões sintáticas.
Quando há a percepção de que o sistema formal tem um propósito para ser um sistema 
lógico, as expressões estabelecidas devem ser, imediatamente, interpretadas como as-
serções matemáticas.
As regras existentes, naturalmente conhecidas como regras de inferência, em geral se-
rão preservadoras da verdade. Nesse modelo tratado, as regras poderão ser usadas para 
derivar as fórmulas representando as asserções verdadeiras.
O conceito de algoritmo foi criado em 1936, durante 
a Segunda Guerra Mundial, pelo matemático britâ-
nico Alan Turing. Após esse evento, Turing ficou co-
nhecido como o pai da Ciência da Computação. Para 
saber mais sobre essa história, indicamos o filme O 
jogo da imitação.
dica
12
O conjunto estabelecido de axiomas poderá ser:
• Vazio.
• Conjunto finito não vazio.
• Conjunto finito enumerável.
• Axiomas esquemáticos. 
A gramática formal define repetidamente as expressões e as fórmulas bem formadas da 
linguagem proposta. Dessa forma, pode-se apresentar a semântica para definir:
Verdade Valorações Interpretações
Afinal, o que é uma proposição?
Uma proposição é uma sentença declarativa, seja ela determinada de forma afirmativa 
ou negativa, na qual poderemos atribuir um valor lógico:
• Verdadeiro – V.
• Falso – F. 
Vamos ver alguns exemplos?
i. Sentença declarativa afirmativa verdadeira
“A cidade de Brasília é a capital do Brasil.” 
Temos uma sentença declarativa expressa totalmente de forma afirmativa. Nesse caso, 
podemos também atribuir um valor lógico. Uma vez que a sentença é verdadeira, natu-
ralmente o seu valor lógico será V.
ii. Sentença declarativa negativa verdadeira
“O Chile não é um país pertencente ao continente europeu.” 
Temos uma sentença declarativa expressa na forma negativa. Contudo, podemos atri-
buir a ela um valor lógico V, pois se trata de uma sentença verdadeira.
13
iii. Sentença declarativa afirmativa falsa
“6+6 = 10”
Apesar de ser uma sentença declarativa expressa na forma afirmativa, atribuímos a ela 
um valor lógico F, visto que a sentença é falsa.
iv. Quantificadores
“Y - 3 = 5”
Essa sentença não pode ser considerada uma proposição, pois não sabemos o conteúdo 
atribuído para a variável Y, ou seja, não podemos atribuir um valor lógico V ou F. 
Para transformamos a sentença em uma proposição, basta usarmos os quantificado-
res. Vejamos:
Para todo Y, Y pertencente aos Z (números inteiros), Y - 3 = 5. 
Isso é uma proposição, pois agora podemos atribuir à sentença um valor lógico. Contu-
do, sabemos que é falsa, uma vez que apenas o número 8 torna a sentença verdadeira.
v. sentenças que não são proposições
Sentenças Exemplos
interrogativas Qual é o seu nome?
imperativas Venha logo aqui.
exclamativas Ufa!
abertas x > 3
poemas -----
Vamos conhecer, agora, os princípios que regem as proposições e sua 
representação.
14
i. Princípio da identidade
Uma proposição tida como verdadeira somente será verdadeira. E uma propo-
sição falsa é, apenas, falsa.
ii. Princípio do terceiro excluído
Proposição que ou é verdadeira ou falsa, não existindo uma terceira possibili-
dade de acontecimentos.
iii. Princípio da não contradição
Proposição que não pode ser verdadeira nem falsa de forma simultânea.
As proposições sempre serão representadas por letras minúsculas – geralmente x, r, 
w e g.
Assim, temos que em “Brasil tem como capital a cidade de Brasília”:
• A sentença pode ser representada por j.
• O seu valor lógico pode ser representado por Val(j) = V.
Uma proposição também tem a prerrogativa de ser expressada por símbolos. 
importante
15
Linguagem proposicional
O alfabeto é tido como um conjunto de símbolos que compõe uma linguagem e é cons-
tituído por:
• Símbolos proposicionais atômicos V = {p1, p2, p3, ...}
• Conectivos lógicos ¬, , .
• Pontuação (, ).
As palavras da linguagem são constituídas como as sequências finitas de símbolos to-
mados desse alfabeto “V U { ¬, , , (, ) }”, chamadas de fórmulas. 
Exemplo: (p1 p7) p100 é uma fórmula e ())p5 é outra fórmula.
Usamos a metalinguagem que se caracteriza pelo emprego das letras gregas para cons-
truir a fórmula. Tais símbolos são indexados com os números naturais. Faremos a repre-
sentação da metalinguagem, símbolos atômicos, por meio de algumas letras encontra-
das no final do alfabeto da nossa língua portuguesa, por exemplo: p, q, r, s, t, u, v, x, z. 
Conheça o significado de cada um desses símbolos.
( ¬ ) Não. 
( ) Disjunção.
( ) Conjunção.
( ) Implicação.
( ) Bi-implicação. 
saiba mais
Sempre que necessitarmos de muitos símbolos atômicos, utilizaremos os sím-
bolos formais (elementos de V ) ou as letras finais do alfabeto da língua portu-
guesa indexadas com números naturais.
importante
16
Uma fórmula bem formada (FBF) é uma expressão que pode ser construída aplicando-
se um número finito de vezes às regras:
1. (F1) Símbolos atômicos são FBF, chamadas fórmulas atômicas.
2. (F2) Se α é FBF, então (¬α) é FBF.
3. (F3) Se α e β são FBFs, então (α β) é FBF e (α β) é FBF.
4. (F4) Não existem outras FBFs, além das explicitadas pelo uso das regras (F1), 
(F2) e (F3).
Para a última regra tratada não há a existência de outras FBFs, além das já obtidas pelo 
respectivo uso das regras estabelecidas em (F1), (F2) e (F3), que nos garante que todas 
as FBFs poderão ser construídas passo a passo pela existência das regras anteriores.
p será estabelecido como o menor conjunto , e é caracterizado pelas sequências de 
símbolos do nosso alfabeto que irão satisfazer as propriedades a seguir: (X é um conjun-
to de fórmulas que satisfaz as duas propriedades então X p):
1. p1, p2, ... .
2.se α, β , então (α β), (α β), (¬α) 
17
cálculo proposicional
O Cálculo Proposicional Clássico – CPC consis-
te em um modelo de sistema simbólico de lógi-
ca clássica. Todos os demais sistemas de lógica 
clássica têm um determinado princípio:
• Bivalência: cada fórmula recebe apenas um de 
dois valores distintos e absolutos, denominados 
verdadeiro ou falso.
• Não contradição: apresentada a devida fórmula e 
sua negação, uma delas será tida como falsa.
• Terceiro excluído: apresentada a devida fórmula e sua negação, uma delas será tida 
como verdadeira.
• Identidade: se uma fórmula é verdadeira, então, consequentemente, essa fórmula será 
verdadeira.
A linguagem para um cálculo proposicional consiste em um:
• Conjunto de símbolos primitivos, definidos por fórmulas atômicas, proposições 
atômicas ou variáveis.
• Conjunto de operadores, interpretados como operadores lógicos ou conectivos 
lógicos.
Existem diversas formulações distintas, todas mais ou menos equivalentes, mas que 
diferirão em alguns detalhes:
• Linguagem, que é uma coleção particular de símbolos primitivos e operadores.
• Conjunto de axiomas ou fórmulas distinguidas.
• Conjuntos existentes de regras de inferência.
abstração e aplicações
Por mais fácil que possa ser a construção de um cálculo abstrato formal que não tenha 
uso prático de forma imediata e que não apresente, naquele momento, nenhuma apli-
cação óbvia, o nome cálculo já indica que esse sistema formal tem sua origem para a 
utilidade de seus membros pró-tópicos no cálculo prático. 
18
Assim, seja qual for, o cálculo matemático é criado com:
• A intenção de demonstrar certo domínio de objetos formais.
• O objetivo final de permitir a facilitação das computações e inferências que preci-
sam ser realizadas sobre essa representação. 
O cálculo formal para qualquer apontamento de estudo é criado por um processo de 
abstração gradual. Tido como um refinamento de todas as suas etapas, o cálculo formal 
é uma análise por tentativa e erro a partir de um conjunto de sistemas notacionais infor-
mais prévios, no qual cada um dos conjuntos de sistemas notacionais informais irá tratar 
do mesmo conjunto de objetos, apenas em parte ou de um pontobem mais específico.
descrição genérica de um cálculo proposicional
A lógica proposicional tem por objetivo criar a modelagem para o raciocínio humano, 
tendo como início as frases declarativas (proposições). 
Dessa forma, antes de se desenvolver o próprio cálculo, é importante que seja 
dada a ideia da sua necessidade e dos objetivos formais que se pretende de-
monstrar com as fórmulas do cálculo.
importante
Para que possamos entender melhor o que é uma proposição, considere a frase:
1 mais 1 é igual a 10 ou 1 + 1 = 10 (representatividade simbólica). 
Nesse caso, a proposição é uma asserção declarativa. 
Assim, podemos crer que a proposição afirma ou nega o fato e tem um valor de 
verdade estabelecido, que poderá ser verdadeiro ou falso. 
exemplo
19
Portanto, teremos um sistema de numeração de base 2. Verificamos que a proposição 
anterior “1 mais 1 é igual a 10 ou 1 + 1 = 10” seria verdadeira, enquanto para o sistema 
decimal a proposição seria falsa.
Tabelas de Verdade 
Seja uma linguagem que contenha as proposições A, B e C.
Nesse contexto, o que podemos dizer sobre proposição?
a. Princípio da bivalência
Segundo o princípio de bivalência, a proposição ou é verdadeira ou é falsa.
A
V
F
Que alternativas podemos esperar acerca das proposições A e B?
• Ambas são verdadeiras.
• A primeira é verdadeira e a segunda é falsa. 
Observe a afirmativa “Hoje é um dia frio”.
Nesse caso, o valor de verdade vai depender da existência de vários fatores: 
• O local que está sendo abordado. 
• Os respectivos meios e instrumentos de medidas e de comparação — prin-
cipalmente de quem está realizando o processo avaliativo. 
Assim, o valor verdade de uma proposição não será um conceito absoluto, mas 
dependerá de um contexto interpretativo. 
exemplo
20
• A primeira é falsa e a segunda é verdadeira.
• Ambas são falsas. 
A B
V V
V F
F V
F F
Assim, o cenário para uma tabela A, B e C é:
A B C
V V V
V V F
V F F
V F V
F V V
F V F
F F V
F F F
b. Negação
A negação tem como propósito mostrar o valor inverso da fórmula negada.
A ¬A
V F
F V
c. Conjunção
A conjunção estabelecida entre duas fórmulas só será verdadeira quando ambas forem 
verdadeiras.
A B A B
V V V
V F F
F V F
F F F
21
d. Disjunção
A disjunção estabelecida entre duas fórmulas só será verdadeira quando ao menos uma 
delas for verdadeira.
A B A B
V V V
V F V
F V V
F F F
e. Implicação
A implicação estabelecida entre duas fórmulas só será falsa se a da esquerda for verda-
deira e da direita for falsa.
A B A B
V V V
V F F
F V V
F F V
f. Bi-implicação
A bi-implicação estabelecida entre duas fórmulas será verdadeira quando ambas forem 
verdadeiras ou ambas forem falsas.
A B A B
V V V
V F F
F V F
F F V
22
outros conectivos
Antes de encerrarmos o Tópico 2, vamos conhecer alguns conectivos diferenciados, 
como a adaga de Quine, a disjunção exclusiva e o traço de Sheffer.
a. Adaga de Quine
A B será verdadeiro somente se ambos, A e B, forem falsos. Isso caracteriza a negação 
da disjunção.
A B A B A B
V V V F
V F V F
F V V F
F F F V
b. Disjunção exclusiva
A disjunção exclusiva estabelecida entre duas fórmulas será verdadeira somente se apenas 
uma delas se caracterizar como verdadeira. Isso caracteriza a negação da bi-implicação.
A B A B A B
V V V F
V F F V
F V F V
F F V F
c. Traço de Sheffer
A | B só será falsa se ambos, A e B, forem verdadeiros. Isso caracteriza a negação da 
conjunção.
A B A B A B
V V V F
V F F V
F V F V
F F F V
23
introdução à álgebra de boole
No ano de 1854, o matemático britânico George Boo-
le introduziu o formalismo que, até hoje, é utilizado 
para o tratamento sistemático da lógica e possui a de-
nominação de álgebra booleana. 
A álgebra booleana tem a característica de ser um 
conjunto de operadores e de axiomas que, em seu 
contexto, são assumidos verdadeiros sem necessida-
de de prova. 
No ano de 1938, o matemático estadunidense Claude Shannon realizou demonstrações 
para que propriedades de circuitos elétricos de chaveamento pudessem ser representa-
das por uma álgebra booleana com dois valores. O uso foi diferente da álgebra ordinária 
dos reais, cujas variáveis podiam assumir valores no intervalo (-¥ + ¥).
Na álgebra booleana, com a existência de dois valores, cada variável pode assumir um 
entre dois valores possíveis:
• V ou F (verdadeiro ou falso).
• H and L (high and low).
• 0 ou 1.
Para um melhor entendimento do trabalho a ser realizado, adotaremos a 
notação com valores 0 e 1 – utilizada na eletrônica digital.
As variáveis caracterizadas como booleanas só podem assumir um número 
finito de valores.
observação
24
Como o número de valores que cada variável pode assumir é finito, o número de estados 
que uma função booleana poderá assumir também será finito. Isso quer dizer que pode-
mos descrever completamente as funções booleanas utilizando tabelas definidas. 
Com base nisso, uma tabela que descreva uma função booleana receberá o nome de 
tabela-verdade.
Serão representadas na tabela-verdade todas as combinações possíveis de valores que 
as variáveis de entrada poderão assumir e os correspondentes valores da função que 
poderão ser retornados (saídas).
operações básicas
As funções booleanas poderão ter sua representatividade com base nessas opera-
ções básicas: 
• Operação “OU”. 
• Operação “E”.
• Complementação. 
a. Operação “OU” (adição lógica)
Resultante de 1 se pelo menos uma das variáveis atribuídas na entrada valer 1. 
Como uma variável booleana pode valer 0 ou valer 1, e o resultado de uma operação 
qualquer poderá ser visto como uma variável booleana, basta que haja uma definição de 
quando a operação vale 1. 
De forma automática, a operação resultará no valor 0 nos demais casos. Assim, pode-
mos dizer que a operação “OU” tem o resultado 0 apenas quando todas as variáveis de 
entrada valerem 0. 
Um símbolo utilizado para a representatividade da operação “OU” é “+” (sinal de mais), 
tal como o símbolo da adição algébrica. 
25
Possibilidades para as combinações entre dois valores booleanos e os respectivos 
resultados para a operação “OU”:
0 + 0 = 0
0 + 1 = 1
1 + 0 = 1
1 + 1 = 1
A operação “OU” só poderá ser definida caso haja, pelo menos, duas variáveis envolvidas. 
O operador “+” (OU) é tido como binário (dois valores). Nas equações existentes, não se 
costuma apresentar todas as possibilidades de valores. Adotamos, apenas, uma letra 
para determinar uma variável booleana. Com isso, já se sabe que a variável pode assumir 
o valor 0 ou o valor 1. 
O desenvolvimento da equação A + B pode ser representado utilizando a seguinte 
tabela-verdade:
A B A + B
0 0 0
0 1 1
1 0 1
1 1 1
Da mesma forma podemos demonstrar o comportamento da equação A + B + C por 
meio de uma tabela-verdade. Como na equação há somente o símbolo “+”, denota-se que 
a operação “OU” será com três variáveis. 
Não será possível realizar a operação somente com uma variável. 
observação
26
Podemos aplicar diretamente a definição da operação “OU”: o resultado obtido será 1 se 
pelo menos uma das variáveis de entrada tiver o valor 1.
A B C A + B + C
0 0 0 0
0 0 1 1
0 1 0 1
0 1 1 1
1 0 0 1
1 0 1 1
1 1 0 1
1 1 1 1
b. Operação “E” (multiplicação lógica)
A operação “E” terá o valor 0 se pelo menos uma das variáveis de entrada tiver o valor 0. 
Assim, concluímos que o resultado da operação “E” valerá 1 se, e somente se, todas as 
entradas de valores tiverem o valor 1. 
O símbolo utilizado para a operação “E” é o “×”. Contudo, outra notação também utilizada 
é “Ù”. 
Possibilidades de combinações entre dois valores booleanos (e os respectivos resul-
tados) para a operação “E”.
0 × 0 = 0
0 × 1 = 0
1 × 0 = 0
1 × 1 = 1
Como vimos na operação “OU”, a operação “E” só poderá ser definida com, pelo menos, 
duas variáveis. O operador “×” (E) também precisa ser binário. 
27
O comportamento da equação A × B será escrito na tabela-verdade da seguinte forma:
A B A x B
0 0 0
0 1 0
1 0 0
1 1 1
Podemosdefinir o resultado da equação A × B × C utilizando a definição da operação “E”: 
o resultado atribuído será 0 se pelo menos uma das variáveis de entrada tiver o valor 0.
A B C A x B x C
0 0 0 0
0 0 1 0
0 1 0 0
0 1 1 0
1 0 0 0
1 0 1 0
1 1 0 0
1 1 1 1
c. Complementação (negação ou inversão)
Operação cujo resultado obtido é o valor complementar ao que a variável irá apresentar. 
Devido ao fato de que uma variável booleana poderá assumir um valor entre dois valores, 
o valor complementar será sempre: 
• 1, se a variável tiver o valor 0.
• 0, se a variável tiver o valor 1. 
Os símbolos a serem utilizados para a representação da operação de “Complementa-
ção” sobre uma variável booleana A são A, ~A e A’ (entende-se que o A é negado).
0 = 1 
1 = 0 
28
Diferentemente das operações “OU” e “E”, a “Complementação” só poderá ser definida 
sobre uma única variável ou sobre o resultado de uma expressão. 
O operador “Complementação” é conhecido como unário. 
Tabela-verdade para A:
A A
0 1
1 0
Para ampliar o seu conhecimento veja o material complementar da Unidade 1 
disponível na midiateca.
midiaTeca
Uma empresa que demanda a construção de um algoritmo para a resolução 
de um problema irá se deparar com uma série de definições a serem tomadas. 
Consequentemente, isso fará parte da construção do algoritmo. A informação 
passada para a construção do algoritmo influenciará a forma como esse algo-
ritmo seguirá as etapas para que suas demandas sejam atendidas.
Tal situação implica a criação de uma tabela-verdade para a verificação das 
opções e das oportunidades. 
A tabela-verdade irá demonstrar os caminhos a serem seguidos para que o 
algoritmo atenda, na íntegra, às demandas exigidas.
na PráTica
29
resumo da unidade 1
Nesta unidade você estudou toda a importância de se trabalhar com atenção para que 
não haja problemas referentes ao processo de criação de um programa pelo uso de lógi-
ca proposicional, tabela-verdade e álgebra booleana.
Todo esse contexto de estrutura de cálculo e de raciocínio lógico com base nos cálculos 
proposicionais possibilita uma estruturação do raciocínio lógico, uma vez que o condicio-
na a uma série de aplicações.
Destacamos a importância do uso dos valores 0 e 1, pois ambos estão conectados com 
todo o propósito dos números binários que tangenciam o cenário da Tecnologia da In-
formação.
A aplicação da tabela-verdade contemporiza a aplicação estruturada para tomadas de 
decisões, bem como a aplicação de cálculos proposicionais nas tomadas de decisões.
Nesta unidade destacam-se os conceitos fundamentais de como se resolver 
problemas com relação a erros nos programas, além da aplicação de cálculo 
proposicional e da aplicação da tabela-verdade. Essas questões validam a im-
portância da estruturação do raciocínio lógico na construção de aplicações e 
também sua importância para a tomada de decisão na construção bem defini-
da de um algoritmo.
conceiTo
30
referências 
ASCENCIO, A. F. G.; CAMPOS, E. A. V. de C. Fundamentos da programação de compu-
tadores: algoritmos, PASCAL, C/C++ (padrão ANSI) e JAVA. 3. ed. São Paulo: Pearson 
Education do Brasil, 2012. Biblioteca Virtual. 
HETEM JUNIOR, A.; BARBIERE FILHO, P. Fundamentos de Informática: lógica para com-
putação. Rio de Janeiro: Grupo GEN – LTC, 2013. Minha Biblioteca.
Construção de fluxograma 
e português estruturado
UNIDADE 2
32
Nesta unidade vamos conhecer os fundamentos e os tipos de fluxograma existentes, 
bem como a dinâmica de suas aplicabilidades. Veremos uma forma de programação 
com base no pseudocódigo — mais conhecido, no Brasil, como Portugol. Também abor-
daremos a questão das estruturas de controle e de repetição e suas respectivas formas 
de utilização. 
inTrodução
Nesta unidade vamos será capaz de:
• Compreender a importância da utilização dos fluxogramas e do português es-
truturado para o desenvolvimento do raciocínio lógico.
objeTiVo
33
construção de fluxogramas
introdução ao fluxograma
O fluxograma é uma ferramenta utilizada para representar, de forma gráfica, a necessi-
dade de um algoritmo, isto é, demonstra a sequência lógica e com coerência do fluxo 
de dados. 
Composto por um grupo de figuras geométricas simples — conhecidas como diagrama 
de bloco —, o fluxograma é também utilizado de várias outras formas.
Os principais aspectos dessa forma de utilização do fluxograma são: 
• Manter a padronização com relação à representação dos métodos e dos procedi-
mentos administrativos. 
Além de representar graficamente um algoritmo, o fluxograma também 
pode ser utilizado em empresas para demonstrar os vários processos de 
entrada, processamento e saída de uma determinada produção ou de um 
respectivo projeto.
exemplo
34
• Promover maior rapidez para a descrição dos métodos administrativos.
• Permitir que haja facilidade na leitura e no entendimento.
• Permitir que haja facilidade na localização e na identificação dos aspectos mais 
importantes do que se pretende.
• Gerar uma maior flexibilidade e um melhor grau de análise dos processos.
Por ser um tipo de diagrama, o fluxograma pode ser entendido como uma representação 
esquemática de um determinado processo. É constituído por uma representação gráfica 
que ilustra de forma descomplicada uma sequência de execução dos elementos que o 
compõem. É possível entender, de maneira prática, como a documentação das etapas 
necessárias para a execução de um processo qualquer acontece.
diagrama de bloco
É uma ferramenta de larga escala que é muito empregada na representação gráfica para 
o uso do fluxograma, isto é, demonstra o que cada símbolo geométrico significa e sua 
utilização no fluxo, bem como sua função.
simbologia
Observe, a seguir, o significado de cada símbolo e qual sua função dentro do padrão ANSI
Simbologia de fluxogramas 
Padrão ANSI - American National Standards Institute
Símbolo Significado Símbolo Significado
Operação Armazenagem
Movimento/Transporte Sentido de fluxo
Ponto de decisão Conexão
Inspeção Limites (início, pare, fim)
Documento impresso 1-
Utilizado quando o 
fluxograma não cabe 
em uma única página
Espera
35
Forma de declaração de variável no fluxograma
O contorno do retângulo é tracejado e, em seu interior, colo-
ca-se a declaração da variável.
diagrama de chapin
O Diagrama de Chapin — também conhecido como Diagrama de Nassi-Shneiderman 
— foi criado por Ned Chapin e:
• Representa a substituição do fluxograma tradicional por um diagrama.
• Trabalha com a programação estruturada.
• Permite a visualização do fluxo lógico do algoritmo.
N1: inteiro
Observe, a seguir, um fluxograma para conversão de grau Fahrenheit para 
grau Celsius.
exemplo
Início
Fim
Celsius = 5/9 * (Fahrenheit - 32)
Celsius
Fahrenheit
36
Vantagens e desvantagens das formas de representação gráfica
Figuras utilizadas no Diagrama de Chapin
Diagrama de Chapin (Nassin-Shneiderman)
Início, fim, processamento (leitura, escrita, atribuição).
expressão
V F
Decisão (if).
expressão
comandos
executados
Repetição com teste no início (while, for).
expressão
comandos
executados Repetição com teste no final (do... while ou repeat... util).
Maior clareza no fluxo de 
execução das instruções.
Controle de sequência, 
de seleção e de repartição.
Linguagem de visualização 
bem simples.V
A
N
TA
G
EN
S
D
ES
VA
N
TA
G
EN
SRequer um conhecimento de convenções gráficas.
Maior trabalho em função 
de seus desenhos mais 
complexos.
Maior dificuldade para 
realizar correções.
37
Fluxograma de Chapin para cálculo de média.
exemplo
Média > = 7
Sim Não
Média (N1 + N2)/2
Leia N1, N2
Início
Fim
Escreva 
“aprovado”
Escreva 
“reprovado”
38
Português estruturado 
algoritmo
A capacidade de pensar de maneira lógica e ordenada é um dos grandes diferenciais 
para podermos entender como resolver problemas do cotidiano ou problemas impostos 
pelas demandas das empresas, principalmente no que tange à área da computação. 
Compreender o conceito de algoritmo é algo de extrema importância.Para que haja um processo de facilitação neste início de demanda, podemos nos utilizar 
do pseudocódigo, que é um conjunto de instruções escrito em português denominado 
“Portugol”. Nessa escrita de instruções, você terá contato com detalhes como entrada e 
saída de dados, bem como com o processamento propriamente dito. 
A lógica de programação é a capacidade que todo e qualquer programador precisa ter 
para sanar os problemas e demandas que aparecem no dia a dia de suas atividades. 
39
Descrito como uma sequência lógica de ações com o objetivo de resolver um determina-
do problema, o algoritmo vai além do âmbito da programação.
Tipos de algoritmo
O pseudocódigo
O pseudocódigo irá utilizar uma linguagem de programação estruturada que se asseme-
lhará, na forma, a um programa escrito em uma linguagem de programação. 
Português estruturado
A descrição narrativa utiliza uma linguagem natural que especifica todas as etapas para 
a realização de tarefas determinadas.
Dividir um problema em partes menores é uma etapa essencial da lógica de 
programação que precisa ser considerada quando somos submetidos a um 
desafio. É nesse momento que temos contato com o conceito do algoritmo. 
importante
Imagine uma pessoa “mascando um chiclete de menta”.
Vamos ver como se dá o pseudocódigo?
1. pegar o chiclete na embalagem
2. retirar o papel do chiclete
3. colocar o chiclete na boca
4. mascar o chiclete
5. jogar o papel na lata de lixo
6. jogar o chiclete no lixo após perder o gosto
exemplo
40
Pseudocódigo
A representação de um ou mais algoritmos é realizada de diversas formas. Para que hou-
vesse uma aproximação um pouco maior dos dois conceitos, foi criado o pseudocódigo 
— como exemplo de pseudocódigo, no Brasil, temos o Portugol. 
Vejamos os comandos do pseudocódigo:
• escreva (“ “) – Comando utilizado para exibir uma mensagem na tela.
• leia () – Comando usado para ler valores digitados pelo usuário via teclado.
• – Comando de atribuição de informação para uma variável.
• Inicio – Palavra utilizada para iniciar o programa principal.
• Fim – Palavra utilizada para finalizar o algoritmo.
• Var – Palavra utilizada para declarar as variáveis do programa.
• Algoritmo – Palavra utilizada para indicar o início do programa. 
São consideradas boas práticas na escrita do pseudocódigo:
 
• Utilizar um verbo no infinitivo por frase.
• Fazer frases curtas e simples.
• Ser bem objetivo.
• Usar palavras sem duplo sentido. 
• Usar indentação e linhas em branco.
O objetivo é um só: desenvolver um código-fonte que se aproxime, o máximo possível, do 
que será visto em algumas linguagens de programação, como C, C# ou Java.
Por meio da utilização do Portugol, nosso algoritmo da soma de dois números será de-
monstrado a seguir. Nesta linguagem de programação, é importante destacar que temos 
outro modelo, conhecido como regiões — nesse código, temos uma região de variáveis 
e outra de processamento de informações. Esse conceito sempre deve ser considerado 
no processo de desenvolvimento de sistema.
01 inicio
02 inteiro x, y, resultado
03 ler (x)
04 ler (y)
05 resultado x 8 y
06 escrever (resultado)
07 fim
41
Vamos entender o que significa cada uma dessas linhas?
Linha 01
Indicação do início do algoritmo em Portugol.
Linha 02
Local para a definição de variáveis. As 
variáveis inteiras “x” e “y” serão utilizadas 
para armazenar os valores digitados pelo 
usuário, enquanto a variável “resultado” 
irá receber a soma deles.
Linhas 03 e 04
Lerão os valores digitados pelo usuário e 
os guardarão nas variáveis “x” e “y”. 
No Portugol, as ações serão sempre defi-
nidas por verbos no infinitivo.
Linha 05
Utilizamos o operador de atribuição “
”. Esse operador atribui a operação de 
soma das variáveis “x” e “y” à variável “re-
sultado”. 
Esta é a fase de processamento dos da-
dos de entrada.
Linha 06
Para finalizar o algoritmo, temos a amos-
tragem dos dados para o usuário. 
Nesse caso, utilizamos o verbo “Escrever” 
para exibir essa ação.
Linha 07
Indicação do fim do algoritmo em Portugol.
O verbo ler serve para indicar a leitura das informações do usuário — entrada 
dos dados. 
O verbo escrever exibe o resultado final para o usuário — saída de dados.
observação
42
Vamos, agora, fazer uma análise de um algoritmo desenvolvido para encontrar a solução 
da soma entre dois números.
1 algoritmo “somavalores”
2 var
3 num1, num2, somat: real
4
5 inicio
6
7 escrever (“digite o primeiro número “)
8 ler (num1)
9 escrever (“digite o segundo número “)
10 ler (num2)
11 somat num1 + num2;
12 escrever (“Primeiro número eh: “, num1)
13 escrever (“Segundo número eh: “, num2)
14 escrever (“Soma: “, somat)
15 
16 fimalgoritmo
Vejamos o que quer dizer cada uma dessas linhas.
Linha 1 – Utilizamos a palavra-chave algoritmo para começar o nosso algoritmo. Obser-
ve que, em seguida, temos um nome entre as aspas duplas: nome_do_algoritmo.
 
Linha 2 – Utilizamos a palavra-chave var para demonstrar que, naquele espaço, deve-
mos declarar as respectivas variáveis que serão usadas no programa.
 
Linha 3 – As variáveis são declaradas com seus respectivos identificadores e tipos. 
Primeiro, vem o nome (identificador) da variável e, após os dois pontos, o tipo da variável. 
num1 e num2 são os dois números; somat é a variável que armazenará o resultado da 
operação aritmética a ser realizada.
 
Linha 5 – Utilizamos a palavra-chave inicio para indicar que, a partir daquele ponto, te-
mos o início do programa principal.
 
Linha 7 – Utilizamos o comando escrever para que seja exibido um texto na tela do 
usuário. É solicitado que o usuário digite um número.
 
43
Linha 8 – Utilizamos o comando ler para que o valor digitado pelo usuário, via teclado, 
seja armazenado na variável correspondente. O valor será atribuído para a variável num1.
Linha 9 – Utilizamos o comando escrever para que seja exibido um texto na tela do 
usuário. É solicitado que o usuário digite o segundo número.
Linha 10 – Utilizamos o comando ler para que o valor digitado pelo usuário, via teclado, 
seja armazenado na variável correspondente. O valor será atribuído para a variável num2.
Linha 11 – Momento no qual a operação aritmética é realizada. É utilizado o comando 
para que o resultado seja atribuído à variável somat.
Linhas 12, 13 e 14 – Utilizamos o comando escrever. Contudo, observe que há algo 
diferente em relação às linhas 7 e 9. Estamos exibindo na tela, junto com o texto que que-
remos, os valores das variáveis. Isso é feito usando a vírgula e pondo, após ela, a variável 
que queremos que seja exibida na tela.
Linha 16 – Utilizamos a palavra-chave fimalgoritmo para finalizar o programa principal 
e sua execução. Essa palavra-chave força a saída do programa, fechando a janela e libe-
rando o espaço de memória que estava reservado para as variáveis.
44
estruturas de controle e repetição
estruturas de decisão
Comandos de decisão (ou desvios) são utilizados para a construção de algoritmos que 
não são totalmente sequenciais — com as instruções de desvio, é possível fazer com que 
o algoritmo proceda de uma outra forma, seguindo outros caminhos conforme as deci-
sões lógicas tomadas em virtude dos dados ou dos resultados anteriores.
As estruturas de decisão que veremos hoje são: 
SE ... ENTÃO ... SENÃO ... FIM SE 
SE alguma coisa for verdadeira ENTÃO 
executar este bloco de comandos 
SENÃO 
executar este outro bloco de comandos 
FIM SE • SE ... ENTÃO ... FIM SE 
SE alguma coisa for verdadeira ENTÃO 
executar este bloco de comandos 
FIM SE
45
Em uma estrutura de controle, também podemos trabalhar com a opção de ter uma es-
trutura de menu de opções. Quando uma opção for selecionada, automaticamente, os 
códigos referentes a essa opção serão executados em ordem sequencial.
1. Construa um algoritmo para ler dois valores inteiros e escreva qual é o 
maior valor entre eles.
ALGORITMO “checarvalores”
VAR
 VALOR1, VALOR2 INÍCIO: Inteiro
INICIO 
Ler VALOR1 
Ler VALOR2 
SE VALOR1 > VALOR2ENTÃO 
 Escrever ‘O primeiro é maior’ 
SE NÃO 
 Escrever ‘O segundo é maior’ 
FIM SE 
FIMALGORITMO
2. Construir um determinado algoritmo para ler um valor real. Caso o va-
lor seja maior do que zero, escreva-o e finalize o programa. Caso contrário, 
apenas finalize o programa.
ALGORITMO “valorreal”
VAR
 VALOR INÍCIO: real
INICIO
Ler VALOR 
SE VALOR > 0 ENTÃO 
 Escrever ‘O valor é ’ VALOR 
FIM SE 
FIMALGORITMO
exemplo
46
estrutura de repetição
A necessidade de implantação de um loop (repetição) com número de iterações predefi-
nido é denominada de estrutura de repetição. 
escolha y
 caso 0: 
 Ler (x) 
 sen(x)
 caso 1: 
 Ler (x)
 cos(x)
 caso 2: 
 Ler (x)
 tg(x)
 caso contrário: 
 Ler (x)
 x = x + 1
fim escolha
exemplo
Um algoritmo que realiza a soma dos números de 1 a 20 terá um número de 
iterações predefinido (20), ou seja, irá executar 20 vezes.
O loop (repetição) poderá ser implementado com qualquer estrutura de repeti-
ção (enquanto e repita-até), mas, para isso, é importante que haja a utilização 
de um contador — variável de controle utilizada para contar quantas iterações 
foram executadas. 
exemplo
47
Estrutura de repetição com o “enquanto”
Enquanto <condição> repetir <ações>
1. A referida <condição> é testada. Caso 
seja verdadeira, então executar <ações> 
e, em seguida, testar novamente a opção 
lógica. Este ciclo irá se repetir até que, em 
algum teste, a opção lógica resulte em 
um cenário falso.
2. Nesta estrutura, temos uma condição 
que determina se devemos continuar a 
repetir as ações quando o resultado for 
verdadeiro ou parar de repetir quando o 
resultado for falso.
3. É preciso garantir que o dado atrelado à condição tenha o seu valor sempre alterado 
por alguma das ações repetidas, caso contrário, não teremos um resultado falso no teste 
e, assim, a repetição permanecerá em um infinito ciclo loop.
A estrutura de repetição para tem implementado um contador implícito. Sua forma 
estrutural:
PARA <variável_de_contagem> DE <valor_de_inicio> ATE <valor_fim> 
[PASSO <valor_de_incremento>] FAÇA
 <instruções que serão executadas repetidamente até que a <variável_de_conta-
gem> atinja o valor_fim>
FIM-PARA
ALGORITMO “maiorvalor”
VAR
 maior, num: inteiro
INICIO
maior = 0 (o maior por enquanto é o menor valor)
num = 1
Enquanto (num <> 0) repetir
Ler num (aqui o valor de num muda, é a entrada do usuário)
Se (num > maior) então 
 maior = num
Escrever maior (isto só executa quando o ciclo parar)
FIMALGORITMO
exemplo
48
O passo utilizado para o incremento é opcional. 
Esse recurso irá servir para definir qual valor o incremento do contador utilizará: de 1 em 
1 (padrão), de 2 em 2, de 3 em 3 etc. 
Esta estrutura de repetição irá realizar o incremento de um determinado contador de 
forma implícita.
A forma de inicialização de uma variável contadora é feita implicitamente, com o <va-
lor_de_inicio> informado da declaração da estrutura PARA. A condição para executar a 
iteração é que o valor da variável_de_contagem não tenha atingido o <valor_fim>. E ao 
final de cada iteração, o valor da variável_de_contagem é incrementado em 1 (ou o valor 
declarado como PASSO ou <valor_de_incremento>).
algoritmo “Fatorial”
var
 num, fat, cont: inteiro
inicio
 Escrever (“Digite o número para calcular o fatorial: “)
 Ler (num)
 fat = 1
 cont = 1
 ENQUANTO cont <= num FACA
 fatorial = fat * cont
 cont = cont + 1
 FIMENQUANTO
 Escrever (“O fatorial de “, num, “ é : “, fat)
fimalgoritmo
exemplo
49
Perceba que foi necessário incrementar o contador de forma explícita (linha 16). Com a 
colocação da estrutura de repetição PARA, isso não é necessário. 
Vejamos, agora, o mesmo algoritmo implementado com o comando PARA. 
algoritmo “Fatorial”
var
 num, fat, cont: inteiro
inicio
 Escrever (“Digite o número para calcular o fatorial: “)
 Ler (num)
 fat = 1
 PARA contador DE 1 ATE numero FACA
 fat = fat * cont
 FIMPARA
 Escrever (“O fatorial de “, num, “ é : “, fat)
fimalgoritmo
exemplo
Para ampliar o seu conhecimento veja o material complementar da Unidade 2 
disponível na midiateca.
midiaTeca
50
Uma escola precisa que seus alunos desenvolvam um pseudocódigo para que 
seja calculado o somatório de duas notas.
ALGORITMO “somanotas”
VAR
 nota1, nota2, tot: real 
INICIO
escrever “Digite a primeira nota”
ler nota1
escrever “Digite a segunda nota”
ler nota2
tot nota1 + nota2
escrever “A soma eh: ”
escrever tot
FIMALGORITMO
na PráTica
51
resumo da unidade 2
Nesta unidade você estudou o uso dos respectivos fluxogramas para poder iniciar o pro-
cesso de construção de um algoritmo. Contemplamos também a questão do uso do 
pseudocódigo para a realização de um ou mais programas sem a utilização efetiva de 
uma linguagem de programação, além de termos relativos às estruturas de controle e de 
repetição para a ampliação dos códigos.
Fluxogramas, pseudocódigos, estruturas de controle e repetição.
conceiTo
52
referências 
GUEDES, S. Lógica de programação algorítmica. São Paulo: Pearson Education do Bra-
sil, 2015. Biblioteca Virtual.
MENDES, F. V. Programação avançada em C++. São Paulo: Pearson Education do Brasil, 
2006. Biblioteca Virtual.
SZWARCFITER, J. L.; MARKEZON, L. Estruturas de dados e seus algoritmos. 3. ed. Rio 
de Janeiro: Gen - LTC, 2013. Minha Biblioteca.
Entender os conceitos e 
aplicações da Linguagem C
UNIDADE 3
54
Nesta unidade vamos conhecer os fundamentos do ambiente de programação em lin-
guagem e entender como se dá a criação de uma determinada variável e seus tipos, veri-
ficando o elo entre o trabalho com os respectivos tipos de dados utilizados nas variáveis 
e as operações aritméticas. Abordaremos como realizar a conversão de um pseudocódi-
go em uma aplicação na Linguagem C com foco diferenciado na estrutura de repetição, 
permitindo a execução simultânea de um ou mais códigos até que uma ou mais condi-
ções findem. 
inTrodução
Nesta unidade você será capaz de:
• Entender os conceitos e aplicações da Linguagem C.
objeTiVo
55
comandos e operadores em c
A linguagem de programação em C foi desenvolvida 
em um centro de pesquisas da empresa estaduni-
dense Bell Laboratories, pelo professor Dennis Rit-
chie, no ano de1972. 
Sua primeira utilização de grande importância foi a 
reescrita do sistema operacional UNIX, que, até en-
tão, tinha o seu código-fonte escrito em assembly.
A linguagem de programação em C é uma linguagem ampla, sendo direcionada para a 
programação estruturada. Contudo, é mais utilizada para analisadores léxicos, desenvol-
vimento de compiladores, editores de texto, bancos de dados etc.
sintaxes da Linguagem c
As sintaxes existentes na Linguagem C são constituídas por regras muito bem detalha-
das para que o processo de compilação seja exitoso e tudo aquilo que foi escrito possa 
ser plenamente identificado e redunde em um programa executável que atenda ao obje-
tivo proposto.
Essas regras são muito bem relacionadas com os seguintes propósitos:
• Tipos.
• Declarações.
• Funções. 
• Expressões.
A estrutura de um programa em Linguagem C é composta por:
• Diretiva de compilação e biblioteca.
• Definição de tipos de dados.
• Protótipos de funções.
• Funções.
• Comentários.
56
a. Diretiva de compilação
A diretiva de compilação deve ser iniciada com a palavra #include, sendo seguida de 
uma determinada biblioteca. 
b. Tipos e declarações
Os tipos definem as respectivas propriedades dos dados manipulados em um programa.
As declarações expressam as referidas partes do programa:
• Dando significado a um identificador.
• Permitindo a alocação de memória.
• Definindo um conteúdo inicial.
• Definindo as funções.
c. Funções e expressões
As funções especificam as ações que determinado programa irá executar.
As determinações, as alterações de valores e as chamadas funções de I/O (input/output) 
serão definidas nas expressões.
As funções são entidades operacionais básicasque têm um determinado propósito que, 
por sua vez, é a integração de uma ou mais funções, em que cada qual irá executar a sua 
atividade.
#include <stdio.h> 
Diretiva de compilação utilizada para que haja um entendimento do que foi es-
crito no programa. Caso contrário, o desenvolvedor poderia escrever qualquer 
palavra para ser executada. 
exemplo
57
Existem funções básicas que estão definidas na biblioteca stdio.h da linguagem de pro-
gramação C, a saber: 
• Função printf() – Exibe informações na tela para o usuário. 
• Função scanf() – O usuário poderá fazer entrada de dados via teclado.
O programador também poderá definir algumas novas funções em seus programas, 
como:
• Rotinas para cálculos.
• Leitura de arquivos textos.
• Impressão.
O programa desenvolvido na Linguagem C, obrigatoriamente, terá o seu início com a exe-
cução da chamada função main() – função principal.
d. Comentários
Os comentários que o desenvolvedor precisar criar no programa para explicar ou definir 
algo que julgue importante serão colocados entre “/* e */”, não sendo considerados no 
processo de compilação.
Cada instrução do programa em Linguagem C deverá ser encerrada com “;” (ponto e vír-
gula) — que é parte obrigatória da maioria dos comandos. O “;” determina que a instrução 
terminará neste momento.
É obrigatória a existência da função main() no programa principal.
observação
58
identificadores
São nomes utilizados para se fazer uma referência a variáveis, funções, rótulos, labels e 
vários outros objetos que podem ser definidos pelo programador. 
É necessário que o primeiro caractere definido seja uma letra ou um sublinhado. 
A Linguagem C trabalha como formato de “case sensitive” — as letras minúsculas dife-
rem das letras maiúsculas, o que pode causar problemas no processo de complicação 
do programa.
main() /* função obrigatória */
{
printf(“Bom dia!”); /* função para exibir informação na tela */
printf(“Seja bem-vindo!”);
}
exemplo
Os 32 primeiros caracteres de um identificador são de grande relevância.
observação
int x; /* é diferente de int X;*/
Ao realizarmos a declaração de uma variável denominada “valor”, ela será dife-
rente de “Valor”, “VALOR” ou “VaLor”.
Isso também se aplica para comandos e funções.
exemplo
59
Variáveis utilizadas na Linguagem C
A variável sempre terá determinado local na memória do computador para que determi-
nado dado seja armazenado. 
Funciona como se fosse uma caixa guardando determinado dado que:
• Pode ser acessado em um momento do programa.
• Pode ser utilizado para a realização de um cálculo.
Toda variável precisa ter um identificador, ou seja, um nome que a identifique dentro do 
programa, pois por meio desse nome é que o programador poderá fazer uso dela em 
suas instruções.
Além da necessidade de ter um nome, a variável também precisará da identificação de 
um tipo de dado. O tipo de dado atribuído a uma variável determina o que ela é capaz de 
armazenar em termos de dados.
Variáveis e constantes
Variáveis e constantes são os elementos básicos que um programa pode manipular em 
tempo de execução. 
Variáveis
Pequenos espaços criados para alocar 
dados na memória de um computador 
— esses dados podem ser modificados 
durante a execução de um programa.
Constantes
Pequenos espaços alocados na memória 
do computador para armazenar infor-
mações que NÃO serão modificadas no 
decorrer da execução do programa.
Nomes das variáveis
Existem algumas regras básicas para regular a nomenclatura das variáveis. 
• O nome só poderá ter letras e dígitos.
• O caractere “_” pode ser usado, pois é tido como uma letra.
• O primeiro caractere precisa, necessariamente, ser uma letra.
• As letras minúsculas e maiúsculas são caracteres diferentes.
60
É fundamental que a escolha dos nomes das variáveis tenha um significado e indique 
sua finalidade — como valor, soma, total, nome ou raio.
Variáveis locais e globais
A variável local é declarada dentro da estrutura de uma função específica, podendo ser 
a função main() ou outra função criada.
Palavras reservadas oriundas da Linguagem C não podem, em hipótese algu-
ma, ser usadas no nome das variáveis a serem criadas.
São palavras reservadas da Linguagem C:
auto / break / case / char / const / continue / default / do / double / else / extern 
/ for / float / short / struct / union / unsigned / void / while.
importante
Somente pode ser utilizada em tempo de execução por aquela função que rece-
beu a declaração e por nenhuma outra. 
observação
Variável local
#include <stdio.h>
main ()
{
 int a; // variável declarada como LOCAL (está após a função main())
 a = 3; 
}
exemplo
61
A variável global é declarada após a diretiva de compilação “#include <stdio.h” e será 
usada em todas as funções que fazem parte do programa.
Vejamos também um exemplo de declaração de variáveis constantes:
Variável global
#include <stdio.h>
 int a; // variável declarada como GLOBAL (está antes da função main())
main ()
{
 a = 3; 
}
exemplo
#include <stdio.h>
#define icms 0.18; //declaração da constante
 
main()
{
 float preco_produto, valor_icms; // declaração variável local
 preco_produto = 50;
 valor_icms = preco_produto * icms;
 printf(“Valor de imposto a ser pago: R$ %f”, valor_icms);
}
exemplo
62
Tipos de dados
Os dados poderão assumir cinco tipos básicos na linguagem de programação C, a saber:
• char.
• int.
• float.
• double.
• void.
Conheça a definição de cada um deles.
char
(caractere)
O valor armazenado é um caractere. Cabe 
ressaltar que um valor numérico, quando 
armazenado em um caractere, perde o 
seu poder de realização de cálculo. 
A placa de um veículo é um bom exem-
plo: “TGL8F92”.
int
(número inteiro)
Tipo de dado utilizado para a representa-
ção de informações numéricas dentro do 
programa.
float
Número em ponto flutuante de precisão 
simples caracterizado, normalmente, 
como número real. É utilizado para 
trabalhar com valores em moedas (R$ 
567,89), notas de uma prova (9,6) etc. 
double
Número em ponto flutuante de precisão 
dupla utilizado para trabalhar com valo-
res decimais que demandam um número 
maior de armazenamento de informa-
ções. Exemplo: R$ 1.000.000.000,00.
Void
Tipo de dado utilizado para denotar que um resultado, 
quando não tiver um tipo de dado definido, terá seu valor 
ligado ao void. Aplicações desse propósito criam um 
tipo vazio que poderá, posteriormente, ser modificado ao 
longo da execução do programa para um dos outros tipos 
(char, int, float ou double). 
63
operadores
Vejamos, agora, alguns tipos de operadores.
1. Operadores relacionais
Operadores relacionais
= atribuição
!= Diferente
> maior
< menor
<= menor igual
>= maior igual
== igual
% resto da divisão entre números inteiros
2. Operadores lógicos
Operadores lógicos
&& and (e)
|| or (ou)
! not (não)
3. Operadores aritméticos
Aritmético Operação Prioridade
+ Adição 5
– Subtração 5
% Resto da divisão 4
* Multiplicação 3
/ Divisão 3
64
4. Operadores e expressões
As expressões combinam operandos e operadores para produzir um único resultado. 
5. Operadores de atribuição ( = )
O valor da expressão da direita é atribuído à variável da esquerda. 
6. Operadores aritméticos 
( * , / , % , + , - )
declarando variáveis
Vejamos como uma variável deve ser declarada em um programa de Linguagem C. 
É preciso definir:
• O tipo de dado. 
• Atrelado ao tipo de dado, o nome da variável a ser utilizado.
a + b * c – d
exemplo
soma = a + b; 
a = b = c = d = 10;
exemplo
a = 3 + 2 * (b = 7/2); b = 7 / 2 e a = 3 + 2 * b
printf (“%d”, -3 + 4 * 5 – 6) 11
exemplo
65
É possível que, na mesma linha de instrução, seja colocada mais de uma variável — des-
de que todas sejam do mesmo tipo.
#include <stdio.h>
main()
{
 int val;
 double salario;
 int num, soma, total;
}
atribuição de valores às variáveis
Agora, vamos entender como uma variável recebe um valor fixo dentro da função principal.
A variável dias, que tem o tipo de dado int, recebe em tempo deexecução o valor 30.
#include <stdio.h>
main()
{
 int dias;
 dias = 30;
}
Porém, como uma variável recebe um valor fixo dentro da função principal? 
A variável num — que tem o tipo de dado int — recebe em tempo de execução o valor 28 
no mesmo momento em que é declarada.
Já a variável cep recebe o valor 22786021 após ter sido declarada.
#include <stdio.h>
main()
{
 int num = 28, cep;
 cep = 22786021;
}
66
função de saída
a. Função printf()
Com base na função printf(), a qual está contida também no arquivo stdio.h, poderemos 
exibir informações na tela do computador.
Sintaxe
printf (“Expressao”);
ou
printf (“Expressao” , lista de argumentos);
printf (“Volta ao Mundo!”);
exemplo
Expressão
Mensagens que serão exibidas.
Lista de argumentos
Pode conter identificadores de variáveis, 
expressões aritméticas ou lógicas e valo-
res constantes.
b. Impressão de tipos de dados e caracteres especiais
Código Tipo Elemento Armazenado
%c char Um único caractere.
%s char Uma cadeia de caracteres.
%d ou %i int Um inteiro.
%f flout Um número em ponto flutuante.
%lf double Ponto flutuante com dupla precisão.
67
Código Ação
\n Leva o cursor para a próxima linha.
\t Executa uma tabulação.
\b Executa um retrocesso.
\f Leva o cursor para a próxima página.
\a Emite um sinal sonoro (beep).
\” Exibe o caractere ".
\\ Exibe o caractere \.
%% Exibe o caractere %.
Para cada impressão de tipo de dados, deve haver uma variável na função printf().
observação
#include <stdio.h>
main()
{
 int dias;
 dias = 30;
 printf (“Volta ao Mundo em %d dias”, dias);
}
#include <stdio.h>
main()
{
 int num, cep;
 num = 28;
 cep = 22786021;
 printf (“A casa de número %d tem o CEP %d”, num, cep);
}
exemplo
68
funções de entrada de dados
a. Função scanf()
Complemento da função printf(), a função scanf() permite a leitura de dados formatados 
da entrada padrão (via teclado) realizado pelo usuário do sistema. 
A lista de argumentos utilizada na função scanf() deverá consistir nos endereços das 
variáveis armazenados na memória do computador. 
A Linguagem C oferece um operador de endereço de memória que é referenciado pelo 
símbolo &.
O operador de endereço & é usado para fazer o endereçamento de memória da infor-
mação armazenada na variável — quando a informação for necessária para utilização, a 
Linguagem C já saberá em qual endereço buscá-la. 
Sintaxe
scanf (“impressão de tipo de dado”, &variavel);
O símbolo & deverá ser usado sempre que a função scanf() for utilizada. O seu 
uso é obrigatório quando formos tratar com as variáveis do tipo char, int e float. 
observação
69
b. Função gets()
Permite a entrada de dados via teclado para o caso de o usuário ter necessidade de es-
crever uma frase e utilizar espaço entre as palavras.
Sintaxe
gets (variavel);
int val;
scanf (“%d”, &val);
%d indicativo do tipo, neste caso, do tipo inteiro
& operador utilizado para obter o endereço de memória da variável
val variável que receberá a informação via teclado
exemplo
#include <stdio.h>
main ()
{
 char nome[30];
 gets (nome);
}
exemplo
A função gets() não funciona para variável do tipo char que não tenha quanti-
dade de caractere.
observação
70
conversão de tipo de dados
É comum que precisemos converter um determinado tipo de dado. Assim, é preciso con-
verter o valor que está na variável.
A conversão é realizada colocando-se o tipo desejado antes do valor que queremos 
converter. 
Trabalhando com strings
a. Função strcmp
A função que devemos utilizar para comparar o conteúdo de uma string é a função str-
cmp(), que está definida na biblioteca string.h.
#include <stdio.h>
main()
{
 float var1 = 0;
 int var2 = 10;
 var1 = float (var2); // realiza a conversão do valor inteiro para float
 printf (“\nO Valor com decimal eh: %f”, var1);
 
 int var3 = 0;
 float var4 = 0;
 var4 = 15.33;
 var3 = int (var4); // realiza a conversão do valor float para inteiro
 printf (“\nO Valor Inteiro eh: %d”, var3);
}
exemplo
71
Sintaxe
strcmp (variavel_1, variavel_2); ou
strcmp (variavel, “informação”)
Verifica-se se a variavel_1 e variavel_2 são variáveis do tipo char que devem ser comparadas.
A função strcmp() irá proceder com o retorno do valor zero, um ou menos um:
• Quando os conteúdos comparados forem iguais, a função retorna 0.
• Quando os conteúdos comparados forem diferentes, a função retorna um ou 
menos um.
A função strcmp() irá comparar se os conteúdos são iguais, e não se têm o 
mesmo tamanho.
observação
Exemplo 1
#include <stdio.h>
#include <string.h>
main()
{
char palavra[7];
printf (“Digite a palavra: ”);
scanf (“%s”, &palavra);
if (strcmp (palavra, “pequeno”) == 0)
 printf(“informação correta!”);
else
 printf(“informação incompatível!”);
}
exemplo
72
b. Função strlen
A função strlen() retorna o tamanho da string fornecida, ou seja, a quantidade numérica 
de caracteres daquela informação digitada. O terminador nulo “\0” não é contado. Isso 
quer dizer que o comprimento do vetor da string deve ser um a mais que o inteiro retor-
nado por strlen().
Para o uso da função, é preciso que a biblioteca <string.h> 
seja declarada.
Sintaxe
strlen (variavel);
Exemplo 2
#include <stdio.h>
#include <string.h>
main()
{
char palavra_I[7], palavra_II[7];
printf (“Digite a primeira palavra: ”);
scanf (“%s”, &palavra_I);
printf (“Digite a segunda palavra: ”);
scanf (“%s”, &palavra_II);
if (strcmp (palavra_I, palavra_II) == 0)
 printf(“informação correta!”);
else
 printf(“informação incompatível!”);
} 
73
c. Função strcpy
Esta função é utilizada quando há a necessidade de inserir uma informação na variável 
do tipo char — só funciona para variável do tipo char.
Para o uso da função, é preciso que a biblioteca <string.h> seja declarada.
Sintaxe
strcpy (str1, “informação”);
#include <stdio.h>
#include <string.h>
main ()
{
 int tam;
 char nome[50];
 printf (“Entre com um nome: “);
 gets (nome);
 tam = strlen (nome);
 printf (“\nO nome digitado tem tamanho %d”, tam);
}
exemplo
#include <stdio.h>
#include <string.h>
main()
{
 char str1[40], str2[10];
 strcpy (str1, “TESTE”); // copia para a variável str1 o conteúdo TESTE
 printf (“A palavra eh: %s”, str1);
}
exemplo
74
estruturas de controle e repetição em c
a. if()
Nesta estrutura de decisão, uma única condição (expressão lógica) será avaliada:
• Caso o resultado oriundo dessa avaliação seja verdadeiro (V), então um determina-
do conjunto de instruções (comandos compostos) será executado. 
• Caso contrário, ou seja, quando o resultado da avaliação for falso (F), nada será 
executado, e o fluxo de execução seguirá para o primeiro comando após a finaliza-
ção da estrutura.
Sintaxe
if (<condição>) // caso a expressão verificada retorne verdadeiro
{ 
 <comando>;
 <comando>;
 <comando>;
}
75
b. if() else
Nessa estrutura de decisão, uma única condição (expressão lógica) é plenamente avaliada:
• Se o resultado dessa avaliação for verdadeiro (V), então um determinado conjunto 
de instruções (comandos compostos) será executado. 
• Caso contrário, ou seja, quando o resultado da avaliação for falso (F), um comando 
diferente será executado.
Após a execução de uma das partes (verdadeira ou falsa), o fluxo de execução seguirá 
para o primeiro comando após o fim da estrutura.
Sintaxe
if (<condição>) // caso a expressão verificada retorne verdadeiro
{ 
 <comando>;
 <comando>;
 <comando>;
}
else // caso a expressão verificada retorne falso
{ 
 <comando>;
 <comando>;
}
c. if() else if()
Estrutura utilizada para a aplicação de mais de uma estrutura de decisão. 
É comum que o desenvolvedor tenha que verificar mais de uma condição dada à deman-
da surgida. 
Para isso, ele aplica a estrutura do else if em vez de, após o else, inserir na linha seguinte o 
comando if, que pertence à estrutura do else. Isso daria mais trabalho e poderia também 
atrapalhar o desenvolvedor na hora de fazer uma determinada revisão em seu código.
76
Sintaxe
if (<condição>) // caso a expressão verificadaretorne verdadeiro
{ 
 <comando>;
 <comando>;
}
else if (<condição>) // caso a expressão verificada retorne falso, o desenvolve-
dor também poderá fazer uma nova condição com o uso do else if.
{ 
 <comando>;
 <comando>;
}
d. encadeamento de if() ou if() aninhados
Permite ao desenvolvedor utilizar uma estrutura if para tratar uma situação e, dentro 
dessa estrutura já estabelecida, inserir uma nova estrutura de if para obter diversas res-
postas possíveis e atender à demanda.
É muito comum o desenvolvedor se deparar com esse tipo de situação no 
desenvolvimento de aplicações.
77
#include <stdio.h>
main()
{
 int idade = 0;
 printf (“Informe sua idade: “);
 scanf (“%d”, &idade);
 
if (idade < 18)
 {
 if (idade < 15)
 printf (“Infantil.”);
 else
 printf (“Adolescente”);
 }
 else if (idade < 66)
 printf (“Adulto”);
 else 
 printf (“Idoso”);
}
exemplo
Se houver mais de uma linha de instrução que pertença ao if ou ao else, será 
fundamental que haja a abertura e o fechamento das chaves “{}”. Caso con-
trário, apenas a primeira linha de instrução estará ligada ao if ou ao else. A 
segunda linha estará fora dessa estrutura de decisão e será executada inde-
pendentemente da referida estrutura de decisão, causando um erro de lógica 
no programa.
importante
78
Vejamos, a seguir, um exemplo de encadeamento de if().
Programação correta
#include <stdio.h>
int main ()
{
 int num;
 printf (“Digite um numero: “);
 scanf (“%d”, &num);
 if (num > 10)
 {
 printf (“\nO numero e maior que 10”);
 printf (“\nObrigado por digitar um numero valido!”);
 }
return(0);
}
Programação com erro
#include <stdio.h>
int main ()
{
 int num;
 printf (“Digite um numero: “);
 scanf (“%d”, &num);
 if (num > 10)
 printf (“\nO numero e maior que 10”);
 printf (“\nObrigado por digitar um numero valido!”); // mesmo es-
tando posicionado dentro do if o printf acima não pertence ao if. Será executa-
do independentemente de a variável num ser ou não maior que 10.
return(0);
}
exemplo
79
e. comando while
O comando while faz com que uma ou mais instruções existentes dentro da estrutura de 
repetição (simbolizada pela abertura e pelo fechamento das chaves) sejam executadas 
por diversas vezes até que a condição estabelecida não seja mais satisfatória. 
Em outras palavras, essa estrutura é executada enquanto a condição estabelecida não 
atinge o seu cenário estabelecido. Ou seja, faz a verificação da condição antes que o laço 
seja executado.
Enquanto for verdadeira a condição, o conjunto de códigos se repete com um determina-
do propósito a ser alcançado.
Sintaxe
while (condição)
{
 <comando>;
 <comando>;
}
Exemplo 1
main()
{
int i;
i = 0;
while (i<=5) // (i <=5) é a condição. Quantas vezes a estrutura irá repetir.
 {
 printf(“Número %d\n”, i);
 i++; // contador. A cada passagem, o i é incrementado com mais 1.
 }
}
exemplo
80
Exemplo 2
#include<stdio.h>
main()
{
int i;
i = 3;
while (i > 0) // (i > 0) é a condição. Quantas vezes a estrutura irá repetir.
 {
 printf(“Número %d\n”, i);
 i--; // contador. A cada passagem o i é decrementado com menos 1. 
Ou seja, o valor retroage.
 }
}
 
Exemplo 3
#include <stdio.h>
main()
{
int i, x;
i = 0;
x = 1;
while ((i<=5) || (x < 3)) 
{
 printf(“Valor de i eh: %d\n”, i);
 printf(“Valor de x eh: %d\n”, x);
 i++; 
 x++;
}
}
No exemplo acima, a primeira condição que atingir seu valor fará com que a 
estrutura de repetição pare de executar.
observação
81
f. comando for
O comando for pode ser visto em todas as linguagens procedurais de programação.
Ele trabalha com uma condição na sua estrutura, que é uma expressão de relação que 
testa a variável de controle do loop contra alguma informação ou valor para definir quan-
do a estrutura de execução das instruções terminará. 
O incremento definirá a forma como a variável de controle do laço (loop) será modificada 
cada vez que o computador repetir o laço.
Sintaxe
for (inicialização; condição; incremento)
{ 
 <comando>;
 <comando>;
 <comando>;
}
main ()
{
int i, idade;
for (i=0; i<=5; i++) // controla a inicialização, a condição e o incremento.
 {
 printf (“ Digite uma idade”);
 scanf (“%d”, &idade);
 printf (“A idade digitada foi %d \n”);
 }
}
exemplo
82
Veja a seguir a diferença entre o comando while e o comando for:
#include <stdio.h>
main ()
{
int i, idade;
i = 0;
while (i<=3) 
 {
 printf (“Digite uma idade”);
 scanf (“%d”, &idade);
 i++;
 }
}
#include <stdio.h>
main ()
{
int i, idade;
for (i=0; i<=3; i++) 
 {
 printf (“Digite uma idade”);
 scanf (“%d”, &idade);
 }
}
83
convertendo português estruturado para 
Linguagem c 
É muito comum que, no início do proces-
so de aprendizagem da programação, 
seja utilizado o pseudocódigo para re-
presentar a demanda estabelecida. Isso 
se dá pelo fato de podermos trabalhar 
com uma linguagem escrita em nossa 
língua nativa: o português.
Com o amadurecimento no aprendizado da linguagem de programação C, ganhamos 
confiança e, assim, podemos realizar a criação do código diretamente na própria lingua-
gem, deixando de lado o pseudocódigo.
Tabela de conversão do pseudocódigo para a Linguagem C
PSEUDOCÓDIGO LINGUAGEM C
inicoalgoritmo main()
inteiro, real, caractere Int, float, char
leia () printf()
escreva (" ") scanf()
 =
se ... entao ... senao ... fim se If else
Enquanto (condição) repetir While (condição)
para <variável contadora> de <valor 
inicial> ate <valor final> [passo <valor de 
incremento>] faça
for( inicialização do contador; condição; 
incremento do contador) 
Vejamos, a seguir, algumas programações.
84
1. Fazer um pseudocódigo para atribuir valores às variáveis declaradas
inicioalgoritmo
var 
n: inteiro 
x: real 
y : caractere
inicio
 n 10
 x 3,8
 n “s”
fimalgoritmo
Programa construído na Linguagem C
#include <stdio.h>
int main()
{
 int n;
float x;
char y;
n = 10;
x = 3.8;
n = ‘s’;
 return 0;
}
2. Fazer um pseudocódigo para verificar se o valor digitado é maior do que 10.
inicioalgoritmo
var 
n: inteiro 
inicio
 escrever (“Digite um numero”)
 ler (n)
 se (n > 10) então
 escrever (“Numero digitado 
maior que 10”)
senão
 escrever (“Numero digitado 
menor que 10”)
fimalgoritmo
Programa construído na Linguagem C
#include <stdio.h>
int main()
{
 int n;
 printf(“Digite um numero: ”);
 scanf(“%d”, &n);
 if (n > 10)
 printf(“Numero maior que 
10”);
 else
 printf(“Numero menor que 
10”);
 return 0;
}
85
3. Fazer um pseudocódigo para criar um programa de uma calculadora utilizando as 
quatro operações básicas.
inicoalgoritmo
var
 n1, n2, n3: real
 operaçao: inteiro
Inicio
 escreval (“digite os valores dos tres operadores”)
 leia(n1,n2,n3)
 escreval(“menu”)
 escreval(“1-subtraçao”)
 escreval(“2-soma”)
 escreval(“3-multiplicaçao”)
 escreval(“4-divisao”)
 escreval(“5-resto da divisao”)
 escreval(“6-coeficiente da divisao”)
 escreval()
 escreval(“escolha uma opçao”)
 leia(opção)
 escolha(opção)
 caso1:
 escreval (“a subtraçao é:”,(n1-n2-n3))
 caso2:
 escreval (“a soma é:”,(n1+n2+n3))
 caso3:
 escreval (“a soma é:”,(n1*n2+*n3))
 caso4:
 se((n1==0) e (n2!=0) e (n3!=0) então
 escreval (“ a divisao do primeiro operando pelo segundo é”,n1/n2)
 escreval (“ a divisao do segundo operando pelo terceiro é”,n2/n3)
 escreval (“ a divisao do primeiro operando pelo terceiro é”,n1/n3)
 escreval (“ a divisao do terceiro operando pelo segundo é”,n3/n2)
 caso5:
 escreval(“o resto da divisao é:”,n1 mod n2)
 caso6:
 escreval(“o quociente da divisao é”,n1 div n2)
fim_escolha
fim_algoritmo
86
Programa construído na Linguagem C
#include <stdio.h>
int main()
{
 float n1, n2, n3;
 int opcao;
printf(“digite os valores dos tres operadores “);
 scanf(“%f%f%f”,&n1,&n2,&n3);
 printf(“menu\n”);
 printf(“1-subtracao\n”);printf(“2-soma\n”);
 printf(“3-multiplicacao\n”);
 printf(“4-divisao\n”);
 printf(“5-resto da divisao\n”);
 printf(“6-coeficiente da divisao\n”);
 printf(“escolha uma opcao “);
 scanf(“%d”,&opcao);
 switch(opcao){
 case 1:
 printf(“a subtraçao eh: %.2f\n”,(n1 - n2 - n3));
 break;
 case 2:
 printf (“a soma eh: %.2f\n”,(n1 + n2 + n3));
 break;
 case 3:
 printf(“a multiplicacao eh: %.2f\n”,(n1 * n2 * n3));
 break;
 case 4:
 if((n1==0) && (n2!=0) && (n3!=0))
 {
 printf(“ a divisao do primeiro operando pelo segundo eh %.2f\n”,n1/n2);
 printf(“ a divisao do segundo operando pelo terceiro eh %.2f\n”,n2/n3);
 printf(“ a divisao do primeiro operando pelo terceiro eh %.2f\n”,n1/n3);
 printf(“ a divisao do terceiro operando pelo segundo eh %.2f\n”,n3/n2);
 }
 break;
 case 5:
 printf(“o resto da divisao eh: %.2f\n”,(int)n1 % (int)n2);
 break;
 case 6:
 printf(“o quaciente da divisao eh %.2f\n”,n1/n2);
 break;
 return 0;
}
87
4. Fazer um programa utilizando o pseudocódigo para que o usuário possa digitar 
cinco vezes um número que possa ser somado — para isso, faz-se necessário o uso 
de uma estrutura de repetição.
InicioAlgoritmo
Variaveis
 numero: inteiro
 soma, i : inteiro
Inicio
 para i de 1 ate 5 faca
 escreval (“Digite um número”);
 leia(numeros[i]);
 soma soma + numeros[i];
 fimpara
FimAlgoritmo
Programa escrito na Linguagem C
#include <stdio.h>
main()
{
int números, soma, i;
for(i = 0; i < 5; i++) 
{
 printf(“Digite um numero : “);
 scanf(“%d”, &numeros[i]);
 soma = soma + numeros[i];
 }
 printf(“\nMedia : %d \n\n”, soma);
}
Para ampliar o seu conhecimento veja o material complementar da Unidade 3 
disponível na midiateca.
midiaTeca
88
Uma empresa ligada à área de economia demanda a construção de um algorit-
mo que demonstre todos os números ímpares de 1 até 100.
#include <stdio.h>
int main()
{
 int count = 1;
 while (count <= 100)
 {
 if(count%2 != 0)
 printf(“%d “, count);
 count++;
 }
}
na PráTica
89
resumo da unidade 3
Nesta unidade você conheceu, na íntegra, a linguagem de programação C e aprendeu 
como utilizar toda a sua estrutura para o processo de compilação. Vimos, também, como 
transformar um pseudocódigo em um real programa na Linguagem C para atender aos 
objetivos estabelecidos da demanda de um usuário.
Íntegra do entendimento da Linguagem C e suas respectivas aplicações. 
conceiTo
90
referências 
GUEDES, S. Lógica de Programação Algorítmica. São Paulo: Pearson Education do Bra-
sil, 2015. Biblioteca Virtual.
MENDES, F. V. Programação Avançada em C++. São Paulo: Pearson Education do Brasil, 
2006. Biblioteca Virtual.
SZWARCFITER, J. L.; MARKEZON, L. Estruturas de dados e seus algoritmos. 3. ed. Rio 
de Janeiro: Grupo GEN; LTC, 2013. Minha Biblioteca.
Vetores, matrizes e 
manipulação de arquivos
UNIDADE 4
92
Conhecer os fundamentos para uma efetiva manipulação de informações com vetores e 
matrizes em Linguagem C e entender como a utilização e a manipulação das tratativas 
com o uso de um arquivo em Linguagem C para o manuseio e a leitura de informações 
são necessidades fundamentais em demandas mercadológicas.
inTrodução
Nesta unidade você será capaz de:
• Construir estruturas com ordenação lógica com o emprego de estruturas com 
uso de índices e acesso a arquivos.
objeTiVo
93
Vetores (arrays)
Nas mais variadas situações para o desenvolvimento de um 
programa em Linguagem C, teremos os tipos básicos de da-
dos (int, float, char) que atenderão à demanda do programa 
sem a necessidade de criação de um vetor ou matriz. No 
entanto, quando temos a necessidade de armazenar infor-
mações e, ao mesmo tempo, ter acesso a esse referencial, é 
necessária a criação de vetor ou matriz, isso porque o vetor 
e a matriz armazenam dentro de uma mesma estrutura as informações necessárias para 
acesso a um determinado denominador. 
É obrigatório que o vetor possua um tipo de dado, um nome e uma quantidade de po-
sições a serem ocupadas. Uma vez que se define o tipo do vetor, apenas informações 
daquele tipo poderão ser armazenadas. Para isso, é fundamental entender para qual fim 
se destina o vetor.
Sintaxe:
tipo_primitivo identificador[qtde_elementos];
 
Exemplo de vetor com tipo int:
int dados[6]; 
Vetor com seis elementos do tipo int. Os índices do vetor vão de 0 a 5.
dados Nome do vetor.
Como exemplo, podemos utilizar um aluno que possua três notas. O nome do 
vetor seria aluno, e, para cada nota, seria uma posição do vetor. Assim, teríamos 
float nota[3], em que float é o tipo de informação que será armazena, nota é o 
nome do vetor e [3] é a quantidade de posições do vetor.
exemplo
94
índices 0 1 2 3 4 5
dados 12 37 49 21 67 30
Os valores 12, 37, 49, 21, 67 e 30 se referem ao conteúdo do vetor “dados”.
Informações no vetor:
 dados[2]: nessa posição do vetor temos o valor 49.
 dados[5]: nessa posição do vetor temos o valor 30.
Exemplo:
 int val;
 val = dados[0];
 A variável “val” recebe o conteúdo de valor 12, pois dados[0] carrega o valor 12 no vetor.
Exemplo de um vetor com tipo char:
char vet[6]; 
Vetor com seis elementos do tipo char. Os índices vão de 0 a 5.
vet Nome do vetor.
índices 0 1 2 3 4 5
vet A L V A R O
Os valores A, L, V, A, R e O referem-se ao conteúdo do vetor de nome “vet”.
Para vetores do tipo char, apenas é armazenado um caractere por posição.
observação
95
Informações no vetor:
 dados[1]: nessa posição do vetor temos o valor L.
 dados[3]: nessa posição do vetor temos o valor A.
declarando e inicializando vetores
Exemplo 1:
É possível declarar e inicializar um vetor com um tamanho constante, como a seguir:
int numeros[5] = {10, 20, 30, 40, 50};
char palavra[9] = {‘c’, ‘a’, ‘d’, ‘e’, ‘i’, ‘r’, ‘a’};
Exemplo 2:
Iniciando apenas alguns elementos do vetor:
int valores[5] = {2,4,6};
será equivalente a
int valores[5] = {2,4,6,0,0};
Isso ocorre porque apenas alguns itens do vetor foram inicializados. Nesse caso, quando 
o número de itens inicializados é menor que o número total de itens do vetor, os itens não 
inicializados são automaticamente zerados.
 
Exemplo 3:
Inicializando um vetor sem especificar a quantidade de elementos.
int valores[] = {3,5,7};
Exemplo de um programa com uso de vetor:
#include<stdio.h>
main()
{
 float notas[5] = {7, 8, 9.5, 9.9, 5.2}; // declarando e inicializando o vetor notas.
 
 printf (“Exibindo os Valores do Vetor \n\n”);
 printf (“notas[0] = %.1f\n”, notas[0]);
 printf (“notas[1] = %.1f\n”, notas[1]);
 printf (“notas[2] = %.1f\n”, notas[2]);
 printf (“notas[3] = %.1f\n”, notas[3]);
 printf (“notas[4] = %.1f\n”, notas[4]);
 }
96
Explicação do código
Para fazer referência a uma determinada posição do vetor, devemos utilizar o nome do 
array e seu respectivo índice.
Por exemplo:
notas[0] faz referência ao elemento armazenado no vetor notas posição (índice) zero.
Para exibir esse elemento na tela, usamos:
printf(“notas[0] = %.1f\n”, notas[0]);
inserindo dados no vetor com o comando while
Exemplo:
main()
{
int vet[4];
int i;
i = 0;
while (i<=3) // rotina para preencher o vetor.
 {
 printf(“Digite o numero: \n”);
 scanf(“%d”, &vet[i]);
 i++;
 }
i = 0;
while (i<=3) // rotina para exibir o conteúdo do vetor.
 {
 printf(“Numero %d\n”, vet[i]);
 i++;
 }
}
97
inicializando vetor
• Inicializando o vetor com lixo nas posições a serem ocupadas:
#include <stdio.h>
int main()
{
 int lixo[10]; // não inicializou o vetor com zero. O programa levará lixo para dentro do vetor.
 int indice = 0;
 while(indice < 10)
 {
 printf(“Lixo na posicao %d: %d\n”, indice, lixo[indice]);

Outros materiais