Buscar

Livro Algoritmos (2)

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

Fisiologia 
1 
Algoritmos 
Alessandra Alves Fonseca Vargas 
1ª
 e
di
çã
o 
 
DIREÇÃO SUPERIOR 
Chanceler Joaquim de Oliveira 
Reitora Marlene Salgado de Oliveira 
Presidente da Mantenedora Wellington Salgado de Oliveira 
Pró-Reitor de Planejamento e Finanças Wellington Salgado de Oliveira 
Pró-Reitor de Organização e Desenvolvimento Jefferson Salgado de Oliveira 
Pró-Reitor Administrativo Wallace Salgado de Oliveira 
Pró-Reitora Acadêmica Jaina dos Santos Mello Ferreira 
Pró-Reitor de Extensão Manuel de Souza Esteves 
 
DEPARTAMENTO DE ENSINO A DISTÂNCIA 
Gerência Nacional do EAD Bruno Mello Ferreira 
Gestor Acadêmico Diogo Pereira da Silva 
 
FICHA TÉCNICA 
Direção Editorial: Diogo Pereira da Silva e Patrícia Figueiredo Pereira Salgado 
Texto: Alessandra Alves Fonseca Vargas 
Revisão Ortográfica: Rafael Dias de Carvalho Moraes 
Projeto Gráfico e Editoração: Antonia Machado, Eduardo Bordoni, Fabrício Ramos e Victor Narciso 
Supervisão de Materiais Instrucionais: Antonia Machado 
Ilustração: Eduardo Bordoni e Fabrício Ramos 
Capa: Eduardo Bordoni e Fabrício Ramos 
 
COORDENAÇÃO GERAL: 
Departamento de Ensino a Distância 
Rua Marechal Deodoro 217, Centro, Niterói, RJ, CEP 24020-420 www.universo.edu.br 
 
 
 
 
 
 
 
 
 
 
 
 
Informamos que é de única e exclusiva responsabilidade do autor a originalidade desta obra, não se r esponsabilizando a ASOEC 
pelo conteúdo do texto formulado. 
© Departamento de Ensi no a Dist ância - Universidade Salgado de Oliveira 
Todos os direitos reservados. Nenhuma parte desta publicação pode ser reproduzida, arquivada ou transmitida de nenhuma forma 
ou por nenhum meio sem permissão expressa e por escrito da Associação Salgado de Oliveira de Educação e Cultura, mantenedor a 
da Univer sidade Salgado de Oliveira (UNIVERSO). 
 
 
 
Algoritmos 
 
 Palavra da Reitora 
Acompanhando as necessidades de um mundo cada vez mais complexo, 
exigente e necessitado de aprendizagem contínua, a Universidade Salgado de 
Oliveira (UNIVERSO) apresenta a UNIVERSO EAD, que reúne os diferentes 
segmentos do ensino a distância na universidade. Nosso programa foi 
desenvolvido segundo as diretrizes do MEC e baseado em experiências do gênero 
bem-sucedidas mundialmente. 
São inúmeras as vantagens de se estudar a distância e somente por meio dessa 
modalidade de ensino são sanadas as dificuldades de tempo e espaço presentes 
nos dias de hoje. O aluno tem a possibilidade de administrar seu próprio tempo e 
gerenciar seu estudo de acordo com sua disponibilidade, tornando-se responsável 
pela própria aprendizagem. 
O ensino a distância complementa os estudos presenciais à medida que 
permite que alunos e professores, fisicamente distanciados, possam estar a todo 
momento ligados por ferramentas de interação presentes na Internet através de 
nossa plataforma. 
Além disso, nosso material didático foi desenvolvido por professores 
especializados nessa modalidade de ensino, em que a clareza e objetividade são 
fundamentais para a perfeita compreensão dos conteúdos. 
A UNIVERSO tem uma história de sucesso no que diz respeito à educação a 
distância. Nossa experiência nos remete ao final da década de 80, com o bem-
sucedido projeto Novo Saber. Hoje, oferece uma estrutura em constante processo 
de atualização, ampliando as possibilidades de acesso a cursos de atualização, 
graduação ou pós-graduação. 
Reafirmando seu compromisso com a excelência no ensino e compartilhando 
as novas tendências em educação, a UNIVERSO convida seu alunado a conhecer o 
programa e usufruir das vantagens que o estudar a distância proporciona. 
Seja bem-vindo à UNIVERSO EAD! 
Professora Marlene Salgado de Oliveira 
Reitora. 
Algoritmos 
 
4 
Algoritmos 
 
5 
 Sumário 
Apresentação da disciplina ...................................................................................................... 7 
Plano da Disciplina ..................................................................................................................... 9 
Unidade 1 - Lógica de Programação ................................................................................... 13 
Unidade 2 - Introdução aos Algoritmos.............................................................................. 27 
Unidade 3 - Estruturas de Implementação dos Algoritmos ........................................... 41 
Unidade 4 - Variáveis e Tipos de Dados .............................................................................. 67 
Unidade 5 - Estrutura de Decisão e Repetição .................................................................. 79 
Unidade 6 - Estrutura de Dados Homogêneas................................................................101 
Considerações finais ..............................................................................................................119 
Conhecendo o autor ..............................................................................................................120 
Anexos.......................................................................................................................................123 
 
 
 
Algoritmos 
 
6 
 
Algoritmos 
 
7 
 
 Apresentação da disciplina 
Caro aluno, 
Seja bem-vindo à disciplina Algoritmo. 
A programação de computadores é a base da profissão de quem trabalha com 
Tecnologia da Informação, ou seja, programar é criar, no computador, modelos 
(mundo virtual) da realidade (mundo real). Onde os modelos respeitam regras 
parecidas com o mundo real, permitindo que a informação seja processada 
gerando soluções. 
A finalidade de um computador é receber, manipular e armazenar dados. Se 
visto somente como um equipamento composto de circuitos eletrônicos, cabos e 
fontes de alimentação, certamente ele não tem utilidade alguma. O computador só 
consegue armazenar dados, imprimir relatórios, gerar gráficos, realizar cálculos, 
entre outras funções, por meio de programas. Sendo assim, quando queremos 
escrever (desenvolver) um software para realizar um determinado tipo de 
processamento de dados, devemos desenvolver um programa ou vários 
programas interligados. No entanto, para que o computador compreenda e 
execute esse programa, devemos escrevê-lo usando uma linguagem que tanto o 
computador quanto o desenvolver de software entendam. Essa linguagem é 
chamada de linguagem de programação. 
Sendo assim, vamos aprender sobre a lógica da programação e a aplicação 
dessa lógica na linguagem de programação C, ou seja, vamos buscar um raciocínio 
lógico, gerando uma lógica (resultado) em português estruturado (algoritmo) e 
aplicando em uma linguagem estruturada. A aplicação do algoritmo será na 
linguagem de programação C. Vale ressaltar que existem no mercado vários 
compiladores para o código da linguagem C. 
 
Sucesso! 
 
Algoritmos 
 
8 
 
 
Algoritmos 
 
9 
 Plano da Disciplina 
Caro aluno, 
Esta disciplina tem por objetivo principal apresentar uma visão geral e 
introdutória de lógica de programação, essencial para alicerçar os conhecimentos 
nas atividades futuras, tanto acadêmicas como profissionais. 
A disciplina Algoritmo tem como objetivo de trabalhar a lógica da 
programação com os principais conceitos e do português estruturado e a 
programação C, visando a sua produtividade pessoal e profissional. 
Ao início de cada unidade de estudo, você encontrará uma apresentação dos 
temas que serão desenvolvidos, os aspectos mais relevantes, além dos objetivos a 
serem alcançados. Além disso, há também uma série de referências bibliográficas 
sobre os assuntos abordados. 
As unidades foram redigidas de forma a facilitar o entendimento do seu 
conteúdo, que compreende uma parte conceitual, sempre com aplicações dos 
conceitos, seguida de exercícios práticos. 
Estamos certos de que a leitura dos conteúdos será uma atividade prazerosa. 
Utilize o seu tempo e faça o seu próprio ritmo de aprendizagem. Lembre-se,você tem total autonomia na condução do seu processo de estudo, mas sempre 
que possível procure seguir o cronograma da disciplina. 
É importante que você faça todas as atividades e reflita sobre os respectivos 
padrões de respostas. Além disso, você poderá complementar o conteúdo de cada 
unidade através da leitura complementar e, por sua própria iniciativa, buscar nos 
jornais e revistas casos práticos que envolvam empresas, objeto da aplicação das 
teorias e modelos analisados nas aulas. 
O conteúdo foi dividido em sete unidades para maior compreensão dos 
assuntos abordados. Com a finalidade de facilitar a compreensão segue uma 
síntese de cada unidade, ressaltando seus objetivos específicos para que você 
possa ter uma visão ampla do conteúdo que irá estudar. 
Algoritmos 
 
10 
UNIDADE 1 - Lógica de Programação 
Nesta unidade, veremos o conceito de algoritmo, como trabalhar os tipos de 
informações e os conceitos de variáveis. E iniciaremos a linguagem de 
programação. 
Objetivos da unidade: 
 Apresentar os conceitos teóricos fundamentais de computação; 
 Mostrar as diferenças entre as diversas formas de criação e execução de 
programas. 
 
UNIDADE 2 - Introdução aos Algoritmos 
Nesta segunda unidade, apresentaremos uma visão geral de algoritmo 
computacional e não computacional, apresentando as regras para escrever um 
algoritmo. Descrevemos a passagem do algoritmo computacional para linguagem 
de programação. 
Objetivos da unidade: 
 Apresentar as formas de representações de algoritmos computacionais e 
não computacionais; 
 Proporcionar as regras para escrever um algoritmo; 
 Verificar a linguagem de programação. 
 
UNIDADE 3 - Estruturas de Implementação dos Algoritmos 
Nesta terceira unidade, vamos estudar comando de entrada e saída de dados e 
os operadores utilizados para gerar um resultado matemático ou lógico. 
Objetivos da unidade: 
 Definir quais serão as entradas possíveis para os procedimentos; 
 Verificar os operadores utilizados na programação e algoritmo. 
 
Algoritmos 
 
