Você está na página 1de 39

Rodrigo Marques

The CoderBR
Versão 2020
INTRODUÇÃO 4

OBJETIVO DO E-BOOK 5

QUEM SOU EU? 5

PREPARANDO O AMBIENTE 6

FASES DE UM ALGORITMO 7

ENTENDENDO UM POUCO SOBRE LINGUAGEM DE PROGRAMAÇÃO 8

INCLUDES 8

DESENVOLVENDO UM “HELLO WORLD” 9

VARIÁVEIS, CONSTANTES E TIPOS DE DADOS 10

ENTRADA E SAÍDA DE DADOS 12

OPERADORES ARITMÉTICOS 14

OPERADORES RELACIONAIS 17

ESTRUTURA CONDICIONAL 18
ESTRUTURA SE/SENÃO (IF/ELSE) 18
ESTRUTURA ESCOLHA (SWITCH/CASE) 21

OPERADOR LÓGICO 24
OPERADOR LÓGICO E (AND - &&) 25
OPERADOR LÓGICO OU ( OR – || ) 26
OPERADOR LÓGICO NÃO (NOT - !) 28

ESTRUTURA DE REPETIÇÃO 29
ESTRUTURA FOR (PARA) 30
ESTRUTURA WHILE (ENQUANTO) 31
ESTRUTURA DO..WHILE (FAÇA..ENQUANTO) 33

VETORES E MATRIZES 35

E AGORA? 39
Introdução
Hoje em dia, muitas pessoas tem o desejo de se tornar programadores. Porém, em
muitos casos, não sabem por onde começar e acabam desistindo. Em outros casos,
começam os estudos, mas desistem depois de algum tempo, por acharem difícil.
Tenho algumas respostas para você, leitor.
Aprender programação é difícil?
Sim, aprender programação não é uma tarefa fácil para todas as pessoas. É um caminho
duro, porém prazeroso. Não serei hipócrita ao falar que existe um caminho fácil, uma
dica mágica ou algo do tipo. Programação não é assim tão fácil. Porém, qualquer pessoa
pode aprender. Basta estudar bastante, se dedicar e exercitar.
Na programação, dividimos os níveis de conhecimento em: Júnior, Pleno e Sênior.
Algumas empresas, ainda possuem os níveis: Especialista, Evangelista e etc. Mas qual a
diferença entre eles? Apenas o tempo de experiência.
Então, se você está lendo esse livro, tenha certeza de que estaremos juntos. Em breve,
você vai se tornar um programador e estará apto para o mercado de trabalho.
Quando eu paro de estudar?
Se sua escolha foi se tornar programador(a), lamento dizer que você nunca irá parar de
estudar. É claro que com a experiência, o aprendizado se torna mais fácil. Isso diminui
bastante o tempo de aprendizado para uma nova linguagem, um novo framework ou
um novo projeto.
Mas Rodrigo, eu não sei se consigo entender essa sopa de letrinhas!
Sopa de letrinhas? Você deve estar falando dos nomes das linguagens e dos termos
utilizados em programação, certo? Existem linguagens como C, C#, PHP, Java, JavaScript,
Python, e por aí vai. As possibilidades de linguagens e ferramentas existentes não tem
fim. Mas fique tranquilo: você vai certamente seguir uma linha de estudo e se tornar
especialista em uma delas.

4
Objetivo do E-book
Este e-book destina-se à todas as pessoas que estão pensando em iniciar no mundo do
desenvolvimento de software, ou que ainda possuem dificuldade em lógica de
programação. O e-book cita exemplos simples, com o objetivo de aprimorar o
conhecimento básico em programação.
A linguagem utilizada durante o e-book é a C. Mas tentei utilizar o mínimo de recursos
possível desta linguagem. Novamente reafirmo que o objetivo principal, é estimular a
resolução de problemas, utilizando apenas o pensamento lógico para isso.
Se sentir falta de algumas coisas como ponteiros, funções como CIN, COUT, entre outras,
lembre-se: o objetivo é estimular a lógica e não ensinar uma linguagem de programação.
Ok?
Por fim, não se limite apenas aos exemplos contidos no livro. Estimule novos raciocínios,
procure mais exercícios sobre os temas abordados, junte um tema com o outro, enfim:
seja criativo neste momento, que colherá resultados no futuro.
Desfrute do e-book e boa leitura.

Quem sou eu?


Eu me chamo Rodrigo Marques, sou desenvolvedor desde os 14 anos e já atuei em
diversos projetos na área de programação.
O que poucas pessoas sabem, é que sou apaixonado por ensinar e ajudar pessoas. Dei
aula de forma presencial, em cursos aqui no RJ, desde 20 anos. Muitos dos meus alunos
estão alocados no mercado de trabalho e isso me incentiva muito a continuar.
Hoje, aos 32 anos, senti a necessidade de ajudar mais ainda pessoas. Por esta razão,
iniciei o projeto The Coder, no digital (Instagram e YouTube). Este projeto tem como
principal objetivo, estimular o crescimento de diversos profissionais de programação
pelo Brasil.
Eu tenho uma filha, Maria Fernanda, por quem sou apaixonado e dedico grande parte
da minha vida. Tenho também uma pessoa ao meu lado, minha namorada Paula, por
quem sou apaixonado. Sem ela, esse projeto nunca teria começado. Então, se vocês
estão lendo este e-book, agradeça a Paula. Observação: ela é quase uma santa, pois me
atura todos os dias, rs.

