Prévia do material em texto
16/05/2024, 16:27 Introdução à Programação para quem não é de exatas https://stecine.azureedge.net/repositorio/00212ge/07345/index.html?brand=estacio# 1/36 Introdução à Programação para quem não é de exatas Prof. Paulo Isaac Moura de Andrade Gomes Descrição Introdução aos conceitos de programação para desenvolvimento de algoritmos destinados a quem não é da área de exatas. Propósito Criar e desenvolver seus próprios projetos é uma característica cada vez mais desejada pelo mercado da Indústria 4.0. Por isso, é importante a familiaridade com os principais conceitos de programação para entendermos mais profundamente todo o seu conceito e suas principais propriedades. Objetivos Módulo 1 A matéria-prima da informação Reconhecer os principais tipos primitivos de informação e as relações entre si. 16/05/2024, 16:27 Introdução à Programação para quem não é de exatas https://stecine.azureedge.net/repositorio/00212ge/07345/index.html?brand=estacio# 2/36 Módulo 2 Controlando o sistema Reconhecer a construção de algoritmos com o auxílio de etapas lógicas. Introdução Foi o filósofo grego Aristóteles (384 a.C – 322 a.C.) que introduziu o estudo do raciocínio lógico. Para ele, qualquer ciência que desejasse ter um conhecimento verdadeiro e universal precisaria seguir alguns princípios, os princípios lógicos. Com isso, a lógica veio a ser entendida como um instrumento do correto pensar. Esse sentido é baseado na estrutura lógica. Para nós, quando algo “tem lógica”, significa que isso faz sentido, é uma argumentação racional. Cada vez mais organizações procuram trabalhadores que tenham razoável base lógica. Não é fácil conversar com pessoas que pensam e trabalham de forma não organizada de acordo com a lógica. Por outro lado, é bem mais fácil se comunicar e trabalhar com pessoas que pensam de forma lógica. A lógica era para ser algo comum no pensamento de pessoas formadas nas faculdades, mas infelizmente não é bem assim. Por outro lado, é possível e legal aprender lógica e aplicá-la tanto no pensamento quanto na programação de computadores, máquinas e robôs. A lógica pode ser encarada como uma “correção do pensamento” (FORBELLONE; EBERSPACHER, 2005, p. 1), já que seu foco é determinar quais operações são válidas e quais não são, analisando as formas e leis do pensamento. Sabendo que a forma mais complexa do pensamento é o raciocínio, a lógica estuda a “correção do raciocínio”. Isso significa que a nossa razão pode funcionar desordenadamente. Por isso, a lógica estuda e ensina a colocar “ordem no pensamento”. 16/05/2024, 16:27 Introdução à Programação para quem não é de exatas https://stecine.azureedge.net/repositorio/00212ge/07345/index.html?brand=estacio# 3/36 Partindo do pressuposto que muitas das nossas tarefas diárias são uma sequência que obedece a determinada ordem, a partir de um estado inicial, passando por um processo de tempo finito, e que nesse processo produzimos resultados esperados e bem definidos, poderíamos classificar nossas tarefas cotidianas como um algoritmo que utiliza o conceito da lógica. Neste conteúdo, vamos identificar, analisar e transformar vários dados lógicos, transformando-os em informação. Com isso, será possível entender como dar comandos aos computadores. A partir dos conceitos vistos aqui, poderemos compreender a base de todas as linguagens de programação. 1 - A matéria-prima da informação Ao �nal deste módulo, você será capaz de reconhecer os principais tipos primitivos de informação e as relações entre si. Como são geradas as informações? Confira no vídeo o conceito de dados e informações, bem como o de algoritmos. 16/05/2024, 16:27 Introdução à Programação para quem não é de exatas https://stecine.azureedge.net/repositorio/00212ge/07345/index.html?brand=estacio# 4/36 Dados constroem informação O mundo atual tem uma abundância de dados. As empresas buscam dados. O governo trabalha com dados. Os pesquisadores coletam dados. Mas os dados brutos não são muito úteis. Imagine que você tenha chegado em casa e visto um recado na sua mesa com a palavra “azul”. Você provavelmente sabe o que significa essa palavra, sabe o que é a cor azul, mas ela, assim, sozinha, fica completamente sem contexto. Agora imagine que você tenha visto um recado no qual estava escrito: “Você viu meu cachecol azul?”. Nossa! Parece que agora tudo fez sentido! A palavra “azul” entrou em um contexto e isso lhe deu todo um significado. Colocando no contexto da linguagem de programação, a palavra “azul” sozinha exemplifica o conceito de dado (ou seja, um elemento isolado), enquanto a frase “Você viu meu cachecol azul?” é um exemplo de informação, pois foi agregado valor (ou seja, sentido) à palavra “azul”. 16/05/2024, 16:27 Introdução à Programação para quem não é de exatas https://stecine.azureedge.net/repositorio/00212ge/07345/index.html?brand=estacio# 5/36 Assim como nós nos planejamos passo a passo para executar determinadas tarefas, os computadores manipulam dados e informações básicas, transformando-as em uma sequência de passos com um objetivo bem definido, ou seja, as transformam no que chamamos de algoritmos. Os algoritmos podem ser escritos de diversas maneiras e podem ser de tamanhos variados, dependendo do seu grau de complexidade. Sabendo disso, vamos nos aproximar da maneira como o computador “enxerga” essas informações, dividindo-as em quatro tipos primitivos: Inteiro Real Caractere Lógico Veja os tipos de modelos que podemos adotar para escrever um algoritmo de soma entre dois números inteiros: Exemplo de modelos de construção de algoritmos a partir de diagrama de blocos, pseudocódigo e linguagem de programação. Inteiros Quando falamos de números inteiros (que não possuem casas decimais), quer sejam eles positivos, neutros ou negativos, estamos transmitindo uma informação numérica. Uma frase comum com um tipo de número inteiro é utilizada quando falamos a idade de alguém, por exemplo: “Fulano tem 30 anos”. Essa é uma frase que contém uma informação do tipo inteiro. Essas informações são específicas para armazenamento de números, que posteriormente poderão ser utilizados para cálculos. São exemplos de frases com informações do tipo inteiro: “Faltam 15 km para chegarmos”. “Emagreci 1 kg”. “Minha mãe já me ligou 12 vezes”. 16/05/2024, 16:27 Introdução à Programação para quem não é de exatas https://stecine.azureedge.net/repositorio/00212ge/07345/index.html?brand=estacio# 6/36 Reais Qualquer informação numérica que contenha casas decimais pode ser caracterizada como uma informação do tipo real (negativa, positiva ou neutra). Geralmente usamos no nosso dia a dia quando fazemos compras no supermercado, por exemplo: “O quilo do feijão está R$ 7,90”. Essas informações são mais precisas que as informações com números inteiros, pois geralmente tratam de valores que não podem ser rejeitados em um cálculo, como valores, tamanho, peso, coordenadas geográficas etc. Seguem alguns exemplos de uso de informações numéricas do tipo real: “O bebê nasceu com 3,780 kg”. “O valor da prestação fica em R$ 1.299,90”. “As coordenadas são: 31.77856198940516, 35.22964013994606”. Caracteres Qualquer informação que pode conter um conjunto de caracteres que combinam letras e números (alfanuméricos), numéricos (0, ..., 9), alfabéticos (letras maiúsculas e minúsculas) e especiais (!, #, %, @, ...). São informações que podem conter letras, números e/ou caracteres especiais, por exemplo: “Então ele disse: Paz seja convosco”. “Pare de fazer isso!”. “A senha é: #Trocar123”. Lógico Qualquer informação que pode assumir apenas dois resultados: verdadeiro ou falso, sim ou não, alto ou baixo, boa e má etc. Com isso em mente, podemos atribuir alguns exemplos: “A janela pode estar aberta ou fechada”. “Esse som está muito alto”. “Ela é uma boa pessoa”. Algoritmos Um algoritmo é compreendido como uma sequência finita de passos que levam à execução de uma tarefa. Um algoritmo pode seralgo tão simples como uma receita de bolo, quanto algo complexo como um código para processamento de um banco de dados. Apesar de 16/05/2024, 16:27 Introdução à Programação para quem não é de exatas https://stecine.azureedge.net/repositorio/00212ge/07345/index.html?brand=estacio# 7/36 propósitos bem diferentes, esses exemplos têm algo em comum: as tarefas devem ter um número finito de passos, e não devem ter ambiguidades na sua definição, elas devem ser claras e precisas. Os algoritmos devem ter a explicação do que deve ser realizado em cada uma das suas fases, bem como a sequência na qual elas devem ser realizadas. A seguir, veremos um exemplo de algoritmo utilizado para fazer um bolo: Modo de preparo 1. Bata as claras em neve e reserve. 2. Misture as gemas, a margarina e o açúcar até obter uma massa homogênea. 3. Acrescente o leite e a farinha de trigo aos poucos, sem parar de bater. 4. Por último, adicione as claras em neve e o fermento. 5. Despeje a massa em uma forma grande de furo central untada e enfarinhada. 6. Asse em forno médio 180 °C, preaquecido por aproximadamente 40 minutos, ou até que ao furar o bolo com um garfo este saia limpo. Ao contrário do que se pode pensar, o conceito de algoritmo não teve como seu primeiro objetivo atender às necessidades da computação. Pelo contrário, a lógica de programação é apenas uma das vertentes de aplicação dos algoritmos. Na realidade, há vários outros casos que podem exemplificar o uso de algoritmos para a realização de tarefas rotineiras, como a receita de um bolo, a troca de uma lâmpada, a organização de uma agenda etc. Para que uma máquina execute determinada ação, essa ação precisa ser detalhada passo a passo, de forma que seja entendida pelo computador. Para isso, recorremos àquilo que se chama programa. Nesse sentido, um programa de computador nada mais é do que um algoritmo escrito de uma forma que a máquina entenda, o que chamamos de linguagem de programação. Os algoritmos também desempenham a função de serem modelos para programas, pois sua linguagem é considerada também como uma escrita intermediária entre a linguagem humana e as linguagens de programação, sendo uma ótima ferramenta para validar dados lógicos e tarefas a serem automatizadas. Pseudocódigo 16/05/2024, 16:27 Introdução à Programação para quem não é de exatas https://stecine.azureedge.net/repositorio/00212ge/07345/index.html?brand=estacio# 8/36 Os algoritmos podem ser escritos em uma linguagem mais informal chamada pseudocódigo. Como o próprio nome já diz, ele é algo que se parece muito com um código de determinada linguagem de programação, mas de fato ainda não é. Esse nome é uma alusão à posterior implementação em uma linguagem de programação, ou seja, quando formos programar em uma linguagem, adaptaremos o pseudocódigo para a linguagem que vamos utilizar. Por isso os algoritmos são independentes das linguagens de programação. Ao contrário de uma linguagem de programação, não existe uma sintaxe (forma de escrever nosso código) rígida de como deve ser escrito o algoritmo. Assim sendo, o nosso pseudocódigo deve ser facilmente compreendido e interpretado, bem como deve ser possível replicá-lo em outra linguagem de programação. Exemplo de um pseudocódigo desenvolvido para realizar uma média aritmética. Quando vamos utilizar pseudocódigo, devemos lembrar que essa forma na qual os algoritmos são representados deve ser bem detalhada. Ela deve conter os tipos de dados usados bem definidos, assim como deve apresentar o fluxo de processamento dos algoritmos. Por ser muito parecida com a forma na qual os programas são escritos, encontra muita aceitação. Por essa representação ser muitas vezes bastante parecida com a escrita das linguagens de programação, é possível sua tradução praticamente direta para uma ou mais linguagens específicas, sendo muito utilizada nas fases iniciais na construção de projetos e/ou ambientes multidisciplinares. Alimentação de algoritmos Confira no vídeo como é feita a alimentação de algoritmos e o que é diagrama de blocos. 16/05/2024, 16:27 Introdução à Programação para quem não é de exatas https://stecine.azureedge.net/repositorio/00212ge/07345/index.html?brand=estacio# 9/36 Comandos de entrada e saída Entrada de dados Na programação, pode ser entendida como um dado que vem de fora para dentro de um algoritmo. De forma resumida, é todo e qualquer dado que vem do meio externo para o programa, quer ele seja um caractere, número real ou inteiro, ou lógico. Isso acontece quando você pressiona uma tecla em um micro-ondas ou envia alguma mensagem em alguma rede social. Fazendo isso, você está enviando dados do meio externo para um computador, e esses dados são transferidos para um programa. Por isso, está ocorrendo uma entrada de dados. Vamos imaginar uma calculadora. Nela, você precisa fazer a soma. Quando você pressiona as teclas dos números e das operações você está inserindo dados. A maioria dos algoritmos precisam ser “alimentados” com dados que vêm do meio externo para que atinjam o resultado desejado. Saída de dados A saída de dados é o que o programa mostra como resultado de um processamento. Quando falamos de saída de dados, estamos falando da externalização de um resultado. Esse resultado pode ter sido gerado por meio de combinações de variáveis, operadores e/ou constantes. Poderíamos tomar como exemplo de saída de dados uma impressão de um documento, a exibição de um texto ou uma música. Constantes Um dado é constante quando não sofre nenhuma variação no decorrer do tempo, ou seja, seu valor não pode se modificar desde o início até o fim da execução do algoritmo. As constantes podem ter qualquer um dos tipos de dados, número inteiro, número real, caractere ou lógico. Caso nós tentemos alterar o valor de uma constante, ocorrerá um erro em nosso algoritmo. É muito útil usar esse conceito em valores que raramente mudam ou não, como cálculo de impostos, cálculos matemáticos etc. Outro exemplo clássico de uma informação com valor constante ocorre quando falamos a respeito da nossa data de nascimento. Os valores por ela representados não podem ser alterados depois de definidos. 16/05/2024, 16:27 Introdução à Programação para quem não é de exatas https://stecine.azureedge.net/repositorio/00212ge/07345/index.html?brand=estacio# 10/36 Tipos de constantes Conforme o seu tipo, a constante é classificada como sendo numérica, lógica ou literal. É importante ressaltar que uma vez definida, não vamos conseguir atribuir nela dados de entrada, tampouco mudar o seu tipo. Podemos tomar como exemplo a nossa moeda, o real. Aqui no Brasil, em qualquer lugar, R$ 100,00 é um valor constante, não importa se você estiver no município mais ao norte ou mais ao sul do Brasil. Outros exemplos podem ser vistos a seguir: “25°C” “Pare” “1 km” Variáveis Pense que você tem uma caixa, e nessa caixa é possível guardar qualquer um dos dados que você quiser, quer seja ele numérico, literal, caractere ou lógico. É exatamente isso que uma variável representa. É a forma mais simples de armazenamento de dados. Uma variável, na programação, é uma unidade de dados que pode alterar seu valor armazenado. Uma variável pode ser o valor da sua conta de energia ao longo dos meses ou mesmo a contagem de seus batimentos cardíacos. Um dado é tido como variável quando ele tem a possibilidade de ser armazenado e/ou alterado em algum instante no decorrer da execução do algoritmo em que ele está. As variáveis têm duas finalidades importantes: Primeira A escolha dos nomes e tipos de dados que serão inseridos nela, o que melhora a visualização e o desenvolvimento do código. Segunda A facilitação na hora de escrever programas ou funções que podem se utilizar desses valores armazenados pela entrada de dados. Imagine que você utilize uma calculadora para fazer uma soma, por exemplo. Os números que você coloca para executar determinada 16/05/2024, 16:27 Introduçãoà Programação para quem não é de exatas https://stecine.azureedge.net/repositorio/00212ge/07345/index.html?brand=estacio# 11/36 operação são entradas de dados do tipo numérico em variáveis do tipo numérico. Tipos de variáveis As variáveis podem ser armazenadas a partir de três tipos principais de dados: numéricos, caracteres ou lógicos, independentemente da linguagem de programação. Tipos de variáveis Descrição Exemplo Numéricas Usadas para armazenamento de números. Podem ser utilizados para cálculos. São subdivididas em inteiros ou reais. As variáveis do tipo Inteiro são para armazenamento de números inteiros e as reais são para o armazenamento de números com casas decimais. Temperatura corporal, velocidade de um automóvel, número residencial Caracteres Específicas para armazenamento de conjunto de caracteres (os números aqui são literais). Cadastro de nomes, Endereços Lógicas Armazenam somente dados lógicos que podem ser verdadeiros ou falsos. Autenticação de login, verificação de objetos ligados ou desligados Tabela: Tipo de variáveis. Elaborada por Paulo Gomes. Comando de atribuição Quando fornecemos um valor a uma variável, atribuímos a ela um tipo. O tipo do dado que vamos inserir deve ser compatível com o tipo da 16/05/2024, 16:27 Introdução à Programação para quem não é de exatas https://stecine.azureedge.net/repositorio/00212ge/07345/index.html?brand=estacio# 12/36 variável. Vamos tomar como exemplo uma variável do tipo numérico que armazena números telefônicos. Podemos atribuir a essa variável apenas valores numéricos do tipo inteiro, pois só assim ela será capaz de comportá-lo. Atenção! As variáveis só podem guardar valores de um mesmo tipo, sendo assim, elas também podem armazenar valores numéricos, lógicos ou literais. Diagrama de blocos É um modelo de representação para as diferentes direções que um algoritmo pode tomar em sua fase de desenvolvimento. O diagrama de blocos é uma forma visual de representar um conjunto de ações com determinada finalidade. Com o auxílio dele, podemos construir uma sequência de elementos que vão facilitar a visualização dos passos de um processamento. Tais elementos são predeterminados e possuem seus significados bem definidos, sendo estes representados por símbolos convencionais para que possamos visualizar e compreender todas as etapas de um processamento. Veja a seguir os símbolos que podemos utilizar: Símbolo Descrição Terminal: representação do início ou fim do processamento. Processamento: representação da execução de operações ou ações como cálculos, atribuições de valores das variáveis, dentre outras. Entrada de dados: representação da entrada de dados para as variáveis. Saída de dados: representação da saída de informações ou resultados. Decisão: representação de uma ação lógica, que caso retorne valores verdadeiros ou falsos realizará sequências diferentes. Conector: este símbolo é utilizado para interligar partes do fluxograma ou desviar o fluxo para um determinado trecho. 16/05/2024, 16:27 Introdução à Programação para quem não é de exatas https://stecine.azureedge.net/repositorio/00212ge/07345/index.html?brand=estacio# 13/36 Símbolo Descrição Seta: este símbolo orienta a sequência de execução ou leitura. Pode ser empregado na horizontal ou vertical. Tabela: Símbolos usados no diagrama de blocos. Elaborada por Paulo Gomes. O fluxograma pode ser representado tanto horizontal como verticalmente, tendo seus dados e informações declarados na parte interna dos símbolos como uma regra implícita. Vamos tomar como exemplo uma pessoa que deseja saber como estão seus gastos com o cartão de crédito, pois ela pretende guardar dinheiro para fazer um investimento. Para entender melhor como andam as suas finanças, ela quer calcular a média de gastos com o cartão de crédito nos últimos 3 meses. Caso a média dos valores esteja igual ou acima de R$ 4000,00, ela cortará custos para se reorganizar financeiramente. Sabendo que essa pessoa gastou R$ 5.928,00, R$ 3567,00 e R$ 4133,00 nos meses anteriores, faremos o seguinte diagrama de blocos: Esquema de desenvolvimento de um algoritmo a partir de um diagrama de blocos. Podemos observar que nosso primeiro passo foi criar as variáveis numéricas do tipo real para que elas pudessem armazenar os dados numéricos referentes aos valores gastos com o cartão de crédito da pessoa em questão. Após esse armazenamento, utilizamos operadores aritméticos para encontrar a resposta do nosso problema. Operações verdadeiras e falsas Confira no vídeo a teoria e a prática das operações verdadeiras e falsas, e também sobre operadores. 16/05/2024, 16:27 Introdução à Programação para quem não é de exatas https://stecine.azureedge.net/repositorio/00212ge/07345/index.html?brand=estacio# 14/36 Proposições As proposições são palavras ou símbolos que expressam um pensamento com um sentido completo e indicam afirmações de ideias ou fatos. Elas podem ser conceituadas como simples ou compostas. As proposições simples apresentam apenas uma sentença, enquanto as proposições compostas podem apresentar duas ou mais proposições simples. Veja alguns exemplos: Simples Aquela casa é bonita. Composta Aquela casa é bonita e está à venda. Operadores aritméticos Os operadores aritméticos, na computação, são um conjunto de símbolos que representa as operações básicas da matemática. São eles: Operador Função exemplos + Adição 5+1, X+Y - Subtração 5+6-2, B-A * Multiplicação 3*5, C*D / Divisão 9/3, A/B Tabela: Símbolos de operadores aritméticos. Elaborada por Paulo Gomes. Existem ainda outros 4 tipos de operadores lógicos, a saber: potenciação (pot(x,y)), radiciação (rad(x)), resto da divisão (mod) e quociente da divisão (div). Como o uso de tais operadores é pouco 16/05/2024, 16:27 Introdução à Programação para quem não é de exatas https://stecine.azureedge.net/repositorio/00212ge/07345/index.html?brand=estacio# 15/36 convencional, iremos nos concentrar apenas nos 4 operadores anteriores. Prioridades de operadores aritméticos Supostamente estamos criando um programa que faz o cálculo da média das 4 notas dos alunos em determinada escola. Como escreveríamos essa equação? Provavelmente faríamos assim: Aluno Lucas 1ª AV 8,5 2ª AV 7,5 3ª AV 9 4ª AV 10 Resultado 8,75 16/05/2024, 16:27 Introdução à Programação para quem não é de exatas https://stecine.azureedge.net/repositorio/00212ge/07345/index.html?brand=estacio# 16/36 Para resolver a equação, primeiro somamos as notas e depois dividimos o resultado por 4, ou seja, seguimos uma hierarquia para poder chegar ao resultado correto. Assim como nas expressões matemáticas, a resolução de operadores computacionais também segue uma ordem, sendo esta: Prioridade 1º 2º 3º 4º Operadores parênteses pot rad * / div mod + - Operadores relacionais Os operadores relacionais têm a sua utilização em comparações entre dois valores de um mesmo tipo. Tais valores são representados por constantes, variáveis ou expressões aritméticas e sempre retornam valores lógicos (verdadeiro ou falso). Os operadores relacionais são comuns para construirmos equações. Esses operadores são comumente representados pelos seguintes símbolos: Operador Função Exemplos = Igual a 4 = 4, A = B > Maior que 4 > 3, A > B < Menor que 1 > 3, A > B <= Menor ou igual a 8<=9, X <= Y (8, 5 + 7, 5 + 9 + 10) 4 = 8, 75 16/05/2024, 16:27 Introdução à Programação para quem não é de exatas https://stecine.azureedge.net/repositorio/00212ge/07345/index.html?brand=estacio# 17/36 Operador Função Exemplos >= Maior ou igual a 7 >= 5, X >= Y <> Diferente de 2 <> 3, X <> Y Tabela: Operadores relacionais e exemplos. Elaborada por Paulo Gomes. Como o resultado obtido entre uma relação é sempre um valor lógico, podemos pegar o mesmo tipo de dado e compará-los, veja: 4 é maior que 5 Falso. 3 > 1 Verdadeiro. 2*3 = 36/6 Verdadeiro. O resultado será verdadeiro ou falso à medidaque o valor das expressões satisfaça a comparação do(s) operador(es). Operadores lógicos Têm sua utilidade para combinar resultados de proposições, retornando com um resultado verdadeiro ou falso. Vamos utilizar três operadores lógicos para formação de novas proposições a partir de outras proposições lógicas simples. Os operadores lógicos são: não Termo em inglês do operador: not Função: Negação 16/05/2024, 16:27 Introdução à Programação para quem não é de exatas https://stecine.azureedge.net/repositorio/00212ge/07345/index.html?brand=estacio# 18/36 e Termo em inglês do operador: and Função: Conjunção ou Termo em inglês do operador: or Função: Disjunção Resumidamente, temos: Uma expressão e é verdadeira quando todas as condições são verdadeiras. Uma expressão ou é verdadeira se pelo menos uma condição for verdadeira. Uma expressão não inverte o valor da expressão ou condição, se verdadeira inverte para falsa e vice-versa. Supostamente estamos querendo fazer uma salada para ter uma alimentação mais saudável. Você está indo ao mercado e pensa: “Se tiver alface e tomate, eu faço a salada”. Quando faremos a salada? Se prestarmos atenção ao conectivo e, vamos perceber que a expressão só será verdadeira se os dois termos forem verdadeiros. Veja outros exemplos de proposições lógicas: Falso 2 > 3 e Verdadeiro 5 < 6 ou 2 > 7 Tabela verdade 16/05/2024, 16:27 Introdução à Programação para quem não é de exatas https://stecine.azureedge.net/repositorio/00212ge/07345/index.html?brand=estacio# 19/36 É o conjunto de todas as possibilidades que podemos combinar entre os valores de diversas variáveis lógicas, as quais se encontram em apenas duas situações (verdadeiro ou falso), e um conjunto de operadores lógicos. A seguir estão todas as sentenças criadas pelos operadores lógicos (e, ou e não). 1ª situação Operador 2ª situação Resultado Verdadeiro e Verdadeiro Verdadeiro Verdadeiro e Falso Falso Falso e Verdadeiro Falso Falso e Falso Falso Verdadeiro ou Verdadeiro Verdadeiro Verdadeiro ou Falso Verdadeiro Falso ou Verdadeiro Verdadeiro Falso ou Falso Falso Verdadeiro não Falso Falso não Verdadeiro Tabela: Sentenças criadas por operadores lógicos. Elaborada por Paulo Gomes. Prioridades de operadores lógicos Assim como os operadores aritméticos, os operadores lógicos também possuem uma hierarquia na hora da resolução de proposições compostas por mais de um conectivo. Veja a precedência entre os operadores lógicos: Prioridade 1º 2º 3º Operadores 16/05/2024, 16:27 Introdução à Programação para quem não é de exatas https://stecine.azureedge.net/repositorio/00212ge/07345/index.html?brand=estacio# 20/36 Não E Ou Falta pouco para atingir seus objetivos. Vamos praticar alguns conceitos? Questão 1 Qual das frases a seguir carrega uma informação do tipo lógico? Parabéns! A alternativa B está correta. A frase “Esta maçã está boa” está inserida em um contexto lógico, pois há apenas 2 situações em que a maçã pode estar: boa ou ruim. Questão 2 Qual das proposições compostas pode ser considerada verdadeira? A Lucky fez uma bagunça na cama! B Esta maçã está boa. C Ela correu 3,5 km. D Preserve o meio ambiente. E Ele tem 2 metros de altura. 16/05/2024, 16:27 Introdução à Programação para quem não é de exatas https://stecine.azureedge.net/repositorio/00212ge/07345/index.html?brand=estacio# 21/36 Parabéns! A alternativa C está correta. A proposição simples 15/3 = 5 satisfaz a regra do conectivo ou, uma vez que ela é verdadeira, não importando se a próxima proposição será falsa. 2 - Controlando o sistema Ao �nal deste módulo, você será capaz de reconhecer a construção de algoritmos com o auxílio de etapas lógicas. A 3 > 4 e 2 < 3 B 4 <> 5 e 7 <> 7 C 15/3 = 5 ou 7 + 1 = 9 D 7 < 6 e 4/2 = 2 E não verdadeiro e não falso 16/05/2024, 16:27 Introdução à Programação para quem não é de exatas https://stecine.azureedge.net/repositorio/00212ge/07345/index.html?brand=estacio# 22/36 Estruturas de controle Assista ao vídeo e conheça as principais estruturas de controle. Fluxo de execução de algoritmos Durante a criação de algoritmos, utilizamos os conceitos de entrada e saída de dados, constantes, variáveis, expressões lógicas, relacionais e aritméticas, além de relacionar esses conceitos em comandos que representam todas essas ações. Para que essas ações aconteçam, deve existir uma relação entre o modo como serão executadas e seu andamento, ou seja, seu fluxo de execução. Isso quer dizer que essas ações serão controladas por meio de estruturas sequenciais, de seleção e repetição, além de combinações entre elas. Com o auxílio dessas estruturas de controle de fluxo, podemos criar nossos algoritmos para solucionar problemas de diferentes complexidades. Comandos compostos Podemos atribuir a um conjunto de comandos o conceito de comando composto quando temos uma condição de expressão lógica simples ou composta testada anteriormente. Todos os comandos que estão imediatamente após ela são chamados de comandos compostos. Ele pode ser um conjunto de zero ou mais comandos (ou instruções) simples ou compostos, como atribuições e instruções de entrada ou saída de dados. Estruturas sequenciais Estrutura sequencial de um algoritmo é um conjunto de ações executadas em um padrão linear na mesma sequência que são escritas, isto é: de cima para baixo e da esquerda para a direita. Nela, cada comando é executado somente após o término do comando anterior. 16/05/2024, 16:27 Introdução à Programação para quem não é de exatas https://stecine.azureedge.net/repositorio/00212ge/07345/index.html?brand=estacio# 23/36 Trechos de estruturas sequenciais de algoritmos em diferentes formas de escrita. Estruturas de seleção Nesse tipo de estrutura, o fluxo de instruções depende do resultado da avaliação de uma ou mais condições lógicas (verdadeiro ou falso). Uma estrutura de seleção permite que um grupo de ações sejam executadas quando determinadas condições são ou não satisfeitas. Na prática, o fluxo do algoritmo vai conferir se a condição para executar o comando é verdadeira ou falsa, tomando um caminho diferente para cada uma delas. Isso significa que essas estruturas não são necessariamente sequenciais, pois se utilizam de instruções que podem fazer o algoritmo prosseguir de maneiras diferentes, de acordo com as decisões lógicas tomadas em função dos dados ou resultados anteriores. As principais estruturas de seleção são conhecidas como estruturas de seleção simples, composta e encadeada. Escolhendo os caminhos Assista ao vídeo e conheça detalhes importantes sobre a escolha de caminhos. Seleção simples Uma estrutura de seleção simples pode ser empregada quando precisamos testar certa condição antes de executar uma ação. Nessa estrutura, uma única condição (expressão lógica) é avaliada por vez. Veja: 16/05/2024, 16:27 Introdução à Programação para quem não é de exatas https://stecine.azureedge.net/repositorio/00212ge/07345/index.html?brand=estacio# 24/36 Se o resultado da avaliação for verdadeiro, então determinado conjunto de instruções (comando composto) é executado. Se o resultado da avaliação for falso, o algoritmo segue o fluxo de execução e prossegue normalmente para a primeira instrução seguinte. A estrutura de seleção simples é utilizada nas linguagens de programação sob o termo se (condição) e então (instrução). Com isso, temos a seguinte relação: a condição é avaliada. Se o resultado for verdadeiro, então a sequência de comandos após ela é executada. Ao término de sua execução, o fluxo do algoritmo prossegue pela instrução seguinte à construção, ou seja, o primeiro comando após seu fim. No nosso exemplo com o diagrama de blocos, a construção do tipo se pode ser encarada como uma bifurcação em que há dois caminhos que podem ser seguidos. A execução do algoritmo (então), prosseguirá necessariamente por um deles. Essa escolha é feita em função do resultado da expressão que,caso seja verdadeiro, prosseguirá por um caminho e, caso seja falso, seguirá pelo fluxo normal do algoritmo. Exemplos de estrutura de decisão simples. Seleção composta Quando temos situações em que duas alternativas dependem de uma mesma condição, uma com o resultado “verdadeiro” e outra com o resultado sendo “falso”, usamos a estrutura de seleção composta. A 16/05/2024, 16:27 Introdução à Programação para quem não é de exatas https://stecine.azureedge.net/repositorio/00212ge/07345/index.html?brand=estacio# 25/36 estrutura de seleção composta funciona de forma semelhante à estrutura de seleção simples, tendo apenas uma diferença: Em “se/então/senão” Um comando composto será executado independentemente da condição, seja o resultado de uma condição “verdadeira” ou “falsa”. Em “se/então” Um comando composto será executado caso o resultado da condição seja “verdadeiro”. Com isso, podemos tomar mais de uma ação, pois agora temos uma condição “falsa” para executar outros comandos compostos. Esse tipo de seleção pode ocorrer quando queremos fazer comparações entre as respostas, tomar diferentes decisões baseadas em dados lógicos. Vamos tomar como exemplo dois números inteiros A e B. Vamos criar um algoritmo para compará-los e ver qual dos dois números é maior. A nossa estrutura composta pode ficar assim: Representação de uma estrutura composta escrita de três formas diferentes. Perceba que as representações acima têm a seguinte condição: se o número A for maior que o número B, o algoritmo entenderá que a condição é verdadeira e deve exibir a mensagem “O número A é maior que o número B”. Caso essa condição não seja atendida, ou seja, se ela for falsa, o algoritmo exibirá a mensagem “O número A é menor que o número B”. Atenção! Diferentemente do exemplo sobre estrutura de seleção simples em que o algoritmo não tomava nenhuma ação, na seleção composta ele toma uma decisão diversa, pois o termo senão também é uma instrução. 16/05/2024, 16:27 Introdução à Programação para quem não é de exatas https://stecine.azureedge.net/repositorio/00212ge/07345/index.html?brand=estacio# 26/36 Aninhamento Em uma estrutura se/então/senão é possível utilizarmos mais de uma linha de comando internamente, ou até mesmo outras estruturas se/então/senão. Existem situações em que os algoritmos para a tomada de uma decisão criam uma série de ramificações, onde cada caminho leva a um conjunto de ações. Nesses casos podemos recorrer à utilização de várias estruturas internas compostas por se/então/senão introduzidas umas dentro das outras, comumente chamadas de aninhamentos. Exemplo de aninhamento. Seleção encadeada Quando estamos desenvolvendo um algoritmo com muitas possibilidades de seleção simples e/ou composta, vamos precisar agrupá-las. Para isso, comandos de seleção devem ser encadeados para termos uma maior eficiência no nosso algoritmo, de forma que a nossa seleção tenha um resultado esperado. Nas estruturas de decisão encadeadas, uma estrutura de condição é aninhada dentro de outra, como bloco “verdadeiro” ou “falso”. Nesse caso, para que a estrutura de condição mais interna seja avaliada, é necessário que determinada condição seja satisfeita na estrutura de condição mais externa. Chamamos de estruturas de decisão encadeadas, quando uma estrutura de decisão também está localizada dentro do lado falso da outra. Qualquer que seja o termo usado para identificar a estrutura, o importante é que esse formato com uma estrutura de seleção dentro da 16/05/2024, 16:27 Introdução à Programação para quem não é de exatas https://stecine.azureedge.net/repositorio/00212ge/07345/index.html?brand=estacio# 27/36 outra permita fazer a escolha de apenas um entre vários comandos possíveis. Seleção encadeada homogênea Esse tipo de seleção ocorre quando a estrutura tem um padrão lógico e todas as condições precisam ser satisfeitas para chegarem ao resultado. Após cada então existe apenas outro se, não há a presença de senão. Baseado nisso, vamos observar a lógica algorítmica de um aplicativo elaborado para um restaurante. Vamos convencionar que os caracteres “//” significam apenas comentários feitos no algoritmo para melhor entendimento dele. Com isso, temos: Exemplo de pseudocódigo com seleção encadeada heterogênea antes de ser otimizado. É importante ressaltar que esse algoritmo só será executado quando todas as condições forem ao mesmo tempo verdadeiras; portanto, seria equivalente a escrever, simplificadamente: se condição 1 e condição 2 e condição 3, então mostre o resultado. Isso deixaria o nosso código mais eficiente e mais fácil de entender. Vejamos como ele ficaria depois dessa atualização: 16/05/2024, 16:27 Introdução à Programação para quem não é de exatas https://stecine.azureedge.net/repositorio/00212ge/07345/index.html?brand=estacio# 28/36 Pseudocódigo pós-otimização. Seleção encadeada heterogênea Podemos construir uma estrutura de seleção de diversas formas, sendo que, ao encadearmos várias seleções, as diferentes possibilidades de construção tendem a um número elevado. Quando não conseguimos identificar um padrão lógico de construção em uma estrutura de seleção encadeada, dizemos que ela é uma estrutura de seleção encadeada heterogênea. Para compreendermos melhor, vamos imaginar um programa que calcule descontos em compras efetuadas obedecendo aos seguintes percentuais: 2% de desconto se a compra for menor ou igual a R$ 2.000,00. 3% de desconto se a compra for maior que R$ 2.000,00 e menor ou igual a R$ 3.000,00. 5% de desconto se for maior que R$ 3.000,00 e menor ou igual a R$ 5.000,00. 10% de desconto para compras acima de R$ 5.000,00. Exemplo de uma seleção encadeada heterogênea em um algoritmo. No exemplo é mostrado como uma estrutura condicional pode possibilitar a representação dessas seleções. Estamos falando do encadeamento heterogêneo do se. Esse tipo de encadeamento ocorre 16/05/2024, 16:27 Introdução à Programação para quem não é de exatas https://stecine.azureedge.net/repositorio/00212ge/07345/index.html?brand=estacio# 29/36 porque dependendo do nosso valor de compra, teríamos necessariamente que passar por todos os códigos até chegar ao desconto desejado. Estruturas de repetição Confira no vídeo os tipos de repetição mais usados para programar. Tipos de repetição Utilizamos os comandos de repetição quando desejamos que um conjunto de instruções ou comandos sejam executados um número definido ou indefinido de vezes, ou enquanto certo processo estiver em execução. Os comandos de repetição podem repetir todo nosso algoritmo, ou parte dele. Eles são úteis para simplificar nosso código. Vamos pensar em um algoritmo que calcula a média aritmética de uma turma com 50 alunos. Caso não utilizássemos os comandos de repetição, teríamos que copiar o código 50 vezes, inviabilizando ter um código eficiente. Com os comandos de repetição, podemos repetir o fluxo de execução quantas vezes acharmos necessário. Esses trechos que se repetem são chamados de laços de repetição, ou loops. O número de repetições pode ser indeterminado, mas necessariamente finito. Laços contados Os laços contados são utilizados quando conhecemos previamente o número de vezes que vamos executar certo conjunto de comandos. Esse tipo de laço nada mais é que uma estrutura que possui mecanismos para contar o número de vezes que o corpo do laço (ou seja, o comando composto em seu interior) é executado. O exemplo anterior do cálculo da média dos alunos é um exemplo de laço contado, pois sabíamos a quantidade exata de alunos dos quais teríamos que calcular a média. Porém, existem casos em que não sabemos a quantidade de repetições que vamos executar, então, nesses casos, não é recomendado utilizar o método de laços contados. Repetir enquanto 16/05/2024, 16:27 Introdução à Programação para quem não é de exatas https://stecine.azureedge.net/repositorio/00212ge/07345/index.html?brand=estacio# 30/36 É uma estrutura de controledo fluxo de execução que nos deixa repetir diversas vezes um mesmo trecho do algoritmo até que retorne com uma condição falsa. Essa estrutura testa um trecho do código indefinidamente, retornando com os valores lógicos, sempre verificando antes de cada execução se é “permitido” executar o mesmo trecho. Caso a condição seja verdadeira, o comando composto é executado e, ao seu término, o nosso algoritmo retorna ao teste condicional. Com isso, o teste repetir enquanto retornará ao início da condição que estamos testando enquanto esta for verdadeira. Quando a condição for falsa, o fluxo de execução prosseguirá normalmente pelas instruções posteriores do algoritmo. Para realizar a repetição com teste no início, utilizamos a estrutura enquanto, que permite um bloco ou uma ação primitiva ser repetida enquanto determinada condição for verdadeira. O modelo genérico desse tipo de repetição é: Modelo esquemático do comando repetir enquanto. Uma vez que nosso código está dentro do loop, devemos tomar cuidado para que ele não entre em um loop infinito. Esse tipo de construção deve, em algum momento, ter a sua condição avaliada como falsa. Caso isso não ocorra, o programa permanecerá indefinidamente no interior do laço, ou seja, seu código não terá mais continuidade. Temos também a situação em que o nosso comando de repetição retorna com o primeiro resultado “falso”. Quando isso ocorre, os comandos compostos não são executados nenhuma vez. 16/05/2024, 16:27 Introdução à Programação para quem não é de exatas https://stecine.azureedge.net/repositorio/00212ge/07345/index.html?brand=estacio# 31/36 Repetir até que Nesse comando, o primeiro o bloco de operações é executado ao menos uma vez e somente depois o teste de condição é feito. Caso a condição retorne com um valor “verdadeiro”, o fluxo do programa continua normalmente. Caso contrário, são processados novamente os comandos antes do teste da condição. Ou seja, o comando repetir até que repete o mesmo trecho do algoritmo até que a sua condição seja verdadeira. Modelo esquemático do comando repetir até que. Esse tipo de lógica ocorre em uma situação de jogo de cartas, por exemplo. Uma pessoa pega uma carta aleatória em um baralho e pede para você tentar adivinhar a carta. A lógica é: ele só vai parar de perguntar qual é a carta quando você acertar, ou seja, ele vai repetir a pergunta sobre qual é a carta até você acertar. Comparação entre as estruturas de repetição Todas as estruturas de repetição apresentadas cumprem o papel de possibilitar a criação de laços de repetição dentro de um algoritmo. É importante conhecer bem as características de cada uma, para melhor utilizá-las, veja: 16/05/2024, 16:27 Introdução à Programação para quem não é de exatas https://stecine.azureedge.net/repositorio/00212ge/07345/index.html?brand=estacio# 32/36 Estrutura Condição Quantidade de execuções Condição de existência Enquanto Início 0 ou muitas Condição verdadeira Repita Final Mínimo 1 Condição falsa Tabela: Características das estruturas de repetição. Elaborada por Paulo Gomes. Falta pouco para atingir seus objetivos. Vamos praticar alguns conceitos? Questão 1 A respeito da seleção simples e composta, é correto afirmar que A na seleção simples, o uso do se/então/senão é obrigatório, ou seja, temos duas condicionais que podem ser seguidas, dependendo do retorno do dado lógico. B no fluxo de execução na seleção composta, dois caminhos podem ser seguidos, caminhos esses que são feitos a partir de duas condições diferentes. C na seleção simples, o uso do se/então é opcional, podendo ser utilizado o se/então/senão no caso em que temos dois comandos compostos, gerando duas condições diferentes. D 16/05/2024, 16:27 Introdução à Programação para quem não é de exatas https://stecine.azureedge.net/repositorio/00212ge/07345/index.html?brand=estacio# 33/36 Parabéns! A alternativa E está correta. A alternativa está correta, pois a seleção composta tem, por definição, a presença de uma condição e duas instruções que serão executadas a partir de um resultado lógico (verdadeiro ou falso) da condição. Questão 2 Quanto às estruturas de repetição, é correto afirmar que na seleção simples, ocorre a presença de se/então, possuindo apenas elementos compostos na condição então. E a seleção composta é formada por uma condição (se); e duas instruções (então e senão). A a estrutura repetir enquanto vai ocorrer, no mínimo, 1 vez antes de verificar o código novamente, tendo em vista que ela verifica a condição após uma primeira execução, minimizando as chances de erro. B a estrutura repetir até que tem o risco de não ter seus códigos executados nenhuma vez. C podemos atribuir valores indefinidos aos laços contados, desde que esses valores sejam feitos de números inteiros. D a estrutura repetir enquanto pode não ocorrer nenhuma vez, pois ela verifica a condição antes de cada execução de um trecho do código. Caso essa condição retorne com um valor falso, os comandos compostos não serão executados. a estrutura repetir até que é executada somente após o teste de execução. Caso essa condição 16/05/2024, 16:27 Introdução à Programação para quem não é de exatas https://stecine.azureedge.net/repositorio/00212ge/07345/index.html?brand=estacio# 34/36 Parabéns! A alternativa D está correta. A estrutura repetir enquanto, por definição, verifica a condição antes de executar os comandos compostos. Se os valores lógicos dessa condição retornarem com valor “falso”, o fluxo de execução do algoritmo prosseguirá para a próxima instrução, não executando os comandos compostos presentes na condição verdadeira da estrutura. Considerações �nais Como vimos, a ciência do raciocínio lógico é muito vasta. Tivemos um aprofundamento de nossas percepções sobre lógica, dados e informações e suas inter-relações com o fluxo de execução e as estruturas de seleção de algoritmos. Verificamos que nossos algoritmos podem ser encontrados em algo simples como nossa casa até em locais mais complexos, como em um site de compras. Vimos também estruturas de repetições que dependiam de condições lógicas para serem executadas e estruturas de repetição simples, que podem somar notas de alunos. Foi possível observar novas formas de criar nossos algoritmos e escrevê-los, bem como visualizar os principais processos de criação de algoritmos usados em linguagens de programação. Com os fundamentos da lógica de programação será bem mais fácil compreender a prática da programação, independentemente da linguagem. As linguagens de programação podem mudar, evoluir, e isso vem acontecendo há anos. Entretanto, a lógica por trás das mais diversas linguagens é praticamente a mesma. Quem domina tais fundamentos tem um pensamento mais organizado, sequenciado e sua comunicação tende a ser mais assertiva e precisa. Trabalhar com pessoas lógicas é algo que empresas e governo vêm buscando. Por isso, vale a pena se esforçar, não desistir, pois todos podem desenvolver a lógica ao ponto de programarem. E retorne um valor “verdadeiro”, o fluxo de execução retorna ao início da condição, caso essa condição retorne um valor “falso”, o fluxo de execução continua normalmente. 16/05/2024, 16:27 Introdução à Programação para quem não é de exatas https://stecine.azureedge.net/repositorio/00212ge/07345/index.html?brand=estacio# 35/36 Podcast Para encerrar, ouça e aprenda um pouco mais sobre a importância da programação para pessoas que não são de exatas. Explore + Confira as indicações que separamos especialmente para você! Entre na plataforma Silent Teacher e coloque em prática todos os conceitos de lógica de programação. São várias fases que podem ser feitas com desafios mais complexos a cada nível. Procure no YouTube o vídeo Por que todos deveriam aprender a programar. Você vai entender melhor a importância da programação a partir de famosos executivos como Mark Zuckerberg, Bill Gates, dentre outros. Visite aplataforma do Scratch para desenvolver mais a lógica de programação e criação de algoritmos com auxílio de low-code. Referências FORBERLLONE, A. L.; EBERSPACHER, H. F. Lógica de programação: a construção de algoritmos e estrutura de dados. 3. ed. São Paulo: Pearson Prentice Hall, 2005. cap. 1, p. 1. 16/05/2024, 16:27 Introdução à Programação para quem não é de exatas https://stecine.azureedge.net/repositorio/00212ge/07345/index.html?brand=estacio# 36/36 Material para download Clique no botão abaixo para fazer o download do conteúdo completo em formato PDF. Download material O que você achou do conteúdo? Relatar problema javascript:CriaPDF()