11 
UNIDADE 4 - Variáveis e Tipos de Dados 
Nesta quarta unidade, vamos estudar os conceitos de variáveis, tipos de dados, 
atribuição de valores, manipulação de strings e caracteres. 
Objetivo da unidade: 
 Mostrar e definir os comandos básicos presentes nas linguagens de 
programação C e em pseudolinguagem, bem como representações 
gráficas dos mesmos, permitindo a criação e manutenção de algoritmos. 
UNIDADE 5 - Estruturas de Decisão e Repetição 
Nesta quinta unidade, veremos o comando de estrutura de decisão, podendo 
assim com um teste lógico ter várias respostas, os comandos são IF e CASE. Vamos 
estudar também como podemos repetir a mesma tarefa várias vezes, usando uma 
variável para armazenar em memória várias informações. Comandos a serem vistos 
são FOR, WHILE e DO - WHILE. 
Objetivo da unidade: 
 Realizar um programa ser capaz de tomar decisões e escolher uma entre 
várias possibilidades e permitir a construção de uma estrutura que 
comanda os processos de repetição, usando as seguintes estruturas, FOR, 
WHILE e DO – WHILE. 
 
UNIDADE 6 - Estruturas de Dados Homogêneas 
Nesta sexta unidade, vamos ver variáveis Compostas Homogêneas - Vetores e 
Matrizes. Um vetor (array em inglês) é um agregado de variáveis do mesmo tipo 
(homogêneas). MATRIZES – vetores com mais de 1 dimensão Os elementos de um 
vetor guardam uma relação de posicionamento entre si apenas em uma dimensão. 
Essas variáveis estão dispostas como que em uma linha, e cada elemento é 
identificado pela sua posição relativa na linha. Quando há mais de uma dimensão, 
damos o nome de matriz a esse arranjo de variáveis. 
 
 
Algoritmos 
 
12 
Objetivos da unidade: 
 Estudar as estruturas de dados estáticas e homogêneas (vetores e 
matrizes); 
 Estudar as operações que estas suportam e algumas aplicações básicas. 
 Introduzir as estruturas de dados; 
 Conceituar vetores; 
 Conceituar matrizes. 
 
Bons estudos! 
 
 
 
Algoritmos 
 
13 
 
1 Lógica de Programação
 
 
Algoritmos 
 
14 
Caro aluno, 
Nesta unidade, estudaremos os conceitos inicias para a programação, veremos 
como funciona a lógica de programação que deveremos ter para qualquer 
desenvolvimento de um software, aprenderemos como resolver problemas simples 
apenas por meio de lógica, as instruções necessárias para seguir um padrão lógico 
na programação. 
 
Objetivos da unidade: 
 Entender o que é lógica de programação; 
 Aprender com resolver problemas usando a sequência lógica; 
 Entender com aplicar as instruções no software. 
 
Plano da unidade: 
 O que é Lógica de Programação 
 Sequência Lógica 
 Instruções 
Bons estudos! 
 
Algoritmos 
 
15 
 O que é Lógica de Programação 
Introdução 
Muitas definições podem ser dadas à palavra algoritmo. Atualmente, tem-se 
associado algoritmo à computação, mas este não é um termo restrito à 
computação ou que tenha nascido com ela. O termo algoritmo também é utilizado 
em outras áreas, como engenharia, administração entre outras. 
 
Vejamos algumas definições de algoritmo: 
 Um procedimento passo a passo para a solução de um problema. 
 Uma sequência detalhada de ações a serem executadas para realizar 
alguma tarefa. 
 
Um exemplo clássico de algoritmo é a receita culinária. A receita tem todas as 
características de um algoritmo. Ela tem uma sequência detalhada de passos, 
descrita no modo de preparo, apresenta a tarefa a ser realizada e, além disso, 
podemos identificar na receita entradas (no caso os ingredientes) e uma saída, que 
pode ser, por exemplo, um bolo. 
Programas de Computador - O que é um programa 
Os computadores das mais variadas arquiteturas têm funcionamento similar. A 
Figura 1 apresenta a arquitetura simplificada de um computador. 
 
Algoritmos 
 
16 
Figura: 1 – Arquitetura simplificada de um computador 
 
A parte física do computador é chamada de hardware, que é formado 
basicamente por uma Unidade Central de Processamento (CPU), pela memória e 
pelos dispositivos de entrada e saída. O barramento faz a ligação desses 
componentes. A CPU (ou processador) contém um conjunto relativamente 
pequeno de instruções que é capaz de executar. Cada processador contém um 
conjunto diferente de instruções, apesar de similares entre si. As instruções que o 
processador executa são buscadas da memória. Essas instruções podem ser desde 
operações matemáticas a interações com os dispositivos de entrada e saída. 
Chamamos de programa de computador um conjunto de instruções que será 
executado pelo processador em uma determinada sequência. Esse programa leva 
o computador a executar alguma tarefa. 
Como podemos perceber, um programa nada mais é que um tipo de 
algoritmo. Sua particularidade é que suas operações são específicas para o 
computador e restritas ao conjunto de instruções que o processador pode 
executar. Podemos considerar esse conjunto de instruções como a primeira 
linguagem de programação do computador, também chamada de linguagem de 
máquina. Classificamos as linguagens de programação segundo a sua 
proximidade com a linguagem de máquina - quanto maior a semelhança com a 
linguagem de máquina, mais baixo é o nível da linguagem. 
 
Algoritmos 
 
17 
As linguagens de programação mais semelhantes à linguagem de máquina são 
conhecidas como linguagens de baixo nível. Analogamente, linguagens de 
programação “distantes” da linguagem de máquina 
São conhecidas como linguagens de programação de alto nível. Linguagens de 
programação de alto nível são mais próximas da linguagem natural e guardam 
pouca similaridade com a linguagem da máquina em que serão executadas. 
A linguagem de programação que um computador é capaz de compreender é 
composta apenas de números. Assim, fazer algoritmos na linguagem de 
programação do computador ou em sua linguagem de máquina é um processo 
extremamente complicado paranós, seres humanos, acostumados com a nossa 
própria linguagem. Por isso, para facilitar a programação de computadores, foi 
necessária a criação de um código que relacionasse a linguagem de máquina a 
uma linguagem mais fácil de ser compreendida. A linguagem de montagem (ou 
assembly) é um código que tem uma instrução alfanumérica (ou mnemônica) para 
cada instrução numérica em linguagem de máquina. Para que um programa 
escrito em linguagem de montagem possa ser executado pelo computador, é 
necessário que seu código seja traduzido para o código de máquina. Isto é feito por 
meio de um programa chamado assembler. A Figura 2 apresenta o esquema de 
tradução feita por um assembler. 
Figura 2 - Tradução para a linguagem de máquina. 
 
A linguagem de montagem é muito próxima da linguagem de máquina e, por 
isso, é uma linguagem de programação de baixo nível. Para cada processador, há 
uma linguagem de montagem já que há uma relação direta entre as instruções em 
linguagem de montagem e em linguagem de máquina. Isto faz com que o código 
tenha que ser refeito se quisermos executar um programa em um processador não 
compatível com o qual ele foi escrito inicialmente. Neste caso, dizemos que o 
código não é portável. 
Algoritmos 
 
18 
A implementação de programas nesse tipo de linguagem ainda é muito 
complexa e dependente do conhecimento das instruções do processador. Para 
aumentar a produtividade dos programadores e a portabilidade dos programas, 
foram criadas as linguagens de programação de alto nível. Essas linguagens são 
independentes do processador em que serão executadas. Suas características 
principais são que seu código é mais elaborado, contemplando operações mais 
complexas e mais próximas da “lógica humana”. Para que possam ser processadas 
por um computador, os comandos da linguagem precisarão ser traduzidos para a 
linguagem de máquina. Essa tradução é feita por meio de um compilador ou de 
um interpretador, dependendo do caso, como veremos a seguir. 
O compilador, a partir do código em linguagem de alto nível, chamado de 
código-fonte, gera um arquivo com o código em linguagem de máquina, 
conhecido como código objeto. Esse código-objeto fica em disco e só é carregado 
em memória no momento da execução. O interpretador faz o mesmo trabalho, 
porém não gera o arquivo em código-objeto. As instruções são traduzidas para 
linguagem de máquina em tempo de execução, instrução a instrução. A Figura 3 
mostra os passos para a execução de um código em linguagem de alto nível por 
meio da compilação. A Figura 4 apresenta o esquema similar para a interpretação. 
Figura 3 – Compilação de um programa 
 
Podemos notar que programar um computador tornou-se muito mais fácil do 
que anteriormente. A introdução de linguagens de alto nível como Pascal, C, Cobol, 
Java, entre outras, aumentou a produtividade dos programadores, permitindo que 
programas mais elaborados fossem feitos, atendendo a demandas mais complexas. 
Além disso, os códigos são portáveis, ou seja, independentes da plataforma 
mediante nova compilação do código-fonte. 
Lógica de programação é o fundamento básico que precisamos para começar 
nossos estudos em programação. O conceito é muito simples: é a técnica na qual 
Algoritmos 
 
19 
aprendemos a escrever um programa, baseada em regras matemáticas; o 
programador define sequências lógicas para prosseguir com o desenvolvimento. 
Essa lógica de programação leva o programador a organizar suas ideias antes de 
iniciar a codificação de um sistema. Essa fase do desenvolvimento é muito 
importante e, se o desenvolvedor não tiver os conceitos de lógica, certamente esse 
software irá apresentar vários problemas de execução. Valorize o estudo da lógica 
de programação, pois ela é muito importante para o avanço na disciplina. 
 Sequência Lógica 
Sequências lógicas são o segundo passo que o programador segue antes de 
começar a codificação. Após pensar em como resolver determinado problema, o 
programador define sequências lógicas para a programação desse sistema. Esses 
passos são executados um após o outro, com o objetivo final de atingir o resultado 
esperado pelo desenvolvedor e as sequências são acompanhadas pelas instruções 
que iremos explicar abaixo. 
 Instruções 
Se formos pensar em instrução com seu significado normal seria um conjunto 
de regras ou normas estabelecidas para realizar ou empregar algo. Porém, em 
informática, dizemos que instrução é a própria informação que vai indicar para o 
computador uma ação que ele deve executar. Pensamos em instrução como 
códigos que iremos escrever para o computador entender e realizar a ação que o 
desenvolvedor pensou para o programa; a cada instrução, temos uma nova ação 
sendo feita. Softwares são um conjunto de instruções predefinidas que juntas 
formam um sistema. 
 
