Livro Texto Unidade 2
Livro Texto Unidade 2
Livro Texto Unidade 2
Unidade II
3 ESTRUTURA DE DADOS
Ao selecionar uma estrutura de dados para resolver um problema, você deve seguir estas etapas:
• analise seu problema para determinar as operações básicas que devem ser suportadas;
A importância relativa dessas operações é abordada pelas três perguntas a seguir, que você
deve ter em mente sempre que precisar escolher uma estrutura de dados.
• Todos os itens de dados são inseridos na estrutura de dados no início ou são inserções intercaladas
com outras operações?
54
ALGORITMOS
Algumas das estruturas de dados mais usadas incluem listas, matrizes, pilhas, filas, pilhas, árvores
e gráficos. A maneira como os dados são organizados afeta o desempenho de um programa para a
execução de tarefas diferentes. As estruturas de dados geralmente são baseadas na capacidade que
um computador tem em buscar e armazenar os dados em qualquer lugar em sua memória, lugar
esse especificado por um endereço – uma sequência de bits que pode ser ela mesma armazenada
na memória e manipulada pelo programa.
Os dados podem ser organizados de várias maneiras: o modelo lógico ou matemático de uma
determinada organização de dados é chamado estrutura de dados. O modelo de dados pode ser
rico o suficiente em estrutura para refletir o relacionamento real dos dados no mundo real. Por
outro lado, a estrutura deve ser simples para executar o processo dos dados quando necessário.
De acordo com Lakhwani (2013), a estrutura de dados pode ser classificada em dois tipos, linear
ou não linear.
• Linear: uma estrutura de dados é linear se seus elementos formarem uma sequência. Os elementos
da estrutura de dados linear são representados por meio de locais de memória sequencial. Exemplo:
matriz e lista de links.
• Não linear: uma estrutura de dados é considerada não linear se seus elementos compuserem
um relacionamento hierárquico entre elementos como árvores e gráficos. Todos os elementos
atribuem a memória de forma aleatória e você pode buscar elementos de dados através do
processo de acesso aleatório. Exemplo: árvores e árvores binárias.
De acordo com Lakhwani (2013), o tipo mais simples de estrutura de dados é o vetor (ou uma
matriz linear/unidimensional). Essa estrutura utiliza uma lista de um número finito (composta
por n de elementos) de dados semelhantes referenciados, respectivamente, por um conjunto de
55
Unidade II
Nome da A[1]
variável
indexada (A)
Índice (1)
Na imagem a seguir, temos a estrutura de uma variável indexada que possui o nome de A, que
representa quatro valores ao mesmo tempo.
...
98
99
100 -3
O vetor A possui os
valores -3, 4, 5, 0 e está 101 4
A
armazenado a partir da 102 5
posição 100 da memória
103 0
104
105
...
Memória
56
ALGORITMOS
O vetor é uma multivariável. Permite armazenar muitos números diferentes, valores de ponto
flutuante, caracteres, cadeias ou qualquer tipo de variável em uma única unidade. Os vetores
são declarados como outras variáveis, embora o nome da variável termine com um conjunto
de colchetes:
int RA_Aluno[3];
Nesse exemplo, o vetor RA_Aluno é declarado e pode conter três itens (é o que o “3” entre
colchetes especifica). Os vetores também podem ser declarados e atribuídos ao mesmo tempo,
como pode ser visto na sequência.
Esse vetor, denominado como temperatura, contém quatro valores de ponto flutuante. Cada
item dentro do vetor pode ser referenciado de forma individual. Os itens são conhecidos como
elementos. O primeiro elemento em um vetor é numerado pelo índice zero. Portanto, o elemento
zero na matriz temperatura é número 97.0.
Os valores também podem ser atribuídos aos vetores como às variáveis regulares.
Essas três instruções atribuem os valores 32, 17 e 96 ao vetor RA_Aluno. Observe que o primeiro
elemento é o índice zero (0).
Início
1. C ← 1
2. Soma ← 0
3. Enquanto C <= 6 Faça
4. Ler(Q[C])
5. Soma←Soma + Q[C]
6. C♂← C + 1
7. Fim Enquanto
8. Media ← Soma/6
9. Exibir(‘A média é:‘, Media)
Fim
57
Unidade II
Figura 16 – Algoritmo em Portugol para calcular a média aritmética dos elementos de um vetor
De acordo com Manzano (2019), a leitura dos dados de uma matriz é processada passo a passo,
um elemento por vez, por meio de um laço de repetição. A seguir, são apresentados o diagrama
de blocos e a codificação em português estruturado da leitura das médias de cada um dos alunos,
cálculo da média geral e a apresentação do resultado.
Diagramação Codificação
Início
SOMA ← 0
I ← 1, 8, 1
MD[I]
MÉDIA ← SOMA/8
MÉDIA
Fim
Figura 17 – Diagrama de blocos para leitura dos elementos de uma matriz do tipo vetor
O processo de escrita dos dados de uma matriz é bastante parecido com o processo de leitura
desses dados. Em seguida, são apresentados o diagrama de blocos e a codificação em português
estruturado da escrita das médias individuais dos oito alunos antes de ser mostrado o resultado do
cálculo da média geral.
58
ALGORITMOS
Diagramação Codificação
Início
SOMA ← 0
I ← 1, 8, 1
MD[I]
MÉDIA ← SOMA/8
I ← 1, 8, 1
MD[I]
MÉDIA
Fim
Figura 18 – Diagrama de blocos para escrita dos elementos de uma matriz do tipo vetor
Exemplo de aplicação
Pesquise exemplos de algoritmos que utilizam a estrutura das variáveis indexadas unidimensionais.
59
Unidade II
Saiba mais
Uma das operações mais importantes executadas com matrizes é, sem
dúvida, a organização dos dados armazenados.
A próxima imagem apresenta um programa que realiza a leitura de uma matriz dinâmica A com
N elementos do tipo cadeia (caracter/texto) para representar os nomes de algumas pessoas e, em
seguida, apresenta a lista de nomes que foram inseridos na matriz A.
Diagramação Codificação
Início
I ← 1, N, 1
A[I]
I ← 1, N, 1
A[I]
Fim
61
Unidade II
Observação
Segundo Manzano:
Até agora, o foco estava em como controlar algoritmos, examinando as construções e observando
de que forma podemos utilizar as estruturas para controlar a ordem e as circunstâncias nas quais
as etapas individuais de um algoritmo serão executadas. O motivo é que a escolha da estrutura de
controle mais adequada é importante para projetar um algoritmo eficiente e eficaz.
Entretanto, os algoritmos são projetados para manipular entradas na forma de dados e essas
entradas precisam ser consideradas ao se projetar um algoritmo. Geralmente, os dados que serão
processados por um algoritmo compreendem os itens que estão relacionados de alguma forma
entre si, em vez de coleções arbitrárias de itens. Considere, por exemplo, os metadados que
compõem um perfil de usuário, como nome, idade, endereço, função, número de contato etc. Esses
itens são conectados logicamente entre si e não podem ser processados c omo uma coleção de itens
não relacionados por um algoritmo; deve-se, portanto, processar como um registro em que cada
registro compreende as informações sobre um usuário específico.
Segundo Soffner (2013, p. 95): “Uma matriz é um vetor multidimensional. Alguns autores
consideram ambas as expressões a mesma coisa, e o que muda é apenas o número de dimensões
(como no termo em inglês, array, que vale para as duas coisas)”.
Os dados devem ser organizados de maneira a capturar relações lógicas entre seus elementos,
que juntamente com suas inter-relações formam uma estrutura de dados estruturados. O tipo mais
comum de estrutura de dados é a sequência que compreende um conjunto de itens classificados
de maneira que cada item (exceto o último na sequência) tem um sucessor e cada item (com
exceção do primeiro na sequência) tem um antecessor.
62
ALGORITMOS
• um número apresentado como uma sequência de dígitos, por exemplo, 1512000 (1 é o primeiro,
0 é o último);
• uma palavra apresentada como uma sequência de letras, por exemplo, sequência (“s” é o primeiro,
“a” é o último).
Observação
De acordo com Christodoulou et al. (2018), uma sequência é uma estrutura ideal para os
itens que devem ser processados sequencialmente, um após o outro. A maneira mais comum de
progredir através de uma sequência é por meio do uso de uma estrutura de repetição. A matriz
é uma sequência de comprimento fixo em que cada elemento é identificado por sua posição na
sequência, uma coleção indexada de elementos homogêneos. Uma sequência de matriz possui as
seguintes propriedades:
• em uma matriz composta por linhas e colunas, o tamanho de cada linha (número de colunas) é o
mesmo para todas as linhas;
• cada elemento de uma matriz é identificado por sua posição ao longo de cada dimensão (índice,
por exemplo: num [1][4], num [4][1] etc.);
A matriz de duas dimensões é uma estrutura de dados com mais de uma coluna e mais de uma
linha. A imagem a seguir apresenta uma matriz de uma dimensão e uma matriz de duas dimensões,
além das diferenças entre as suas estruturas.
63
Unidade II
5 Índices 1 2 3 4 5
Exemplo de aplicação
De acordo com Manzano (2019), a leitura dos dados de uma matriz de duas dimensões, assim
como dos dados de matrizes de uma dimensão, é processada passo a passo por meio do comando
leia seguido do nome da variável mais os seus índices. Na imagem a seguir, é possível observar o
diagrama de blocos e a codificação em português estruturado da leitura de quatro notas bimestrais
de oito alunos, sem considerar o cálculo da média.
Início
I ← 1, 8, 1
J ← 1, 4, 1
Notas [I, J]
Fim
Figura 21 – Diagrama de blocos para leitura dos elementos de uma matriz do tipo tabela
64
ALGORITMOS
Esse exemplo apresenta a leitura das quatro notas (colunas) de oito alunos (linhas). Assim
sendo, a tabela em questão armazena 32 elementos. Um detalhe é a utilização de duas variáveis
para controlar os dois índices de posicionamento de dados na tabela. Nesse exemplo, a variável I
continua com o mesmo efeito e a segunda variável, a J, controla a posição da coluna.
Início
I ← 1, 8, 1
J ← 1, 4, 1
Notas [I, J]
Fim
Figura 22 – Diagrama de blocos para escrita dos elementos de uma matriz do tipo tabela
65
Unidade II
Nome
66
ALGORITMOS
A leitura de um registro é realizada com a instrução leia seguida do nome da variável do tipo
registro e seu campo correspondente separado por um caractere “.” (ponto). A imagem a seguir
apresenta o diagrama de blocos e o código em português estruturado.
Diagramação Codificação
Início
ALUNO.NOME
ALUNO.TURMA
ALUNO.SALA
ALUNO.NOTA1
ALUNO.NOTA2
ALUNO.NOTA3
ALUNO.NOTA4
Fim
67
Unidade II
Diagramação Codificação
Início
ALUNO.NOME
ALUNO.TURMA
ALUNO.SALA
ALUNO.NOTA1
ALUNO.NOTA2
ALUNO.NOTA3
ALUNO.NOTA4
Fim
Exemplo de aplicação
68
ALGORITMOS
De acordo com Manzano (2019), a leitura dos elementos da matriz de registros deve ser feita com dois
laços. Essa estrutura é bastante similar a uma matriz de duas dimensões. Observe a seguir o diagrama
de blocos e o código correspondente em português estruturado.
Diagramação Codificação
Início
I ← I, 8, 1
ALUNO[I].NOME
ALUNO[I].TURMA
ALUNO[I].SALA
J ← 1, 4, 1
ALUNO[I].NOTA[J]
Fim
O laço da variável I controla o número de alunos da turma, no caso oito, e o laço da variável J
controla o número de notas, até quatro por aluno. Para cada movimentação de mais um na variável I,
existem quatro movimentações na variável J.
O processo de escrita dos elementos de uma matriz de registros é similar aos já estudados.
Observe a seguir o diagrama de blocos e o código correspondente em português estruturado.
69
Unidade II
Diagramação Codificação
Início
I ← 1, 8, 1
ALUNO[I].NOME
ALUNO[I].TURMA
ALUNO[I].SALA
J ← 1, 4, 1
ALUNO[I].NOTA[J]
Fim
Exemplo de aplicação
Lembrete
4 LINGUAGEM C
De acordo com Oram e Naik [ca. 2010], a linguagem de programação C foi desenvolvida nos
Laboratórios Bell da AT&T, nos Estados Unidos, em 1972. Desenhada e escrita por Dennis Ritchie no
final da década de 1970, a linguagem C começou a substituir os idiomas mais familiares da época,
como PL / I, ALGOL etc.
70
ALGORITMOS
As principais partes de sistemas operacionais populares como Windows, UNIX, Linux ainda
estão escritas em C. Isso ocorre porque, ainda hoje, quando se trata de desempenho (velocidade de
execução), nada supera essa linguagem. Além disso, se for necessário estender o sistema operacional
para trabalhar com novos dispositivos, é necessário escrever programas de driver de dispositivo.
Esses programas são escritos exclusivamente em C.
Existe uma analogia próxima entre aprender inglês e aprender a linguagem C. O método
clássico para conseguir aprender um novo idioma, como é o caso do inglês, consiste em, a princípio,
conhecer o alfabeto usado no idioma, aprender ao processo de combinação desse alfabeto
para formar palavras que, por sua vez, são combinadas para formar frases, as quais, associadas,
constituirão parágrafos.
Aprender a programar na linguagem em C é semelhante, e talvez até mais fácil. Assim, em vez
de aprender imediatamente como escrever programas, precisamos primeiro saber quais alfabetos,
números e símbolos são usados em C, depois, como usá-los para a criação de constantes, variáveis
e palavras-chave e, finalmente, como eles são combinados para formar uma instrução.
Lembrete
/*…………………………………*/
71
Unidade II
A linha de comentários é usada para aumentar a legibilidade do programa. É útil para incluir no
código as explicações, sendo geralmente usada também para auxiliar na documentação. A linha de
comentário pode ser única ou múltipla, mas não deve ser aninhada; pode estar em qualquer lugar
do programa, exceto dentro da constante ou no caractere da string constante.
Essa é a seção em que as variáveis são declaradas de forma global para que possam ser acessadas
por todas as funções usadas no programa. E geralmente é declarada fora da função main().
A partir da função main(), o programa é iniciado e está dentro do par de chaves. Ela pode
estar em qualquer lugar do programa, mas, na prática, geralmente é colocada logo na primeira
posição do código.
Sintaxe:
main() {
……..
……..
// restante do código
……..
……..
}
A função main() retorna um valor quando é declarado um tipo de dados, conforme pode ser
visto no exemplo a seguir.
int main () {
return 0;
}
72
ALGORITMOS
A função principal não retorna nenhum valor quando é atribuído o indicador void (significa
nulo/vazio), como pode ser visto a seguir.
Figura 29 – Primeiro programa c com declaração de retorno (imagem do programa Dev C++)
De acordo com Oram e Naik [ca. 2010], podemos relacionar algumas etapas em relação ao
processo de criação e compilação de um programa utilizando a linguagem em C.
Etapa 1
Um editor de texto geralmente é usado para inserir o programa C em um arquivo. Por exemplo,
ao longo deste livro-texto, usaremos o programa Dev C++ (disponível de forma gratuita para
download no seguinte link: https://sourceforge.net/projects/orwelldevcpp/).
73
Unidade II
O programa que é inserido no arquivo é conhecido como programa de origem porque representa
a forma original do programa expresso na língua C.
Etapa 2
Depois que o programa de origem for inserido em um arquivo, devemos continuar com o
processo de compilação. O processo de compilação é iniciado digitando um comando especial
em um sistema. Quando esse comando é inserido, o nome do arquivo que contém o programa de
origem também deve ser especificado.
Os erros devem ser corrigidos no programa de origem (com o uso de um editor) e o processo
de compilação deve ser reiniciado. Os erros relatados durante essa fase de compilação podem
ser classificados como: erro sintático (devido a uma expressão que possui parênteses colocados
de forma equivocada) ou erro semântico (devido ao uso de uma variável que não foi “definida”
anteriormente).
74
ALGORITMOS
Etapa 3
Etapa 4
Etapa 5
Após o programa ser traduzido em código de objeto, ele está pronto para ser vinculado. O objetivo
da fase de vinculação é obter o programa em um formato final para execução no computador.
Se o programa usar outros programas que foram anteriormente processados pelo compilador,
tais programas serão vinculados nessa etapa. Os programas usados na biblioteca de programas do
sistema também são pesquisados e vinculados com o programa objeto durante essa fase.
Etapa 6
Quando o programa é executado, cada uma das instruções do programa é executada de forma
sequencial. Se o programa solicitar dados do usuário, conhecido como entrada, o programa
suspende temporariamente sua execução para que a entrada possa ser informada. O programa também
pode simplesmente esperar por um evento, como o clique do mouse.
75
Unidade II
De acordo com Oram e Naik [ca. 2010], os identificadores são palavras definidas pelo usuário
para nomear entidades como variáveis, matrizes, funções, estruturas etc. As regras para nomear
identificadores são:
• os identificadores geralmente são dados em algum nome significativo, como valor, idade,
dados etc.
Há certas palavras reservadas para realizar tarefas específicas nos programas em C. Essas palavras
são conhecidas como palavras reservadas ou palavras-chave. Essas palavras são predefinidas e
sempre devem ser escritas em letras minúsculas. Vale ressaltar que tais palavras-chave não podem
ser usadas como nome de uma variável com significado fixo.
76
ALGORITMOS
%d = inteiro decimal
%f = real (ponto flutuante)
77
Unidade II
%o = inteiro octal
%x = hexadecimal
%c = caractere em formato ASCII
%s = string de caracteres
%p = valor ponteiro (SOFFNER, 2013, p. 38).
Oram e Naik [ca. 2010] apontam que os tipos de dados se referem a um amplo sistema usado
para declarar variáveis ou
funções de tipos diferentes antes de seu uso. O tipo de uma variável
determina quanto espaço ela irá ocupar no armazenamento e como o padrão de bits armazenado
é interpretado. Vale ressaltar que o valor de uma variável pode ser alterado a qualquer momento.
• Internos básicos (basic built-in data types): int, float, double, char.
Uma variável do tipo int pode ser usada somente para conter valores integrais (ou seja, valores
que não contêm casas decimais). Uma variável do tipo float pode ser usada para armazenar
números de ponto flutuante (valores contendo casas decimais). O tipo double é igual ao tipo
float, apenas com aproximadamente duas vezes sua precisão. Uma variável char pode armazenar
apenas o valor do tipo de caractere (o tipo de dados char pode ser usado para armazenar um único
caractere, como a letra a, o caractere de dígito 6 ou um ponto e vírgula da mesma forma).
Variável é um nome de dados usado para armazenar algum valor de dados ou nomes simbólicos
para armazenar os cálculos e resultados que serão executados pelo programa. O valor da variável
pode ser alterado durante a sua execução. A regra para nomear as variáveis é igual à regra para
nomeação do identificador.
78
ALGORITMOS
O nome da variável deve sempre lembrar o que vai guardar, e não pode ser
igual às palavras reservadas da linguagem.
Antes de ser usado no programa, o valor deve ser declarado. A declaração de variáveis especifica
seu nome e tipos de dados (o intervalo do valor que as variáveis podem armazenar depende de
sua classificação).
Sintaxe:
int a;
char c;
float f;
Quando atribuímos qualquer valor inicial à variável durante a declaração, esse processo é
chamado de inicialização de variáveis. Devemos atribuir o tipo de dado, incluir o nome da variável
e a sua constante.
Exemplo:
ou
int valorA;
valorA =20;
79
Unidade II
Saiba mais
4.4.1 Expressões
// expressão aritmética
int z = x + y;
// relacional
a>b
// lógico
a == b
// chamada de função
func (a, b)
121 + 17 – 110
180 + 2 - j
4.4.2 Operadores
Os operadores são os símbolos usados para executar alguma operação em variáveis, operandos
ou constante. Existem vários operadores que podem ser utilizados nas linguagens de programação:
operador aritmético, atribuição, incremento, decremento, lógico, condicional, vírgula, entre outros.
80
ALGORITMOS
Operador aritmético
O operador aritmético unário é necessário apenas um operando como as atribuições +, -, ++, --.
E os operadores podem utilizar os princípios matemáticos como: + (adição), - (subtração), * (multiplicação),
/ (divisão).
O operador aritmético binário, por outro lado, utiliza obrigatoriamente dois operandos
requeridos e seus operadores são: + (adição), - (subtração), * (multiplicação), / (divisão), % (módulo).
No módulo, não pode ser aplicado com um operando de ponto flutuante (número real), bem como
não há operador expoente em C.
Operador de atribuição
Um valor pode ser armazenado em uma variável com o uso do operador de atribuição. O operador
de atribuição (=) é usado na declaração de atribuição e na expressão de atribuição. O operando no lado
esquerdo deve ser a variável e o operando no lado direito pode ser uma variável, uma constante ou
qualquer expressão.
Por exemplo:
int x = y
Incremento e decremento
Os operadores unários ++ e -- são usados como incremento e decremento que atuam sobre um
único operando. O operador de incremento (++) aumenta o valor da variável em um, já o operador
de decremento (--), semelhantemente, diminui o valor da variável em um.
Esses operadores podem ser usados apenas com a variável; não podendo ser usados com uma
expressão ou uma constante, como nos exemplos a seguir.
++ 6
++ (x + y + z)
81
Unidade II
Operador relacional
É usado para comparar o valor de duas expressões, dependendo de sua relação. A expressão
que contém operador relacional é denominada expressão relacional. Nessa estrutura, o valor é
atribuído de acordo com o parâmetro true (verdadeiro) ou false (falso).
== Igualdade
< Menor
> Maior
>= Maior ou igual
<= Menor ou igual
!= Diferente
Por exemplo:
O operador lógico deve ser usado com um ou mais operandos e retorna o valor zero (caso a
afirmação seja falsa) ou um (caso a afirmação seja verdadeira). O operando pode ser uma constante,
variáveis
ou expressões. A expressão que combina duas ou mais expressões é denominada
expressão lógica.
&& e
|| ou
! não
O operador ! (não) é unário e os outros dois operadores são binários. O operador lógico && (e)
fornece o resultado true se as duas condições forem verdadeiras, caso contrário, o resultado é false.
Já o operador lógico || (ou) fornece resultado true se uma das validações forem atendidas, caso
contrário, o resultado será false.
82
ALGORITMOS
Segundo Soffner:
Você já reparou que tomamos decisões o tempo todo? Quando caminhamos
dentro de casa, quando precisamos aplicar nosso dinheiro, quando aparece
um problema em casa ou no trabalho, no trânsito – as decisões são parte da
natureza de sobrevivência do animal neste planeta e, em especial, da nossa,
dos seres humanos, em razão da racionalidade característica da espécie –;
assim, decisões são tomadas a todo o momento, conscientemente ou não
(SOFFNER, 2013, p. 46).
If
Sintaxe:
if (condição / teste) {
//Declaração 1;
//Declaração 2;
}
83
Unidade II
A)
B)
Algoritmo
Diagramação Codificação
Início
A, B
X←A+B
N S
X > 10
Fim
85
Unidade II
A)
B)
If...else
A estrutura if...else é uma declaração de controle condicional bidirecional que contém uma
condição e duas ações possíveis.
A condição pode ser verdadeira ou falsa, sendo o valor diferente de zero considerado verdadeiro
e zero considerado falso. Se a condição for verdadeira, então um único ou um bloco de declaração
será executado, caso contrário, outro único ou bloco de declaração será executado.
Sintaxe:
if (condição / teste) {
//Declaração 1
//Declaração 2
} else {
//Declaração 1
//Declaração 2
}
86
ALGORITMOS
A)
B)
Diz Soffner:
87
Unidade II
Início
N1, N2
Média = (N1+N2)/2
Sim
Média>=6,0? “Aprovado“
Não
“Reprovado“ Fim
88
ALGORITMOS
A)
B)
Else if
Nesse tipo de aninhamento, há uma instrução if else em todas as partes, exceto na última. Se a
condição for um controle falso, passará para o bloco em que a condição é novamente verificada. Esse
processo continua até que não haja instrução if no último bloco, ou seja, caso uma das condições
seja atendida (válida), as próximas condições do bloco aninhado “else if” não serão executadas.
89
Unidade II
Essa dinâmica possui uma desvantagem sobre a declaração if else: na declaração if else, sempre
que a condição for verdadeira, outra condição não será verificada; já aqui, todas as condições serão
verificadas de forma hierárquica.
Sintaxe:
if (condição / teste) {
//Declaração 1
//Declaração 2
}
else {
//Declaração 1
//Declaração 2
}
90
ALGORITMOS
A)
B)
Segundo Manzano:
91
Unidade II
Início
N S
N=1
“Você entrou o
valor 1“
N S
N=2
“Você entrou o
valor 2“
N S
N<1
“Você entrou o
valor muito baixo“
N S
N>2
“Você entrou o
valor muito alto“
Fim
92
ALGORITMOS
A)
B)
Switch...Case
A instrução Switch...Case testa o valor de uma variável e a compara com vários casos. Depois que
a correspondência de caso é encontrada, um bloco de instruções associado a esse caso específico
deverá será ser executado.
O valor fornecido pelo usuário é comparado com todos os casos dentro do bloco da estrutura
Switch...Case até que a correspondência seja encontrada. Se uma correspondência de caso não for
encontrada, a instrução padrão será executada e o controle sairá do bloco.
93
Unidade II
Sintaxe:
switch( expressão ) {
case valor-1:
//Declaração 1
//Declaração 2
Break;
case valor-n:
//Declaração 1
//Declaração 2
break;
default:
//Declaração 1
//Declaração 2
break;
}
94
ALGORITMOS
A)
B)
95
Unidade II
Algoritmo
Se a variável MÊS for menor que 1 ou maior que 12, apresentar a mensagem
“Valor inválido” (MANZANO, 2012, p. 72).
96
ALGORITMOS
Início
Mês
S
Mês=1 “Janeiro“
N
S
Mês=2 “Fevereiro“
N
S
Mês=3 “Março“
N
S
Mês=4 “Abril“
N
S
Mês=5 “Maio“
N
S
Mês=6 “Junho“
N
S
Mês=7 “Julho“
N
S
Mês=8 “Agosto“
N
S
Mês=9 “Setembro“
N
S
Mês=10 “Outubro“
N
S
Mês=11 “Novembro“
N
S
Mês=12 “Dezembro“
“Valor inválido”
Fim
97
Unidade II
A)
B)
98
ALGORITMOS
Os laços de repetição são um bloco de instruções que executam um conjunto de instruções. Nos
loops, é possível repetir uma parte específica do programa por um número especificado de tempo
ou até que um determinado número de condições seja satisfeito. Existem três tipos de loops em C:
• while;
• do ... while;
• for.
While
Na estrutura while, a condição de teste pode ser qualquer expressão. Quando queremos repetir
uma instrução, mas não se sabe a quantidade exata de iterações, podemos utilizar essa estrutura
para realizar as devidas validações.
Aqui, a primeira condição é verificada e, caso a validação seja verdadeira, o corpo do loop é
executado; caso contrário, se a condição for falsa, o controle sairá do loop.
Sintaxe:
99
Unidade II
Exemplo de aplicação:
A)
B)
100
ALGORITMOS
Elaborar um programa que efetue a entrada de um valor numérico inteiro qualquer. Em seguida,
processar o cálculo do valor de entrada, multiplicando-o por 3 e apresentando seu resultado.
Proceder à execução dos passos anteriores cinco vezes (MANZANO, 2019).
Início
I←1
N
I <= 5
S
N
R←N⊗3
I←I+1
Fim
101
Unidade II
A)
B)
102
ALGORITMOS
Início
RESP←”S”
N
RESP=”S”
S
N
R←N⊗3
“Deseja
continuar?“
RESP
Fim
103
Unidade II
A)
B)
Do ... while
A declaração (do ... while) também é usada para o desenvolvido da estrutura de repetição. O
corpo desse loop pode conter uma única declaração ou um bloco de declaração.
Sintaxe:
do{
//Declaração 1;
//Declaração 2;
} while (condição);
104
ALGORITMOS
A)
B)
Manzano esclarece:
1. Criar uma variável de controle para servir como contador com valor
inicial 1 (variável I).
105
Unidade II
Início
I←1
R←N⊗3
I←I+1
N
I>5
S
Fim
106
ALGORITMOS
A)
B)
Segundo Manzano:
107
Unidade II
Início
RESP ← “S“
R←N⊗3
“Deseja
continuar?“
RESP
N
RESP <> “S“
S
Fim
108
ALGORITMOS
A)
B)
For
Sintaxe:
109
Unidade II
A)
B)
110
ALGORITMOS
Início
I ← 1, 5, 1
R←N⊗3
Fim
O problema exposto já é conhecido, mas desta vez sua operação será mais
dinâmica. Atente para os passos descritos a seguir:
111
Unidade II
A)
B)
Resumo
112
ALGORITMOS
113
Unidade II
Exercícios
#include <stdio.h>
void main()
{
int break;
break = 3 + 2;
printf(“%i”, break);
}
II – O código apresenta erro por utilizar uma palavra reservada como variável.
IV – A primeira linha do código usa uma biblioteca com as funções padrão de entrada e de
saída de dados.
A) I e III.
B) II e IV.
C) I e IV.
D) I, III e IV.
E) IV.
I – Afirmativa incorreta.
Justificativa: note que não temos entrada de dados por parte do usuário, o que poderia ocorrer
pela função scanf() se os dados fossem digitados na tela. O programa faz o cálculo a partir dos
números dados no próprio código e retorna, portanto, sempre o mesmo resultado.
114
ALGORITMOS
II – Afirmativa correta.
Justificativa: no código, é usada a variável break, uma palavra reservada da linguagem C que
não pode ser usada para nomear uma variável. O comando break interrompe um bloco de código.
printf(“%i”, break);
Como primeiro argumento da função, temos o tipo de variável que desejamos usar para
impressão, e %i indica tipo inteiro, que é como a variável foi definida. Como segundo argumento,
temos o nome da variável que deve ser impressa. A sintaxe dessa linha de código está correta.
IV – Afirmativa correta.
Justificativa: a primeira linha do código faz a inclusão da biblioteca stdio.h, que contém
as funções básicas (std) de entrada e saída (io) de dados. Sem incluirmos essa biblioteca, não
poderíamos usar a função printf no código.
#include <stdio.h>
#include <stdlib.h>
115
Unidade II
I – O programa usa três variáveis do tipo inteiro, duas com valor fornecido pelo usuário e uma
com valor atribuído no código.
III – A condição da função while() é a seguinte: o produto do valor contido na variável a quando
multiplicado pelo valor contido na variável b é menor do que 2.
A) I e II.
B) I, II e III.
C) I e III.
E) III e IV.
I - Afirmativa correta.
Justificativa: na declaração de variáveis, vemos que o programa tem três variáveis do tipo inteiro.
int a, b, c;
Em seguida, vemos que b tem valor inicial fixo determinado pelo código:
b=0;
Confirmamos que o conteúdo das variáveis a e c são dados pelo usuário do programa por meio
da função de entrada de dados scanf():
scanf(“%i”,&a);
scanf(“%i”,&c);
116
ALGORITMOS
II – Afirmativa correta.
Justificativa: no código, é usada a variável break, e essa é uma palavra reservada da linguagem C,
não podendo ser usada para nomear uma variável. O comando break interrompe um bloco de código.
Logo, vemos que a condição de permanência é a seguinte: o produto dos valores contidos nas
variáveis a e b é menor do que 2.
IV – Afirmativa incorreta.
117