Escolar Documentos
Profissional Documentos
Cultura Documentos
CONCEITOS DE
0
PROGRAMAÇÃO
seõçatona reV
121 minutos
Aula 1
INTRODUÇÃO
Olá, estudante! Chegamos à unidade em que estudaremos os conceitos de lógica de
programação aplicados a uma linguagem específica de programação: a linguagem C!
Essa linguagem é o meio pelo qual os comandos que indicarmos serão realizados pelo
computador para produzir a saída esperada para o programa. Você já aprendeu que a
assertividade de um programa depende de sua construção, isto é, da escolha correta
dos passos que o compõem, e de forma que os comandos sejam executados em uma
sequência lógica. Nesta unidade, estudaremos como a linguagem de programação e um
ambiente de desenvolvimento nos fornecem as estruturas necessárias para realizarmos
o processamento lógico das informações. Te convido para vivenciar essa realidade que é
a base de qualquer sistema ou produto digital, vamos lá?
Uma analogia pode ser feita com a língua nativa, a língua estrangeira, ou ainda uma
linguagem mais formal ou mais descolada, que deriva de uma língua.
https://www.colaboraread.com.br/integracaoAlgetec/index?usuarioEmail=natalia.gois.santos%40gmail.com&usuarioNome=NATALIA+GOIS+DOS+SANTOS+LOPES&disciplinaDescricao=&atividadeId=3662477&ati… 1/29
12/10/2023, 00:51 wlldd_231_u3_alg_log_pro
Ah, aqui também cabe uma observação interessante, um programa construído com uma
linguagem de programação tem o mesmo significado no mundo todo; outra informação
importante é que praticamente todas as linguagens de programação têm seus
comandos escritos em inglês.
0
Nossa disciplina adota a linguagem C, uma linguagem amplamente utilizada e que é
seõçatona reV
base para diversas outras linguagens comerciais atualmente, e por meio dos exemplos
práticos você verá como ela realiza as operações necessárias no campo da programação.
Em relação à linguagem adotada na nossa disciplina, saiba que a linguagem C é umas
das mais populares, e por suas características de acesso e manipulação de recursos
computacionais como a memória, é muito utilizada em áreas da engenharia,
computação e especialmente na eletrônica, além de também ser utilizada para construir
bibliotecas nativas de outras linguagens de programação.
Aqui cabe destacar que problemas de lógica não são identificados pelo compilador, ou
seja, um programa que foi construído com os elementos corretos e respeitando as
regras da linguagem pode, ainda assim, apresentar erros de lógica e possíveis erros de
execução dependendo das entradas a que foi submetido.
Tanto para elaborar quanto para editar o código-fonte é necessário um software, assim
como o compilador e o interpretador também são um software executável. É possível
que um mesmo sistema integre o software de editor e o compilador, a ele damos o
nome de Ambiente Integrado de Desenvolvimento, também conhecido pela sigla IDE, do
inglês Integrated Development Environment. Uma descrição dessa composição é
apresentada pela Figura 1.
https://www.colaboraread.com.br/integracaoAlgetec/index?usuarioEmail=natalia.gois.santos%40gmail.com&usuarioNome=NATALIA+GOIS+DOS+SANTOS+LOPES&disciplinaDescricao=&atividadeId=3662477&ati… 2/29
12/10/2023, 00:51 wlldd_231_u3_alg_log_pro
0
seõçatona reV
Fonte: elaborada pela autora.
• À linguagem C.
COMPILADORES E INTERPRETADORES
Para aprofundar mais nossos conhecimentos sobre as linguagens vamos conhecer mais
algumas de suas características:
Dizemos que uma linguagem é de alto nível quando o usuário se distancia dos aspectos
estruturais do código, utilizando um alto nível de abstração para executar comandos. Em
uma comparação, é como se estivéssemos localizando um país no globo terrestre,
obtendo sua localização, limites e fronteiras, porém sem maiores detalhes.
Já uma linguagem de baixo nível é aquela em que o usuário tem total controle e
conhecimento das estruturas e dados que estão sendo manipulados, o que também faz
com que mais detalhes precisem ser adicionados para a construção do programa.
Utilizando a mesma comparação anterior, é como se estivéssemos nos localizando em
uma cidade com o GPS, observando as ruas e características das quadras.
https://www.colaboraread.com.br/integracaoAlgetec/index?usuarioEmail=natalia.gois.santos%40gmail.com&usuarioNome=NATALIA+GOIS+DOS+SANTOS+LOPES&disciplinaDescricao=&atividadeId=3662477&ati… 3/29
12/10/2023, 00:51 wlldd_231_u3_alg_log_pro
0
o computador está manipulando um texto, um número, uma imagem ou as instruções
seõçatona reV
de um programa, na prática ele está processando 0s e 1s. Porém, você deve concordar
que seria humanamente inviável para os programadores escreverem programas e
instruções somente com a representação de 0s e 1s.
Em alguns casos, o erro apontado pelo compilador não o impede de gerar o programa
em binário, porém, em alguns casos, o compilador não consegue gerar o programador
executável, sendo preciso localizar o erro e corrigi-lo, para depois tentar compilar
novamente. Essa é uma atuação importante do compilador, pois evita que um programa
com uma construção falha seja executado, pelo contrário, o compilador muitas vezes
aponta para o programador qual foi o erro encontrado.
Cada IDE tem uma forma visual de representar esses possíveis erros, algumas delas até
mostram os erros na construção do programa enquanto o programador digita, ou seja,
ainda antes da análise do compilador.
• Essas e outras funcionalidades fazem com que as IDEs sejam vistas como ferramentas
que melhoram a produtividade dos programadores. As IDEs evoluíram muito com o
tempo, há uma grande variedade disponível para linguagens populares como o C, e
algumas delas são: Visual Studio, CodeBlocks, DevC, Eclipse, NetBeans.
E para outras linguagens também podem ser usadas as IDEs citadas acima ou ainda
outras tantas existentes no mercado.
AMBIENTE DE PROGRAMAÇÃO
Estudante, chegamos ao momento em que aplicamos os conceitos aprendidos!
https://www.colaboraread.com.br/integracaoAlgetec/index?usuarioEmail=natalia.gois.santos%40gmail.com&usuarioNome=NATALIA+GOIS+DOS+SANTOS+LOPES&disciplinaDescricao=&atividadeId=3662477&ati… 4/29
12/10/2023, 00:51 wlldd_231_u3_alg_log_pro
Quando o código não apresenta erros, o compilador então cria um código de máquina
“semanticamente equivalente”, ao código criado pelo programador na linguagem de
programação. Neste aspecto novamente aparece a figura do ambiente de programação
como um aliado do programador! Pois algumas IDEs identificam em tela a estrutura
0
física do código, a posição dos pares de parênteses, chaves e colchetes, podendo realizar
o autopreenchimento do nome de variáveis e ainda outras facilidades como sugestão de
seõçatona reV
melhoria e, consequentemente, menos erros no código. Um destaque de diferentes
cores está apresentado na Figura 2.
Assim como existem variações entre ferramentas, existem IDEs mais amigáveis, mais
robustas, mais profissionais, mais leves e com mais ou menos recursos ao
programadores, sendo que algumas são gratuitas e outras são pagas. A escolha da IDE
também dependerá da linguagem de programação adotada e do compilador
selecionado.
Esses e outros recursos são essenciais no dia a dia do programador para que ele ganhe
em produtividade, principalmente quando o tamanho dos projetos cresce
consideravelmente.
Neste contexto, inicialmente a IDE parece ser muito complexa para programas simples,
mas como ela é uma ferramenta profissional, foi desenvolvida para organizar pacotes de
software que precisam ter a referência de bibliotecas, classes, scripts e outros códigos.
Importante destacar que a IDE é uma ferramenta, e embora seja certeza que você
precisará de uma IDE para construir e compilar seus códigos, você deve se concentrar
em aprender a programar em uma linguagem pelo menos, e então se adaptar à IDE será
https://www.colaboraread.com.br/integracaoAlgetec/index?usuarioEmail=natalia.gois.santos%40gmail.com&usuarioNome=NATALIA+GOIS+DOS+SANTOS+LOPES&disciplinaDescricao=&atividadeId=3662477&ati… 5/29
12/10/2023, 00:51 wlldd_231_u3_alg_log_pro
uma consequência! Nesta unidade serão apresentados os códigos-fonte para que você
acompanhe a disciplina, entenda a composição do código e a construção de cada
comando, para que, assim, você possa desenvolver seus próprios códigos.
0
indicado que você programe “mão na massa” para também desenvolver seu raciocínio
seõçatona reV
lógico e sua capacidade de resolver problemas computacionais.
VÍDEO RESUMO
Olá, estudante! Conhecemos os conceitos de linguagem de programação, compiladores
e ambientes de desenvolvimento, e como eles se relacionam. Agora vamos aprofundar
mais na parte prática quanto à interface de desenvolvimento.
Saiba mais
O que fazer quando se faz necessário utilizar um outro computador para as tarefas
da disciplina? Bem, deixar de realizá-las não é uma opção!! Então eu trouxe para
você uma opção de editor e compilador online, o JDoodle!
Aproveite para salvar o link como uma opção a mais de estudo e ferramenta para
praticar os exercícios da disciplina caso você não esteja com outro Ambiente
Integrado de Desenvolvimento local devidamente instalado.
Aula 2
INTRODUÇÃO À LINGUAGEM C
Nesta aula você entenderá como manipular dados em C e realizar operações
com eles, sempre respeitando os comandos da linguagem.
29 minutos
INTRODUÇÃO
Olá, estudante! Agora que você já conhece a linguagem de programação da nossa
disciplina e já sabe a necessidade de adotar um ambiente de desenvolvimento, nesta
aula, vamos conhecer com detalhes cada estrutura do programa em linguagem C. Assim
como uma receita seus ingredientes com unidades e ordens pré-definidas, os algoritmos
também têm campos para declaração do que será necessário para aquele código-fonte,
isso consiste em um padrão no qual o programa deve ser construído para que gere um
código de máquina válido ao ser interpretado pelo compilador. Nesta aula você
entenderá como manipular dados em C e realizar operações com eles, sempre
respeitando os comandos da linguagem. Não deixe de realizar os exercícios propostos,
eles são essenciais para seu aprendizado! Vamos juntos conhecer esses comandos?
CONSTRUINDO UM PROGRAMA EM C
https://www.colaboraread.com.br/integracaoAlgetec/index?usuarioEmail=natalia.gois.santos%40gmail.com&usuarioNome=NATALIA+GOIS+DOS+SANTOS+LOPES&disciplinaDescricao=&atividadeId=3662477&ati… 6/29
12/10/2023, 00:51 wlldd_231_u3_alg_log_pro
0
Figura 1 | Estrutura do Programa em Linguagem C
seõçatona reV
Fonte: elaborada pela autora.
Em seguida fica localizado o programa principal, sempre identificado por main(), e tendo
delimitando os comandos de seu trecho com os tokens { e }, que na Figura 1 estão entre
as linhas 3 e 6. Observe que, ao ser executado, este programa sempre executa o
comando printf(), que é um comando de saída para mostrar informações na tela, e a
informação é sempre a mesma frase que está entre as aspas: “Meu primeiro
programa!!”.
Ele não recebe nenhuma entrada ou interação que dependa do usuário, mas as
aplicações se tornam muito mais diversas quando permitimos que o usuário interaja
com o programa! Essa interação é feita por meio de comandos de entrada, e o mais
comum na linguagem C é o scanf(), que permite ler números ou letras do teclado.
É por isso que esse espaço reservado recebe o nome de variável, pois sempre que for
necessário substituir seu conteúdo nós informamos o nome do identificador e o novo
valor. Utilizando um raciocínio semelhante, chegamos à definição de constante, uma
região de memória reservada, com um nome identificador, porém que não pode ter seu
conteúdo alterado ao longo do programa.
https://www.colaboraread.com.br/integracaoAlgetec/index?usuarioEmail=natalia.gois.santos%40gmail.com&usuarioNome=NATALIA+GOIS+DOS+SANTOS+LOPES&disciplinaDescricao=&atividadeId=3662477&ati… 7/29
12/10/2023, 00:51 wlldd_231_u3_alg_log_pro
0
Todas as ações que realizamos com os dados são por meio dos operadores, e na
seõçatona reV
linguagem C os operadores podem ser:
• Relacionais: para comparar se dois valores são iguais, diferentes ou se um é maior que
o outro.
Isso quer dizer que tudo que o programa precisar processar será construído com base
nos 3 tipos de operadores disponíveis na linguagem e respeitando as limitações quanto
ao tipo de dados e as construções dos comandos.
1.#include<stdio.h>
2.int x;
3.int y;
4.int main() {
5. scanf("%i", &x);
https://www.colaboraread.com.br/integracaoAlgetec/index?usuarioEmail=natalia.gois.santos%40gmail.com&usuarioNome=NATALIA+GOIS+DOS+SANTOS+LOPES&disciplinaDescricao=&atividadeId=3662477&ati… 8/29
12/10/2023, 00:51 wlldd_231_u3_alg_log_pro
6. y = 2 * x;
8 }
0
Neste programa, se a entrada for 3, a saída é 6, já se for 4, a saída é 8, e assim por
seõçatona reV
diante, e percebemos isso ao analisar a linha de código (y = 2 * x), que contém os
operadores aritméticos como conhecemos.
Nas linhas 2 e 3 declaramos duas variáveis do tipo inteiro e sabemos que é do tipo
inteiro pelo uso da palavra reservada int. Se precisássemos de outro tipo de variável,
iríamos usar outra palavra reservada para declará-la. E x e y foram os nomes dados às
variáveis, ou seja, seu identificador.
1;#include<stdio.h>
2.int valor;
3.int dobro;
4.int main() {
5. scanf(\"%i\", &valor);
6. dobro = 2 * valor;
8. }
• Não pode ser uma palavra reservada da linguagem C, ou seja, uma palavra que já tem
uma funcionalidade atribuída na linguagem.
Inteiros em Contagem de
int 16 bits - 32.768 32.767
geral números inteiros
https://www.colaboraread.com.br/integracaoAlgetec/index?usuarioEmail=natalia.gois.santos%40gmail.com&usuarioNome=NATALIA+GOIS+DOS+SANTOS+LOPES&disciplinaDescricao=&atividadeId=3662477&ati… 9/29
12/10/2023, 00:51 wlldd_231_u3_alg_log_pro
Contagem de
unsigned Inteiros em
16 bits 0 65.535 números naturais
short int geral
(não negativos)
0
Grandes
- 2.147.483.6 Inteiros
long int 32 bits quantidades de
seõçatona reV
2.147.483.648 47 grandes
inteiros
Ponto
Valores com
- 3.4028235e flutuante
float 32 bits precisão de 10-38
3.4028235e38 38 (notação
a 1038
exponencial)
Caracteres
char 8 bits - - Símbolos especiais, letras
ou números
• “%i” significa que irá ler um número do tipo inteiro, para outros tipos é necessário usar
outra construção.
• O conteúdo das aspas será mostrado na íntegra, exceto quando houver o símbolo %,
que representa um código de escape.
• Para mostrar o conteúdo de uma variável do tipo inteiro utilizamos %i e %d, para
outros tipos é necessário usar outra construção.
• Após o fechamento das aspas, deve vir uma vírgula e o nome da variável de interesse;
• Se for necessário mostrar mais uma variável, adiciona-se mais uma vírgula e a outra
variável.
https://www.colaboraread.com.br/integracaoAlgetec/index?usuarioEmail=natalia.gois.santos%40gmail.com&usuarioNome=NATALIA+GOIS+DOS+SANTOS+LOPES&disciplinaDescricao=&atividadeId=3662477&a… 10/29
12/10/2023, 00:51 wlldd_231_u3_alg_log_pro
0
seõçatona reV
2. As construções dos comandos dependem do tipo de dado que será manipulado,
então, para utilizar os comandos scanf() e printf() em dados do tipo não inteiros,
utilizamos após o sinal % as seguintes construções sintáticas:
- %f para o tipo float, com a opção de determinar a quantidade de casas antes e após a
vírgula, como descrito no código a seguir:
1.#include<stdio.h>
2.float pi;
3.int main() {
4. pi = 3.14159265359;
6. }
A saída de uma relação testada pode ser falsa ou verdadeira, na linguagem C usa-se o
valor “0” (zero) como indicativo falso deste teste, e 1 ou qualquer outro valor diferente
de zero é considerado verdadeiro. Duas comparações estão sendo apresentadas no
código a seguir, sendo a primeira comparando se doze é igual a zero, com resultado
https://www.colaboraread.com.br/integracaoAlgetec/index?usuarioEmail=natalia.gois.santos%40gmail.com&usuarioNome=NATALIA+GOIS+DOS+SANTOS+LOPES&disciplinaDescricao=&atividadeId=3662477&a… 11/29
12/10/2023, 00:51 wlldd_231_u3_alg_log_pro
1.#include <stdio.h>
0
2.#include <stdlib.h>
seõçatona reV
3.int numero;
5.int main()
6.{
7. numero = 10;
12. return 0;
13.}
Esses operadores relacionais que produzem como saída “falso” ou “verdadeiro” ficam
ainda mais interessantes quando usados de forma combinada, por meio dos
operadores lógicos! Assim como na matemática esses operadores relacionam 2
condições em sua tabela verdade, e tanto sua entrada como sua saída são valores
lógicos, ou seja, verdadeiro ou falso.
Token na
Operador matemático Significado
linguagem C
Com esses recursos, nós conseguimos construir programas para diversas aplicações
matemáticas!
https://www.colaboraread.com.br/integracaoAlgetec/index?usuarioEmail=natalia.gois.santos%40gmail.com&usuarioNome=NATALIA+GOIS+DOS+SANTOS+LOPES&disciplinaDescricao=&atividadeId=3662477&a… 12/29
12/10/2023, 00:51 wlldd_231_u3_alg_log_pro
VÍDEO RESUMO
Estudante, nesta aula, conhecemos como manipular dados em linguagem C, por meio de
variáveis e constantes, também estudamos como funcionam os comandos de entrada e
saída de dados e sua importância para tornar o programa mais dinâmico. Estudamos
0
também os operadores aritméticos, relacionais e lógicos, que são estruturas essenciais
seõçatona reV
para construirmos programas mais profissionais. Venha comigo no próximo vídeo para
executarmos um programa que abrange todos estes conteúdos!
Saiba mais
Para melhor entendimento dos operadores lógicos é importante que você conheça a
tabela verdade dos operadores, um conceito matemático e de muita aplicação na
computação.
Aula 3
INTRODUÇÃO
Olá, estudante! Nesta aula, você deverá observar os sistemas que utiliza, como o
gerenciador de e-mails, o editor de texto e o aplicativo do banco. Esses sistemas
interagem com você e respondem de acordo com as suas ações, por meio de condições
que foram previamente implementadas. Isso só é possível porque, a cada opção que
você pode acionar no sistema, há uma programação que determina qual caminho o
programa deve seguir ou o que ele deve fazer. Neste contexto, você está convidado a
conhecer como construímos essas opções e os possíveis caminhos do programa. Vamos
nessa? Lembre-se de reforçar os conceitos estudados com os exercícios da aula!
https://www.colaboraread.com.br/integracaoAlgetec/index?usuarioEmail=natalia.gois.santos%40gmail.com&usuarioNome=NATALIA+GOIS+DOS+SANTOS+LOPES&disciplinaDescricao=&atividadeId=3662477&a… 13/29
12/10/2023, 00:51 wlldd_231_u3_alg_log_pro
À primeira vista, o código tem seu mesmo aspecto textual e em sequência tradicional,
mas ele pode, a cada comando, ter seu curso alterado de acordo com a interação do
usuário. Quando pensamos em programas que interagem de acordo com nossas
entradas, estamos lidando com o contexto dessas estruturas condicionais, e como o
0
próprio nome diz, a forma de sua execução depende de uma condicional.
seõçatona reV
Na prática, essas estruturas organizam o código de forma que as entradas fornecidas
pelo usuário sirvam como decisores lógicos quanto aos próximos passos de execução do
programa.
A lógica das estruturas condicionais é muito parecida com o nosso raciocínio ao resolver
desafios do dia a dia. Por exemplo: se abrimos um e-mail para lê-lo, o gerenciador
remove a notificação de nova mensagem, assim como ele exibirá uma mensagem de
erro se for identificado que estamos sem internet. O comando para essa lógica é o if(),
pois if, em inglês, significa “se”.
Inclusive, a reação a ser executada pode ser outra estrutura condicional, consistindo em
uma estrutura dentro de outra, chamada de estrutura condicional encadeada. Por
serem muito versáteis, essas estruturas permitem inúmeras combinações.
Muitas vezes, são tantas as possibilidades do programa que uma estrutura condicional
poderia tornar confusa sua legibilidade. Nessas circunstâncias, utilizamos a seleção de
casos, a qual é muito útil quando o usuário tem diversas opções, sendo por isso também
chamada de estrutura de controle com múltipla escolha. Na linguagem C, o comando
para essa seleção é o switch.
Assim como as estruturas condicionais são a base para organizar desvios no programa,
elas também servem como estruturas de controle de repetição, devido ao mesmo
princípio. A linguagem C tem dois recursos diferentes para essa finalidade: o for e
o while, sendo que ambos também avaliam condições para controlar as repetições.
Sendo assim, a condição será testada na execução do comando, e somente se ela for
verdadeira o programa acessará o trecho especial do código. Em uma linguagem bem
desprendida, podemos dizer que o programa “entrou” no if. A demonstração da sintaxe
https://www.colaboraread.com.br/integracaoAlgetec/index?usuarioEmail=natalia.gois.santos%40gmail.com&usuarioNome=NATALIA+GOIS+DOS+SANTOS+LOPES&disciplinaDescricao=&atividadeId=3662477&a… 14/29
12/10/2023, 00:51 wlldd_231_u3_alg_log_pro
1.#include<stdio.h>
0
2.int main() {
seõçatona reV
3. float temperatura;
5. scanf(\"%f\", &temperatura);
6. if (temperatura < 5)
7. {
10. }
12. }
Na instrução if, a condição testada fica entre parênteses. No exemplo, temos um único
teste sendo executado no programa, e quando ele é verdadeiro o programa entra no
bloco de código e mostra na tela as duas frases: “Teste verdadeiro” e “Prepare o
agasalho!!”. Quando a condição é falsa, o programa sai da linha de verificação do
comando if e vai para o final do código, que exibe na tela: “A temperatura digitada foi:”,
ou seja, a linha localizada imediatamente após a estrutura condicional do if.
Já no código a seguir está apresentada uma estrutura condicional composta. Neste caso,
o programa tem somente duas opções de execução: o bloco referente ao if, quando a
condição testada é verdadeira, ou o bloco referente ao else, quando a condição testada
é falsa. Ou seja, ele mostrará “saldo negativo” somente se o teste do comando if der
verdadeiro, ou saltará, ignorando o bloco do if, e entrará no bloco do else, mostrando
“saldo positivo”. Após executar o bloco do if ou do else, ele sempre irá para a linha que
mostra “Fim do programa”. Veja o código com instrução if e else a seguir:
1.#include<stdio.h>
2.int main() {
4. if (saldo < 0)
6. else
8. printf(\"Fim do programa.\");
9.}
https://www.colaboraread.com.br/integracaoAlgetec/index?usuarioEmail=natalia.gois.santos%40gmail.com&usuarioNome=NATALIA+GOIS+DOS+SANTOS+LOPES&disciplinaDescricao=&atividadeId=3662477&a… 15/29
12/10/2023, 00:51 wlldd_231_u3_alg_log_pro
0
que a segunda estrutura condicional, dentro do primeiro else, representa um único
comando, e embora tenha sido escrita em quatro linhas, ela não precisa de
seõçatona reV
delimitadores de chaves { } em sua sintaxe. Veja o código com instrução if encadeada, a
seguir:
1. #include<stdio.h>
2. int main() {
4. if (saldo < 0)
6. else
7. if (saldo == 0)
9. else
12.}
Observe nesse código com a instrução if encadeada que temos um ótimo exemplo de
como utilizar recursos de indentação, que consiste no deslocamento padrão do início do
código na linha para caracterizar em que nível ele está. Embora a indentação auxilie na
leitura humana do código, quando se faz necessário utilizar muitas estruturas
condicionais encadeadas é recomendado empregar seleção de casos, como no código a
seguir. Veja o código com seleção de casos, a seguir:
1. #include<stdio.h>
2. int main() {
3. int opcaoDigitada;
4. printf(\"Digite um numero:\");
5. scanf(\"%d\", &opcaoDigitada);
6. switch (opcaoDigitada)
7. {
https://www.colaboraread.com.br/integracaoAlgetec/index?usuarioEmail=natalia.gois.santos%40gmail.com&usuarioNome=NATALIA+GOIS+DOS+SANTOS+LOPES&disciplinaDescricao=&atividadeId=3662477&a… 16/29
12/10/2023, 00:51 wlldd_231_u3_alg_log_pro
0
15. }
seõçatona reV
16. }
Observe que dentro de cada “case” há uma única instrução “printf;” entretanto, também
poderia haver um bloco de comandos, e ele seria delimitado por chaves. É importante
observar que qualquer outra tecla ou valor digitado e lido no “scanf”, que não estivesse
nas opções, cairia no caso da linha 14: Invalido.
Se este último código tivesse sido escrito somente com condicionais, certamente o
programa ficaria bem menos elegante. Antes que você pense que isso pode ser
bobagem, imagine realizar a manutenção em um código escrito por outra pessoa (ou
por você mesmo) há um tempo. A forma de elaborar o código facilitará ou dificultará o
trabalho e o entendimento no futuro.
1. #include<stdio.h>
2. int main() {
3. int senhaDigitada;
6. scanf(\"%d\", &senhaDigitada);
https://www.colaboraread.com.br/integracaoAlgetec/index?usuarioEmail=natalia.gois.santos%40gmail.com&usuarioNome=NATALIA+GOIS+DOS+SANTOS+LOPES&disciplinaDescricao=&atividadeId=3662477&a… 17/29
12/10/2023, 00:51 wlldd_231_u3_alg_log_pro
8. {
0
11. }
seõçatona reV
12. printf(\"Fim do programa! \n\n\");
13.}
1. #include<stdio.h>
2. int main() {
3. int senhaDigitada;
5. do
6. {
8. scanf(\"%d\", &senhaDigitada);
9. }
12. }
Quando você estiver construindo seus programas, identificará quais são o comando e a
construção mais adequados para o problema a ser resolvido. Em resumo (MANZANO,
2015):
• O comando while é chamado de laço pré-teste, pois realiza o teste lógico no início do
laço, verificando se é possível executar o trecho de instruções subordinadas a ele.
Tanto o comando while quanto o do while permitem que sejam criados laços iterativos e
interativos:
https://www.colaboraread.com.br/integracaoAlgetec/index?usuarioEmail=natalia.gois.santos%40gmail.com&usuarioNome=NATALIA+GOIS+DOS+SANTOS+LOPES&disciplinaDescricao=&atividadeId=3662477&a… 18/29
12/10/2023, 00:51 wlldd_231_u3_alg_log_pro
0
ou uma cancela de pedágio, por exemplo. Para casos assim, é comum encontrar a
seguinte construção: while (1), pois 1 é sempre verdadeiro e o programa ficará
seõçatona reV
permanentemente neste loop.
1.#include<stdio.h>
2.int main() {
3. int i, resultado;
5. {
6. resultado = i * 2;
8. }
9.}
VÍDEO RESUMO
Estudante, nesta aula conhecemos como utilizar condições para controlar os desvios e
as repetições dos nossos programas. Você viu como o uso dos operadores lógicos e
relacionais é a base para toda a construção das lógicas e o controle da execução do
programa. A partir de estruturas condicionais como if e else, podemos criar desvios, e
com os comandos while, do while e for conseguimos estruturar repetições de trechos
específicos do código, sujeitos à parada por intervenção do usuário ou não, a depender
da forma que são construídos. Vamos agora estudar mais alguns aspectos de
implementação do nosso conteúdo?
Saiba mais
Como saber se seu programa está executando passo a passo de forma correta? Ou
então, quando ele apresenta uma resposta incorreta, como saber em que momento
o algoritmo se perdeu, para que possa ser estudada uma estratégia de correção? Na
nossa aula, que aborda os desvios e os laços, vimos que é essencial poder “entrar”
na execução do programa e acompanhar passo a passo cada linha executada.
https://www.colaboraread.com.br/integracaoAlgetec/index?usuarioEmail=natalia.gois.santos%40gmail.com&usuarioNome=NATALIA+GOIS+DOS+SANTOS+LOPES&disciplinaDescricao=&atividadeId=3662477&a… 19/29
12/10/2023, 00:51 wlldd_231_u3_alg_log_pro
A melhor alternativa para isso é debugar seu código. A maioria dos ambientes de
desenvolvimento integrado (IDEs) possui esse recurso.
Como você sabe, cada IDE tem sua interface e seu posicionamento de botões. Então,
para conseguir acessar o recurso na sua versão instalada, você deve realizar uma
0
pesquisa no Google contendo o nome do IDE que você está utilizando, além dos
seõçatona reV
termos “debugar” e “watches”.
Na maioria dos IDEs instalados localmente, você deve posicionar o mouse em linhas
estratégicas, que contenham as operações de interesse, e dar um clique duplo na
linha ou clique com botão direito. O objetivo é inserir um ponto de interrupção (ou
breakpoint), simbolizado por um círculo colorido, naquela linha.
Aula 4
OPERADORES NA LINGUAGEM C
Nesta aula, veremos como as operações de atribuição podem ser versáteis e
nos fornecer mais opções de implementação quando complementadas com os
operadores aritméticos.
27 minutos
INTRODUÇÃO
Olá, estudante! Nesta aula, veremos como as operações de atribuição podem ser
versáteis e nos fornecer mais opções de implementação quando complementadas com
os operadores aritméticos. Você deve ter percebido que quanto mais recursos uma
linguagem possui, melhores ficam o entendimento e a legibilidade do código-fonte, mais
https://www.colaboraread.com.br/integracaoAlgetec/index?usuarioEmail=natalia.gois.santos%40gmail.com&usuarioNome=NATALIA+GOIS+DOS+SANTOS+LOPES&disciplinaDescricao=&atividadeId=3662477&a… 20/29
12/10/2023, 00:51 wlldd_231_u3_alg_log_pro
0
não ter problemas em seu código-fonte!
seõçatona reV
ATRIBUIÇÕES E TIPOS DE DADOS NA EXECUÇÃO
Estudante, você tem visto na criação de programas com a linguagem C que é necessário
realizar uma série de predefinições já no início da construção do código-fonte, como a
definição dos tipos de variáveis. Ao longo do código, uma escolha que também
impactará em como será o funcionamento do programa é a forma com que construímos
os comandos para realizar operações matemáticas, por meio dos operadores
aritméticos, já que a linguagem permite variações com o mesmo símbolo.
Isso quer dizer que, caso não conheçamos as particularidades da linguagem, podemos
correr o risco de escrever um programa que apresente uma execução diferente daquela
que esperávamos. Essas particularidades são decisões internas que o compilador está
programado para tomar e que nem sempre estão explícitas no código ou no nosso
pensamento lógico.
Embora essa construção seja a mais simples que existe quando se trata de atribuição,
pode ocorrer de o programador definir as variáveis “resultado” e “valor” em tipos
diferentes, e o compilador precisar decidir sobre como processar o resultado, se
apresenta um erro, se aceita a construção ou se realiza uma conversão durante essa
atribuição. A conversão em tempo de execução junto com a atribuição é chamada de
conversão de tipos em atribuições, e estudaremos suas variedades ao longo desta aula.
Além desse tipo básico de atribuição, a linguagem C também permite outros, como as
atribuições múltiplas, em que é possível atribuir o mesmo valor para múltiplas variáveis
em um mesmo comando, como mostrado no código a seguir:
1.#include <stdio.h>
2.int main()
3.{
4. int x, y, z;
5. x = y = z = 0;
6.}
https://www.colaboraread.com.br/integracaoAlgetec/index?usuarioEmail=natalia.gois.santos%40gmail.com&usuarioNome=NATALIA+GOIS+DOS+SANTOS+LOPES&disciplinaDescricao=&atividadeId=3662477&a… 21/29
12/10/2023, 00:51 wlldd_231_u3_alg_log_pro
1.#include <stdio.h>
2.int main()
3.{
0
4. int x, y;
seõçatona reV
5. x = y = 10;
8.
10.}
Observe que, ao utilizar “x++”, o programador consegue o mesmo resultado que teria se
usasse “x = x+1”, porém com uma escrita mais compacta. E quando usadas em conjunto
com um comando de atribuição, tanto a operação de incremento quando a de
decremento possuem dois tipos de construção, como pode ser visto no exemplo do
código a seguir:
1.#include <stdio.h>
2.int main()
3.{
4. int x, A, B;
5. x = 10;
8.
9. x = 10;
12.}
Existe uma diferença sutil entre as sintaxes “++x” e “x++”, e como estão sendo utilizadas
junto com uma atribuição, a forma com que são construídos os comandos interfere
muito em seu significado para o programa. No primeiro caso, é realizado o incremento
na variável x, e ao atribuir esse valor para a variável A, seu conteúdo já está
incrementado, ou seja, ambas passam a valer 11. Já no segundo caso, o conteúdo de x,
que é 10, primeiro é atribuído a B, e depois a variável x é incrementada para 11. Assim, B
tem conteúdo igual a 10 e x é igual a 11.
Estudante, você percebeu que a linguagem C permite uma ampla variedade nessas
construções? Isso proporciona a você mais opções e recursos, mas ao mesmo tempo
exige maior entendimento de suas regras.
https://www.colaboraread.com.br/integracaoAlgetec/index?usuarioEmail=natalia.gois.santos%40gmail.com&usuarioNome=NATALIA+GOIS+DOS+SANTOS+LOPES&disciplinaDescricao=&atividadeId=3662477&a… 22/29
12/10/2023, 00:51 wlldd_231_u3_alg_log_pro
0
• Unários: realizam uma modificação (ou não) em relação a apenas uma variável, como o
seõçatona reV
sinal de menos. Exemplo: -x; -10.
1.#include <stdio.h>
2.int main()
3.{
4. int saida;
5. saida = 6;
7.
8. saida = 6;
10.
https://www.colaboraread.com.br/integracaoAlgetec/index?usuarioEmail=natalia.gois.santos%40gmail.com&usuarioNome=NATALIA+GOIS+DOS+SANTOS+LOPES&disciplinaDescricao=&atividadeId=3662477&a… 23/29
12/10/2023, 00:51 wlldd_231_u3_alg_log_pro
11. saida = 6;
13.
0
14. saida = 6;
seõçatona reV
15. printf(\"saida adicao = %d \n\", saida += 2);
16.
17. saida = 6;
19.}
Observe que a cada comando precisamos atribuir novamente o valor inicial 6 na variável
saida, pois o comando de atribuição aritmética realiza tanto a operação aritmética
quanto a atribuição na variável, atualizando seu valor. Por manipular dois operandos, os
operadores da Tabela 1 são considerados binários.
Outra classe interessante dos operadores é sua aplicação com valores binários. Para
demonstrá-los, considere:
A operação AND bit a bit entre X e Y se refere a realizar a operação AND (operador
lógico) entre todos os bits do número, um a um, e escrever o valor correspondente. Para
o exemplo, X & Y resulta em: 0000 0010, ou seja, 2. Cabe destacar que a operação lógica
&& realizada em valores decimais produz um resultado diferente da operação AND bit a
bit, representada pelo símbolo unitário &.
O operador &= realiza o AND bit a bit entre as variáveis que compõem o comando e
atribui esse valor ao operando da esquerda.
&= Atribuição AND bit a bit Realizar a operação AND nos valores
1.#include <stdio.h>
2.int main()
0
3.{
seõçatona reV
4. // 3 = 0b0111;
5. int x;
9.
13.}
O maior desafio na utilização desses operadores é que a escrita deles é muito similar às
operações matemáticas tradicionais. Ao analisá-la, o programador precisa ter o mesmo
entendimento que o compilador terá ao realizar o build do código, pois muitas vezes
podemos cair em ambiguidades permitidas pela linguagem. Na dúvida, devemos fazer o
debug do código, a fim de verificar por meio dos testes de mesa se a execução do nosso
programa está ocorrendo conforme esperado.
https://www.colaboraread.com.br/integracaoAlgetec/index?usuarioEmail=natalia.gois.santos%40gmail.com&usuarioNome=NATALIA+GOIS+DOS+SANTOS+LOPES&disciplinaDescricao=&atividadeId=3662477&a… 25/29
12/10/2023, 00:51 wlldd_231_u3_alg_log_pro
Sabemos que 13 dividido por 5 é igual a 2,6. Ao mesmo tempo, quando lidamos com
problemas do dia a dia, podemos ter a necessidade de construir raciocínios mais
específicos.
Por exemplo: recebemos 13 camisetas para serem distribuídas para 5 pessoas. Como
0
não faria sentido cortar as camisetas, teríamos que 13 (int) dividido por 5 (int) é igual a 2
seõçatona reV
(int) com resto 3 (int).
Com os operadores, essas sentenças seriam escritas como: 13 / 5 = 2 para a divisão com
inteiros e 13 % 5 = 3 para o cálculo da operação resto, também chamada de restante ou
módulo.
1.#include <stdio.h>
2.int main()
3.{
4. float resultado;
5. int x, y;
6.
7. x = 13; y = 5;
9.
12.
15.}
Observe que, mesmo tentando inserir um valor do tipo real nas variáveis x e y, o
resultado apresentado na divisão não é 2.6, pois x e y foram declarados como inteiros e
nas linhas de atribuição eles já perdem a precisão de 13.0 e 5.0, sendo tratados como
inteiros 13 e 5.
https://www.colaboraread.com.br/integracaoAlgetec/index?usuarioEmail=natalia.gois.santos%40gmail.com&usuarioNome=NATALIA+GOIS+DOS+SANTOS+LOPES&disciplinaDescricao=&atividadeId=3662477&a… 26/29
12/10/2023, 00:51 wlldd_231_u3_alg_log_pro
0
execução, como o truncamento ou a perda de precisão. A realização dessa modificação
seõçatona reV
pelo programador recebe o nome de casting. Damas (2016) descreve que o casting se dá
quando queremos modificar o tipo de uma variável ou expressão, alterando-o para um
tipo maior ou para um tipo mais baixo, e que podemos indicar o tipo ao qual queremos
“promover” esse valor colocando o tipo pretendido entre parênteses antes do valor.
1.#include <stdio.h>
2.int main()
3.{
4. float result;
6.
7. valor = 10;
8. div = 4;
9.
12.
15.
19.
Observe que esse código indica a solução para o problema do código anterior, que não
apresentava a saída em número real.
https://www.colaboraread.com.br/integracaoAlgetec/index?usuarioEmail=natalia.gois.santos%40gmail.com&usuarioNome=NATALIA+GOIS+DOS+SANTOS+LOPES&disciplinaDescricao=&atividadeId=3662477&a… 27/29
12/10/2023, 00:51 wlldd_231_u3_alg_log_pro
Neste último código também vemos outro recurso interessante, que é o comentário no
código. Tudo o que está escrito na mesma linha após o // é ignorado pelo compilador.
Então, tal recurso é usado para que o programador possa registrar comentários que
auxiliem na leitura e no entendimento do código, embora as boas práticas de
0
programação digam que um código bem escrito, com padrão na nomenclatura de
variáveis, não necessita de comentários.
seõçatona reV
VÍDEO RESUMO
Estudante, aprendemos nesta aula como o programa pode apresentar respostas
inesperadas ou incompletas se não definirmos os tipos de variáveis corretamente. Vimos
que o compilador segue à risca os tipos que definimos, mas também permite alguns
recursos que alteram o tipo da variável mesmo em tempo de execução, realizando uma
conversão explícita. Quanto aos exemplos, eles não acabaram, então acompanhe o
vídeo para estudarmos como funciona a conversão de tipos implícita.
Saiba mais
A manipulação de caracteres e inteiros pode ocasionar dificuldades na legibilidade
do código, principalmente pelas conversões implícitas que a linguagem C permite na
execução dos programas. Para essas construções específicas, Luís Damas organizou
uma subseção em sua obra, com alguns exemplos detalhadamente descritos.
O livro Linguagem C está na nossa biblioteca virtual, e o capítulo que aborda esse
assunto está na subseção Situações em que inteiros e caracteres não se devem
misturar, na página 43.
REFERÊNCIAS
1 minutos
Aula 1
MANZANO, J. A. N. G. Linguagem C: Acompanhada de uma xícara de café. São Paulo:
Érica, 2015.
Aula 2
MANZANO, J. A. N. G. Linguagem C: Acompanhada de uma xícara de café. São Paulo:
Érica, 2015.
Aula 3
MANZANO, J. A. N. G. Linguagem C: acompanhada de uma xícara de café. São Paulo:
Érica, 2015.
https://www.colaboraread.com.br/integracaoAlgetec/index?usuarioEmail=natalia.gois.santos%40gmail.com&usuarioNome=NATALIA+GOIS+DOS+SANTOS+LOPES&disciplinaDescricao=&atividadeId=3662477&a… 28/29
12/10/2023, 00:51 wlldd_231_u3_alg_log_pro
Aula 4
DAMAS, L. Linguagem C. 10. ed. Rio de Janeiro: LTC, 2016.
0
MANZANO, J. A. N. G. Linguagem C: acompanhada de uma xícara de café. São Paulo:
Érica, 2015.
seõçatona reV
MICROSOFT. Operadores de atribuição C. 2022. Disponível em:
https://learn.microsoft.com/pt-br/cpp/c-language/c-assignment-operators?view=msvc-
170. Acesso em: 27 nov. 2022.
Imagem de capa: Storyset e ShutterStock.
https://www.colaboraread.com.br/integracaoAlgetec/index?usuarioEmail=natalia.gois.santos%40gmail.com&usuarioNome=NATALIA+GOIS+DOS+SANTOS+LOPES&disciplinaDescricao=&atividadeId=3662477&a… 29/29