Algoritmos 
 
20 
 
Estamos encerrando a unidade. Sempre que tiver uma dúvida entre em 
contato com seu tutor virtual através do ambiente virtual de aprendizagem e 
consulte sempre a biblioteca do seu polo. 
 
 
Leitura Complementar 
 
ASCENCIO, Ana Fernanda Gomes; CAMPOS, Edilene Aparecida Veneruchi de. 
Fundamentos da Programação de Computadores. São Paulo: Prentice Hall, 
2004. 
 
CORMEN, THOMAS H.; RIVEST, RONALD L.; STEIN, CLIFFORD; LEISERSON, CHARLES 
E. Algoritmos – Teoria e Prática – 3ª ed. Rio de Janeiro: Elsevier – Campus, 2012 
 
FORBELLONE, A. L.; EBERSPACHER, H. Lógica de Programação: a construção de 
algoritmos e estrutura de dados. São Paulo: Makron Books, 2000. 
 
GUIMARÃES, A. L.; LAGES, N. A. C. Algoritmos e Estruturas de Dados. Rio de 
Janeiro: LTC, 1994. 
 
LEITE, Mario. Técnicas de programação. São Paulo: Brasport, 2006. 
OLIVEIRA, Jayr Figueiredo de; MANZANO, Jose Augusto N. G. Algoritmos e lógica 
para desenvolvimento de programação. 22ª ed. São Paulo: Érica, 2009. 
É hora de se avaliar 
Lembre-se de realizar as atividades desta unidade de estudo. Elas irão 
ajudá-lo a fixar o conteúdo, além de proporcionar sua autonomia no processo de 
ensino-aprendizagem. 
Algoritmos 
 
21 
 Exercícios – Unidade 1 
1. Assinale a técnica referente ao Algoritmo computacional: 
a) Fluxograma 
b) Diagrama de Chapin 
c) Mapa de Karnaugh 
d) Português estruturado 
e) Programação estruturada 
 
2. De acordo com os fundamentos da aritmética computacional e com o 
pseudocódigo acima, 
a) A conversão de números decimais negativos para binários também é 
realizada de forma correta pelo algoritmo. 
b) O número de dígitos em hexadecimal necessários para representar o 
binário resultante corresponde ao número de vezes que o comando 
enquanto é executado. 
c) Mod indica o quociente e div indica o resto da divisão de número por 2. 
d) Ao ser transcrito para uma linguagem de programação sem alteração na 
lógica do algoritmo, poderão ocorrer erros na conversão de números 
decimais para binários. 
e) Para fazer a conversão do binário resultante para seu correspondente 
negativo basta utilizar o comando binário ← binário * -1. 
 
Algoritmos 
 
22 
3. Considere o algoritmo a seguir: 
Algoritmo “provacosanpa” 
 
Var 
A,v,tr,i: inteiro; 
 
Inicio 
a:= 1; 
b: = 2; 
para i de 1 ate 10 passo 1 faca 
a: = a+1; 
b: = b-1; 
tr:= a; 
a: = b; 
b: = tr 
fimpara 
 
Fimalgoritmo 
 
Os valores das variáveis a e b são: 
a) 2 e 1. 
b) 1 e 1. 
c) 1 e 2. 
d) 2 e 2. 
e) 3 e 3. 
 
4. Assinale a alternativa que apresenta corretamente a sequência de passos 
computacionais que transforma a entrada na saída, ou seja, procedimentos 
necessários para resolver um determinado problema. 
a) Algoritmos 
b) Arquivos 
c) Cases 
d) Polinômio 
e) Sequência 
Algoritmos 
 
23 
5. Analise o algoritmo genérico abaixo, em Portugol, e determine o valor final 
da variável C: 
 
algoritmo 
declare A, B, C numérico 
A ← 1 
B ← A + 2 
C ← B * 3 
C ← A + B - C / B + A 
fim algoritmo 
 
 
a) 1,25 
b) 3 
c) 2 
d) 0,6 
e) 4 
 
6. Na resolução de problemas relacionadoscom a construção de algoritmos, 
são usadas diversas estratégias. Uma delas consiste em dividir o problema em 
problemas menores até que cada parte seja pequena o bastante para que a 
solução seja encontrada. 
Tal estratégia denomina-se: 
a) Acomutação 
b) Decomposição 
c) Diversificação 
d) Qualificação 
e) Variação 
 
Algoritmos 
 
24 
7. Considere: zero é um número natural. O sucessor de um número natural é 
um número natural. 
Assim, em termos de algoritmo, o enunciado trata da possibilidade de 
aplicação de uma técnica denominada: 
a) Matriciação. 
b) Integração. 
c) Agregação. 
d) Interação. 
e) Recursão. 
 
8. É a descrição de um padrão de comportamento, expressado em termos de 
um repertório bem definido e finito de ações " primitivas" , das quais damos por 
certo que elas podem ser executadas. A descrição refere-se a: 
a) Sequenciamento. 
b) Algoritmo. 
c) Compilador. 
d) Modularização. 
e) Repetição 
 
9. Relacionado à programação de computadores, um algoritmo, seja qual for a 
sua complexidade e a linguagem de programação na qual será codificado, pode ser 
descrito por meio da: 
a) Reografia. 
b) Criptografia. 
c) Linguagem de marcação. 
d) Engenharia estruturada. 
e) Pseudolinguagem. 
Algoritmos 
 
25 
10. Objeto que se constitui parcialmente ou é definido em termos de si próprio. 
Nesse contexto, um tipo especial de procedimento (algoritmo) será utilizado, 
algumas vezes, para a solução de alguns problemas. Esse procedimento é 
denominado: 
a) Repetição. 
b) Interligação. 
c) Condicionalidade. 
d) Recursividade. 
e) Rotatividade. 
 
a). Elabore um algoritmo não computacional IR PARA ESCOLA. 
 
 
 
 
b). Desenvolva um algoritmo que receba 3 números inteiros, calcule e mostre a 
soma dos mesmos. 
 
 
 
Algoritmos 
 
26 
 
 
Algoritmos 
 
27 
 
2 Introdução aos Algoritmos 
 
 
Algoritmos 
 
28 
Caro aluno, 
Nesta unidade, estudaremos os conceitos inicias para a criação de um 
algoritmo que é o passo fundamental para criação de qualquer sistema, 
abordaremos nesta unidade a sua estrutura, como devemos escrever um algoritmo 
as suas fases de criação, desse modo iremos mostrar a importância que tem o 
algoritmo na vida do desenvolvedor. 
 
Objetivos da unidade: 
 Entender o que é algoritmo. 
 Como criar um algoritmo. 
 Como o algoritmo é importante para a programação. 
 
Plano da unidade: 
 Definição 
 Características 
 Formas de Representação 
 Fases de um algoritmo 
 Regras para se escrever um algoritmo 
 
 
Bons estudos 
 
Algoritmos 
 
29 
 Definição 
Algoritmo é uma “receita” que escrevemos para executar tarefas ou 
resolver algum problema específico com mais qualidade e rapidez. Na 
programação, utilizamos bastante os algoritmos, pois eles facilitam a nossa 
vida na hora que estamos desenvolvendo um software, como uma receita na 
qual seguimos passos predefinidos pelo desenvolvedor para agilizar o trabalho 
e no fim chegar ao resultado esperado e com eficácia. Os próximos conceitos 
que iremos tratar merecem sua atenção ao máximo, pois os algoritmos serão 
usados pelo resto da sua vida como programador. 
O uso de algoritmos é quase tão antigo quanto a matemática. Com o 
passar do tempo, entretanto, ele foi bastante esquecido pela matemática. 
Com o advento das máquinas de calcular e mais tarde os computadores, o uso 
de algoritmos ressurgiu com grande vigor, como uma forma de indicar o 
caminho para a solução dos mais variados problemas. 
Algoritmo não é a solução do problema, pois, se assim fosse, cada 
problema teria um único algoritmo. Algoritmo é o caminho para a solução de 
um problema, e em geral, os caminhos que levam a uma solução são muitos. 
Ao longo dos anos surgiram muitas formas de representar os algoritmos, alguns 
utilizando linguagens semelhantes às linguagens de programação. O aprendizado 
de algoritmos não se consegue a não ser através de muitos exercícios. 
 Características 
Suas principais características são: 
 O Algoritmo precisa ter um final: essa afirmação vem pelo fato de que, 
quando criamos um algoritmo, o objetivo é gerar um resultado final. 
Quando atingimos esse resultado, aquele algoritmo cumpriu seu trabalho 
com êxito. 
Algoritmos 
 
30 
 Não pode oferecer margem para mais de uma interpretação: sim, um 
algoritmo só pode ter uma interpretação pelo simples fato de que, se a 
pessoas entenderem de várias formas um algoritmo, ele acabará 
apresentando um resultado diferente do desejado, gerando uma perda 
de tempo desnecessária. 
 Tem que produzir uma saída para o mundo externo: a finalidade máxima 
do algoritmo é oferecer um resultado para o mundo externo. Se 
construímos um algoritmo e ele não oferece uma saída para o mundo, ele 
será um algoritmo sem uso. Não faz sentindo criarmos uma “receita” e 
não gerar um resultado. 
 Tem que ser efetivo na sua execução, economizando tempo em todas as 
etapas: sim, precisamos tornar nosso algoritmo uma estrutura que gere 
resultados rapidamente. Desse modo iremos atingir o que o cliente deseja e 
com agilidade no tempo. Quando nosso algoritmo está mal definindo 
perdemos tempo e, consequentemente, geramos um mal estar com o cliente. 
 Formas de Representação 
Temos várias formas de representação de algoritmo, não existe uma decisão de 
qual é melhor, tudo vai variar de acordo com o que você deseja realizar. Existem 
algumas formas de representação que irão tratar os problemas em um nível lógico, 
retirando os detalhes da implementação que normalmente são relacionados à 
linguagem de programação. Também existem outras formas que possuem uma 
riqueza de detalhes que acabam tirando as ideias principais do algoritmo, 
atrapalhando o entendimento. 
Importante! 
O algoritmo pode ser implementado em qualquer linguagem de 
programação, desse modo sempre iremos criar um algoritmo antes de iniciar a 
programação em si. Com o algoritmo somado a qualquer linguagem de programação, 
iremos ter como resultado final um programa. 
Algoritmos 
 
31 
Abaixo, iremos mostrar as representações mais conhecidas e utilizadas: 
 Descrição Narrativa: Utilizamos essa descrição para descrever um 
processo de forma simples para que, mesmo uma pessoa que não 
entenda sobre esse assunto, possa entender esse algoritmo. Nesse tipo 
de descrição temos uma margem de erro grande e falta o entendimento 
de que, às vezes, o algoritmo se torna muito complexo, atrapalhando as 
pessoas que irão utilizar. Essa descrição também tem muita informação 
para, no fim, realizar poucas coisas. 
 
 
 Fluxograma Convencional: É a representação que usa as formas 
geométricas. Ela facilita o entendimento das ideias que temos no 
algoritmo e é muito mais eficiente que a descrição narrativa, pelo fato de 
ser muito mais precisa. Entretanto ainda não se preocupa como será feita 
a implementação. Eles também vão indicar ao programador a entrada, o 
processamento e a saída dos dados, que deverá selecionar o problema 
que a ele foi apresentado. Abaixo um exemplo. 
 
Exemplificando 
Receita de bolo: 
 Misture os ingredientes 
 Unte a forma com manteiga 
 Despeje a mistura na forma 
 Se houver coco ralado então despeje sobre a mistura 
 Leve a forma ao forno 
 Enquanto não corar deixe a forma no forno 
 Retire do forno 
 Deixe esfriar 
Algoritmos 
 
32 
Exemplo: Fluxograma para escolha do maior número de dois números 
distintos. 
 
 
 Pseudocódigo: Essa é a forma que mais usamos na informática, pois ela é 
rica em detalhes e define os tipos das variáveis que deverão ser usadas no 
programa. Os passos e detalhes seguidos tem que ter uma sequência 
lógica para o funcionamento adequado do programa. Esse algoritmo terá 
que ser convertido para uma linguagem de programação para seu 
funcionamento adequado. Essa forma traz muita facilidade ao 
programador, ajudando na implementação, por se parecer muito com as 
linguagensde programação. Abaixo, um exemplo. 
 
Algoritmos 
 
33 
Exemplo: 
 
Fases de um Algoritmo 
Quando vamos escrever um algoritmo, temos a sua divisão em três fases 
fundamentais que são a entrada de dados, o processamento de dados e a saída de 
dados. 
A entrada de dados é a parte onde iremos escrever o algoritmo para receber 
dados digitados pelo usuário; existem vários tipos de entrada de dados: o tipo 
inteiro, o tipo real, e o tipo caractere. A partir da entrada de dados vamos para o 
processamento de dados que tem como objetivo realizar procedimentos que o 
usuário deseja dentro de um programa. Essa é a segunda parte do nosso programa 
e, sem dúvidas, uma das partes mais importantes, já que qualquer erro nessa fase 
poderá gerar um resultado final indesejado pelo cliente. A saída de dados é a parte 
final de qualquer algoritmo; ela é o resultado alcançando após a entrada de dados 
de um cliente e o seu processamento. Todas as fases do algoritmo têm a sua 
importância e uma falha na criação de qualquer uma dessas fases faz o algoritmo 
apresentar problemas futuros, atrapalhando a operação do cliente. 
 
Algoritmos 
 
34 
Exemplo: Digite duas notas e mostre sua média: 
 
Início //começo do algoritmo 
 
 real n1,n2, med; //declaração de variável 
 leia (n1,n2); //entrada de dados 
 med (n1+n2)/2; //processamento de dados 
 escreva(med); /saída de dados 
 
Fim //fim do algortimo 
 
 
 Regras para se escrever um algoritmo 
Para que possamos escrever um algoritmo de forma correta e adequada, 
devemos seguir algumas regras básicas, pois só dessa forma nosso algoritmo ficara 
legível e de fácil entendimento. 
Vamos a essas regras: 
 Usar apenas um verbo por frase. 
 Pense sempre que você está escrevendo um algoritmo para pessoas que 
não entendem de programação. 
 Use frases bem curtas e simples. 
 Seja curto e objetivo. 
 Procure empregar frases que não tenham sentidos parecidos. 
 
 
Importante! 
Lembre-se sempre dessas regras, pois, utilizando delas, teremos nosso 
algoritmo escrito com perfeição e de fácil entendimento. 
Algoritmos 
 
35 
Ficamos por aqui. Estamos encerrando a unidade. Sempre que tiver uma 
dúvida entre em contato com seu tutor virtual através do ambiente virtual de 
aprendizagem e consulte sempre a biblioteca do seu polo. 
 
 
 
Leitura complementar: 
 
ASCENCIO, Ana Fernanda Gomes; CAMPOS, Edilene Aparecida Veneruchi de. 
Fundamentos da Programação de Computadores. São Paulo: Prentice Hall, 
2004. 
 
CORMEN, THOMAS H.; RIVEST, RONALD L.; STEIN, CLIFFORD; LEISERSON, CHARLES 
E. Algoritmos – Teoria e Prática – 3ª ed. Rio de Janeiro: Elsevier – Campus, 2012 
 
FORBELLONE, A. L.; EBERSPACHER, H. Lógica de Programação: a construção de 
algoritmos e estrutura de dados. São Paulo: Makron Books, 2000. 
 
GUIMARÃES, A. L.; LAGES, N. A. C. Algoritmos e Estruturas de Dados. Rio de 
Janeiro: LTC, 1994. 
 
LEITE, Mario. Técnicas de programação. São Paulo: Brasport, 2006. 
OLIVEIRA, Jayr Figueiredo de; MANZANO, Jose Augusto N. G. Algoritmos e lógica 
para desenvolvimento de programação. 22ª ed. São Paulo: Érica, 2009. 
É hora de se avaliar! 
Lembre-se de realizar as atividades desta unidade de estudo. Elas irão 
ajudá-lo a fixar o conteúdo, além de proporcionar sua autonomia no processo de 
ensino-aprendizagem. 
Algoritmos 
 
36 
 Exercícios – Unidade 2 
1. Considere que, durante a execução do algoritmo a seguir, os valores 2 e 3 
serão lidos pelo comando da linha 1 e o valor 10 será lido pelo comando da linha 3. 
 
1 
2 
3 
4 
5 
6 
 
leia A, B; 
C = 2 * A; 
leia A; 
C = C + B; 
imprima A, B, C; 
pare; 
 
Considerando o exposto acima, marque com um X a alternativa com 
afirmativa INCORRETA: 
a) Após a leitura da linha 1, a variável A possui o valor 2 e a variável B o valor 3. 
b) Na linha 2, o valor de C passa a ser 20. 
c) A variável A tem seu valor alterado ao longo do programa. 
d) Após a leitura da linha 3, o valor de A passa a ser 10, substituindo o valor 
anterior de A. 
e) A linha 4 modifica o valor de C para 7 
 
Algoritmos 
 
37 
2. No contexto de subprogramação, é correto afirmar sobre a recursividade e a 
passagem de parâmetros: 
a) Na subprogramação, para se criar um procedimento é necessário um 
identificador, uma lista de parâmetros e as ações que nele serão 
executadas. 
b) Um procedimento pode ser ativado em qualquer parte do programa e 
sua ativação se dá por meio do uso de sua lista de parâmetros. 
c) Dentro de um procedimento ou de uma função, quando ocorre a 
passagem de parâmetro por valor, as alterações que a função ou 
procedimento efetuar afetarão diretamente a variável original. 
d) Para processar todos os “nós” de uma árvore, um procedimento chama a 
si mesmo recursivamente para todos os “nós” filhos, exceto o caso base, 
que é o nó usualmente chamado “folha”. 
e) Uma característica típica da recursão é que um conjunto, desde que 
finito, de sentenças ou outros dados pode ser definido, analisado ou 
produzido por um programa de computador. 
 
3. Marque a extensão correta da Linguagem de programação C. 
a) doc 
b) c 
c) bas 
d) c++ 
e) xls 
Algoritmos 
 
38 
4. Analise o fluxograma do cálculo de média, e marque a resposta correta para 
completar o fluxograma, seguindo a ordem correta. 
 
 
a) "reprovado","aprovado", "fim", 
b) "fim", "aprovado","reprovado" 
c) "fim", "reprovado", "aprovado" 
d) "aprovado","fim","reprovado" 
e) "aprovado","reprovado","fim" 
 
Algoritmos 
 
39 
5. marque a resposta correta que indique o tipo de informação com os valores 
150, -50, -150,50. 
a) Caracter 
b) Real 
c) Inteiro 
d) Lógico 
e) Caracter duplo 
 
6. De acordo com a definição a seguir, marque a resposta correta ." é o meio 
pelo qual as informações (geralmente os resultados da execução de um 
programa) são transferidos pelo computador ao usuário ou aos níveis 
secundários de memória. Os exemplos mais comuns são o monitor de vídeo, 
impressora, tas e discos magnéticos" 
a) Dispositivo de entrada 
b) Dispositivo de saída 
c) Dispositivo saída e entrada 
d) Semântica 
e) Sintaxe 
 
7. Defina Algoritmo. 
 ___________________________________________________________________ 
 ___________________________________________________________________ 
 ___________________________________________________________________ 
 ___________________________________________________________________ 
 ___________________________________________________________________ 
 
Algoritmos 
 
40 
8. O que é necessário para se ter um algoritmo? 
 ___________________________________________________________________ 
 ___________________________________________________________________ 
 ___________________________________________________________________ 
 ___________________________________________________________________ 
 ___________________________________________________________________ 
 ___________________________________________________________________ 
 ___________________________________________________________________ 
 ___________________________________________________________________ 
 ___________________________________________________________________ 
 ___________________________________________________________________ 
9. Qual o método para Construir um Algoritmo ? 
 ___________________________________________________________________ 
 ___________________________________________________________________ 
 ___________________________________________________________________ 
 ___________________________________________________________________ 
 ___________________________________________________________________ 
 ___________________________________________________________________ 
 ___________________________________________________________________ 
 ______________________________________________________________________________________________________________________________________ 
 ___________________________________________________________________ 
 ___________________________________________________________________ 
 
 
Algoritmos 
 
41 
 
3 Estruturas de Implementação dos 
Algoritmos 
 
Algoritmos 
 
42 
Caro aluno, 
Nesta unidade, estudaremos como poderemos aperfeiçoar a criação de um 
algoritmo sem erros e com qualidade na hora de executar o programa, também 
veremos os operadores de entrada e saída que tem objetivo de inserir dados no 
sistema processar e apresentar um resultado, por fim veremos os operadores que 
tem função de realizar cálculos matemáticos no nosso algoritmo apresentando um 
resultado com rapidez e precisão. 
Através dessa unidade iremos aprender a melhor forma de estruturação de um 
algoritmo, desse modo iremos agilizar qualquer problema que tenhamos de 
resolver melhorando assim o desempenho do usuário que poderá fazer suas 
tarefas com mais fluidezes e qualidade. 
 
Objetivos da unidade: 
 Como implementar um algoritmo de forma rápida e com qualidade. 
 Aprender a utilizar as operações de entrada e saída de dados de um 
algoritmo. 
 Usar os operadores matemáticos para realização de processamento de 
dados. 
 
Plano da unidade: 
 Características de implementação dos algoritmos 
 Operações de Entrada e Saída 
 Operadores Matemáticos 
 
Bons estudos 
 
Algoritmos 
 
43 
 Características de Implementação dos Algoritmos 
Refinamentos Sucessivos 
Quando temos um programa muito complexo, dentro dele, certamente, 
teremos muitos problemas que não devemos tratar diretamente. Isso toma muito 
mais tempo e, na maioria dos casos, acabamos deixando nosso código poluído e 
com muitos erros de execução. Desse modo, tratamos os problemas complexos 
utilizando o método conhecido como Refinamento Sucessivo que tem como 
objetivo pegar um problema grande e dividi-lo em subproblemas menores. 
Com essa subdivisão dos problemas maiores temos muitas vantagens para o 
desenvolvimento do algoritmo: 1) cada parte do código fica muita mais simples; 2) 
conseguimos entender com muito mais facilidade o programa, pelo fato dele estar 
dividido em subprogramas; 3) esses subprogramas tem pouca codificação, 
tornando muito mais fácil a sua manutenção futura; 4) conseguimos simplificar 
toda a documentação do programa; 5) conseguimos dividir o desenvolvimento do 
software com a equipe através dos arquivos de cabeçalhos (.h). 
Exemplo: Dadas n sequências de números inteiros, cada qual terminada por 0, 
calcular a média dos números pares de cada sequência. 
 
Algoritmos 
 
44 
1. Sem Refinamento Sucessivo: 
 
 
Algoritmos 
 
45 
2. Com Refinamento Sucessivo. 
 
 
Podemos observar que no segundo exemplo, temos o conceito de 
Refinamento Sucessivo e o entendimento do código fica bem mais simplificado. 
Nesse exemplo o código é simples, mas imagine um programa com duas mil linhas 
de código. Certamente se você não utilizar o conceito de Refinamento Sucessivo 
irá ter muitos problemas para encontrar as funções do software e futuros erros que 
possam aparecer ou, até mesmo, se o cliente solicitar uma nova função no 
programa, haverá uma enorme dificuldade para realizar essa atualização pelo fato 
do código estar muito complexo e de difícil entendimento. Por isso o uso do 
Refinamento Sucessivo é essencial para a estruturação do algoritmo, facilitando em 
muita a vida do programador no entendimento do código. 
 
Algoritmos 
 
46 
Linearização de Expressões 
Para que possamos realizar cálculos matemáticos em programação 
precisamos realizar uma conversão da forma tradicional para a forma 
computacional. Realizamos esse processo através da Linearização de Expressões, 
que tem como objetivo transformar as operações matemáticas tradicionais em 
forma computacional em linha. Se não realizarmos esse processo não 
conseguiremos realizar cálculos matemáticos no software. 
O computador interpreta os cálculos iguais à matemática normal, porém tem 
que estar seguindo as regras de Linearização: 
Alterar as chaves “{ }” e os colchetes “[]” pelo operador parênteses “()”, dessa 
forma o programa ira entender que você deseja realizar uma operação especifica 
dentro dos parênteses antes de realizar a expressão toda. 
Alterar as barras de fração “__” pelo operador matemático “/ ” que significa 
divisão. 
Exemplo: 
 
Acima temos um exemplo da conversão que precisamos realizar de uma 
expressão matemática convencional para a forma computacional. Lembrando que 
sempre iremos precisar realizar essa conversão se não o compilador não 
reconhecerá a expressão. 
 
Algoritmos 
 
47 
Lembrando que o programa segue a mesma lógica de uma operação 
matemática convencional que você aprendeu na escola, a ordem das operações é: 
1) potenciação e radiciação; 2)multiplicação e divisão; 3)adição e subtração; se 
você quiser realizar um calculo antes precisará pôr o operador parênteses “()” para 
que seja realizada a operação dentro dos parênteses antes, e depois será realizado 
o restante da expressão matemática, caso contrário ele irá seguir a ordem das 
operações normais da matemática. 
Exemplo: Faça um programa que receba 3 notas de um aluno e mostre a 
média ponderada desse aluno: 
Forma Correta: 
 
Nesse exemplo, observamos que temos a entrada de três notas de um aluno e 
no final será apresentado à média dele, o programa realizará primeiro a expressão 
que está dentro dos parênteses e depois realizará a divisão. 
Algoritmos 
 
48 
Forma Incorreta: 
 
Já nesse exemplo, temos as mesmas três entradas de dados, porém, na hora do 
processamento, o compilador primeiro a divisão entre n3 / 3 e depois irá realizar a 
soma entre n1 + n2 + o resultado da divisão, dessa forma o resultado não e será o 
desejado, o compilador não apresentar erros nesse código porem esse código está 
incorreto e um erro de logica não de código. 
Agora tentem reescrever os dois códigos na ambiente de desenvolvimento e 
realize os testes para verificar que a primeira forma está realizando a expressão de 
forma correta e a segunda mesmo sem apresentar erro de compilação está com um 
erro de logica. 
Modularização 
Um conceito que iremos utilizar bastante em algoritmos de alto nível será o 
da Modularização que consiste em atribuir funções específicas para cada 
operação realizada no programa, mais conhecidas como Sub-Rotinas. Essas Sub-
Algoritmos 
 
49 
Rotinas são criadas separadas da função main e acionadas por ela quando 
necessário. Em todo programa existe a função main, ela é o gatilho principal para 
o programa, sendo responsável por chamar as Sub-Rotinas para serem 
executadas. Quando essas são executadas, retornam à main para ser realizada 
outra operação dentro do programa. Podemos pensar que escrevendo mais de 
uma função o nosso código ficará maior, porém ele ajuda na organização do 
código, deixando muito mais claro para o desenvolvedor quando for necessário 
realizar alguma alteração ou consertar algum bug. 
Lembra que acima explicamos o conceito de Refinamento Sucessivo? A 
Modularização está diretamente ligada a esse conceito, porque ela é responsável 
pela divisão do problema em Sub-Rotinas. Observe que cada elemento estudado 
nessa unidade é um passo importante para criação de algoritmo. Vejamos um 
exemplo de modularização de um sistema: 
 
Algoritmos 
 
50 
Acima temos um exemplo de Modularização. Esse exemplo é bem simples, 
porém em softwares de grande nível usaremos esse conceito com muito mais 
eficácia. Podemos observar que, separando a função, teremos uma facilidade para 
execução da main, pois ela ficará muito mais rápida e evitamos deixar o código 
muito poluído, o que atrapalha na hora de procurar erros ou fazer atualização. Se 
aprofunde nesses conceitos de Modularização e tente fazer todos os programas 
utilizando-os para melhoraro estruturamento do código e facilitar seu 
entendimento. Reescreva o código acima e observe o funcionamento da 
Modularização e sua facilidade em separar o código por Sub-Rotinas. 
 Operadores de Entrada e Saída 
Em toda linguagem de programação temos os operadores de entrada (Input) e 
saída (output) de dados. Eles são necessários para realizar a inserção de dados e o 
resultado da função. 
Entrada de Dados 
Vamos explicar primeiro o Operador de Entrada (Input) que tem com função 
principal realizar a leitura dos dados digitados pelo usuário para executar alguma 
função específica criada no programa. O comando mais utilizado para receber a 
entrada de dados se chama scanf e normalmente vem acompanhado pelo printf 
que é um comando utilizado para exibir mensagens, e os valores da saída de dados 
que iremos explicar abaixo. 
Vamos a sintaxe do scanf (“tipo da variável”, & nome da variável), essa é a 
estrutura básica da função scanf. Vamos explicar um pouco esse comando: ele 
serve para receber os dados digitados via teclado, armazenando esses valores na 
variável, conceito que iremos explicar na próxima unidade, esse dado ficará 
guardado em memória, em arquivos ou em base de dados, porém nesse início 
vamos trabalhar com os dados em memória. Vamos a um exemplo do scanf. 
 
Algoritmos 
 
51 
 
Podemos observar no exemplo acima como é simples a entrada de dados pelo 
método scanf, o “%d” está reafirmando a declaração que foi feita da variável como 
tipo inteiro. Após essa declaração temos a vírgula que serve para separar a 
declaração do endereçamento da memória. O operador “&” é responsável por 
reservar um espaço de memória para variável n1, só assim o valor digitado ficará 
salvo na memória principal do computador. Esse valor será solicitado para 
realização de alguma operação dentro do programa, lembrando que quando o 
programa for encerrado todos os valores que foram armazenados serão perdidos. 
Esse é o principal comando de entrada de dados em C, mas existem outros 
comandos que você pode pesquisar para aprofundar seu conhecimento. 
Saída de Dados 
Na saída de dados temos como principal função o printf (“Mensagem Digita 
pelo desenvolvedor %d: reafirmando a declaração da variável”, nome da variável). 
O printf é usado para saída de dados pelo fato de ser um comando responsável por 
exibir mensagens e valores na tela. Explicando um pouco a sintaxe, na primeira 
parte, onde começam as aspas, temos uma mensagem de saída que o 
desenvolvedor criou; seguindo isso temos o tipo da variável, novamente afirmando 
que esse tipo de variável é inteira; fechando essas aspas, colocamos uma vírgula 
separando a parte que será impressa na tela e a variável. No lugar daquele "%d" irá 
aparecer o valor que a variável está recebendo no momento. Vejamos um exemplo: 
 
 
Esse é o comando com sua sintaxe pronta; temos a parte da mensagem que 
será impressa na tela, o "%d" irá receber o valor salvo na memória da variável n1, e 
será impresso na tela. 
 
Algoritmos 
 
52 
Exemplo do código funcionando: 
 
O entendimento da entrada e saída de dados é fundamental para o avanço na 
disciplina. 
 Operadores Matemáticos 
Abordaremos agora os operadores, os quais servem para realizar qualquer tipo 
de cálculo matemático, manipulações de caracteres dentro do software existem 
quatro tipos de operadores o aritmético, lógico, relacional e especial, iremos 
explicar cada um abaixo. 
Operadores Aritméticos 
Sãos os operadores responsáveis por realizar cálculos matemáticos, abaixo 
temos uma tabela com cada um deles: 
Esses operadores seguem a forma normal de cálculos matemáticos, uma 
atenção especial quando desejar obter o resto da divisão usaremos o operado “%” 
dessa forma obteremos o resultado do resto não da divisão. 
O incremento e o decremento tem o mesma a explicação a única diferença é 
que o incremento adiciona uma unidade a variável e o decremento adiciona meu 
uma unidade a variável. 
Exemplo: 
Algoritmos 
 
53 
 
Operadores Lógicos 
Sãos os operadores que iremos usar para testar uma condição dentro do 
programa, esses operadores normalmente são encontrados dentro If, comando 
responsável por realizar condições estabelecidas pelo usuário. 
Operadores Aritméticos 
Operador: Nome: Utilização Explicação: 
&& E if((10<20) &&(20>10)) 
O operador “E” exige que todas 
as operações sejam verdadeiras. 
Parao IF ser verdadeiro 
II OU If ((10<20) l l (20>10)) 
O operador “OU exige que 
apenas uma das operações 
sejam verdadeiras. Para o IF ser 
verdadeiro. 
! Diferente 20! =10 
O Operador “E” verifica se o 
primeiro número é diferente do 
segundo. 
Muita atenção na hora de construir as condições utilizando os operadores 
lógicos fique atento na hora de usar os “()” parênteses eles são fundamentais para a 
condição ser executada como desejada. 
Exemplo: 
Queremos testar um número “num” é positivo e par: 
if (num >= 0) 
if (num % 2 == 0) 
printf("Número par não negativo.\n"); 
Algoritmos 
 
54 
Com os operadores lógicos isso pode ser simplificado: 
 if ((num>=0) && (num%2 == 0)) 
 printf("Número par nao negativo.\n"); 
 
Podemos utilizar o operador de negação lógica: 
 if (num>0 && !(num%2)) 
 printf("Número par nao negativo.\n"); 
 
 
Operadores Relacionais 
São os operadores responsáveis pela comparação de variáveis dentro de uma 
estrutura condicional conhecida como “IF”. Esses operadores são de grande 
importância para um software tendo em vista que sempre iremos realizar 
comparações. Os operadores relacionais retornam valor 1 para uma sentença 
verdadeira e 0 para uma sentença falsa. Abaixo uma tabela dos operadores: 
Símbolo Nome do Operador Exemplo Significado 
> Maior que x>y x é maior que y? 
> = Maior ou igual x > =y x é maior ou igual a y? 
< Menor que x<y x é menor que y? 
<= Menor ou igual x<=y x é menor ou igual a y? 
== Igualdade x==y x é igual y 
! = Diferente de X! = y X é diferente de y? 
Obs: Um erro que vemos bastante é no operador de igualdade “==” que é 
confundindo com o “=” (operador de atribuição em uma variável) fique atento a 
esses detalhes. 
Operadores Especiais 
São os operadores responsáveis por testar, atribuir ou descolar os bits em um 
byte ou uma palavra, que são os tipos de dados conhecidos como “int” e “char”. 
Esses operadores não podem ser usados em variáveis de tipo complexo de dados 
Algoritmos 
 
55 
como o “float”. Abaixo uma tabela que explica melhor a utilização dos operadores 
especial: 
Operador Ação 
& AND 
l OR 
^ XOR (OR exclusivo) 
~ NOT 
>> Deslocamento de bits a direita 
<< Deslocamento d ebits a esquerda 
Obs: Muita atenção na utilização dos operadores especiais, eles são muito 
parecidos com os outros operadores que estudamos. Uma aplicação errada desses 
operadores irá prejudicar o funcionamento do sistema. 
Estrutura de um programa em C 
Uma particularidade interessante no programa C é seu aspecto modular e 
funcional, em que o próprio programa principal é uma função. Esta forma de 
apresentação da linguagem facilita o desenvolvimento de programas, pois permite 
o emprego de formas estruturadas e modulares encontradas em outras linguagens. 
A estrutura de um programa em C possui os seguintes elementos, sendo que 
aqueles delimitados por colchetes são opcionais: 
 
Algoritmos 
 
56 
 
[ definições de pré-processamento ] 
[ definições de tipo ] 
[ declarações de variáveis globais ] 
[ protótipos de funções ] 
[ funções ] 
main ( ) 
{ 
 /* definições de variáveis */ 
 /* corpo da função principal, com declarações de suas variáveis, seus 
comandos e funções */ 
 } 
 
Definições de pré-processamento são comandos interpretados pelo 
compilador, em tempo de compilação, que dizem respeito a operações 
realizadas pelo compilador para geração de código. Geralmente iniciam com 
uma cerquilha (#) e não são comandos da linguagem C, por isso não serãotratados aqui com maiores detalhes. 
 
Ex: 
#include <stdio.h> /* comando de pré-processador, utilizado para indicar 
ao compilador que ele deve ´colar´ as definições do arquivo stdio.h neste arquivo 
antes de compilá-lo */ 
Definições de tipos são definições de estruturas ou tipos de dados especiais, 
introduzidos pelo usuário para facilitar a manipulação de dados pelo programa. 
Também não serão tratados aqui em maiores detalhes. 
Declarações de variáveis globais são feitas quando é necessário utilizar 
variáveis globais no programa. O conceito de variável global e as vantagens e 
desvantagens do seu uso dizem respeito à modularização de um programa em C 
(consultar o material sobre modularização e funções). 
 
Algoritmos 
 
57 
Protótipos de funções e funções também dizem respeito a questões de 
modularização. 
main() é a função principal de um programa em C, contendo o código que será 
inicialmente executado quando o programa em si for executado. Todo programa 
em C deve conter a função main(), do contrário será gerado um erro durante o 
processo de geração do programa (mais especificamente, na etapa de ligação). 
Funções básicas de E/S 
Esta seção descreve algumas das funções básicas de E/S, que serão utilizadas 
inicialmente para prover o programador de um canal de entrada de dados via 
teclado e um canal de saída de dados via monitor. 
Função printf( ) (biblioteca stdio.h) 
 
A função printf( ) é basicamente utilizada para enviar informações ao monitor, 
ou seja, imprimir informações. O seu protótipo é o seguinte: 
 
printf( string de dados e formato, var1, var2,..., varN); 
 
onde string de dados e formato é formada por dados literais a serem exibidos no 
monitor (por exemplo, um texto qualquer) mais um conjunto opcional de 
especificadores de formato (indicados pelo símbolo % e um conjunto de caracteres). 
Estes especificadores determinarão de que forma o conteúdo dos argumentos var1 
a varN será exibido. 
var1 a varN indicam, por sua vez, os argumentos (variáveis ou constantes) cujos 
valores serão exibidos no local e no formato determinado pelos especificadores de 
formato, dentro da string de dados e formato. O número N deve ser igual ao 
número de especificadores de formato fornecidos. 
 
Algoritmos 
 
58 
Especificadores de formato mais utilizados: 
 
%c caracteres simples (tipo char) 
%d inteiro (tipo int ) 
%e notação científica 
%f ponto flutuante (tipo float) 
%g %e ou %f (mais curto) 
%o octal 
%s string 
%u inteiro sem sinal 
%x hexadecimal 
%lf tipo double 
%u inteiro não sinalizado (tipo unsigned int) 
%ld tipo long int 
 
Exemplos: 
 
1) 
int n = 15; 
printf(“O valor de n eh %d”, n); 
 
/* exibe ´O valor de n eh 15´. Note-se que todo o conteúdo da string de dados e 
formato é exibido literalmente, com exceção do especificador %d, que é 
substituído pelo valor em formato inteiro da variável n */ 
 
2) 
char carac = ´A´; 
float num = 3.16; 
printf(“A letra eh %c e o numero eh %f”, carac, num); 
 
/* exibe ´A letra eh A e o numero eh 3.16´. Neste caso, oespecificador %c (primeiro 
da string) é substituído pelo valor da variável carac e o especificador %f é 
substituído pelo valor da variável num. Note-se que os tipos dos especificadores e 
das variáveis são compatíveis */ 
 
Algoritmos 
 
59 
Função scanf() (biblioteca stdio.h) 
A função scanf é utilizada para receber dados de uma entrada de dados padrão. 
Consideraremos, para fins de simplificação, que essa entrada padrão é sempre o 
teclado. O protótipo de scanf é o seguinte: 
scanf (string de formato, &var1, &var2, …, &varN); 
onde a string de formato contém os especificadores de formato na sequência e 
relativos a cada um dos dados que se pretende receber. Para uma lista dos 
especificadores de formato mais utilizados, ver seção 3.1. 
var1 a varN identificam as variáveis nas quais serão armazenados os valores 
recebidos por scanf, na mesma ordem determinada pelos especificadores de 
formato. O número N deve ser igual ao número de especificadores de formato 
fornecidos. 
 
Exemplos: 
1) 
int t; 
printf(“Digite um inteiro: “); 
scanf(“%d”, &t); 
/* aguarda a digitação de um número do tipo int. O número digitado é 
armazenado na variável t quando o usuário digita ENTER */ 
 
2) 
 
char carac1; 
int i; 
printf(“Digite um caracter e um int, separados por vírgula: “); 
scanf(“%c, %d”, &carac1, &i); 
 
Importante 
O operador de endereço (&) DEVE obrigatoriamente ser utilizado diante 
dos identificadores das variáveis, do contrário ocorre um erro. Para maiores detalhes, 
consultar a teoria sobre ponteiros. 
Algoritmos 
 
60 
/* neste caso, os especificadores de formato %c e %d estão separados por vírgula, o 
que significa que o usuário deve digitar os valores também separados por vírgula e 
na ordem correta */ 
Função getch() (biblioteca conio.h) 
 
A função getch é utilizada, basicamente, para esperar o pressionamento de uma 
tecla pelo usuário. A tecla pressionada pode ser capturada através do valor de 
retorno da função (para maiores detalhes sobre valor de retorno, consultar a teoria 
sobre funções). 
Pelo fato de interromper a execução até o pressionamento de uma tecla, a 
função getch pode ser utilizada no final de um programa de console para permitir 
que o usuário visualize o resultado do programa antes que a sua janela se feche. 
Exemplo: 
 
Printf(“Estou mostrando uma frase\n”); 
Printf(“Digite qualquer tecla para sair do programa”); 
Getch(); /* aguarda aqui até uma tecla ser pressionada */ 
 
/* fim do programa */ 
 
Observação: a função getche funciona de forma semelhante, porém exibe na 
tela o caracter digitado (o nome significa “get char with echo”). 
Função clrscr() (biblioteca conio.h) 
A função clrscr é utilizada para limpar a tela (o nome significa “clear screen”). 
 
Algoritmos 
 
61 
Ficamos por aqui. Estamos encerrando a unidade. Sempre que tiver uma 
dúvida entre em contato com seu tutor virtual através do ambiente virtual de 
aprendizagem e consulte sempre a biblioteca do seu polo. 
 
 
Leitura complementar 
 
ASCENCIO, Ana Fernanda Gomes; CAMPOS, Edilene Aparecida Veneruchi de. 
Fundamentos da Programação de Computadores. São Paulo: Prentice Hall, 2004. 
 
CORMEN, THOMAS H.; RIVEST, RONALD L.; STEIN, CLIFFORD; LEISERSON, CHARLES 
E. Algoritmos – Teoria e Prática – 3ª ed. Rio de Janeiro: Elsevier – Campus, 2012 
 
FORBELLONE, A. L.; EBERSPACHER, H. Lógica de Programação: a construção de 
algoritmos e estrutura de dados. São Paulo: Makron Books, 2000. 
GUIMARÃES, A. L.; LAGES, N. A. C. Algoritmos e Estruturas de Dados. Rio de 
Janeiro: LTC, 1994. 
 
LEITE, Mario. Técnicas de programação. São Paulo: Brasport, 2006. 
OLIVEIRA, Jayr Figueiredo de; MANZANO, Jose Augusto N. G. Algoritmos e lógica 
para desenvolvimento de programação. 22ª ed. São Paulo: Érica, 2009. 
É hora de se avaliar 
Lembre-se de realizar as atividades desta unidade de estudo. Elas irão 
ajudá-lo a fixar o conteúdo, além de proporcionar sua autonomia no processo de 
ensino-aprendizagem. 
Algoritmos 
 
62 
 Exercícios – Unidade 3 
1. Considerando a linguagem de programação "C", para uma variável 
armazenar "números de ponto flutuante", deve ser declarada como: 
a) Real. 
b) Int. 
c) Numeric. 
d) Point. 
e) Float. 
 
2. São palavras-chave da linguagem C no padrão ANSI e, portanto, não podem 
ser utilizadas como nomes para variáveis 
a) Typedef, master, core, newline. 
b) Union, extern, main, core. 
c) Int, long, static, void. 
d) Float, long, core, continue 
e) Signed, unsigned, master, main 
 
3. Em linguagem de programação, uma variável é: 
a) O resultado de uma expressão aritmética. 
b) o nome dado às informações salvas no disco. 
c) Um número, uma letra ou um ponto-flutuante. 
d) Uma posição de memória identificada. 
e) Uma palavra especial utilizada pela linguagem para identificar suas 
instruções de controle 
 
Algoritmos 
 
63 
4. Em relação ao processo de geração de códigoexecutável, assinale a opção 
correta 
a) Em um programa implementado na linguagem C, a linha “#include ”, que 
faça parte do código fonte, é analisada diretamente pelo compilador, de 
forma que o conteúdo do arquivo stdio.h passa a ser considerado parte 
integrante do programa. 
b) Todo compilador de linguagem de programação de alto nível tem a 
responsabilidade de analisar o código fonte até a geração de código 
executável. 
c) Carregadores são programas usados exclusivamente por linguagens de 
programação de alto nível, com o objetivo de transferir um módulo de 
carga para a memória. 
d) A declaração de variável “int 7g;” em um programa escrito na linguagem 
Java, leva a um erro de compilação detectado durante a análise sintática. 
e) Em programas que usam funções disponíveis em bibliotecas, as 
referências a estas funções serão resolvidas pelo ligador. No caso de 
bibliotecas estáticas, o código objeto das funções é integrado ao módulo 
executável durante o processo de ligação. 
 
5. Na linguagem de programa C , marque a função de saída : 
a) Printf 
b) Scanf 
c) Main 
d) Void 
e) Int 
 
Algoritmos 
 
64 
6. Na linguagem de programa C , marque a função de entrada : 
a) Printf 
b) Scanf 
c) Main 
d) Void 
e) Int 
 
7. Analise e identifique os operadores especiais na linguagem C: 
a) %, &, |, > 
b) ~, >>, <<, ||, && 
c) &&, ~, %%, + 
d) ||, -, +, % 
e) -, +, *,/ 
 
8. Marque os operadores relacionais usados na linguagem C: 
a) +,-,*,% 
b) >=,+,<=,< 
c) =>,=<,<,> 
d) >=,<=,<,!= 
e) =, ==, !=,< 
 
 
Algoritmos 
 
65 
9. Defina operadores relacionais. 
 ___________________________________________________________________ 
 ___________________________________________________________________ 
 ___________________________________________________________________ 
 ___________________________________________________________________ 
 ___________________________________________________________________ 
 ___________________________________________________________________ 
 ___________________________________________________________________ 
 ___________________________________________________________________ 
 ___________________________________________________________________ 
10. Fale sobre modularização. 
 ___________________________________________________________________ 
 ___________________________________________________________________ 
 ___________________________________________________________________ 
 ___________________________________________________________________ 
 ___________________________________________________________________ 
 ___________________________________________________________________ 
 ___________________________________________________________________ 
 ___________________________________________________________________ 
 ___________________________________________________________________ 
 ___________________________________________________________________ 
 
Algoritmos 
 
66 
 
 
Algoritmos 
 
67 
 
4 Variáveis e Tipos de Dados 
 
 
Algoritmos 
 
68 
Caro aluno, 
Nesta unidade, iremos estudar as variáveis e seus tipos de dados, iremos ver a 
importância que tem a definição correta das variáveis para o desenvolvimento do 
sistema, de que modo podemos atribuir valores e manipular essas variáveis. 
 
Objetivos da unidade: 
 Entender os conceitos básico de variáveis. 
 Aprender de que modo podemos manipular esses dados armazenados 
nas variáveis. 
 Como declarar corretamente os identificadores da variável. 
 Entender todos os tipos de dados existente para as variáveis e com 
realizar essa declaração. 
 
Plano da unidade: 
 Conceitos de Variáveis. 
 Operação de Atribuição. 
 Identificadores. 
 Tipo de dados. 
 
Bons estudos. 
 
Algoritmos 
 
69 
 Conceito de Variáveis 
Bom, chegamos numa das partes mais importantes da fase inicial de um 
algoritmo: as variáveis. Variável é um local que será reservado na memória principal 
do programa para guardar vários tipos de dados. Toda variável irá necessitar de um 
nome, nome esse que na programação iremos chamar de identificador. O 
identificador será responsável pelo nome dado a certa variável que será utilizado 
em todo o programa. Além do identificador, precisamos também definir o seu tipo 
de dado, ou seja, o valor que essa variável poderá receber. Iremos aprender abaixo 
como declarar a variável de forma correta e atribuir valores a ela. 
 Operação de Atribuição 
Essa operação tem como seu objetivo definir ou redefinir valores na variável. 
Utilizamos essa operação quando queremos iniciar uma variável com valor 
específico, pulando a etapa de entrada de dados, e estabelecemos no próprio 
código o valor que essa variável irá receber. Porém podemos também redefinir o 
valor preestabelecido pelo programador por outro desejado pelo usuário; para 
isso, basta realizar outra entrada de dados. Desse modo o novo dado inserido irá 
sobrescrever o dado estabelecido antes. 
Exemplos: Uma variável recebendo um valor predefinido. 
 
 
Algoritmos 
 
70 
Uma variável recebendo um valor predefinido e sendo alterado por outra 
entrada de dados: 
 
 
Outra forma de atribuir valor a uma variável: 
 
 
Essas sãos as formas mais utilizadas para atribuir um valor a uma variável. 
 Identificadores 
São os nomes que irão fazer referências aos dados que serão armazenados 
nas variáveis. Esses identificadores têm regras únicas que devem ser seguidas 
corretamente senão o programa não será executado. Abaixo, iremos mostrar as 
regras para criar um identificador: 
 Só podem ser utilizados dígitos, letras maiúsculas e minúsculas, e apenas 
o caractere de sublinha ( __ ), esses sãos os caracteres aceitos pelas 
variáveis. 
Algoritmos 
 
71 
 Na linguagem C, existe diferença entre letra maiúscula e minúscula. 
Exemplo: Escola ≠ escola ≠ ESCOLA. Fique atento a essa regra, acima 
temos três variáveis com o mesmo nome, porém caracteres maiúsculos e 
minúsculos são considerados diferentes pelo compilador. 
 É proibido usar as palavradas reservadas pela linguagem C, isso irá dar 
erro no programa. Segue a lista de palavras proibidas de serem usadas: 
auto, break, case, char, const, continue, default, do, double, else, enum, 
extern, float, for, goto, if, int, long, register, return, short, signed, sizeof, static, 
struct, switch, typeof, union, unsigned, void, volatile, while. 
 Os identificadores não podem conter no primeiro caractere valor 
numeral: Exemplo: 1nome. 
Exemplos Corretos: 
 
Exemplos Incorretos: 
 
 Tipo de dados 
Os tipos de dados irão definir quais valores poderão ser assumidos pelas 
variáveis e as operações que poderão ser realizadas por ela, desse modo, iremos 
saber qual a natureza da informação. Os tipos de dados são: 
 Variáveis do tipo “int” são conhecidas com inteiras elas recebem apenas 
valores do tipo inteiro que vão de -2147483648 a 2147483647. 
Algoritmos 
 
72 
 Variáveis do tipo “char” são conhecidas como caracteres elas recebem 
todos os caracteres contidos no padrão ASCII de forma individual. 
 Variáveis do tipo “float” são conhecidas como reais elas recebem valores 
do tipo real que vão de 10-38 a 1038. 
 Variáveis do tipo “double” são conhecidas também como reais porém ela 
recebem uma maior quantidade de valores reais que vão de 10-4932 a 104932 
 Variáveis do tipo “bool” são conhecidas como variáveis de verdadeiro 
(true), ou falso(false), elas recebem apenas dois valores (true e false) 
normalmente usada para uma condição. 
 
 
 
Leitura complementar 
ASCENCIO, Ana Fernanda Gomes; CAMPOS, Edilene Aparecida 
Veneruchi de. Fundamentos da Programação de Computadores. São Paulo: 
Prentice Hall, 2004. 
 
CORMEN, THOMAS H.; RIVEST, RONALD L.; STEIN, CLIFFORD; LEISERSON, 
CHARLES E. Algoritmos – Teoria e Prática – 3ª ed. Rio de Janeiro: Elsevier – 
Campus,2012 
 
FORBELLONE, A. L.; EBERSPACHER, H. Lógica de Programação: a construção de 
algoritmos e estrutura de dados. São Paulo: Makron Books, 2000. 
GUIMARÃES, A. L.; LAGES, N. A. C. Algoritmos e Estruturas de Dados. Rio de 
Janeiro: LTC, 1994. 
 
LEITE, Mario. Técnicas de programação. São Paulo: Brasport, 2006. 
OLIVEIRA, Jayr Figueiredo de; MANZANO, Jose Augusto N. G. Algoritmos e 
lógica para desenvolvimento de programação. 22ª ed. São Paulo: Érica, 2009. 
Algoritmos 
 
73 
Estamos encerrando a unidade. Sempre que tiver uma dúvida entre em 
contato com seu tutor virtual através do ambiente virtual de aprendizagem e 
consulte sempre a biblioteca do seu polo. 
 
 
É hora de se avaliar 
Lembre-se de realizar as atividades desta unidade de estudo. Elas irão 
ajudá-lo a fixar o conteúdo, além de proporcionar sua autonomia no processo de 
ensino-aprendizagem. 
Algoritmos 
 
74 
 Exercícios – Unidade 4 
1. Indique qual a alternativa correta para declarar uma variável que representa 
o salário de um colaborador. 
a)var 
caractere SALÁRIO; 
b)var 
logico SALÁRIO; 
c)var 
string SALÁRIO; 
d)var 
float SALÁRIO; 
e)var 
int SALÁRIO; 
2. Faz parte do desenvolvimento de uma algoritmo declarar as variáveis que 
armazenarão dados a ser manipulados pelo algoritmo. De acordo com as regras 
para criação dos nomes para as variáveis, assinale a alternativa que possui um 
exemplo de nome INCORRETO: 
a) Nota2 
b) Nome_aluno 
c) Num1 
d) Cad1- id 
e) Salariofinal 
 
Algoritmos 
 
75 
3. O que será apresentado na linha 9 do seguinte programa? 
1- #include <stdio.h> 
2- int main(void) 
3- { 
4- int x = 4; 
5- scanf("%d", &x); 
6- printf("%d", 2*x); 
7- return 0; 
8- } 
a) Exibirá o dobro do valor lido. 
b) Exibirá o valor lido. 
c) Exibirá a divisão do valor lido. 
d) Exibirá a porcentagem do valor lido. 
e) Exibirá ZERO. 
 
4. Para os recursos presentes na linguagem de programação C, são feitas as 
afirmativas abaixo. 
I – Permite acesso de baixo nível através da introdução de código Assembly no 
programa C; 
II - A passagem de parâmetros por referência para funções pode ser simulada 
através da utilização de ponteiros; 
III - O tipo de dados typedef são estruturas variáveis que permitem que dados 
relacionados sejam combinados e manipulados como um todo. 
Está(ão) correta(s) a(s) afirmativa(s) 
a) I, apenas. 
b) II, apenas. 
c) III, apenas. 
d) I e II, apenas. 
e) I, II e III. 
Algoritmos 
 
76 
5. Qual o tipo de dado que recebe uma maior quantidade de valores reais que 
vão de 10-4932 a 104932: 
a) Int 
b) Float 
c) Bool 
d) Double 
e) Char 
 
6. Qual tipo de software tradutor deve ser utilizado para programas em geral, 
quando a velocidade de execução é uma exigência de alta prioridade? 
a) Compiladores 
b) Interpretadores 
c) Tradutores híbridos 
d) Macroprocessadores 
e) Interpretadores de macroinstruções 
 
7. Com as declarações: 
Float soma, x 
Char nome, cor 
Bool cod, teste, tudo 
 
Assinale com um X os comandos de atribuição válidos. 
a) Teste = cod OU ((x)*2 <> soma) 
b) Tudo = soma 
c) X = nome >= cor 
d) Cod = cor = 'verde' 
e) Tudo = NÃO teste OU cod E (soma < x) 
Algoritmos 
 
77 
8. Se X possui o valor 15 e foram executadas as seguintes instruções: 
X = X + 3 
X = X - 6 
X = X / 2 
X = 3 * X 
Qual será o valor armazenado em X? 
a) 9 
b) 6 
c) 15 
d) 12 
e) 18 
 
9. Quais palavras são reservadas pela linguagem C? 
 ___________________________________________________________________ 
 ___________________________________________________________________ 
 ___________________________________________________________________ 
 ___________________________________________________________________ 
 ___________________________________________________________________ 
 
10. O que é variável? 
 ___________________________________________________________________ 
 ___________________________________________________________________ 
 ___________________________________________________________________ 
 ___________________________________________________________________ 
 ___________________________________________________________________ 
Algoritmos 
 
78 
 
 
Algoritmos 
 
79 
 
5 Estrutura de Decisão e Repetição 
 
 
Algoritmos 
 
80 
Caro aluno, 
Nesta unidade descreveremos as várias formas de tecnologias da informação 
disponíveis para as empresas e seus usuários, como os diversos tipos de 
computadores, servidores e sistemas de gerenciamento de banco de dados. 
Apresentaremos ainda um panorama dos serviços e da tecnologia de aplicativos de 
entrada e saída de hardwares e softwares. Esta unidade responde perguntas do tipo: 
o que você precisa saber sobre essas tecnologias para garantir que elas vão 
melhorar o desempenho da sua empresa? 
Objetivos da unidade: 
 Identificar e descrever os componentes da infraestrutura de TI, os 
principais tipos de tecnologia de hardware e de armazenamento. 
 Descreve e os principais tipos de softwares usados pelas empresas. 
 Enumerar as tendências atuais de hardware e softwares usadas em 
sistemas operacionais de computadores. 
 Avaliar as principais questões envolvidas na administração destes 
recursos. 
 
Plano da unidade: 
 Estruturas de Decisão 
 Estrutura de Repetição 
 Comando continue 
 
Bons estudos! 
 
Algoritmos 
 
81 
 Estrutura de Decisão 
Como vimos na unidade anterior em “Operações Lógicas”, verificamos que na 
maioria das vezes necessitamos tomar decisões no andamento do algoritmo. Essas 
decisões interferem diretamente no andamento do programa. Trabalharemos com 
dois tipos de estrutura. 
Estrutura if-else 
 
Formato: 
 
 if ( condição ) 
 { 
 bloco de comandos 1 
 } 
 else 
 { 
 bloco de comandos 2 
 } 
 
condição é qualquer expressão que possa ser avaliada com o valor verdadeiro 
(“true”) ou falso (“false”). No caso de expressões que possuam um valor numérico 
ao invés de um valor lógico, se o valor é diferente de zero a expressão é avaliada 
com valor lógico “true”, do contrário é avaliada com o valor lógico “false”. 
Caso a condição possua um valor lógico “true”, bloco de comandos 1 é 
executado. Se o valor lógico da condição for “false”, bloco de comandos 2 é 
executado. Para qualquer um dos blocos, se este for formado por um único 
comando as chaves são opcionais. 
A estrutura if-else é semelhante a uma estrutura condicional composta, em que 
um ou outro bloco de comandos é executado; a cláusula else, no entanto, é 
opcional, e se for omitida a estrutura passa a funcionar como uma estrutura 
condicional simples, em que um bloco de comandos (no caso, o bloco 1) somente 
é executado se a condição for verdadeira. 
 
Algoritmos 
 
82 
Exemplos: 
 
1) 
 int num; 
 printf(“Digite um número: “); 
 scanf(“%d”, &num); 
 
 if (num < 0) /*testa se num é menor que zero */ 
 { 
/* bloco de comandos executado se a condição é verdadeira.
 Neste caso, como printf é um único comando as 
chaves poderiam ser omitidas */ 
 
 printf(“\nO número é menor que zero”); 
 } 
else 
{ 
 /* bloco de comandos executado se a condição é falsa. 
 Neste caso, como printf é um único comando as chaves 
 poderiam ser omitidas */ 
 
 printf(“\nO número é maior que zero”); 
} 
 
2) 
 
 if ((a == 2) && (b == 5)) /* condição com operação lógica */ 
 printf(“\nCondição satisfeita”); /* bloco de comandos */ 
 
 getch(); /* esta instrução não faz parte da estrutura 
 condicional, logo é sempre executada */ 
 
3) 
 
 if (m == 3) 
 { 
if ((a >=1) && (a <= 31)) /* este if faz parte do 
bloco de comandos do 
if anterior */ 
 { 
 printf(“Data OK”); 
 } 
 else /* este else é do if mais proximo (que faz 
 parte do bloco de comandos) */ 
 { 
 printf(“Data inválida”); 
} 
 } 
Algoritmos 
 
83 
Estrutura switch 
 
Formato: 
 
 switch (expressão) 
 { 
 case valor1: 
 seq. de comandos 1 
 break;

Outros materiais