Baixe o app para aproveitar ainda mais
Prévia do material em texto
1 2 COMO SE TORNAR UM FLUENTE DESENVOLVEDOR A arte de resolver problemas através da programação de computadores 1ª edição, dezembro de 2019 3 Isenção de Responsabilidade Todas as informações contidas neste livro aqui são provenientes de nossas experiências e aprendizado pessoais com a programação de computadores ao longo de vários anos. Muito embora nós tenhamos nos esforçado ao máximo para garantir a precisão e a mais alta qualidade dessas informações acredite que todas as técnicas e métodos aqui ensinados sejam altamente efetivos para qualquer pessoa desde que implementadas corretamente, não existe qualquer garantia de qualquer resultado, e nós não nos responsabilizamos pela implementação do leitor. Sua situação e/ou condição particular pode não se adequar perfeitamente aos métodos e técnicas ensinados neste livro. Assim, você deverá utilizar e ajustar as informações deste livro de acordo com sua situação e necessidades. Todos os nomes de marcas, produtos e serviços mencionados neste livro são propriedades de seus respectivos donos e são usados somente como referência. Além disso, em nenhum momento neste livro há a intenção de difamar, desrespeitar, insultar, humilhar ou menosprezar você leitor ou qualquer outra pessoa, cargo ou instituição. Caso qualquer escrito seja interpretado dessa maneira nós gostariamos de deixar claro que não houve intenção nenhuma de nossa parte em fazer isso. Caso você acredite que alguma parte deste livro seja de alguma forma desrespeitosa ou indevida e deve ser removida ou alterada, você pode entrar em contato diretamente conosco utilizando o e-mail contato@ casaldev.com.br Direitos Autorais Este livro está protegido por leis de direitos autorais. Todos os direitos sobre o livro são reservados. Você não tem permissão para vender este livro nem para copiar / reproduzir o conteúdo deste livro em sites, blogs, jornais ou quaisquer outros veículos de distribuição e mídia. Qualquer tipo de violação dos direitos autorais estará sujeita a ações legais. mailto:contato%40casaldev.com.br?subject= mailto:contato%40casaldev.com.br?subject= 4 Autores Helena Oliveira e Júlio Felipe, também conhecidos como Casal Dev, são desenvolvedores de software há mais de 10 anos, tendo desenvolvido diversos projetos para grandes empresas como Banco do Brasil e Tractebel Engie. Já ensinaram centenas de pessoas a desenvolverem suas próprias soluções através da programação de computadores. Completamente focados e comprometidos com resultados, eles atuam com metas diárias e semanalmente compartilham vídeos em seu canal no YouTube e no seu Perfil no Instagram sobre a sua forma de agir e pensar, conceitos e tutoriais de programação, disseminando assim, a habilidade de programar. Acreditam que quanto mais uma pessoa desenvolve essa habilidade, mais ela pode fazer a diferença e impactar. Se você gostaria de aprender mais com Helena Oliveira e Júlio Felipe, por favor visite o site: https://casaldev.com.br https://casaldev.com.br 5 Sumário INTRODUÇÃO ........................................................................................................6 Principais conceitos de lógica de programação ................................... 10 Tipos primitivos de dados .............................................................................. 21 Variáveis e Constantes ...................................................................................... 26 Expressões ............................................................................................................. 32 Comandos de Entrada e Saída, Blocos e Comentários ...................... 38 Estruturas de Controle ..................................................................................... 41 Conclusão .............................................................................................................. 47 6 INTRODUÇÃO Você já ouviu a seguinte frase de Steve Jobs: “Todo mundo deveria aprender a programar um computador porque isso ensina você a pensar”? Essa frase, que ficou conhecida em 2013 pela campanha da Code.org, resume bem a importância que aprender a programar tem para a sociedade e para o próprio desenvolvimento das pessoas. A razão mais óbvia para aprender a linguagem dos computadores é estar preparado para o mercado de trabalho, seja para atuar como programador atendendo a uma demanda crescente por este profissional, seja para atuar em outras áreas. Você pode não querer virar um escritor profissional, ainda assim, deve achar essencial aprender a ler e a escrever. Essa deve ser a nova lógica para o aprendizado da linguagem de programação. Por isso, a disciplina tida como uma das habilidades essenciais do século 21 já é vista como a nova alfabetização ou o novo inglês. Aprender programação é se desenvolver multidisciplinarmente, já que requer colocar em prática uma série de teorias ensinadas em física, matemática e química, alguns idiomas, como o inglês, além de várias linguagens de programação. Há até quem chame essa forma específica de raciocinar de “pensamento computacional”, que atribui os fundamentos da computação nas mais diversas áreas do conhecimento, combinando matemática, lógica e algoritmos, em uma nova forma de pensar sobre o mundo. O pensamento computacional traz, inclusive, a metodologia para solucionar problemas, que parte da divisão da questão em uma sequência de partes menores. Afinal, não tem como fugir: tomar decisões e resolver problemas são ações quase que obrigatórias em nossas vidas (ainda que não sejam sempre lá muito bem vindas!). 7 E programar é, no fundo, exatamente isso. O processo de aprendizagem tem mais a ver com o processo de superar problemas do que criar algoritmos complicados. Aprender a programar é ter nas mãos o “poder” de melhorar ou facilitar a vida das pessoas, por meio da criação de softwares e aplicativos que possam resolver problemas reais da sociedade e tornar o mundo um lugar melhor para se viver. E assim como não precisa ser um gênio para aprender a ler e a escrever, também não precisa ser um gênio para aprender a programar. Ou seja, todos podem aprender. Mas quando eu digo aprender, é aprender mesmo. Não é apenas saber repetir códigos, mas saber resolver problemas. É se tornar um desenvolvedor fluente. O que é um desenvolvedor fluente Ser um desenvolvedor fluente é ter fluência em programação de computadores. Fluência não é apenas saber repetir, mas ser capaz de ter um diálogo autêntico com o computador com o objetivo de resolver problemas. Ou seja, é dominar a arte de resolver problemas de forma eficaz usando a programação de computadores como principal ferramenta. É você entender com clareza como o computador funciona e como conversar com ele para instruí-lo da melhor forma possível. É também você resolver o problema com foco na solução e não na linguagem de programação em si. O que você alcança quando se torna um desenvolvedor fluente Melhora as habilidades de raciocínio lógico, criatividade, resolução de problemas, organização. • Se torna capaz de não apenas consumir tecnologia, mas também criá-la e interagir com ela. • Se torna capaz de desenvolver um programa que te auxilia em algum problema do dia a dia. 8 Mas eu não vou mentir para você. Para alcançar esses resultados é preciso esforço. Esses resultados são totalmente possíveis e qualquer um é capaz de alcançá-los, mas você precisa se dedicar. Como se tornar um desenvolvedor fluente Quando se está aprendendo programação, é comum se perder em alguns detalhes como a sintaxe e alguns conceitos e então acabar tendo uma certa dificuldade na hora da prática. Mas isso acontece quando não temos uma fundação bem sólida. Na construção de uma casa um dos elementos mais importantes é a fundação. A fundação é a parte da construção que suporta o peso e mantem fixo e nivelado o prédio no terreno. Se não estiver de acordo com as cargas que deve suportar, trará graves problemaspara o resto da estrutura (paredes, tetos, etc.). Na programação não é diferente. Se a fundação for bem-feita, os riscos de desmoronar lá na frente diminuem drasticamente. Portanto, para você se tornar um desenvolvedor fluente, você precisa construir sua fundação em programação, entendendo de verdade cada conceito de lógica de programação e desenvolvendo a habilidade de colocá-los em prática, deixando você assim preparado para construir algo mais avançado sem risco de se perder em algum detalhe. Além disso, você precisa também desenvolver o hábito de sempre pensar na solução do problema independente da linguagem de programação escolhida. Faça primeiro o desenho da solução e somente depois escolha a linguagem e a forma de implementação da solução. Mesmo se você já teve algum contato com a programação, recomendo fortemente que você revise os conceitos de lógica de programação, pois isso pode preencher as lacunas que foram deixadas para trás quando se aprende a programar sem uma base bem construída e estruturada. As pessoas que mais tem sucesso no aprendizado da programação são os que mais se dedicam à fundação. É importante também, junto com o aprendizado de lógica de 9 programação, aprender o básico de uma linguagem de programação que seja simples e fácil de aprender. Assim, você desenvolverá a habilidade de colocar em prática cada conceito aprendido. Mas o objetivo não é se aprofundar na linguagem e sim nos conceitos que a envolvem, pois a partir daí você terá a capacidade de migrar com facilidade para qualquer outra linguagem de programação que você queira. Para exemplificar e colocar em prática os conceitos aprendidos, eu recomendo a linguagem Python, que é ótima para iniciantes por ser ao mesmo tempo poderosa e fácil de aprender. Python foi planejada para ser produtiva e de fácil entendimento, sendo ideal para scripts e desenvolvimento rápido de aplicativos em muitas áreas na maioria das plataformas. Por ter uma sintaxe mais clara, direta e elegante, além de uma digitação dinâmica, Python permite que se foque mais na lógica e na resolução do problema do que nas especificidades da linguagem, permitindo assim ao programador ser mais produtivo. Para te ajudar a construir de forma sólida a sua fundação em programação e você se tornar um desenvolvedor fluente, vamos te mostrar aqui neste livro os principais conceitos de lógica de programação e como colocá- los em prática com a linguagem Python. No início, você pode pensar que esses conceitos parecem misteriosos e tediosos, mas com algum conhecimento e prática, você poderá comandar seu computador como uma varinha mágica para realizar proezas incríveis. A programação é uma habilidade poderosa, não apenas útil, não apenas boa para sua carreira, não apenas para ganhar dinheiro, mas também para o poder. E o que eu quero para você neste livro é que você comece a ser um criador de programas e deixe de ser apenas um usuário deles. Para a maioria das pessoas, o computador é apenas um utensílio em vez de uma ferramenta. Mas aprendendo como programar, você terá acesso a uma das ferramentas mais poderosas do mundo moderno e você vai se divertir ao longo do caminho. 10 PRINCIPAIS CONCEITOS DE LÓGICA DE PROGRAMAÇÃO O que é um programa de computador Você pode ter ouvido uma frase como essa antes: “Um programa de computador é um conjunto de instruções”. Aqui está um problema. Isso soa como uma daquelas frases que podem ser tecnicamente verdadeiras, mas é um tanto inútil, assim como a frase “o cérebro humano tem 80% de água”. Porque você ouve essa frase, mas vê um programa complexo como o Photoshop, ou o Excel ou algo reproduzindo vídeo de alta definição ou um jogo em 3D e pensa: “Sim, mas isso não pode ser apenas um conjunto de instruções”. Mas é exatamente isso que são, todos eles. Todo programa de computador é uma série de instruções. Uma sequência de pequenos comandos separados, um após o outro. Agora, talvez haja cinco instruções contidas em um programa, talvez 5.000, talvez 5 milhões. Quanto mais complexo é o programa, mais instruções ele tem. Cada instrução está dizendo ao computador para fazer algo muito pequeno, mas muito específico e a arte de programar é pegar uma ideia maior e dividi-la em cada uma dessas etapas. E uma ótima notícia é que todo mundo pode fazer isso. Todos os programas usam instruções básicas como blocos de construção. Aqui estão alguns dos mais comuns: “Faça isso; depois faça aquilo. ” “Se esta condição for verdadeira, execute esta ação; caso contrário, faça aquela ação. ” “Faça essa ação esse número de vezes.” “Continue fazendo isso até que essa condição seja verdadeira.” 11 Você pode combinar esses blocos de construção para implementar decisões mais complexas também. A maioria das declarações de programação é bem curta, apenas algumas palavras. Agora, exatamente quais palavras, números e pontuação usados dependem da linguagem de programação. Algumas linguagens querem que cada uma das suas declarações termine com um ponto e vírgula, como terminar uma frase, já outras não, você apenas vai para a próxima linha e começa a escrever a próxima declaração. Algumas linguagens são todas maiúsculas, algumas são todas em minúsculas, outras não se importam. Agora, entender as regras de cada idioma é entender a sintaxe de uma linguagem de programação. Assim, a programação é a capacidade de pegar uma ideia, dividi-la em suas partes individuais e saber como escrever essas partes na linguagem de programação que você está usando no momento, escrevendo suas instruções na ordem correta, usando a linguagem correta, a sintaxe correta. Mas que linguagem? Bem, às vezes você escolhe uma linguagem e às vezes é meio que escolhido para você. Neste livro nós vamos usar a linguagem Python. O que é linguagem de programação Quando um profissional da área da computação deseja escrever um programa, certamente ele irá procurar uma linguagem de programação, pois esta é a ferramenta que lhe permite fazer isto. Então vamos entender agora o que é uma linguagem de programação. Linguagem de Programação é uma linguagem escrita e formal que especifica um conjunto de instruções e regras usadas para gerar programas de computador. Javascript, C++, Ruby, PHP, Python, Java, C e C# são exemplos de linguagens de programação. 12 Um programa de computador, também conhecido como software, é uma sequência de instruções que descrevem uma tarefa específica, ou seja, você passa ao computador uma série de itens que ele deverá executar para atender a um objetivo. Mas lembre-se, o computador é uma máquina limitada. Ela só fará o que você pedir, e na ordem exata em que você pedir; portanto, se você programá-la de forma incorreta, sua execução será incorreta. Fique sempre atento, e teste todas as suas instruções. Como uma linguagem de programação “conversa” com o computador? Bem, para compreendermos melhor tudo isto, teremos que entender a forma como o computador compreende uma informação. Vamos lá? O computador é uma máquina que interpreta nossos comandos a fim de executar tarefas de forma ágil e correta, porém a única linguagem compreendida por ele é a linguagem de máquina (ou linguagem binária), que corresponde à utilização dos dígitos 1 ou 0 para codificar dados enviados. Por meio dos bits, toda e qualquer informação é enviada e interpretada pelo computador. 13 Bit (Binary Digit) - Corresponde à menor unidade de informação com que um computador trabalha (envia ou recebe). Representa a passagem de tensão pelos circuitos, e, na prática, os algarismos 0 (não passou tensão) ou 1 (passou tensão) são utilizados para simbolizar esta situação. Na linguagem de máquina, cada conjunto de 8 bits representa um caractere, e é conhecido como Byte (Binary Term). Mas se nós não falamos a linguagem do computador e ele também não fala a nossa, como nos comunicamos? E como escrever programas para que ele nos atenda? Bit = 1 representa presençade tensão elétrica Bit = 0 representa ausência de tensão elétrica 14 Linguagens de Baixo e Alto Nível Antes, só era possível escrever programas utilizando a linguagem de máquina, ou linguagens próximas a esta, que são denominadas Linguagens de Baixo Nível. Obviamente, essa escrita era demorada e exigia grande conhecimento dos desenvolvedores. Ao longo dos anos, os programas foram ganhando reconhecimento no mercado, e, para que as pessoas gostassem de utilizar as linguagens, os códigos foram se aproximando da linguagem humana, o que permitiu que diversas pessoas, com o conhecimento específico, pudessem trabalhar manuseando estas ferramentas. Passamos a utilizar linguagens que possuem comandos parecidos aos que conhecemos em nossa conversação, que são denominadas Linguagem de Alto Nível. Olá 15 Sintetizando Quanto mais próxima da linguagem de máquina, mais baixo nível é a linguagem de programação. Quanto mais próxima da linguagem humana, mais alto nível é a linguagem de programação. Espere um pouco! Então, eu escrevo os comandos em linguagem próxima ao que eu compreendo, e ele entende na linguagem dele? Como isto é possível? Quem traduz? Você já sabe que, em um computador, o grande facilitador para a interface com a máquina é o sistema operacional. Para as linguagens de programação, além desse sistema, elas também precisam de um programa que permita a elas compreender, ou falar, a linguagem da máquina, e enviar as instruções necessárias. Vamos aos tipos possíveis... Ao escrevermos um programa em uma linguagem de programação de alto nível, estamos, na verdade, escrevendo o programa fonte, ou seja, instruções compreensíveis a nós. Os programas podem compilar ou interpretar, permitindo assim a “tradução” do código escrito. A seguir explicaremos cada um. O Compilador #include "stdafx.h" #include <iostream> #include "string" using namespace std; int main() { int a, b, sum; cout << "Digite o primeiro numero: "; cin >> a; cout << "Digite o segundo numero: "; cin >> b; sum = a + b; cout << "Total: " << sum << endl; system("pause"); } MeuPrograma.cpp MeuPrograma.exe PR O G RA M A F O N TE PR O G RA M A O BJ ET O O programa objeto cria um programa executável para que o usuário possa utilizar. COMPILADOR ENTRADA DE DADOS SAÍDA DE INFORMAÇÕES 16 O compilador utiliza o programa fonte, e, a partir deste, gera um programa objeto. Na verdade, ele traduziu as instruções para a linguagem de máquina. É importante ressaltar que as linguagens possuem regras de escrita (sintaxe), por isso, se alguma dessas regras for quebrada, o compilador não consegue gerar o programa objeto. Isto só será possível se não houver nenhum erro de compilação, ou seja, se a escrita do programa fonte atender a todas as exigências da linguagem. A partir do programa objeto, é possível executar e utilizar o código escrito pelo programador. O programa objeto cria um programa executável para que o usuário possa utilizar o programa final. O Interpretador O interpretador também processa um programa fonte, porém, ao invés de gerar um programa objeto, ele executa diretamente cada instrução, gerando seu resultado final. A interpretação só será interrompida quando o interpretador encontrar uma instrução que não atende às suas regras. 17 Processamento Híbrido A utilização das duas formas (compilação e interpretação) permite que o processamento seja híbrido. Um exemplo desse tipo é a linguagem Java. Ao escrevermos um programa fonte em Java, este deverá ser compilado, o que gerará uma linguagem intermediária (bytecode), e depois será interpretado por uma máquina virtual. Os bytescodes podem ser interpretados em qualquer máquina, mesmo que ela não os tenha gerado. Programar, na prática, é escrever um texto que será transformado em um software. Esse texto deve ser escrito em uma linguagem de programação e é chamado de código, mas não é um código lido apenas por uma máquina, é um código que pode ser lido por um ser humano. Para usar uma linguagem de programação é preciso escrever códigos com ela. Você terá que aprender seus elementos e as regras de como combiná-los. 18 O que é lógica de programação “Significa o uso correto das leis do pensamento, da ordem da razão e de processos de raciocínio e simbolização formais na programação de computadores, objetivando racionalidade e o desenvolvimento de técnicas que cooperem para a produção de soluções logicamente válidas e coerentes, que resolvam com qualidade os problemas que se deseja programar” André Luiz Villar Forbellone Henri Frederico Eberspacher E o que isso significa? Lógica é a técnica utilizada para desenvolver instruções em uma sequência para atingir determinado objetivo. É a organização e planejamento de instruções, em um algoritmo, com o objetivo de tornar viável a implementação de um programa ou software. A lógica de programação nada mais é do que a organização coerente das instruções do programa para que seu objetivo seja alcançado. Esse é o grande desafio do programador: montar a estrutura do programa para ser executado pelo computador. O que é um algoritmo 19 A lógica de programação se utiliza dos algoritmos para representar mais fielmente seu raciocínio. Podemos definir um algoritmo como sendo uma sequência de passos claros e precisos que visam atingir um objetivo bem definido. O algoritmo é a própria sequência de instruções para a execução de uma tarefa. De uma forma mais simples, algoritmo é uma receita ou roteiro que indica todos os procedimentos necessários para realizar algo ou resolver algum problema. Uma vez que temos uma solução algorítmica para um problema, fica fácil traduzi-la para qualquer linguagem de programação através do processo de codificação. Exemplo de Algoritmo Objetivo bem definido: Trocar uma lâmpada queimada Sequência de passos (ações): pegar uma escada posicionar a escada embaixo da lâmpada início buscar uma lâmpada nova subir na escada retirar a lâmpada velha colocar a lâmpada nova 20 É importante que o algoritmo tenha uma sequência válida e coerente para que se alcance o objetivo esperado. O computador não avalia se os passos são coerentes, mas apenas executa sequencialmente os passos pré-definidos. 21 TIPOS PRIMITIVOS DE DADOS Muitas vezes, quando você está programando, você será solicitado a responder a uma pergunta específica. Portanto, para responder a uma pergunta por meio de codificação, você transforma as informações às quais tem acesso. Agora, lembre-se de que as informações também são conhecidas como dados e você pode transformá-los de uma maneira que resolva a questão em mãos. Mas qual a diferença entre dado e informação? Dado é um valor puro, que não tem muito significado para quem o recebe. A informação é um dado dotado de relevância e propósito, capaz de exercer algum impacto sobre o julgamento ou comportamento de quem a recebe. Exemplo: Dado: 21 de setembro Informação: 21 de setembro é o dia da árvore Para que um sistema tenha sentido, é necessário que ele tenha manipulação de informações, e que estas sejam úteis àqueles que as utilizam. Dados correspondem ao conteúdo bruto, que, após processado, gerará informação aos que o utilizam. Agora, muitos dados podem estar disponíveis e pode ser um pouco confuso de se olhar. Então, como você navega por todos esses dados e determina quais dados são úteis para sua tarefa? Bem, você faz isso categorizando os dados em diferentes tipos, o que ajuda a manter-se organizado para que você possa concluir sua tarefa. Ao associarmos um valor a um tipo permitido no sistema, estamos, na verdade, indicando a faixa de valores possíveis que aquela informação poderá conter, e, consequentemente, a quantidade de memória necessária que precisaremos para nossos dados. Afinal, cada tipo possui 22 um valor específico de armazenamento. O que são tipos primitivos de dados Quando falamos em tipos primitivos, estamos nos referindoao armazenamento básico de dados no sistema. Correspondem às possibilidades de armazenamento mais simples, e, a partir deles, outros tipos poderão evoluir. São comuns a todas as linguagens de programação e se dividem nas seguintes necessidades de armazenamento: Inteiro: todo e qualquer dado numérico que pertença ao conjunto dos números inteiros relativos (negativo, nulo ou positivo). Ex.: 2 carros. Real / Ponto Flutuante: todo e qualquer dado numérico que pertença ao conjunto dos números reais (negativo, nulo ou positivo). Ex.: 1,73 metros. Obs.: É sabido que os números inteiros pertencem aos números reais, porém, se você declarar como real uma variável que deveria ser inteira, você está aumentando a utilização da memória desnecessariamente. Isto é um erro de lógica!!!! Caractere / String: todo e qualquer dado composto por um conjunto de caracteres alfanuméricos: numéricos (0 … 9), alfabéticos (A … Z, a … z) e especiais (por exemplo, #, ?, !, @). Ex.: Lembrete: “Use somente caneta!”. Lógico / Booleano: todo e qualquer dado que pode assumir apenas dois estados. Ex.: verdadeiro ou falso. Em um programa, é importante saber qual o melhor tipo que atenderá a necessidade de cada variável, evitando armazenamento de memória de forma incorreta. Lembre-se de que a memória é um item muito importante, e, por mais que seu computador tenha boa capacidade de memória, este é um 23 recurso finito e não pode ser utilizado de forma irresponsável. Cuide bem para que o seu programa aproveite bem a memória disponível!!!! APLICANDO AO PYTHON Um tipo de dados é uma categoria para valores e cada valor pertence exatamente a um tipo de dados. Vimos que os quatro tipos primitivos são: inteiro, real, caractere e lógico. Python possui esses quatro tipos básicos e mais outros que estudaremos em outra oportunidade. Veja abaixo a tabela de correspondência: Tipo em Lógica Tipo em Python inteiro int (Integer) real float (Float) caractere str (String) (Seus valores são colocados entre aspas “”) lógico bool (Boolean) Tipos primitivos de dados em Python Usaremos a função type() do Python para retornar cada tipo de dados Inteiro Os números inteiros na programação são como números inteiros em matemática. São números inteiros, incluindo valores positivos, negativos e zero. Exemplos de números inteiros incluem três, zero e -100. E, em Python, o tipo de dados de um número inteiro é escrito como int. 24 Real / Ponto Flutuante Números de ponto flutuante são números expressos em decimais. Em outras palavras, números com um ponto decimal incluindo valores negativos, valores positivos e zero. Exemplos de números de ponto flutuante incluem 0,0, 4,5, 5e10, 5e-10, além de -3,3. Agora 5e10 representa cinco vezes 10 para o 10. E 5e-10 representa cinco vezes 10 para o -10. E, em Python, o tipo de dados de um número de ponto flutuante é escrito como float. String Strings são sequências de caracteres entre aspas. E essas aspas podem ser um par de aspas duplas ou um aspas simples. Exemplos de sequências de caracteres incluem: Eu sou uma string, elefante, A, um espaço e aspas vazias. E, em Python, o tipo de dados de uma string é escrito como str. Qualquer sequência de caracteres entre aspas é uma sequência, portanto sete entre aspas é uma sequência, enquanto sete por si só é um número inteiro. 25 Lógico / Booleano Booleanos são usados para representar valores de verdade. Um booleano pode ter um valor verdadeiro ou falso. E, em Python, o tipo de dados de um booleano é bool. 26 VARIÁVEIS E CONSTANTES Imagine que eu solicite que você memorize meu nome, “Helena”. Obviamente você o manterá na memória até que precise novamente. Pois é, o computador trabalha de forma similar, porém ele precisa “rotular” este espaço que reservou para memorizar. Vamos entender tudo isto melhor? O que é variável Você já jogou jogo da forca quando criança? Nesse caso, você deve se lembrar que um jogador, também conhecido como jogador um, cria uma palavra ou frase, e o outro jogador, também conhecido como jogador dois, precisa adivinhar. Então, quando o jogo acaba? Bem, o jogo termina quando o jogador dois usa todas as suas suposições sem adivinhar a palavra corretamente, ou adivinhar a palavra corretamente usando as suposições que têm. De qualquer forma, os jogadores precisam acompanhar quantos palpites restam ao longo do jogo. Então, como um exercício divertido, digamos que você tenha a tarefa de codificar o jogo da forca, o que significa que você está construindo o jogo para que ele possa ser jogado online. Como exatamente você acompanharia quantos palpites ainda restam? Você faz isso usando uma variável. Uma variável na programação é como uma caixa de armazenamento. Você pode usar uma variável para armazenar qualquer tipo de informação ou dados. Variáveis são úteis porque você pode acessar e alterar o conteúdo de uma variável a qualquer momento. 27 Na programação, para que um dado seja guardado ele precisa ser enviado para a memória do computador, e uma das formas, de fazer isto, é declarando variáveis. Uma variável corresponde a um espaço de memória reservado para que se manipule informações relevantes ao sistema. Cada variável possui características importantes, que nos permitem identificá-las e recuperar o que foi armazenado por ela. Pense na memória como um armário repleto de gavetas, onde cada gaveta guarda uma coisa específica e tem seu nome identificado na frente. Assim é a memória de um computador, e as variáveis seriam as gavetas utilizadas para este armazenamento. Todas as vezes que você precisar inserir uma informação, ele o fará por meio das variáveis, e estas poderão armazenar dados alfanuméricos, numéricos ou lógicos. E o que é constante? Uma outra forma de declarar valores em um programa imperativo é através de declaração de constantes. Constante corresponde a uma variável que foi associada a um valor específico e não poderá ser alterada durante a execução do programa. Quando necessitamos de um valor e sabemos que ele nunca será alterado durante a execução do programa, o ideal é criar uma constante, mantendo assim maior segurança de implementação. As constantes podem ser de qualquer tipo primitivo permitido na linguagem de programação utilizada. Por convenção, os nomes das constantes são declarados com letras maiúsculas, para os demais itens siga as outras regras de declaração de variáveis. 28 Qual a diferença entre constante e variável? Um dado é constante quando não sofre nenhuma variação no decorrer do tempo. Ex.: pi = 3.14159265359 Um dado é variável quando tem a possibilidade de ser alterado em algum instante no decorrer do tempo. Ex. Ele pesa 70kg. Formação de Identificadores: Precisamos nomear os dados constantes e variáveis para podermos trabalhar com eles. Esses nomes são chamados de identificadores. Regras para a formação dos identificadores: • Devem começar por um caractere alfabético (uma letra). • Podem ser seguidos por mais caracteres alfabéticos ou numéricos. • Não podem conter caracteres especiais, com exceção de underline (_). • Não podem conter espaços em branco. • Não podem ser uma palavra reservada. Ex.: nota Declaração de variáveis e constantes: Em um ambiente computacional, os dados constantes e variáveis são guardados na memória do computador, cada um com seu nome, tipo e respectivo valor, em um endereço (espaço específico) na memória. Portanto, para armazenar esses dados no computador, precisamos declará-los informando seu tipo e nome, e assim será reservado um espaço na memória para esse dado para posteriormente podermos manipular seu valor. Ex.: real : nota; Comando de Atribuição: Nos permite fornecer um valor a uma variável ou a uma constante, em que o tipo do dado deve ser compatível com o tipo da variável ou constante. 29 Quando declaramos uma constante, devemos atribuir um valor a ela no ato da declaração. No caso de variáveis, é muitocomum também atribuir valores a elas no momento da declaração, porém em geral não é obrigatório. Ex.: real : pi <- 3.14159265359; APLICANDO AO PYTHON Em Python, a declaração e atribuição de valores a variáveis e constantes é feita de uma vez só, em uma única linha de comando, e não é necessário informar o tipo do dado, pois o Python reconhece o tipo automaticamente. Uma variável é como uma caixa na memória do computador, onde você pode armazenar um único valor. E se você deseja usar o resultado de uma expressão avaliada posteriormente em seu programa, você pode salvar dentro de uma variável. Você armazenará valores em variáveis com uma instrução de atribuição. Uma declaração de atribuição consiste em um nome de variável, um sinal de igual (chamado de operador de atribuição) e o valor para ser armazenado. Se você digitar a declaração de atribuição nota = 42, então uma variável chamada nota terá o valor inteiro 42 armazenado nele. Pense em uma variável como uma caixa rotulada na qual um valor é colocado dentro dela. Uma variável é inicializada (ou criada) na primeira vez que um valor é armazenado nela. Depois disso, você pode usá-la em expressões com outras variáveis e valores. Quando a uma variável é atribuída novo valor, o valor antigo é esquecido, e substituído pelo novo. Isso é chamado de sobrescrevendo a variável. Veja a correspondência: Declaração e atribuição em lógica: inteiro: nota <- 7; 30 Declaração e atribuição em Python: nota = 7 Vamos voltar à analogia da caixa de armazenamento para entendermos melhor as variáveis. Se estiver organizando ou empacotando algumas coisas, divida-as em categorias com base no que elas são ou para que são usadas e coloque-as em caixas. Em seguida, você pode rotular as caixas com uma palavra ou frase curta indicando o que as caixas contêm. Da mesma forma, para criar uma variável, você deve fornecer um nome que indique o que a variável contém e fornecer o valor da variável, que são os dados que você deseja armazenar na variável. Vamos voltar ao exemplo anterior. Se você está codificando o jogo da forca, pode acompanhar quantos palpites restam em um jogo usando uma variável. Você criaria a variável no início, pois essas informações são necessárias desde o início até o final do jogo. Você pode nomear a variável como “numero_de_palpites” ou qualquer outro nome relevante. Quanto ao valor dessa variável, você pode configurá-la para um número de sua escolha, representando quantas suposições o jogador dois tem no total por jogo. À medida que o jogo avança, cada vez que o jogador dois adivinha a variável precisará ser atualizada de acordo. A atualização consiste em diminuir o valor da variável em um. Variáveis: Jogo da Forca Na primeira célula, suponho que este seja o começo do jogo da forca. Crio uma variável chamada palpites e atribuo a ela um valor de dez. Dez representa quantas suposições o jogador dois tem no total por jogo. Escolhi dez arbitrariamente; se você está acompanhando, pode escolher qualquer número que queira que seja o valor dessa variável e, em seguida, imprimo palpites. Quando faço isso, o número dez é impresso. 31 Na próxima célula, suponho que o jogador dois tenha feito seu primeiro palpite. Portanto, preciso atualizar as suposições da variável e faço isso diminuindo o valor dessa variável em um. Então agora, quando imprimo palpites, recebo nove. Na terceira célula, presumo que o jogador dois tenha feito outro palpite. Novamente, preciso atualizar as suposições da variável e faço isso diminuindo seu valor em um. Agora, quando imprimo palpites, recebo oito. Uma coisa que você pode ver aqui é que a variável assume o papel de seu valor. Então, quando imprimo a variável palpites, o valor que palpites tem, naquele momento, é o que é impresso. 32 EXPRESSÕES Em linguagens de programação, utilizar expressões implica a necessidade de efetuar uma avaliação para obter um resultado. Sempre que uma expressão for imposta, ela deverá ter um resultado específico, dependendo de sua forma. Uma expressão especifica alguma execução dentro do sistema, e na maioria das vezes exige uma análise para obter um resultado. Expressões Aritméticas As expressões aritméticas são aquelas que produzem resultados similares aos já conhecidos na matemática. Podemos definir uma expressão aritmética como aquela cujos operadores são aritméticos e cujos operandos são constantes ou variáveis do tipo numérico (inteiro ou real). Operadores Aritméticos: Potenciação e Radiciação: Operador Função Exemplos + Adição 2 + 3, x + y - Subtração 4 - 2, n - m * Multiplicação 3 * 4, a * b / Divisão 10 / 2, x1 / x2 Operador Função Significado Exemplos pot(x, y) Potenciação x elevado a y pot(2, 3) rad(x, y) Radiciação raiz quadrada de x rad(9) mod Resto da divisão para o exemplo resulta em 1 9 mod 4 div Quociente da divisão para o exemplo resulta em 5 27 div 5 33 Ordem de Precedência dos Operadores Aritméticos: Expressões Lógicas Podemos definir uma expressão lógica como aquela cujos operadores são lógicos ou relacionais e cujos operandos são relações ou constantes ou variáveis do tipo lógico. Operadores Relacionais: Operador Função Exemplos = Igual a 3 = 3, x = y > Maior que 5 > 4, x > y < Menor que 3 < 6, x < y >= Maior ou igual a 5 >= 3, x >= y <= Menor ou igual a 3 <= 5, x <= y <> Diferente de 8 <> 9, x <> y Operadores Lógicos: Operador Função Exemplos não Negação não 3 < 15 e Conjunção 2 < 5 e 15 / 3 = 5 ou Disfunção 2 < 5 ou 15 / 3 = 5 Prioridade Operador Função 1 ( ) Parênteses 2 pot rad Potenciação / Radiciação 3 * / div mod Multiplicação / Divisão / Quociente da divisão / Resto da divisão 4 · - Adição / Subtração 34 APLICANDO AO PYTHON Expressões Em Python, 2 + 2 é chamado de expressão, que é o tipo mais básico de instrução em uma linguagem de programação. Expressões consistem em valores (como 2) e operadores (como +), e eles sempre podem ser avaliados (isto é, reduzidos) até um único valor. Isso significa você pode usar expressões em qualquer lugar no código Python que você também possa usar um valor. No exemplo anterior, 2 + 2 é avaliado e reduzido a um único valor, 4. Um único valor com nenhum operador também é considerado uma expressão, embora ele só avalie ele mesmo. Essas regras para colocar operadores e valores juntos para formar expressões são parte fundamental do Python como linguagem de programação, assim como as regras gramaticais nos ajuda a nos comunicar. Veja um exemplo: Esta é uma frase gramaticalmente correta. Esta gramaticalmente é frase não correta. A segunda linha é difícil de analisar porque não segue as regras gramaticais. Da mesma forma, se você digitar uma instrução ruim em Python, o Python não conseguirá entendê-la e exibirá uma mensagem de erro do tipo SyntaxError. Erros Os programas falharão se contiverem códigos que o computador não consegue entender, o que fará com que o Python mostre uma mensagem de erro. No entanto, uma mensagem de erro não irá quebrar seu computador. Portanto, não tenha medo de cometer erros. Uma falha apenas significa que o programa parou de funcionar inesperadamente. Se você quiser saber mais sobre uma mensagem de erro, pode pesquisar o texto da mensagem exata on-line para saber mais sobre esse erro específico. 35 Expressões Aritméticas As expressões aritméticas são aquelas em que os operadores são aritméticos e os operandos são valores do tipo numérico (inteiro ou real). Esses valores numéricos podem ser acessados por meio de identificadores constantes ou por meio de variáveis. Veja agora a Tabela de correspondência dos operadores aritméticos: Operador em Lógica Função Operador em Python Exemplos em Python + Adição + 5 + 2 (resulta 7) - Subtração - 5 - 2 (resulta 3) * Multiplicação * 5 * 2 (resulta 10) / Divisão / 5 / 2 (resulta 2,5) pot(x, y) Potenciação ** 5 ** 2 (resulta (25) rad(x) Radiciação ** (inverso da potência) 25 ** (½) (resulta mod Resto da divisão% 5 % 2 (resulta 1) div Quociente da divisão // 5 // 2 (resulta 2) Operadores Aritméticos 36 Expressões Lógicas As expressões lógicas são aquelas cujo valor só pode ser verdadeiro ou falso. São compostas por operadores relacionais, operadores lógicos, e por identificadores variáveis ou constantes do tipo lógico.As expressões lógicas também podem ser compostas por resultados de expressões aritméticas. Veja a tabela de correspondência dos operadores relacionais: Operador em lógica Função Operador em Python Exemplos em Python = Igual a == numero1 == numero2 > Maior que > numero1 > numero2 < Menor que < numero1 < numero2 >= Maior ou igual a >= numero1 >= numero2 <= Menor ou igual a <= numero1 <= numero2 <> Diferente de != numero1 != numero2 37 Veja a tabela de correspondência dos operadores lógicos: Operador em lógica Função Operador em Python Exemplos em Python não Negação not not (3 < 15) e Conjunção and (2 < 5) and (15 / 3 == 5) ou Disfunção or (2 < 5) or (15 / 3 == 5) Operadores Relacionais Operadores Lógicos 38 COMANDOS DE ENTRADA E SAÍDA, BLOCOS E COMENTÁRIOS Comandos de entrada e saída Entrada de Dados: Para que seja passado dados não pré definidos para o algoritmo é necessário utilizar um comando de entrada de dados, cuja finalidade é atribuir o dado a ser fornecido à variável identificada. Utilizamos o comando leia para esse fim. Ex.: leia (x); Para passarmos valores externos para dentro do algoritmo utilizamos o comando de entrada de dados leia. Com esse comando é possível atribuir valores a uma variável através da digitação pelo usuário. Saída de dados: Para que seja mostrado os dados pelo algoritmo é necessário utilizar um comando de saída de dados, cuja finalidade é exibir o conteúdo da variável identificada. Utilizamos o comando escreva para esse fim. Ex.: escreva (x); Para exibir o conteúdo de uma variável usamos comando de saída de dados escreva. Com esse comando é possível mostrar os valores que estão dentro do algoritmo para o usuário. 39 Blocos Podemos definir um bloco como sendo um conjunto de ações, com uma função definida. O próprio algoritmo como um todo pode ser entendido como um bloco. Para delimitar um bloco, utilizamos os delimitadores início e fim. Ex.: início inteiro x, y; leia (x); y <- x + 5; escreva (y); fim Comentários Para podermos explicar certas linhas importantes nos algoritmos, utilizaremos comentários. O uso de comentários é recomendado para aumentar a clareza dos algoritmos. Utilizamos os comentários utilizando o símbolo //. Ex.: início // início do bloco (algoritmo) inteiro x, y; // declaração de variáveis fim 40 APLICANDO AO PYTHON Entrada de dados O comando de entrada é utilizado para receber dados digitados pelo usuário. Os dados recebidos são armazenados em variáveis. Saída de dados O comando de saída de dados é utilizado para mostrar dados na tela. Blocos de código Os blocos de código em Python são definidos através da endentação. Comentários Para fazermos comentários em Python nós utilizamos o caractere cerquilha # para comentários de uma linha apenas e utilizamos 3 aspas simples, ou então, 3 aspas duplas, para comentários de várias linhas. 41 ESTRUTURAS DE CONTROLE Estruturas de Seleção Muitas vezes, durante a programação, você precisa controlar o fluxo da execução do seu programa e as instruções condicionais podem ajudá- lo. Uma declaração condicional instrui o computador a executar ações específicas se condições específicas forem atendidas. Esse tipo de estrutura permite a escolha de um grupo de ações (bloco) a ser executado quando determinadas condições, representadas por expressões lógicas ou relacionais, são ou não satisfeitas. A seleção pode ser simples, composta ou de múltipla escolha. Usamos a seleção simples quando precisamos testar uma certa condição antes de executar uma ação. Ex.: se (nota >= 6) //teste da condição então escreva (“Aluno Aprovado!”); //ação a ser executada fimse; Usamos a seleção composta quando tivermos situações em que duas alternativas dependem de uma mesma condição, sendo uma alternativa para a condição ser verdadeira e outra para a condição ser falsa. Ex.: se (nota >= 6) //teste da condição então escreva (“Aluno Aprovado!”); //alternativa 1 senão escreva (“Aluno Reprovado!”); //alternativa 2 fimse; 42 Usamos a seleção de múltipla escolha quando ações diferentes devem ser tomadas de acordo com a alternativa escolhida. Ex.: escolha x caso 1: escreva (“Você escolheu a alternativa 1!”); caso 2: escreva (“Você escolheu a alternativa 2!”); caso 3: escreva (“Você escolheu a alternativa 3!”); caso 4: escreva (“Você escolheu a alternativa 4!”); caso contrário: escreva (“Você não escolheu nenhuma alternativa válida!”); fimescolha; Estruturas de Repetição Esse tipo de estrutura permite repetir diversas vezes um mesmo trecho do algoritmo. A repetição pode ser com teste no início, com teste no final, ou com variável de controle. Usamos a repetição com teste no início sempre que precisarmos verificar antes de cada execução se é permitido executar o trecho do algoritmo. Ex.: enquanto (x <= 10) faça //teste da condição de parada x <- x + 1; //ação a ser executada escreva (x); //ação a ser executada fimenquanto; Usamos a repetição com teste no final sempre que precisarmos executar o trecho do algoritmo repetidas vezes até que uma determinada condição seja verdadeira. 43 Ex.: repita x <- x + 1; //ação a ser executada escreva (x); //ação a ser executada até (x <= 10); //teste da condição Usamos a repetição com variável de controle sempre que precisarmos executar o trecho do algoritmo por um número definido de vezes. Ex.: para contador de 1 até 10 passo 1 faça //contador é a variável de controle x <- x + 10; //ação a ser executada escreva (x); //ação a ser executada Fimpara 44 APLICANDO EM PYTHON Seleção Simples inteiro: numero <- 5; se (numero = 5) então escreva (“O número é 5”); fimse; Seleção Composta inteiro: numero <- 5; se (numero = 5) então escreva (“O número é 5”); senão escreva (“O número não é 5”); fimse; 45 Seleção de Múltipla Escolha inteiro: numero <- 2; escolha x caso 1: escreva (“Você escolheu a alternativa 1!”); caso 2: escreva (“Você escolheu a alternativa 2!”); caso contrário: escreva (“Valor inválido”); fimescolha; Repetição com teste no início inteiro: x <- 0; enquanto (x < 10) faça escreva (x); x <- x + 1; fimenquanto; 46 Repetição com teste no final inteiro: i <- 1; repita escreva (i); i <- i + 1; até (i > 3); Repetição com variável de controle para item de 0 até 9 passo 1 faça escreva (item); fimpara 47 CONCLUSÃO Parabéns por concluir este livro. Como você pode ver, há muito a aprender sobre programação e o aprendizado definitivamente não para por aqui. Embora seja importante ver exemplos de alguém para aprender como as coisas funcionam, é igualmente importante praticar por conta própria depois de vê-los. Para reforçar sua compreensão dos conceitos abordados neste livro, recomendo que você pratique os exemplos do livro por conta própria. A falta de letramento digital é preocupante. Para Ali Partrovi, um dos criadores do Code.org, é uma questão de sobrevivência, uma necessidade para continuarmos conectados ao mundo. “Tudo o que fazemos responde a um algoritmo. É hora de que todos entendam como e por quê”, disse em entrevista ao jornal El País. Ou seja, a programação não é, necessariamente, um fim, mas, com certeza é um meio. Ah, se você quiser ter acesso a conteúdos gratuitos que nós pessoalmente produzimos, nós temos 2 dicas para você: Inscreva-se no nosso Canal do Youtube https://informach.com.br/youtube Toda semana nós publicamos um vídeo de conteúdo inédito com uma sacada prática no nosso canal do Youtube e assiná-lo vai diminuir drasticamente a chance de você perder alguns deles. Me Siga no Instagram https://informach.com.br/instagram Você quer conhecer mais sobre os bastidoresde como nós desenvolvemos? Como é nossa rotina durante o desenvolvimento de um sistema? Isso e mais várias dicas práticas é o que você vai ver no nosso Instagram, https://informach.com.br/youtube https://informach.com.br/instagram 48 é só você nos seguir. Espero que você possa ver o poder da programação e continue a trabalhar para aprimorar suas habilidades. Obrigado por ler este livro e te desejo tudo de bom. _GoBack INTRODUÇÃO Principais conceitos de lógica de programação Tipos primitivos de dados Variáveis e Constantes Expressões Comandos de Entrada e Saída, Blocos e Comentários Estruturas de Controle Conclusão
Compartilhar