Lógica de Programação

Role para baixo

Desafio 2

No Desafio 1, você estudou como descrever e representar a sequência de passos lógicos ou algoritmos necessários para a execução de uma tarefa em qualquer sistema, seja um software, aplicativo, site etc.

Agora, nesta etapa, você irá mergulhar na parte computacional e conhecerá os recursos e comandos para resolver o Desafio 2:

  • Aplicar técnicas de programação e ferramentas para desenvolvimento do código.

Para isso, você estudará os seguintes conteúdos:

  • Tipos e estrutura de dados;
  • Variáveis e constantes;
  • Estrutura de decisão;
  • Estrutura de repetição;
  • Operadores aritméticos, lógicos e relacionais.

Técnicas de Programação

Agora que já sabemos o que é um algoritmo, precisamos conhecer algumas técnicas de programação.

Técnicas de programação são conceitos, recursos e boas práticas para o desenvolvimento de programas de computadores.

Com as técnicas de programação, como sintaxe e recursos específicos ou comuns entre as linguagens de programação, podemos criar as soluções para os nossos projetos, produtos e/ou serviços.

As técnicas de programação que abordaremos agora são:

  • tipos e estrutura de dados;
  • variáveis e constantes;
  • fluxograma;
  • estrutura de decisão;
  • estrutura de repetição;
  • operadores.

Tipos de dados

Os dados são todas as informações relevantes para a programação que devem ser armazenadas, pois serão usadas durante a execução do algoritmo ou programa.

Os dados podem ser de vários tipos, como caracteres ou números. Isso varia de acordo com o sistema operacional e a linguagem de programação usada.

Vamos conhecer três tipos de dados comuns para exemplificar.

Clique nas abas para ver os tipos de dados.

String

O dado do tipo "string" armazena caracteres e é muito comum nas linguagens de programação. Porém, há diferenças: algumas linguagens de programação são case-sensitive, isto é, diferenciam caracteres maiúsculos de minúsculos, como a linguagem C, o JavaScript e o PHP. Outras são case insensitive, como Pascal e Delphi, que não diferenciam maiúsculas de minúsculas.

Number

Para armazenar números, o JavaScript, por exemplo, usa o dado do tipo "number" para números menores que 253 e do tipo "BigInt" para números maiores que 253. No caso do PHP, o dado do tipo "int" armazena os números naturais e seus simétricos negativos, e o dado do tipo "float" é usado para números reais.

boolean

O dado do tipo "boolean" armazena apenas os valores true ou false (verdadeiro ou falso) e está presente em quase todas as linguagens de programação.

Tela 1

Estrutura de dados

Estruturas de dados definem a organização e suas operações (métodos de acesso) sobre um determinado conjunto de informações. Essa organização permite um melhor processamento e é usada para grandes volumes de dados.

Por exemplo: você deseja armazenar o nome de todos os alunos da sua turma. O sistema deve definir a organização (como salvar) e, consequentemente, o acesso ao conjunto de operações sobre esses dados (inserir ou remover um aluno, editar um nome ou trocar a posição de um dado).

Há vários tipos de estrutura de dados.
Clique nas abas para conhecer as mais comuns.

Uma lista armazena dados do mesmo tipo em sequência. Os dados não precisam estar necessariamente armazenados em sequência física na memória do computador, mas há uma sequência lógica entre eles. Cada elemento da lista é chamado de nó.

Em uma lista sequencial ou contígua, os nós estão em sequência lógica e física. Em uma lista encadeada, não há a necessidade da sequência física, apenas a sequência lógica deve ser mantida e o último nó é uma célula nula.

As listas são subdivididas em filas, pilhas e vetores, dependendo do acesso aos nós.

A fila é uma estrutura do tipo first in first out (FIFO), na qual o primeiro elemento a ser inserido será o primeiro a ser retirado. Assim como em uma fila de pessoas, o primeiro que chegou no balcão, será o primeiro a ser atendido, e assim por diante.

A pilha é uma estrutura do tipo last in first out (LIFO). O último elemento a ser inserido será o primeiro elemento a ser retirado. Podemos ter acesso ao topo dessa pilha, inserir um novo item, remover o item corrente. É como uma pilha de pratos: colocamos ou retiramos pratos no topo da pilha.

Um vetor é uma estrutura que armazena uma sequência de objetos do mesmo tipo, em posição consecutiva lógica e física, sendo possível alcançar qualquer item diretamente. Não é necessário passar pelo primeiro ou último elemento.

Variáveis e constantes