5
Preparando o Ambiente
Vamos montar todos os exemplos, em um ambiente Windows. Caso você esteja
utilizando algum outro sistema operacional, procure ferramentas de sua preferência,
para reproduzir os exemplos do livro.
A tecnologia escolhida para os exemplos, será a linguagem C. Vamos utilizá-la como base
nos exemplos, pois nos permite uma imparcialidade quanto a execução dos exercícios
do livro. Fique à vontade para praticar os exemplos em qualquer linguagem, se assim
preferir.
A IDE escolhida para o desenvolvimento, foi DEV-C++. Caso tenha alguma IDE de sua
preferência, pode utilizá-la também. Todos os exemplos e conceitos abordados, podem
e devem ser exercitados em qualquer outra linguagem ou IDE de preferência.
* “ DE (Ambiente de Desenvolvimento Integrado), é um software que auxilia no
desenvolvimento de aplicações, com o objetivo de facilitar diversos processos da
codificação de um projeto “.
Link para download do Dev-C++: https://sourceforge.net/projects/orwelldevcpp/ . Após
executar o download do executável, o processo de instalação consiste no famoso “Next,
Next e Finish”. Basta seguir os passos de instalação, que um ícone do programa ficará
disponível na sua máquina.

Caso a sua escolha não seja instalar nenhum programa, existem diversos sites na WEB,
que permitem a codificação e exibem o resultado do seu programa. Esta também é uma
opção, para acompanhar as práticas desse e-book.

6
Fases de um Algoritmo
Um algoritmo possui um fluxo muito bem definido, que podemos dividir em: Entrada,
Processamento e Saída. Dessa maneira, ao executar um algoritmo devemos receber
“várias entradas”. Essas entradas, serão a base para o seu processamento de
informação. Por fim, teremos uma resposta (saída), que será a devolução para o usuário.

É importante ressaltar, que qualquer tarefa que siga um padrão de execução, pode ser
considerado um algoritmo. Pense em tarefas como “Lavar o Carro”, “Tomar Banho”, “Ir
para a escola”. Mas para pensar nelas como algoritmos, é necessário seguir o fluxo
descrito acima: com a Entrada de Dados, o Processamento das informações e uma Saída
de Dados.

7
Entendendo um Pouco Sobre
Linguagem de Programação
Linguagem de programação, são conjuntos de instruções determinadas, que visam
executar uma tarefa ou ação específica. São um conjunto de regras de sintaxe e
semânticas, usadas para criar um programa.
Uma linguagem de programação, seja ela qual for, possui um conjunto de “palavras
reservadas”, que quando adicionados juntos formam o código-fonte de um software.
Este código-fonte, por sinal, é traduzido para código de máquina. Com isso, ele é
processado pelo computador, quando queremos “rodar” nosso programa.
Rodrigo, você falou que o ebook é baseado na linguagem de programação C. Mas por
que o C?
Não vou entrar na história da criação do C. Mas sim, no motivo da escolha do C, para as
práticas do e-book. Vamos lá! Primeiro, por ser uma linguagem imperativa, onde o
desenvolvedor deve informar o “passo-a-passo” do programa que está construindo.
Outro ponto, por ser uma linguagem procedural, o que basicamente significa que a
codificação deve ser baseada em funções. Por fim, o C é uma linguagem que possui
regras no seu desenvolvimento, básicas e comum a maior parte das linguagens de
programação.
É importante ressaltar, que a linguagem C deve ser compilada. Mas o que significa isso,
Rodrigo? “Ser compilada” significa que, após escrever o código-fonte, deve-se passar
esse código por um programa, o compilador, que vai ler e transformar seu código em
um código executável pelo seu computador.

Includes
No momento do desenvolvimento, nos testes durante o ebook, vamos utilizar a menor
quantidade de recursos disponível nas bibliotecas do C. Mas sempre que for necessário
adicionar alguma biblioteca da linguagem, utilizaremos o comando #include no início do
código.
Uma das bibliotecas que serão utilizadas em todos os programas, é a #include<stdio.h>
(STDIO – Standard I/O). Essa biblioteca, possui os comandos como “scanf” e “printf”.
Esses comandos são utilizados, para realizar os processamentos de entrada e saída de
informação, na tela do usuário.

8
Desenvolvendo um “Hello World”
Esse “termo” é muito comum no desenvolvimento de software, quando vamos aprender
uma nova linguagem. É como que, sem esse primeiro teste, você ainda não estivesse
preparado para seguir no aprendizado da linguagem, entende? Então, para afastar os
fantasmas do “Hello World”, faça os passos a seguir:

1. Abra a IDE de sua preferência (como falei, aqui vou utilizar o DEV-C++)

2. Crie um novo arquivo

3. Crie seu primeiro “Hello World”


//Comentário - Importar a biblioteca base do C
#include<stdio.h>
//Metodo main, função inicial do programa
int main(){
//Imprimir o texto "Hello World"
printf("Hello World");
}

9
4. Execute o programa e veja o resultado (F11)

Nota importante: se você ainda não conhece o C e pulou este exemplo, pare a leitura
neste momento e faça o exercício proposto. Vamos juntos acabar com a “Maldição do
Hello World”.

Variáveis, Constantes e Tipos de


Dados
No desenvolvimento de sistema, em alguns momentos, existe a necessidade de
armazenar valores. Para isso, temos as variáveis e constantes.
As variáveis são espaço de memória do computador, que possuem um nome. São
utilizadas para armazenar algum valor, que pode “variar” durante o programa. Em
outras palavras, uma varável é uma caixa, onde guardamos valores que serão utilizados
em algum momento posterior.

10
O conceito de Constantes, segue a mesma ideia de variável. A diferença, é que uma
constante não tem o seu valor modificado. O valor atribuído a uma constante, deve se
manter até o final do programa. Por exemplo: o valor de PI (3,14) ou o valor de horas de
um dia (24 horas).
Para criar uma varável ou uma constante, é necessário definir um nome e um tipo de
dados. O nome, serve para o programa identificar no espaço de memória, qual o valor
que o programa deseja. Já o tipo de dado, serve para definir qual o tipo de valor que a
varável pode receber.
Por exemplo: ao definirmos uma variável idade, do tipo inteiro, informamos ao
programa que a variável conhecida como idade, deve receber apenas valores numéricos
do tipo inteiro, impossibilitando adicionamos valores como texto (“20 anos) ou números
reais (45,9).
Existem alguns tipos de dados, para definição das constantes e variáveis. São eles:

• Inteiros: utilizado para definir valores numéricos e inteiros. Ex.: 10


• Reais: utilizado quando necessário adicionar valores decimais a um número. Ex.:
10,30
• Caracteres: necessário para armazenar apenas uma letra. Ex.: ‘A’
• Texto: necessário para armazenar grandes quantidades de letras, como frases,
parágrafos ou simplesmente uma palavra. Ex.: “Rodrigo”
• Booleano: utilizado para armazenamento de valores lógicos, como verdadeiro
ou falso apenas. Ex.: True
#include<stdio.h>
int main(){
long idade = 30;
float nota = 7.8;
double valorCompra = 450.20;
char letra = 'A';
char nome[20] = "Rodrigo";

printf("\nIdade: %li", idade);


printf("\nNota: %.2f", nota);
printf("\nValor da Compra: %.2lf", valorCompra);
printf("\nLetra: %c", letra);
printf("\nNome: %s", nome);
}

11
Na linguagem C, temos alguns tipos de dados disponíveis para uso. Na tabela abaixo,
exemplifico todos eles:

Tipo de Dado Formato


Int %d
Long %li
Float %f
Double %lf
Char %c
Char[] %s

Entrada e Saída de Dados


A entrada e saída de dados em um programa, consiste no processamento básico de
qualquer projeto. Para qualquer projeto que você precise executar, você deverá ter ao
menos uma entrada de valor (leitura) e uma saída de valor para o cliente (impressão).
Por exemplo: um programa simples, onde precisamos saber qual o nome e a idade de
uma pessoa. Imaginando que estamos no ano de 2020, você encontra com esse amigo
e surge o diálogo abaixo:

Você: “Olá, você poderia me informar seu nome?”


Fulano: “Olá, meu nome é Fulano.”
Nome = “Fulano”
Você: “[Nome], em que ano você nasceu?”
Fulano: “Eu nasci em 18/01/1980”
AnoNascimento = 1980
AnoAtual = 2020

12
Idade = 2020 – 1980 (40)
Você: “[Nome], então você possui [Idade] anos.”

O exemplo acima pode ser um diálogo simples entre duas pessoas, mas mostra
exatamente como um programa funciona. Nele, existe uma entrada de dados (“Fulano”
e 1980). Depois, esses dados foram armazenados em uma variável (nome e
anonascimento). Em seguida, houve o processamento ( anoatual – anonascimento). Por
último, a saída de dados (“Fulano, então você possui 40 anos”).
Agora que entendemos como funciona um processo básico de um sistema, vamos
exemplificar esse processo na linguagem de programação C. Utilizamos comandos da
biblioteca para realizar essas operações, como printf, scanf.

#include<stdio.h>
int main(){
int anoatual = 2020;
int anonascimento, idade;
char nome[30];

printf("Ola, voce poderia me informar seu nome?");


printf("\n");
scanf("%s", &nome);
printf("%s, em que ano voce nasceu?", nome);
printf("\n");
scanf("%d", &anonascimento);
idade = anoatual - anonascimento;
printf("%s, entao voce possui %d anos.", nome, idade);
}

13
Operadores Aritméticos
Operadores aritméticos são utilizados, para realizar operações nos elementos do
programa.

Operador Descrição
+ Operador de adição
- Operador de subtração
* Operador de multiplicação
/ Operador de divisão
% Operador de módulo (resto da divisão)

As regras básicas para as operações são:

• Expressões entre parênteses executam primeiro. Se houver mais parênteses, os


mais internos são executados primeiro;
• Multiplicações e divisões são executadas em seguida.
• Adições e subtrações são executadas por último depois.

INTRO: “Programa para calcular a média entre 2 notas”

#include<stdio.h>

int main(){

float nota1, nota2, media;

nota1 = 7.8;

nota2 = 8.2;

media = (nota1 + nota2) / 2;

printf("Media final foi %.2f", media);

14
INTRO: “Programa para receber o valor de um produto, a quantidade de itens e a
porcentagem do desconto e calcular o valor a ser pago pelo produto”

#include<stdio.h>
int main(){
float valorProduto, desconto, valorFinal;
int quantidade;

printf("Informe o valor do produto: ");


scanf("%f", &valorProduto);
printf("Informe a quantidade do produto: ");
scanf("%d", &quantidade);
printf("Informe o desconto: ");
scanf("%f", &desconto);

valorFinal = (( valorProduto * quantidade ) * desconto) / 100;

printf("------------------------------------------\n ");
printf("O Valor a ser pago e de R$ %.2f", valorFinal);

INTRO: “Programa para receber 2 valores e imprimir as operações de soma, subtração,


divisão, multiplicação e o resto da divisão destes 2 valores.”
#include<stdio.h>
int main(){

15
int valor1, valor2;

printf("Informe o primeiro valor: ");


scanf("%d", &valor1);
printf("Informe o segundo valor: ");
scanf("%d", &valor2);

int soma = valor1 + valor2;


int subtracao = valor1 - valor2;
int multiplicacao = valor1 * valor2;
int resto = valor1 % valor2;
float divisao = valor1 / valor2;

printf("------------------------------------------\n ");
printf("\nSoma %d", soma);
printf("\nSubtracao %d", soma);
printf("\nMultiplicacao %d", soma);
printf("\nResto %d", resto);
printf("\nDivisao %.1f", divisao);

16
Operadores Relacionais
Os operadores relacionais são utilizados, para realizar comparação entre valores e
retornar TRUE (caso a comparação seja verdadeira) ou FALSE (caso a comparação seja
falsa). Os operadores relacionais estão listados abaixo:

Operador Descrição
== Igual a
<> ou != Diferente de
> Maior que
< Menor que
>= Maior ou igual a
<= Menor ou igual a

Para exemplificar cada uma das utilizações dos operadores relacionais, vamos listar a
seguinte situação: imagina que sejam criadas 2 variáveis, v1 e v2. E que os valores dela
sejam 10 e 20, respectivamente.

V1 = 10

V2 = 20

Na tabela abaixo vamos imprimir os resultados das operações:

Operação Resultado
V1 == V2 False (Falso)
V1 != V2 ou V1 <> V2 True (Verdadeiro)
V1 < v2 True (Verdadeiro)
V1 <= V2 True (Verdadeiro)
V1 > v2 False (Falso)
V1 >= v2 False (Falso)

OBS: Dependendo da linguagem de programação utilizada, os operadores podem variar.

17
Estrutura Condicional
A estrutura condicional é utilizada nos sistemas, sempre que existir uma condição com
mais de uma possibilidade de resposta. As condições, são umas das funções mais
utilizadas nos programas.
Por exemplo: imagina que um usuário só pode acessar o sistema, se a idade dele for
maior que 18 anos. Ou, em outro caso, que um aluno só deva receber a situação de
aprovado, se a média das notas dele for superior ou igual a 7. Para fazer as verificações
dessas condições, utilizamos uma estrutura condicional.

Estrutura SE/SENÃO (IF/ELSE)

A estrutura condicional IF/ELSE, permite executar todas as operações do exemplo


anterior. Para trabalhar com o IF, passamos uma condição, utilizando um dos
operadores lógicos. Para ele, se a resposta for TRUE, verdadeira, o programa entra no
bloco do IF, mas não executa o bloco do ELSE. Caso a resposta seja FALSE, falsa, o
programa pula o bloco do IF e executa apenas o bloco do ELSE.
Para melhor exemplificar a explicação anterior, observe a imagem abaixo:

É importante ressaltar que na estrutura de condição, o programa segue apenas um


fluxo: ou ele vai pela condição verdadeira ou pela condição falsa.
INTO: “Crie um programa para receber um número do usuário e informar se esse
número é maior que 10”

#include<stdio.h>

18
int main(){

int numero;

printf("Informe um numero: ");

scanf("%d", &numero);

if( numero > 10){

printf("\nO numero informado e maior que 10");

}else{

printf("\nO numero informado NAO E maior que 10");

INTRO: “Criar um programa para ler duas notas, calcular a média entre elas e informar
se a média for maior ou igual a 7 o aluno está aprovado caso contrário o aluno está em
recuperação”
#include<stdio.h>
int main(){
float nota1, nota2, media;

printf("Informe a nota1: ");


scanf("%f", &nota1);

printf("Informe a nota2: ");


scanf("%f", &nota2);

19
media = ( nota1 + nota2 ) / 2;

if( media >= 7){


printf("\nO aluno esta aprovado");
}else{
printf("\nO aluno esta em recuperacao");
}

A estrutura de condição IF/ELSE, pode ganhar mais fluxos com o comando ELSEIF. O
comando ELSEIF adiciona mais condições. O padrão do fluxo do programa segue o
mesmo informado anteriormente. Se a condição entrar no IF, ela não executa mais
nenhuma outra condição. Se a condição entrar em ELSEIF, ela executa o bloco em
questão e mais nenhum outro. Caso o programa não entre em nenhuma condição, ele
procura pelo ELSE e executa o seu bloco.
INTRO: “Crie um programa que leia 2 notas de um aluno, calcule a sua média e imprima
a situação do aluno da seguinte forma: se a média for maior ou igual a 7 o aluno está
aprovado. Caso a nota seja maior ou igual a 5 e menor que 7 o aluno está em
recuperação e caso sua média seja menor que 5 o aluno está reprovado”

#include<stdio.h>
int main(){
float nota1, nota2, media;

printf("Informe a nota1: ");


scanf("%f", &nota1);

20
printf("Informe a nota2: ");
scanf("%f", &nota2);

media = ( nota1 + nota2 ) / 2;

if( media >= 7 ){


printf("\nO aluno esta aprovado");
}else if( media >= 5 ){
printf("\nO aluno esta em recuperacao");
}else{
printf("\nO aluno esta reprovado");
}

Estrutura Escolha (SWITCH/CASE)

A estrutura condicional Switch/case é utilizada, quando temos muitas possibilidades


para serem avaliadas. Ela recebe um parâmetro de condição e vários casos de
possibilidades.
O switch deve receber em sua condição de verificação, um tipo simples de dados. Como,
por exemplo, char ou int. Os “Cases” são comparações de igualdade com esses tipos.
É importante ressaltar, quando uma condição (case) for verdadeira, temos que dar o
comando break para sair da estrutura do switch. Caso contrário, os próximos cases serão
ignorados e o programa irá executar todos os blocos. Outro ponto, é a utilização da
condição “default”. Esta condição, age como uma saída em caso de nenhuma condição
verdadeira, dentro do switch.

21
INTRO: “Crie um programa para ler uma opção de 1 até 4 e imprimir as repostas a seguir,
conforme a opção digitada. Caso a opção seja 1, imprimir “Ola, seja bem vindo ao
programa”. Case seja 2, imprimir a data atual. Caso seja 3,, imprimir a hora atual. Caso
seja 4, imprimir “fim do programa”. Se nenhuma das 4 opções for digitada, imprimir
“Opção inválida”.

#include<stdio.h>

#include <time.h>

main(){

int opcao;

char dateStr[9];

char timeStr[9];

// pega a data atual - mm/dd/yy

_strdate( dateStr);

// pega a hora atual hh:mm:ss

22
_strtime( timeStr);

printf("Infomre uma opcao de 1 ate 4:");

scanf("%d", &opcao);

switch(opcao){

case 1 :

printf("Ola, seja bem vindo ao programa");

break;

case 2 :

printf("Data atual %s", dateStr);

break;

case 3 :

printf("Hora atual %s", timeStr);

break;

case 4 :

printf("Fim do programa");

break;

default : printf("Opcao Invalida");

23
Hora do exercício
1. Maria possui um armazém e possui um caderno com o código de todos os produtos
e seus preços. Mas por hora, esquece onde está o caderno. Seria interessante criar
um programa onde a Maria possa digitar o código do produto e o sistema informar
o nome e o preço do produto conforme tabela abaixo:

Código Nome Preço


1 Caneta Bic R$ 2,20
15 Ioiô R$ 9,80
12 Capa de Celular R$ 14,00
25 Figurinha R$ 3,10
31 Barra de Chocolate R$ 7,50
8 Refrigerante R$ 5,40

2. Marcela é professora de uma escola primária e possui cerca de 10 alunos. Porém, no


final do ano, Marcela precisa calcular a média de cada aluno e imprimir se o aluno
passou ou não de ano. A verificação de status dos alunos é simples. Se a média for
maior que 6 o aluno “Passou de ano” caso contrário o aluno “Ficou reprovado”. Seria
muito interessante para Marcela ter esse processo em um sistema.

Operador Lógico
Em muitas situações, apenas uma condição dentro da estrutura de repetição, não
satisfaz a necessidade do problema. Neste momento, surgem os operadores lógicos.
Eles têm como finalidade, aumentar o número de possibilidades dentro de uma
condição.
Os operadores lógicos, são utilizados para combinar duas ou mais expressões e criar
uma lógica única de verdadeiro ou falsa. Imagina a seguinte situação: “Cris só vai sair no
final de semana para encontrar seus amigos, se ela conseguir juntar mais de R$ 50,00 e
não chover”. Como podemos observar na questão anterior, para Cris sair é necessário
que 2 operações aconteçam: ela tenha mais de R$ 50,00 e também não chova.

Operador Código
E (AND) &&
OU (OR) ||
NÃO (NOT) !

24
Operador Lógico E (AND - &&)

O operador lógico E (AND) retornar verdadeiro, apenas se TODAS as condições forem


verdades. Veja abaixo a tabela verdade, para o operador lógico E:

Condição 1 Condição 2 Resultado


VERDADEIRA VERDADEIRA VERDADEIRA
VERDADEIRA FALSA FALSA
FALSA VERDADEIRA FALSA
FALSA FALSA FALSA
Para entender melhor, vamos imaginar as seguintes situações:
O Aluno José realizou duas provas no ano e tirou as notas 7 e 8 respectivamente. Além
disso, José esteve frequente em aulas durante 180 dias de um total de 200 dias possíveis.
Na escola de José, o aluno só está aprovado se a sua média for superior ou igual a 7 e a
sua frequência escolar for superior a 80%.
Tendo este problema como questão, podemos concluir que:
Media = ( 7 + 8 ) / 2, sendo o resultado 7.5
Porcentagem de Frequência = (180 / 200 ) * 100, sendo o resultado 90%.
Desta forma, vamos analisar a tabela abaixo:

Media >= 7 Frequencia >= 80 Resultado


VERDADEIRA VERDADEIRA VERDADEIRA
VERDADEIRA FALSA FALSA
FALSA VERDADEIRA FALSA
FALSA FALSA FALSA

Como as duas condições foram verdadeiras, o resultado é verdadeiro.

#include<stdio.h>

main(){

float nota1, nota2, media;

int frequencia, porcentagemFrequente, totalAulas = 200;

printf("Informe a nota1: ");

scanf("%f", &nota1);

25
printf("Informe a nota2: ");

scanf("%f", &nota2);

printf("Informe o numero de aulas presente: ");

scanf("%d", &frequencia);

media = ( nota1 + nota2 ) / 2;

porcentagemFrequente = ( frequencia * 100 ) / totalAulas;

if(media >= 7 && porcentagemFrequente >= 80) {

printf("\n\nPARABENS O ALUNO FOI APROVADO");

}else{

printf("\n\nO ALUNO FICOU DE RECUPERACAO");

Operador Lógico OU ( OR – || )

O operador lógico OU (OR) retorna verdadeiro, se pelo menos UMA das condições forem
verdades. Veja abaixo a tabela verdade, para o operador lógico OU:

Condição 1 Condição 2 Resultado


VERDADEIRA VERDADEIRA VERDADEIRA
VERDADEIRA FALSA VERDADEIRA
FALSA VERDADEIRA VERDADEIRA
FALSA FALSA FALSA

26
Para entender melhor, vamos imaginar as seguintes situações:
Mariana está querendo ir no cinema hoje. Mas para sair, ela precisa de uma carona até
o cinema OU que consiga o dinheiro do ônibus.

Carona Dinheiro da Passagem Ir ao Cinema


VERDADEIRA VERDADEIRA SIM
VERDADEIRA FALSA SM
FALSA VERDADEIRA SIM
FALSA FALSA NÃO

Vamos criar o seguinte programa: verificar se as condições de uma sala estão boas para
guardar uma vacina. As condições são: a temperatura não pode ser maior que 20C ou a
umidade do ar maior que 70%.

#include<stdio.h>

main(){

int temperatura, umidadeAr;

printf("Informe a temperatura: ");

scanf("%d", &temperatura);

printf("Informe a unidade do ar: ");

scanf("%d", &umidadeAr);

if(temperatura > 20 || umidadeAr > 70){

printf("\n\nAs condicoes não estao boas para a vacina");

}else{

printf("\n\nPode deixar a vacina");

27
Operador Lógico NÃO (NOT - !)

O operador lógico NÃO (NOT), inverte o resultado de uma condição. Se o valor for
VERDADE, o operador NOT transforma em FALSO e vice-versa. Veja abaixo a tabela
verdade, para o operador lógico NÃO:

Resultado Saída
VERDADEIRA FALSA
FALSE VERDADEIRA

Exercícios

1. Rafael pensou em criar um programa, para receber uma idade e imprimir o número
de dias que representa essa idade.
Considere 1 ano com 365 dias.

2. Jonas vai viajar para outro país. Mas se deu conta, que todas as compras serão feitas
com outra moeda, que não o real. Isso deu um nó na cabeça de Jonas. Então, ele
pensou em criar um programa, para fazer a conversão de valores. Ele pensou em
digitar o valor e a taxa de conversão. Com isso, o programa imprime o resultado da
conversão.

3. Cris quer fazer um controle financeiro melhor. Para isso, pensou em desenvolver um
programa, no qual ela informe o salário líquido dela e o programa responda quanto
que ela pode gastar com cada item, conforme tabela abaixo:

Tipo de Despesa % do salário


Alimentação 30%
Casa 35%
Lazer 15%
Cuidados Pessoais 18%
Outros 2%

28
4. Ana é professora de uma escola primária. Ela quer um programa, para ajudar a saber
se os seus alunos estão aprovados ou reprovados. Para isso, Ana precisa resolver a
seguinte situação:

O aluno faz 4 provas durante o ano. Devemos obter a média dessas provas. Se a
média for maior ou igual a 7, o aluno está aprovado. Porém, quando a nota não for
maior que 7, o aluno deve realizar mais uma prova (uma espécie de prova final) com
o peso 2. Então Ana realiza o seguinte cálculo:

Média final = (p1 + p2 + p3 + p4 + 2 x pf) / 6

Se a média final for maior que 7, o aluno recebe a situação aprovado com ressalvas.
Caso contrário, o aluno está reprovado.

Estrutura de Repetição
As estruturas de repetição (ou laços de repetição), são estruturas que permitem a
execução de um bloco de código por muitas vezes, até que uma condição não seja mais
verdadeira.
A estrutura de repetição é utilizada, para repetir uma função. Por exemplo, contar
dinheiro:
Enquanto tiver notas eu vou contando.
Ou, até mesmo, para uma brincadeira de adivinhação de número:
Vou pensar em um número. Enquanto você não adivinhar o número que eu pensei, fale
um número.
Percebe que nos dois exemplos, existe uma tarefa que vai ser repetir até que uma
condição não seja mais verdadeira?

29
Perceba que nos exemplos, temos ações que deverão ser repetidas durante algum
determinado tempo. Mas nós não sabemos bem ao certo a quantidade. Quando falamos
de estrutura de repetição na programação, temos principalmente o FOR (PARA), WHILE
(ENQUANTO) e DO..WHILE (FAÇA..ENQUANTO).

Estrutura FOR (PARA)


O laço de repetição FOR é definido da seguinte forma:

for ( INICIALIZAÇÃO ; CONDIÇÃO ; INCREMENTO ) {

BLOCO DE EXECUÇÃO

A Inicialização, é a área que você deve adicionar os valores que as variáveis irão começar.
A condição, é a pergunta que o FOR vai fazer para executar cada iteração (cada loop). O
incremento, é o momento que FOR vai modificar as variáveis sempre no final de cada
iteração. Por exemplo, imagine o código abaixo:

#include<stdio.h>

main(){

for( int i = 0; i < 10 ; i = i + 1) {

printf("Valor i e %d\n", i);

30
}

No código acima, vamos identificar cada etapa do for:


Inicialização equivale ao int i = 0. Ele está começando o for, com a variável i com o valor
0.
A condição deste for é, iterar o bloco de conteúdo enquanto i for menor que 10. Como
a variável i começa com o valor 0, a condição ( 0 < 10 ) é verdadeira. Por isso, o programa
entra na iteração do for.
No incremento, temos o i = i + 1, que pode ser substituído por i++. Isto significa que no
final de cada for, o programa vai executar o código i = i + 1, incrementando em 1 o valor
de i. Com isso, temos o resultado abaixo:

Estrutura While (Enquanto)


O laço de repetição WHILE é definido da seguinte forma:

WHILE ( CONDIÇÃO ) {

// BLOCO DE EXECUÇÃO

É importante ressaltar, que a estrutura while, tem apenas uma condição. Enquanto esta
condição for verdadeira, o bloco de execução será executado. Ao utilizar qualquer laço
de repetição, o programador deve se preocupar que exista de alguma forma, uma
operação que permita que a condição seja falsa e o programa saia da iteração.
Abaixo, vamos realizar o mesmo exemplo do FOR, utilizando o WHILE como comando
de iteração.

31
#include<stdio.h>

main(){

int i = 0;

while( i < 10 ) {

printf("Valor i e %d\n", i);

i++;

Como pode observar no código acima, os passos de inicialização e incremento foram


retirados da chamada do laço de repetição e adicionados dentro do programa.
O comando int i = 0, representa a inicialização da variável que está na condição do
WHILE. Este comando, foi adicionado fora do laço de repetição. Já o comando i++,
representa o incremento da variável i.
É importante ressaltar, que tanto no FOR como no WHILE, se a condição não for
verdadeira, o bloco de execução não é executado. Então existe possibilidade de em um
programa, o laço nunca ser executado, como no exemplo a seguir.

#include<stdio.h>

main(){

for ( int j = 200; j < 10 ; j++) {

printf("For i e %d\n", j);

int i = 100;

while( i < 10 ) {

32
printf("While i e %d\n", i);

i++;

No código anterior, as inicializações são int j = 200 e int i = 100. As condições para os
laços são j < 10 (200 < 10) e i < 10 ( 100 < 10) respectivamente. Note que nos dois casos,
as condições são falsas, com isso, o bloco de execução não será executado nenhuma
vez.

Estrutura Do..While (Faça..Enquanto)


O laço de repetição DO..WHILE é definido da seguinte forma:

DO {

// BLOCO DE EXECUÇÃO

} WHILE ( CONDIÇÃO );

Neste laço de repetição, é importante ressaltar que o bloco de execução será executado,
antes de verificar se a condição é verdadeira ou falsa. Se a condição for verdadeira, o
DO volta a ser executado. Se a condição for falsa, ele não executa novamente o DO. Com
isso, o bloco será executado sempre, ao menos uma vez, mesmo que a condição seja
falsa.
Como pode ver no código abaixo:

#include<stdio.h>

main(){

int i = 0;

do {

printf("Valor de i = %d\n", i);

33
i++;

}while( i < 10);

Como pode ver no código acima, o DO...WHILE possui uma estrutura muito parecida
com a estrutura do WHILE.
É importante ressaltar, que na grande maioria dos casos, o desenvolvedor pode escolher
a estrutura de repetição que ele tenha mais domínio para utilizar.

Exercícios
1. Crie um programa para ler um número inteiro e, utilizando um laço de repetição,
imprima a multiplicação deste número por todos os valores de 1 até 10.

2. Você sabe o que é fatorial de um número? Fatorial de um número, é o resultado da


multiplicação deste número, por todos os valores entre 1 e o próprio número.
Por exemplo 5! = 5 x 4 x 3 x 2 x 1 = 120
Então, faça um programa no qual o usuário informe um número e o programa
imprima o resultado fatorial deste número.

3. Vamos criar um jogo? Crie um programa, onde o usuário informe um número. Após
o número informado, o programa pede para “outro jogador” informar um número
qualquer. Se o número informado for diferente do primeiro número, o programa
deve continuar perguntando.

Vamos ajudar o jogado a adivinhar o número? Se o valor informado pelo segundo


jogador, for um valor 10% maior ou menor que o número em questão, o programa
deve informar uma mensagem “Muito bem, você está quase lá”.

4. Faça um programa para ler 10 idades diferentes. Ao término da leitura, o programa


deve imprimir a maior idade, a menor idade e a média entre as idades informadas.

34
Vetores e Matrizes
Um vetor é um espaço de memória, que permite armazenar muitos valores do mesmo
tipo ao mesmo tempo. O que separa cada um desses valores, é o seu índice.
Imagine uma sapateira com 5 prateleiras. Você pode guardar um sapato em cada uma
das prateleiras. No final, você vai ter na mesma sapateira, 5 pares de sapato. Mas o que
sapateira tem a ver com programação? Então, é exatamente assim que funciona um
vetor. Cada andar da sapateira, equivale a uma posição do vetor e cada sapato,
representa um valor para o vetor.
Agora, suponha que você precise armazenar 10 idades diferentes, em uma variável.
Você pode utilizar o vetor para isso.

Como na imagem anterior, temos os valores das 10 idades em cada elemento o vetor.
Pode-se observar, que a primeira idade possui valor 10 e está na posição 0 do vetor
idade. Já a última idade, possui o valor 50 e está na posição 9 do vetor idade.
É importante salientar, que ao criar um vetor com o tamanho X, os seus índices vão de
0 ate X-1. Ao tentar armazenar um valor maior que o tamanho do vetor, pode ocorrer
um erro.
No exemplo abaixo, vamos criar um vetor de 5 posições com diferentes valores.
Utilizaremos o for, para imprimir cada um dos valores.

#include<stdio.h>

main(){

35
int idades[5];

idades[0] = 10;

idades[1] = 32;

idades[2] = 28;

idades[3] = 21;

idades[4] = 15;

for(int i = 0; i < 5; i++){

printf("Idade e %d\n", idades[i]);

Ou, por exemplo, podemos criar um programa para ler os 5 números, armazenar no
vetor, e depois imprimir todos os números pares lidos.

#include<stdio.h>

main(){

int numeros[5];

for(int i = 0; i < 5; i++){

printf("Informe um numero: ");

scanf("%d", &numeros[i]);

36
}

int i = 0;

while(i < 5){

int ePar = numeros[i] % 2;

if( ePar == 0){

printf("Numero %d e par\n", numeros[i]);

i++;

Um outro exemplo de vetor, que já utilizamos desde o início do e-book, é o vetor de


char, para montar texto no nosso programa. Um texto equivale a um vetor de caracteres
e você pode, utilizando um laço de repetição, percorrer todo o texto buscando letra por
letra. Como no exemplo abaixo:

#include<stdio.h>

#include <string.h>

main(){

37
char nome[20] = "Rodrigo";

printf("Tamanho do texto: %d", strlen(nome));

for(int i = 0; i < strlen(nome); i++){

printf("\nLetra: %c", nome[i]);

No exemplo anterior, pela primeira vez, inclui a biblioteca #include<string.h>. Esta é


uma biblioteca, que possui funções para trabalhar com texto.
A inclusão de tal biblioteca, se fez necessária, para utilizar a função strlen, que retorna
o tamanho do texto dentro da String, de forma que o for não precise percorrer o
tamanho do vetor todo. Sendo então necessário, percorrer apenas o suficiente para o
tamanho do texto.

Exercícios
1. Desenvolva um programa, para armazenar 10 números em um vetor e depois
imprimir os valores de forma ordenada.

2. Uma String também é um vetor, porém, um vetor de caractere. Crie um programa


para ler um nome e imprimir se ele é um palíndromo.
Palíndromo, é quando uma palavra pode ser lida da esquerda para a direita ou da
direita para a esquerda. Por exemplo: Ana, Ovo e Arara.

38
3. Faça um programa para ler 10 idades e armazenar em um vetor. Depois, pergunte
ao usuário, qual a ideia mínima para acesso ao evento. Com isso, o programa precisa
percorrer o vetor e informar quais idades podem entrar neste evento.

E agora?
Você chegou até aqui. Muito bem! Conseguiu resolver todos os exercícios? Criou mais
exemplos para resolver, além dos apresentados no e-book?
Se a resposta foi sim, você está pronto para avançar até a próxima fase da trilha. Não
sabe qual é? Lá no Instagram da TheCoderBR tem a trilha do iniciante completa. Dá uma
olhada lá!
Mas Rodrigo, eu queria exercitar um pouco mais, antes de avançar. Ótimo! Me chama
no Instagram e vamos conversar. Deixa eu saber um pouco mais sobre você. Se for o
caso, te mando mais exercícios para praticar.
Obrigado por ter solicitado o e-book da TheCoderBR. É com prazer, que procuro ajudar
a transformar a vida das pessoas. Espero que a transformação na sua vida tenha
começado agora.
O caminho para se tornar um programador de alto nível não é fácil. Mas me acompanha,
que estarei com você e juntos vamos atingir esse objetivo.

39

Você também pode gostar