O valor dos tipos de dados é salvo em uma variável, ou seja, em um espaço de memória do computador.

As variáveis devem ser declaradas com nome, valor e tipo. O nome é atribuído ao declarar a variável. O valor pode ser atribuído ou calculado. O tipo depende do valor e da linguagem da programação usada.

A sintaxe dos comandos, inclusive o da declaração de variáveis, também depende da linguagem de programação usada.

Por exemplo: eu desejo armazenar o valor "Helena" em uma variável de nome "nomeDoEstudante". Como o valor é formado de caracteres, o tipo da variável deve ser string. No quadro a seguir, temos dois exemplos de declaração de variáveis em duas linguagens de programação diferentes (em preto). O texto em cinza claro são comentários (indicados pelo sinal //) e não fazem parte do comando.

									
										// linguagem X
										var nomeDoEstudante: String = "Helena";
										// var é a declaração de variável
										// nomeDoEstudante é o nome atribuído
										// string é o tipo de dado, pois é formado de caracteres
										// Helena é o valor

										//linguagem Y
										$nomedoestudante = 'Helena' 
										// $ é a declaração de variável
										// nomedoestudante é o nome atribuído
										// atribui o tipo de acordo com o valor
										// Helena é o valor
									
								

Durante a execução do algoritmo ou programa, o valor da variável pode mudar. Em um programa que calcula a idade atual de uma pessoa, por exemplo, a variável que guarda o valor da data atual mudará todos os dias.

Caso o valor de uma variável não possa ser alterado, indicamos que ela é uma constante. Como a data de nascimento de uma pessoa, no caso do programa que calcula a idade. Assim como a variável, a declaração da constante varia de acordo com a linguagem de programação usada.

Aplicando Algoritmos

As informações que fornecemos ao computador são os dados de entrada da nossa aplicação, um processamento é feito com base na informação fornecida, e a saída é o resultado a partir do processamento.

Os valores dos dados de entrada e saída são armazenados em variáveis ou constantes. O processamento é feito através da aplicação ou programa de computador, baseado nos algoritmos da programação.

E a partir dessas informações armazenadas, podemos criar condicionais em nosso código de processamento para seguirmos ações distintas em nossa programação.

E, assim como na declaração de variáveis e constantes, a sintaxe para cada condicional depende da linguagem de programação escolhida. Apesar das especificidades de cada linguagem, a lógica de programação é a mesma, ou seja, o planejamento macro do algoritmo é o mesmo, mas a escrita dos comandos é diferente.

Pense Nisso...

Imagine que uma concessionária vai realizar um evento de test drive e o cadastro de participantes é feito através do site. Independentemente da linguagem de programação escolhida para o sistema de cadastro, todas devem atender ao requisito de só aceitar participantes com habilitação permanente de motorista e, consequentemente, maiores de 18 anos.

E se um menor de idade tentar fazer o cadastro? Como fazer essa validação? Vamos aprender?

Estruturas de Decisão

As estruturas de decisão (também conhecidas como estruturas condicionais) usam comandos de decisão para testar uma ou mais condições e especificam uma instrução (ou um conjunto de instruções) se o resultado do teste for verdadeiro, e outra instrução (ou conjunto de instruções) caso o resultado do teste seja falso.

Em outras palavras, a estrutura de decisão é baseada em uma condição: se a condição for atendida, o programa segue um caminho e, se a condição não for atendida, o programa segue outro caminho. O fluxograma é a representação gráfica de uma estrutura de decisão.

Comandos de decisão

A grosso modo, um comando de decisão especifica uma condição a ser testada e indica uma instrução caso a condição seja atendida e outra instrução caso a condição não seja atendida. A sintaxe do comando varia de acordo com a linguagem de programação usada.

Vamos abordar os comandos mais comuns, que são:

  • SE (if)
  • SE/SE NÃO (if/else)
  • SE aninhado (else if)
  • CASO (switch)

Comando SE (if)

O mais simples dos comandos de decisão aparece nas linguagens de programação como if e pode ser traduzido como "SE". Note que aqui só há instrução caso a condição seja atendida, então não há ação específica e o restante do código é executado.

Clique nas abas abaixo para ver alguns exemplos.

if (condição) comando

SE (senha correta) exibir "bem-vindo"

											
												Var senha = a1234
												if (senha = a1234) console.log "bem-vindo"
												//console.log é um comando para exibir uma mensagem
											
										

Comando SE/SE NÃO (if/else)

Aqui, o comando "SE" vem acompanhado de uma instrução caso a condição não seja atendida, como uma bifurcação no caminho.

Clique nas abas abaixo para ver alguns exemplos.

if (condição) comando
else comando

SE (senha correta) exibir "bem-vindo"
SE NÃO exibir "senha incorreta"

											
												Var senha = a1234
												if (senha = a1234) console.log "bem-vindo"
												else console.log "senha incorreta"
											
										

Comando SE aninhado (if/else if/else)

E caso nenhuma das duas condições seja atendida, podemos utilizar o comando "SE" aninhado.

Clique nas abas abaixo para ver alguns exemplos.

if (condição) comando
else if (condição) comando
else comando

SE (login correto) exibir "digite a senha"
E SE (senha correta) exibir "bem-vindo"
SE NÃO exibir "login ou senha incorretos"

											
												Var login = fulano
												Var senha = a1234
												if (login = fulano) console.log "digite a senha"
												else if (senha = a1234) console.log "bem-vindo"
												else console.log "login ou senha incorretos"
											
										

Importante

Note que o código só vai verificar o segundo if se o primeiro for atendido, ou seja, só vai verificar se a senha está correta, se o login estiver correto. Se o login estiver incorreto, o código executará o else.

Se a estrutura fosse criada com dois if e um else, cada condição iria gerar uma mensagem na tela, pois a segunda condição seria verificada de qualquer maneira.

 

Comando CASO (switch)

Este comando é muito utilizado quando uma quantidade maior de condições é necessária para ser utilizada em sua aplicação, quando há uma variedade maior na sua quantidade de alternativas necessárias.

Clique nas abas abaixo para ver alguns exemplos.

    switch (condição)
    {
        caso 1:
             comando;
             pare;
        caso 2: 
             comando;
             pare;
        caso 3:
             comando;
             pare;
        padrão:
             comando;
    }
  verifique (fruta)
      caso banana: 
	   mostrar preço da banana;
	   pare;
      caso maçã: 
	   mostrar preço da maçã;
	   pare;
      caso uva: 
	   mostrar preço da uva;
	   pare;
      padrão:
	   mostrar "Não temos esse produto";
											
												switch (fruta)
												{
													case banana: 
														mostrar "Bananas custam R$10 a dúzia";
														break;
													case maçã: 
														mostrar "Maçãs custam R$15 reais a dúzia";
														break;
													case uva: 
														mostrar "Uvas custam R$20 o kilo";
														break;
													default:
														mostrar "Não temos essa fruta";
												}
											
										

Importante

A instrução opcional break associada a cada case garante que o programa saia da condicional switch e execute a instrução que segue logo após o switch. Caso break seja omitido, o programa continua a execução para a próxima instrução dentro de switch.

No exemplo, "fruta" é avaliado como "Bananas", o programa corresponde o valor com o case "Bananas" e executa a instrução associada. Quando break for encontrado, o programa para (break), saindo de switch e executa a instrução localizada após o switch. Se break fosse omitido, a instrução para "Maçãs" também seria executada.

Estruturas de repetição

As estruturas de repetição permitem repetir um comando ou um conjunto de instruções, de acordo com uma condição ou um contador.

Essas estruturas têm usos diversos, como tecidos com desenhos em padrão, renderização de estruturas metálicas, jogos em geral, embalagem de produtos em lotes, entre outros.

Pense nisso...

Por exemplo, quero um código para escrever a frase "Eu sou capaz" 10 vezes. Qual dessas opções parece ser melhor?

Digitar dez vezes o mesmo comando

Escreva "eu sou capaz"
Escreva "eu sou capaz"
Escreva "eu sou capaz"
Escreva "eu sou capaz"
Escreva "eu sou capaz"
Escreva "eu sou capaz"
Escreva "eu sou capaz"
Escreva "eu sou capaz"
Escreva "eu sou capaz"
Escreva "eu sou capaz"

OU

Usar uma estrutura de repetição

Escreva "eu sou capaz" 10 vezes

Assim como a declaração de variáveis ou os comandos de decisão, a sintaxe das estruturas de repetição depende da linguagem de programação usada.

Vamos abordar três comandos de repetição muito comuns:

  • ENQUANTO (while)
  • FAÇA ENQUANTO (do while)
  • PARA (for)

Comando ENQUANTO (while)

Este comando repete a instrução enquanto a condição for verdadeira. Quando a condição passa a ser falsa, os comandos do while não são executados e são executados os comandos após o while. A condição do while deve ser alterada dentro do while, como um contador.

Note que a condição é checada antes da instrução dentro do while.

Clique nas abas abaixo para ver alguns exemplos.

while (condição) {
           comando;
           altera contador;
}

ENQUANTO (contador < 10) {
       escreva "eu sou capaz"
       soma + 1 ao contador
}

											
												Var contador = 1
												while (contador < 10) { 
													console.log "eu sou capaz"
													contador = contador + 1
												}
											
										

Comando FAÇA ENQUANTO (do while)

Assim como o while, este comando repete a instrução enquanto a condição for verdadeira, porém a condição é verificada após a instrução do while. Portanto, se o contador for alterado dentro da instrução, isso afetará a verificação da condição.

O comando do while é usado quando é necessário executar o bloco de instruções interno pelo menos uma vez.

Clique nas abas a seguir para ver os exemplos.

do {
      comando
}
while (condição);

FAÇA {
           escreva "eu sou capaz"
           soma um ao contador
}
ENQUANTO (contador < 10)

											
												Var contador = 1
												do {
													console.log "eu sou capaz"
													contador = contador + 1
												}
												while (contador < 10)
											
										

Comando PARA (for)

O comando for é usado para repetir a instrução por um número determinado de vezes. É usado para repetições simples, pois em repetições mais complexas é recomendado usar o while.

É necessário usar uma variável como contador, que sofrerá um acréscimo ou decréscimo ao final do bloco de instruções interno.

Clique nas abas a seguir para ver os exemplos.

for (contador, condição, incremento) {
       comando
}

para (contador = 0, contador < 10, contador = contador + 1) {
         escreva "eu sou capaz"
}

											
												for (contador = 0, contador < 10, contador++){
													console.log "eu sou capaz"
												}											
											
										

Operadores

Operadores são símbolos que auxiliam na sintaxe de comandos, expressões e funções.

Clique nos botões para conhecer os tipos mais comuns de operadores.

Ilustração em cascata com várias etapas a serem clicadas.

aritméticos

Ilustração em cascata com várias etapas a serem clicadas.

relacionais

Ilustração em cascata com várias etapas a serem clicadas.

lógicos

Operadores aritméticos

São os símbolos que representam os cálculos básicos matemáticos.

Operação Sinal Exemplo Resultado
Adição + 1+10 11
Subtração - 10-1 9
Multiplicação * 10*2 20
Divisão / 10/2 5
Resta da divisão inteira % 10%4 2
Incremento ++ 6++ 7
Decremento -- 6-- 5

Operadores relacionais

São os símbolos que representam os cálculos básicos matemáticos.

Significado Operador Exemplo
Igual == X == 10
Diferente != X != 10
Menor que < X < 10
Menor ou igual que <= X <= 10
Maior que > X > 10
Maior ou igual que >= X >= 10

Operadores lógicos

São os símbolos que representam os cálculos básicos matemáticos.

Significado Operador Exemplo
E (AND) && (X < 10) && (X > 0)
OU (OR) || (X < 10 || X > 0)
Negação ! !true == false

Vamos Praticar

1. Assinale a alternativa correta. Qual destes itens é uma estrutura de condição?

  1. if
  2. while
  3. for
  4. contador
  5. true or false

Atenção

Selecione uma alternativa.

Parabéns! Resposta correta.

O if é um dos comandos possíveis para especificar uma condição a ser testada.

Ops! Tente novamente!

Lembre-se que um comando de decisão indica uma instrução caso uma condição seja ou não atendida.

Resposta incorreta.

A resposta correta é a alternativa a. O if é um dos comandos possíveis para especificar uma condição a ser testada.

2. Associe corretamente as características do sistemas GIT.

a. &&
b. ++
c. ||
d. !=
e. !

3. Marque verdadeiro ou falso para cada alternativa.

  1. if é um comando de repetição.
  2. Verdadeiro

          Falso

  3. while é um comando de repetição cuja condição é checada antes do bloco de instruções dentro do while.
  4. Verdadeiro

          Falso

  5. else é um comando de decisão e pode ser usado sozinho.
  6. Verdadeiro

          Falso

  7. for é um comando de repetição cujo contador não muda.
  8. Verdadeiro

          Falso

  9. case é uma estrutura de decisão usada junto ao comando switch.
  10. Verdadeiro

          Falso

Atenção

Selecione todas as alternativas.

Parabéns! Respostas corretas.

Você associou corretamente os operadores.

Ops! Tente novamente!

Retorne ao conteúdo e estude com atenção o item Operadores.

Respostas incorretas.

As respostas corretas são:

a. && AND

b. ++  Incremento

c. ||  OR

d. !=  Diferente

d. !   Negação

Atenção

Selecione todas as alternativas.

Parabéns! Respostas corretas.

Você assinalou corretamente as alternativas. O if é um comando de decisão. O comando else sempre vem precedido do if, para indicar a condição a ser atendida. O for exige uma variável como contador.

Ops! Tente novamente!

Retorne ao conteúdo e estude com atenção os comandos para estruturas de decisão e de repetição.

Respostas incorretas.

As alternativas b, e são verdadeiras e as alternativas a, c, d são falsas. O if é um comando de decisão. O comando else sempre vem precedido do if, para indicar a condição a ser atendida. O for exige uma variável como contador.

Neste desafio...

Lógica de programação | Desafio 2

Você percebeu que, para nos auxiliar na criação de algoritmos, usamos as técnicas de programação, como fluxogramas, estruturas de decisão e repetição, além de elementos e conceitos que nos auxiliam na sintaxe dos comandos, como tipos e estrutura de dados, variáveis, constantes e operadores.

No próximo desafio...

Realizaremos a implementação do código, utilizando uma linguagem de programação específica para criar nosso sistema.

Orientações de Navegação

Veja abaixo as orientações de como navegar pelo curso.

No topo da página é exibido o nome da unidade curricular.

Indicador de progresso da aula.

Acesso aos principais recursos da página.

Direciona ao início do curso, bem antes do primeiro desafio.

Menu com a relação das seções da unidade curricular.

Exibe as orientações de navegação.

Aumenta ou diminui o tamanho da fonte.

Exibe a tela de glossário da unidade.

Ajusta o contraste da tela.

Exibe a tela de créditos do curso.

Orientações para os exercícios:

Os exercícios contidos nos desafios do curso não fazem parte da composição da nota.
Para refazer os exercícios, atualize a página clicando no ícone         , localizado ao lado da barra de endereço do navegador, ou pressione a tecla F5.

Título da seção

Buscar outra seção dentro do desafio

Glossáriospellcheck

Comunidade de desenvolvimento: ramo ou ramificação do tronco principal.

Diagrama: um esquema, uma representação visual estruturada e simplificada de um conceito ou processo.

Multithread: Linguagem, processador ou sistema capaz de dividir, ler e executar linhas de comando simultaneamente.

Sistemas embarcados: programas e sistemas embutidos em microprocessadores, que executam tarefas específicas em um aparelho.

Créditos

CONFEDERAÇÃO NACIONAL DA INDÚSTRIA – CNI


Robson Braga de Andrade

Presidente

DIRETORIA DE EDUCAÇÃO E TECNOLOGIA – DIRET


Rafael Esmeraldo Lucchesi Ramacciotti

Diretor de Educação e Tecnologia

SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL – SENAI – CONSELHO NACIONAL


Robson Braga de Andrade

Presidente

SENAI – DEPARTAMENTO NACIONAL


Rafael Esmeraldo Lucchesi Ramacciotti

Diretor-Geral

Gustavo Leal Sales Filho

Diretor de Operações

SENAI – DEPARTAMENTO NACIONAL

UNIDADE DE EDUCAÇÃO PROFISSIONAL E TECNOLÓGICA – UNIEP

Felipe Esteves Morgado

Gerente Executivo

Luiz Eduardo Leão

Gerente de Tecnologias Educacionais

Anna Christina Theodora Aun de Azevedo Nascimento

Adriana Barufaldi

Bianca Starling Rosauro de Almeida

Laise Caldeira Pedroso

Coordenação Geral de Desenvolvimento dos Recursos Didáticos Nacionais

Senai - Departamento Regional de São Paulo


Ricardo Figueiredo Terra

Diretor Regional

Cassia Regina Souza da Cruz

Gerente de Educação

Izabel Rego de Andrade

Supervisora do Centro SENAI de Tecnologias Educacionais

Claudia Baroni Savini Ferreira

Coordenação do Desenvolvimento do Curso

Helena Strada Franco de Souza

Elaboração de Conteúdo

Adilson Moreira Damasceno

Orientador de Práticas de Educação a Distância

Paula Cristina Bataglia Buratini​

Coordenação da Produção do Curso

Cristina Yurie Takahashi​

Design Educacional

Cleriston Ribeiro de Azevedo​

Fabiano José de Moura

Juliana Rumi Fujishima

Ilustrações

Camila Ciarini Dias

Produção e Edição de Vídeos

Aldo Toma Junior

Luana Dorizo de Melo

Web Designers

Rafael Santiago Apolinário

Programação

Aviso

Parece que você já iniciou o curso, você pode: