Baixe o app para aproveitar ainda mais
Prévia do material em texto
Sumário Capítulo 1. Introdução a Lógica de Programação...................................................................9 1.1. Noções de Lógica.........................................................................................................9 1.2. O que é lógica.............................................................................................................9 1.3. A real lógica do dia a dia.............................................................................................9 1.4. Lógica de programação.............................................................................................10 1.5. O que é um algoritmo...............................................................................................11 1.6. Porque é importante construir um algoritmo............................................................11 1.7. As maneiras de representarmos um algoritmo. ........................................................12 1.7.1. Descrição Narrativa. ........................................................................................12 1.7.2. Fluxograma Convencional.................................................................................12 1.7.3. Português Estruturado ou Pseudocódigo............................................................14 1.8. EXERCÍCIOS PROPOSTOS ......................................................................................15 Capítulo 2. Tópicos Preliminares..........................................................................................16 2.1. Tipos primitivos.........................................................................................................16 2.1.1. Tipos de Primitivos de Dados...........................................................................16 2.2. Constantes.................................................................................................................16 2.3. Variável......................................................................................................................17 2.4. Formação de identificadores.....................................................................................17 2.5. Declaração de variáveis.............................................................................................17 2.6. Comandos de entrada e saída...................................................................................18 2.6.1. COMANDO DE ENTRADAS DE DADOS.............................................................18 2.6.2. COMANDO DE SAIDAS DE DADOS...................................................................19 2.7. Expressões aritméticas..............................................................................................20 2.8. Operadores aritméticos.............................................................................................21 2.9. Expressões lógicas.....................................................................................................22 2.10. Operadores relacionais............................................................................................22 2.11. Operadores lógicos..................................................................................................23 2.12. Comando de atribuição...........................................................................................24 2.12.1. PRIORIDADE DE OPERADORES:.....................................................................24 2.13. EXERCÍCIOS PROPOSTOS ....................................................................................25 Capítulo 3. Estruturas de Controle.......................................................................................26 3.1. Estrutura sequencial..................................................................................................26 3.2. Estrutura de seleção..................................................................................................27 3.2.1. Seleção Simples.................................................................................................27 3.2.2. Seleção Composta..............................................................................................29 3.2.3. Seleção encadeada.............................................................................................30 3.3. Seleção de múltipla escolha......................................................................................32 3.4. Estruturas de repetição.............................................................................................33 3.5. Repetição com teste no início e no final....................................................................34 3.5.1. TESTE INÍCIO....................................................................................................34 3.5.2. TESTE FINAL.....................................................................................................35 3.6. Repetição com variável de controle...........................................................................37 3.7. Comparação entre estruturas de repetição. ............................................................39 3.8. EXERCÍCIOS PROPOSTOS ......................................................................................41 Capítulo 4. Estruturas de Dados...........................................................................................42 4.1. O que é estruturas de dados......................................................................................42 4.2. Variáveis compostas homogêneas..............................................................................42 4.3. Variáveis compostas unidimensionais........................................................................43 4.4. Declaração e manipulação(unidimensional).............................................................44 4.4.1. Leitura de Dados de Uma Matriz do Tipo Vetor.................................................44 4.5. Variáveis compostas multidimensionais....................................................................45 4.6. Declaração e manipulação(multidimensionais ).......................................................46 4.7. Variáveis compostas heterogêneas............................................................................46 4.8. Registros (declaração e manipulação).......................................................................47 4.9. Registros de conjuntos (declaração e manipulação). .............................................48 4.10. EXERCÍCIOS PROPOSTOS ....................................................................................49 4.11. Referencias:.............................................................................................................50 Capítulo 5. Introdução a PHP...............................................................................................53 5.1. O que é PHP..............................................................................................................53 5.1.1. Um pouco da História do PHP............................................................................54 5.2. Instalação do Servidor PHP.......................................................................................54 5.2.1. Instalação Apache..............................................................................................55 5.2.2. Instalação Php5..................................................................................................56 5.2.3. Instalação MYSQL..............................................................................................57 5.2.4. Instalação phpMyAdmin....................................................................................57 5.3. Características de um programa PHP.........................................................................58 5.3.1. COMANDOS DE SAÍDA(OUTPUT).....................................................................59 5.4. EXERCÍCIOS PROPOSTOS ......................................................................................60Capítulo 6. Atribuições em PHP............................................................................................61 6.1. Variáveis....................................................................................................................61 6.2. Tipos de Variáveis......................................................................................................63 6.2.1. Tipo booleano....................................................................................................63 6.2.2. Tipo inteiro........................................................................................................63 6.2.3. Tipo ponto flutuante:.........................................................................................64 6.2.4. Tipo numérico....................................................................................................64 6.2.5. Tipo String.........................................................................................................64 6.2.6. Tipo array..........................................................................................................65 6.2.7. Tipo objeto.........................................................................................................65 6.2.8. Tipo recurso.......................................................................................................65 6.2.9. Tipo null.............................................................................................................65 6.3. Constantes.................................................................................................................65 6.3.1. Constantes prédefinidas....................................................................................65 6.3.2. Definindo constantes.........................................................................................65 6.4. Conversão de variável...............................................................................................66 6.5. EXERCÍCIOS PROPOSTOS ......................................................................................67 Capítulo 7. Operadores.........................................................................................................68 7.1. Operadores de strings...............................................................................................68 7.2. Operadores de atribuição..........................................................................................68 7.3. Operadores de decremento e incremento.................................................................70 7.4. Operadores aritméticos.............................................................................................71 7.5. Operadores relacionais .............................................................................................71 7.6. Operadores lógicos ou booleanos..............................................................................72 7.7. Precedência de Operadores.......................................................................................73 7.8. EXERCÍCIOS PROPOSTOS ......................................................................................76 Capítulo 8. Estruturas de Controle e Repetição....................................................................77 8.1. Blocos de controle.....................................................................................................77 8.2. IF e ELSE...................................................................................................................77 8.3. Atribuição condicional (ternário)..............................................................................79 8.4. SWITCH....................................................................................................................79 8.4.1. SWITCH com BREAK.........................................................................................80 8.5. WHILE.......................................................................................................................81 8.6. DO...WHILE...............................................................................................................82 8.7. FOR...........................................................................................................................83 8.8. FOREACH..................................................................................................................84 8.9. BREAK.......................................................................................................................85 8.10. CONTINUE..............................................................................................................86 8.11. EXERCÍCIOS PROPOSTOS ....................................................................................88 Capítulo 9. Manipulação de Arrays......................................................................................88 9.1. Criando um Array......................................................................................................88 9.2. Arrays Associativos....................................................................................................89 9.3. Interações..................................................................................................................90 9.4. Acessando um Array..................................................................................................91 9.5. Alterando um Array...................................................................................................91 9.6. Arrays multidimensionais..........................................................................................92 9.7. Funções com Arrays..................................................................................................94 9.8. EXERCÍCIOS PROPOSTOS ......................................................................................98 Capítulo 10. Manipulações de Funções................................................................................99 10.1. Declarando uma Função.........................................................................................99 10.2. Escopo de Variáveis em Funções...........................................................................100 10.3. Passagem de Parâmetro.........................................................................................101 10.4. Valor de Retorno....................................................................................................102 10.5. Recursão................................................................................................................102 10.6. EXERCÍCIOS PROPOSTOS ..................................................................................103 Capítulo 11. Manipulação de arquivos e diretórios............................................................104 11.1. Criando e Abrindo um Arquivo.............................................................................104 11.2. Gravando em um arquivo......................................................................................105 11.3. Fechando um arquivo............................................................................................106 11.4. Lendo um arquivo.................................................................................................106 11.5. Copiando,Renomeando e Apagando um Arquivo..................................................107 11.6. Manipulando Diretório..........................................................................................108 11.7. EXERCÍCIOS PROPOSTOS ..................................................................................109 Capítulo 12. Interações PHP com HTML............................................................................110 12.1. Formulários ..........................................................................................................110 Elementos de um formulário......................................................................................11012.2. Exemplo de formulário..........................................................................................112 12.3. Método Post e Get.................................................................................................114 12.3.1. Método Get....................................................................................................114 Recebendo dados via método GET.............................................................................115 12.3.2. Método Post...................................................................................................116 12.4. Interações com o Browser.....................................................................................117 12.5. Cookies..................................................................................................................118 Acessando um cookie:................................................................................................120 12.6. Sessão....................................................................................................................120 12.7. Requisição de Arquivos.........................................................................................122 12.8. Tratamentos de erro..............................................................................................123 12.9. EXERCÍCIOS PROPOSTOS ..................................................................................124 Capítulo 13. Introdução ao MySQL....................................................................................125 13.1. O que é o MYSQL?................................................................................................125 13.2. Trabalhando com MYSQL......................................................................................125 13.2.1. Estruturas de Dados.......................................................................................126 13.2.2. Criando Banco e Tabelas................................................................................127 13.2.3. Manipulando dados das tabelas.....................................................................128 13.3. Trabalhando com PhpMyAdmin............................................................................130 13.3.1. Manipulando banco de dados no PhpMyadmin.............................................131 13.4. EXERCÍCIOS PROPOSTOS ..................................................................................134 Capítulo 14. PHP com Banco de dados MYSQL..................................................................135 14.1. Criando e Selecionando a Conexão.......................................................................135 14.2. Manipulando Dados do Database..........................................................................136 mysql_query...............................................................................................................136 mysql_result...............................................................................................................136 mysql_fetch_array......................................................................................................137 14.3. Criação de CRUD...................................................................................................138 14.4. EXERCÍCIOS PROPOSTOS ..................................................................................141 Capítulo 15. História do Joomla.........................................................................................144 15.1. Introdução.............................................................................................................144 15.2. Vantagens de utilizar o Joomla!............................................................................144 15.3. O Joomla tem como principais características:.....................................................145 15.4. Ferramentas CMS – Sistema de Gerenciamento de Conteúdo...............................145 Capítulo 16. Instalação do Joomla.....................................................................................146 16.1. Iniciando os Servidores.........................................................................................147 16.1.1. Passos para instalação do Joomla..................................................................147 16.1.2. Copiando o Joomla para a Pasta HTDOCS.....................................................147 Capítulo 17. Vamos a Instalação.........................................................................................148 17.1. 1º Passo Idiomas.................................................................................................148 17.2. 2º Passo – PréInstalação.......................................................................................149 17.3. 3º Passo Licença..................................................................................................149 17.4. 4º Passo – Banco de Dados....................................................................................150 17.5. 5º Passo – Configuração do FTP............................................................................151 17.6. 6º Passo Configuração.........................................................................................151 17.7. 7º Passo Fim........................................................................................................152 Capítulo 18. Frontend e Backend.......................................................................................153 18.1. Frontend – Área de Usuários.................................................................................153 18.2. Backend – Área de Administradores.....................................................................154 18.2.1. Login de Acesso.............................................................................................154 18.2.2. Nível de usuário – Papel ................................................................................155 18.2.3. Papéis no Site principal (Frontend)...............................................................155 18.2.4. Papeis na Área de administração (BackEnd).................................................155 Capítulo 19. Conhecendo a Área de Administração...........................................................155 19.1. Acessos..................................................................................................................155 19.2. Registrando os usuários........................................................................................156 19.3. Categorias de Usuários Registrados......................................................................156 19.4. Usuários Responsáveis pelo Conteúdo..................................................................156 19.4.1. Usuário Registrado.........................................................................................156 19.4.2. Autor..............................................................................................................156 19.4.3. Editor.............................................................................................................156 19.4.4. Publicador (publisher)...................................................................................156 19.5. Usuários de Administração....................................................................................157 19.5.1. Super Administrador......................................................................................157 19.5.2. Administrador................................................................................................157 19.5.3. Gerenciador (Manager).................................................................................157 Capítulo 20. Gerenciando as Categorias e Seções..............................................................157 20.1. Como criar uma Seção..........................................................................................15820.2. Como criar uma categoria.....................................................................................159 Capítulo 21. Inserindo um Novo Texto...............................................................................159 21.1. Para inserir um texto, siga os seguintes passos:....................................................159 Capítulo 22. Como criar um link no menu para um item de conteúdo..............................160 22.1. Criando um link para o item de conteúdo.............................................................160 22.2. Administração dos menus.....................................................................................162 22.2.1. Tela de configuração de menus......................................................................162 22.3. Especificação de Alguns Itens de Menu.................................................................163 22.3.1. Conteúdo.......................................................................................................163 22.3.2. Miscellaneous................................................................................................163 22.3.3. Componentes .............................................................................................163 22.3.4. Links ...........................................................................................................163 Capítulo 23. Administração de Mídia.................................................................................163 23.1. Observando a imagem acima, teremos os seguintes tópicos:................................164 23.1.1. Primeiro tópico..............................................................................................164 23.1.2. Segundo tópico..............................................................................................164 23.1.3. Terceiro tópico...............................................................................................164 23.1.4. Quarto tópico.................................................................................................164 23.1.5. Quinto tópico.................................................................................................164 23.1.6. Sexto tópico...................................................................................................164 Capítulo 24. Conhecendo alguns componentes..................................................................164 24.1. Componente Weblinks...........................................................................................164 24.2. Componente Contatos...........................................................................................165 24.3. Componente Banner..............................................................................................167 Capítulo 25. Módulos e Componentes................................................................................168 25.1. Criando um módulo utilizando o próprio Joomla.................................................169 25.1.1. Veja os pontos necessários para criação de um módulo:................................169 25.2. Instalação de Módulos..........................................................................................170 25.2.1. Passos para instalar um novo módulo:...........................................................170 25.3. Componentes........................................................................................................170 Capítulo 26. Estrutura........................................................................................................171 26.1. Designer................................................................................................................171 26.2. Programação.........................................................................................................171 26.3. Conteúdo MySQL..................................................................................................171 26.4. Posições de Módulos.............................................................................................172 26.4.1. Vejamos exemplo no Código PHP:.................................................................172 26.4.2. Vejamos agora o exemplo no Painel de Administração (BackEnd)................172 26.5. Estendendo a Estrutura do Template (Tema)........................................................172 26.5.1. Você pode usar os seguintes atributos para os módulos:...............................172 Caro Aluno(a), Este Material foi criado com o objetivo de ser utilizado na aprendizagem da lógica voltada para programação, onde será utilizado a programação estruturada em português, também chamada de português estruturado ou Portugol. Para auxílio na aprendizagem usaremos a ferramenta (programa) chamada Visualg. Será dividido o conteúdo em quatro capítulos, desde princípios básicos até algo mais avançado dentro de um contexto lógico, e que traz ao aluno uma base inicial para futuras programações em outras linguagens. As diagramações desse material foram feitas com o uso da ferramenta Dia, porém não entraremos em detalhes sobre ela. Vale ressaltar que o conteúdo aqui visto, devido a limitação da ferramenta Visualg, não tem aparo completo de seu uso dentro da ferramenta, mas será tratado de forma coerente todos os conceitos que serão abordados. Esperamos que esse material seja um contribuinte para todos aqueles que querem aprender de forma dedicada e que principalmente tenha um significado importante para inicialização da formação dos que querem seguir a carreira de programador. Logica de Programação 9 Capítulo 1. Introdução a Lógica de Programação Objetivos Apresentar os conceitos elementares de lógica e sua aplicação no cotidiano; Definir o que é um algoritmo; Estabelecer uma relação entre a lógica e o algoritmo; Mostrar exemplos de como utilizar a lógica em situações do dia a dia, apresentando de forma simples e coerente. 1.1. Noções de Lógica Lógica é algo muito comum na nossa vida, a prova disso é o que fazemos durante o dia, pois mesmo sem perceber usamos a lógica todo momento, por exemplo: Ao acordamos: • Tomamos um banho. • Escovamos os dentes. • Tomamos o café da manhã. Para irmos ao trabalho: • Colocamos uma roupa apropriada. • Pegamos um ônibus. • Chegamos no trabalho. Perceba que podemos detalhar mais coisas a respeito do exemplo anterior, nessa sequência foi definida alguns fatos comuns. Quando queremos chegar a um objetivo final, temos que traçar uma lógica coerente que tenha sentido, onde em uma sequência lógica temos definido todos os passos que devemos seguir até o final. 1.2. O que é lógica. Lógica vem do grego clássico logos(λογική), que significa palavra, pensamento, ideia, argumento, relato, razão lógica ou princípio lógico. É uma parte da filosofia que estuda o fundamento, a estrutura e as expressões humanas do conhecimento. A lógica foi criada por Aristóteles no século IV a.C. Para estudar o pensamento humano e distinguir interferências e argumentos certos e errados. Já que o pensamento é a manifestação do conhecimento, e que o conhecimento busca a verdade, é preciso estabelecer algumas regras para que essa meta possa ser atingida. 1.3. A real lógica do dia a dia. Sempre que estamos pensando em algo, a lógica nos acompanha. Usamos a lógica quando falamos ou quando escrevemos para por em ordem o nosso pensamento que está sendo expressado. A automação é o processo em que uma tarefa deixa de ser desempenhada pelo homem e passa a ser realizada por máquinas, sejam estes dispositivos mecânicos, eletrônicos (como os computadores) ou de natureza mista. Para que a automação de uma tarefa seja bem sucedida é Projeto Ejovem Módulo II Ao acordar, tenho um algoritmo para Fazer o café? Logica de Programação 10 necessárioque a máquina que irá realizála seja capaz de desempenhar cada uma das etapas constituintes do processo a ser automatizado com eficiência, de modo a garantir a repetição do mesmo. Assim, é necessário que seja especificado com clareza e exatidão o que deve ser realizado em cada uma das fases do processo a ser automatizado, bem como a sequência em que estas fases devem ser realizadas. A essa especificação da sequência ordenada de passos que deve ser seguida para a realização de uma tarefa, garantindo a sua repetibilidade, dáse o nome de algoritmo. Ao contrário do que se pode pensar, o conceito de algoritmo não foi criado para satisfazer as necessidades da computação. Pelo contrário,a programação de computadores é apenas um dos campos de aplicação dos algoritmos. Na verdade, há inúmeros casos que podem exemplificar o uso (involuntário ou não) de algoritmos para a padronização do exercício de tarefas rotineiras. No entanto, daqui por diante a nossa atenção se volta para automação de tarefas utilizando computadores e para isto definiremos o que lógica de programação. Os algoritmos são descritos em uma linguagem chamada pseudocódigo. Este nome é uma alusão à posterior implementação em uma linguagem de programação,ou seja, quando formos programar em uma linguagem, por exemplo Visual Basic,C,C++,java,etc, estaremos gerando nossos código usando a ferramenta VisuAlg. Exemplo: Preciso pagar um conta de luz. O valor da conta e de R$ 45,25 reais. Portanto preciso de R$ 45,25 reais para pagar a conta. Pagarei a conta as 3:00h da tarde. Voltei para casa. 1.4. Lógica de programação. A lógica de programação é necessária para pessoas que desejam trabalhar com desenvolvimento de sistemas e programas, assim, ela permite definir a sequência lógica para a criação de aplicativos. Significa o uso correto das leis do pensamento, da “ordem da razão”, do processo de raciocínio e simbolização formais na programação de computadores. Com isso criase técnicas que cooperam para a produção de soluções logicamente válidas e coerentes, que resolvam com qualidade os problemas que se deseja programar. Então o que é lógica? Lógica de programação é a técnica de encadear pensamentos para atingir determinado objetivo. Usar o raciocínio é algo abstrato, intangível. Os seres humanos tem a capacidade de expressálo através de palavras ou escrita, que por sua vez se baseia em um determinado idioma, que segue uma série de padrões(gramática). Um mesmo raciocínio pode ser expresso em qualquer um dos inúmeros, mas continuará representando o mesmo raciocínio, usando apenas outra convenção. Em programação temos várias linguagens como, java, C, php, Python, delphi dentre muitas outras que existem, porem cada uma delas tem um padrão próprio. Essas por sua vez, são muito atreladas a uma grade diversidade de detalhes computacionais, mas com o mesmo raciocínio, seguindo as regras da linguagem, pode ser obtido o mesmo resultado. Projeto Ejovem Módulo II Logica de Programação 11 1.5. O que é um algoritmo Um algoritmo é formalmente uma sequência finita de passos que levam a execução de uma tarefa. Podemos pensar em algoritmo como uma receita, uma sequência de instruções que busca uma meta específica. Estas tarefas não podem ser redundantes nem subjetivas na sua definição, logo, devem ser claras e precisas. Os algoritmos servem como modelo para programas, pois sua linguagem é intermediária a linguagem humana e as linguagens de programação, sendo então, uma boa ferramenta na validação da lógica de tarefas a serem automatizadas. Os algoritmos, servem para representar a solução de qualquer problema, mas no caso do processamento de dados, eles devem seguir as regras básicas de programação para que sejam compatíveis com as linguagens de programação. Por esse motivo os algoritmos são independentes das linguagens. Ao contrário de uma linguagem de programação, não existe um formalismo rígido de como deve ser escrito o algoritmo. O algoritmo deve ser fácil de se interpretar e fácil de codificar, ou seja, ele deve ser o intermediário entre a linguagem falada e a linguagem de programação a qual for definir. Como exemplos de algoritmos podemos citar os algoritmos das operações básicas (adição, multiplicação, divisão e subtração) de números reais decimais. Outros exemplos seriam os manuais de aparelhos eletrônicos, como um DVD player, aparelhos celulares, televisores, que explicam passo a passo como operar, programar, gravar um evento,listar suas fotos,etc. Até mesmo as coisas mais simples, podem ser descritas por sequências lógicas. Por exemplo: “Trocar uma lâmpada”. • Pegar uma escada • Colocar a escada no local certo. • Pegar a lâmpada nova • Subir na escada. • Retirar a lâmpada velha. • Colocar a lâmpada nova. • Descer da escada. • Guardar a escada. • Colocar a lâmpada velha no lixo. • Ligar o interruptor para testar. “Somar dois números quaisquer”. • Escreva o primeiro número no retângulo A • Escreva o segundo número no retângulo B • Some o número do retângulo A com número do retângulo B e coloque o resultado no retângulo C 1.6. Porque é importante construir um algoritmo. Saber construir algoritmos é fundamental na formação de profissionais de informática ou computação e como tal, proporcionar condições para essa aprendizagem é um constante desafio aos professores e profissionais da área. Um algorítimo tem um papel importante, pois ele determina de que formas podemos resolver um determinado problema, um programa de computador por exemplo, é desenvolvido com muita lógica e principalmente um conjunto de algorítimos. Outra importância da construção dos algoritmos é que um vez concebida uma solução algorítmica para um problema, esta pode ser traduzida para qualquer linguagem de programação e ser agregada das funcionalidades disponíveis nos diversos ambientes; costumamos denominar esse processo de codificação. Projeto Ejovem Módulo II Logica de Programação 12 1.7. As maneiras de representarmos um algoritmo. Existem diversas formas de representação de algoritmos, mas não há um consenso com relação a melhor delas para ser aplicada na resolução do problema proposto. Algumas formas de representação de algoritmos tratam os problemas apenas em nível lógico, abstraindose de detalhes de implementação muitas vezes relacionados com alguma linguagem de programação específica. Por outro lado existem formas de representação de algoritmos que possuem uma maior riqueza de detalhes e muitas vezes acabam por obscurecer as ideias principais do algoritmo, dificultando seu entendimento. Sendo assim temos as seguintes formas: • Descrição Narrativa; • Fluxograma Convencional; • Pseudocódigo,também conhecido como Português Estruturado ou Portugol. 1.7.1. Descrição Narrativa. Nesta forma de representação os algoritmos são expressos diretamente em linguagem natural. Como exemplo, observe os algoritmos seguintes: Esta representação é pouco usada na prática porque o uso da linguagem natural muitas vezes da oportunidade a mas interpretações,ambiguidades e imprecisões. Por exemplo, a instrução afrouxar ligeiramente as “porcas” no algoritmo da troca de pneus esta sujeita a interpretações diferentes por pessoas distintas. Uma instrução mais precisa seria: “afrouxar a porca, girandoa 30 grau no sentido antihorário”. Por mais simples que seja um algoritmo narrativo, pode haver uma grande quantidade de detalhes, que por sua vez segue um conjunto de regras dentro da sequencia a qual pertencem.1.7.2. Fluxograma Convencional. É uma representação gráfica de algoritmos onde formas geométricas diferentes implicam ações (instruções,comandos) distintos. Tal propriedade facilita o entendimento das ideias contidas nos algoritmos e justifica sua popularidade. Esta forma é aproximadamente intermediária a descrição narrativa e ao pseudocódigo (subitem seguinte), pois é menos imprecisa que a primeira e, no entanto, não se preocupa com detalhes de implementação do programa, como o tipo das variáveis usadas. Notase que os fluxogramas convencionais preocupamse com detalhes de nível físico da implementação do algoritmo. Por exemplo, figuras geométricas diferentes são adotadas para representar operações de saída de dados realizadas em dispositivos distintos. Existem diversas ferramentas para criação de fluxograma como Jude, Microsoft Visio, Dia(usado no linux), dentre outras, cada uma delas tem uma vantagem em particular. Projeto Ejovem Módulo II Logica de Programação 13 Trabalharemos com o editor de diagrama chamado Dia, onde podemos facilmente instalar no Linux e sua licença é de livre acesso. Dica: Pesquise o uso dessas ferramentas por meios da internet, amigos ou professores. Observe as principais formas geométrica usadas para representação de Fluxogramas de algoritmos: Início ou fim do fluxograma Operação de entrada de dados Operação de atribuição Decisão Operação de saída de dados Um fluxograma se resume a um único símbolo inicial por onde a execução do algoritmo começa, e um ou mais símbolos finais, que são pontos onde a execução do algoritmo se encerra. Partindo do símbolo inicial, há sempre um único caminho orientado a ser seguido, representando a existência de uma única sequência de execução das instruções. Isto pode ser melhor visualizado pelo fato de que, apesar de vários caminhos poderem convergir para uma mesma figura do diagrama, há sempre um único caminho saindo desta. Exceções a esta regra são os símbolos finais, dos quais não há nenhum fluxo saindo, e os símbolos de decisão, de onde pode haver mais de um caminho de saída (usualmente dois caminhos), representando uma bifurcação no fluxo. O exemplo ao lado representa um fluxograma convencional, mostrando a representação do algoritmo de cálculo da média de um aluno sob a forma de um fluxograma. A imagem abaixo é uma representação no diagrama de Chapin. (não abordaremos esse diagrama, nessa apostila). Projeto Ejovem Módulo II Logica de Programação 14 1.7.3. Português Estruturado ou Pseudocódigo. Esta forma de representação de algoritmos é rica em detalhes,como a definição dos tipos das variáveis usadas no algoritmo. Por assemelharse bastante a forma em que os programas são escritos, encontra muita aceitação. Na verdade, esta representação é suficientemente geral para permitir a tradução de um algoritmo nela representado para uma linguagem de programação específica seja praticamente direta. A forma geral da representação de um algoritmo na forma de pseudocódigo é a seguinte: Algoritmo é uma palavra que indica o início da definição de um algoritmo em forma de pseudocódigo. I Nome do programa: é um nome simbólico dado ao algoritmo com a finalidade de distinguilos dos demais. II – Var: consiste em uma porção opcional onde são declaradas as variáveis globais usadas no algoritmo principal; III Início e Fim: são respectivamente as palavras que delimitam o início e o término do conjunto de instruções do corpo do algoritmo. O algoritmo do cálculo da média de um aluno, na forma de um pseudocódigo, fica da seguinte forma no visualg: Dica: O Visual será a ferramenta que utilizaremos no decorrer do aprendizado, lembrando que não usaremos todos os recursos disponíveis diretamente na ferramenta, uma parte é pratica com programação lógica dentro do Visualg, a outra mostra conceitos que são logicamente utilizados nas maiorias das linguagens de programação, uma vez que, até então, a versão do Visual não abrange praticar todo conteúdo contido nessa apostila como registos, manipulação de arquivo,dentre outros. Projeto Ejovem Módulo II Logica de Programação 15 1.8. EXERCÍCIOS PROPOSTOS 1°)Crie uma sequência lógica para sacar dinheiro em um caixa eletrônico. 2°)Crie uma sequência lógica para determinar se um numero é par ou impar. 3°)Crie um fluxograma para as questões um e dois. 4°)dado o fluxograma abaixo determine: C = capital,ex: R$ 1.000,00 T = tempo em anos,ex: 2 anos I = Taxa de juros,ex: 5% o usuário entra com esses valores e sabe quanto e calculado em juros simples. a)quais as entradas de dados. b)qual o processo que está sendo executado. c)qual será a saída de informação se o usuário digitar 1025, 3, 12. 5º)Resolva as seguintes lógicas: I Um time de futebol ganhou 8 jogos mais do que perdeu e empatou 3 jogos menos do que ganhou, em 31 partidas jogadas. Quantas partidas o time venceu? II Uma pessoa supõe que seu relógio está 5 minutos atrasado, mas, na verdade, ele está 10 minutos adiantado. Essa pessoa que chega para um encontro marcado, julgando estar 15 minutos atrasada em relação ao horário combinado, chegou, na realidade, na hora certa em quantos minutos atrasados? III Três músicos, João, Antônio e Francisco, tocam harpa, violino e piano. Contudo, não se sabe quem toca o quê. Sabese que o Antônio não é o pianista. Mas o pianista ensaia sozinho à Terça. O João ensaia com o Violoncelista às Quintas . Quem toca o quê? IV – Existem três mulheres, Dona Rosa, Dona Branca, Dona Lilas, Dona branca diz: as cores de vestido que estamos usando combinam com nossos nomes, mas não estamos usando a cor do próprio nome, a pessoa que está de lilas diz: é verdade, quis as cores que cada uma está usando? 6°) Supondo que você tenha planejado no seu dia posterior ir para o colégio, após isso pagar uma conta no banco, após isso ir trabalhar,crie um algoritmo o mais detalhado possível que possa satisfazer todo o planejamento citado: 7º)Faça um algoritmo para imprimir um documento. Descreva com detalhes. 8º)Faça um algoritmo para colocar um quadro em uma parede. Descreva com detalhes. Projeto Ejovem Módulo II Logica de Programação 16 Capítulo 2. Tópicos Preliminares Objetivos Apresentar basicamente alguns tipos de dados a ser implementados e adotados; Falar qual sua importância; Diferenciar variável e constante; Apresentar comados e processo de entrada. 2.1. Tipos primitivos. Todo o trabalho realizado por um computador é baseado na manipulação das informações contidas em sua memória. A grosso modo de expressarse, estas informações podem ser classificadas em dois tipos: As instruções, que comandam o funcionamento da máquina e determinam a maneira como devem ser tratados os dados. As instruções são específicas para cada modelo de computador, pois são funções do tipo particular de processador utilizado em sua implementação. Os dados propriamente ditos, que correspondem a porção das informações a serem processadas pelo computador. 2.1.1. Tipos de Primitivos de Dados Quaisquer dados a ser tratado na construção de um algoritmo deve pertencer a algum tipo, que irá determinar o domínio de seu conteúdo. Os tipos mais comuns de dados são conhecidos como tipos primitivos de dados, são eles: inteiro, real, caractere e lógico. A classificação que será apresentada não se aplica a nenhuma linguagem de programação específica, pelo contrário, ela sintetiza os padrões utilizados na maioria das linguagens. Inteiro: todo e qualquer dado numérico que pertença ao conjunto de númerosinteiros relativos (negativo, nulo ou positivo). Exemplos: {...4,3,2,1,0,1,2,3,4,...}. Real: todo e qualquer dado numérico que pertença ao conjunto de números reais (negativo, nulo ou positivo). Exemplos: {15,34; 123,08 ; 0,005 12,0 ; 510,20}. Numérico: tratase de todo e qualquer número que pertença ao conjunto dos inteiros ou reais, também abrange números binários, octal e hexadecimal. Dados literais: todo e qualquer dado composto por um conjunto de caracteres alfanuméricos (números, letras e caracteres especiais). Exemplos: {“Aluno Aprovado”, “10% de multa”, “Confirma a exclusão ??”, “S”, “9930002”, “email”,”123nm”,”fd54fd”}. Lógico: A existência deste tipo de dado é, de certo modo, um reflexo da maneira como os computadores funcionam. Muitas vezes,estes tipos de dados são chamados de booleanos, devido à significativa contribuição de Boole a área da lógica matemática. A todo e qualquer dado que só pode assumir duas situações dados biestáveis,algo como por exemplo {0/ 1, verdadeiro/falso, sim/não, true/false }. 2.2. Constantes. Uma constante é um determinado valor fixo que não se modifica ao longo do tempo, durante a execução de um programa. Conforme o seu tipo, a constante é classificada como sendo numérica, lógica e literal. Projeto Ejovem Módulo II Logica de Programação 17 Nesse exemplo temos o número 4 como constante, ou seja, ele nunca se altera. 2.3. Variável. Uma variável é um espaço reservado na memória do computador para armazenar um tipo de dado determinado. As variáveis devem receber nomes para poderem ser referenciadas e modificadas quando necessário. Um programa deve conter declarações que especificam de que tipo são as variáveis que ele utilizará e as vezes um valor inicial. Tipos podem ser por exemplo: inteiros, reais,caracteres,etc. As expressões combinam variáveis e constantes para calcular novos valores. Veja um exemplo de variáveis do tipo carácter e outra do tipo inteiro,ele serão armazenados na memória : Veja um exemplo onde atribuímos valores as variáveis nome e idade: 2.4. Formação de identificadores. Toda variável deve possuir um nome para sua identificação dentro de um algoritmo, mas vale ressaltar que não podemos atribuir qualquer nome a ela,e uma vez atribuindo, verificar se ele é um identificador válido ou não. Na figura abaixo observamos um resumo através de um gráfico que segue resumidamente as regras. Representamos nomes escolhidos para rotular as variáveis,procedimentos e funções, normalmente, obedecem as seguintes regras: 1. O primeiro carácter deve ser uma letra. 2. Os nomes devem ser formados por caracteres pertencentes ao seguinte conjunto : {a,b,c,..z,A,B,C,...Z,0,1,2,...,9,_}. 3. Os nomes escolhidos devem explicitar seu conteúdo. EX: A, B1, BC3D,SOMA, CONTADOR. obs.: Um exemplo de identificador inválido seria 2AB ou qualquer outro iniciado por um dígito. 2.5. Declaração de variáveis Toda variável possui algum conteúdo, que será armazenado por ela e manipulado pelo algoritmo. As variáveis que serão utilizadas nos algoritmos devem ser declaradas inicialmente. A declaração de uma variável indica o tipo de dado que ela pode “guardar” no decorrer da execução do algoritmo (ou no decorrer da execução do programa que futuramente será construído). Para declararmos uma variável, temos que criar um identificador para ela, que será o nome da variável no algoritmo, e também temos que definir o tipo de dado que a variável pode armazenar. Faremos a declaração de variáveis obedecendo ao seguinte padrão: Projeto Ejovem Módulo II Logica de Programação 18 Portugol: [nome do tipo de variável] : [ nome da variável] ; Padrão Visualg: [nome da variável] : [ nome do tipo de variável] Percebemos que existe duas diferença na declaração das variáveis do portugol em relação a do Visual,que é justamente a troca de posições e a ausência de pontoevirgula. Exemplo: Visualg: Portugol: alunos : caracter caracter : alunos ; valor : inteiro inteiro : valor ; b : real real : b ; 2.6. Comandos de entrada e saída. Em um algoritmo é preciso representar a troca de informações que ocorrerá entre o mundo da máquina e o nosso mundo, para isso, devemos utilizar comandos de entrada e saída, sendo que,a nível de algoritmo esses comandos representam apenas a entrada e a saída da informação,independe do dispositivo utilizado (teclado, discos, impressora, monitor,...), mas, sabemos que nas linguagens de programação essa independência não existe, ou seja, nas linguagens de programação temos comandos específicos para cada tipo de unidade de Entrada/Saída. 2.6.1. COMANDO DE ENTRADAS DE DADOS Para que possamos obter dados do meio exterior para uso do computador (memória principal),estes têm de vir através dos dispositivos de entrada. Da mesma forma, as informações que são produzidas, tem de ser levadas ao meio externo (um arquivo, um a impressora, uma tela etc.) através de um dispositivo de saída. Para isso, utilizamos dois comandos assim definidos: Comando “leia” tem a finalidade de lê, do meio externo, a próxima informação disponível para leitura e armazena na(s) variável(eis) discriminada(s) após o comando, entre parênteses. Mais tarde aprenderemos como especificar a leitura de um dado que está armazenado em um arquivo e de que arquivo está sendo lido o dado. Exemplo: leia (v) O valor da variável (v) é dado por um dispositivo de entrada. Projeto Ejovem Módulo II Logica de Programação 19 2.6.2. COMANDO DE SAIDAS DE DADOS Comando escreva ou escreval: Imprime (na tela ou na impressora) o conteúdo da(s) variável(eis) especificada(s) após o comando, entre parênteses. Não será preocupação nossa a formatação de relatórios, mas o comando permite a impressão de texto (entre “ ”), se for necessária para clareza ou especificação do que está sendo impresso. Exemplo: escreva(x) O valor atual da variável (x) é informado para um dispositivo de saída. Vale ressaltar que em linguagens de programação geralmente termina um comando com ponto e virgula( ; ), mas para o uso no Visualg, não precisamos usar ; para fechar o comando,uma vez que isso ocorre de forma automática. Exemplo: escreva(x) O valor atual da variável (x) é informado para um dispositivo de saída. em visualg: numero : inteiro portugol: inteiro numero; Também podemos concatenar valores no comando de saída. Isso varia muito de uma linguagem para outra, por exemplo: ao executar(tecla de atalho F9) isso imprime na tela resultado seguinte: Esse exemplo ao lado utilizamos os a subtração de dois números e logo após imprimimos o resultado na tela. Projeto Ejovem Módulo II Logica de Programação 20 O resultado da saída desse programa é a seguinte: Exemplo com o comando leia e escreva: códigofonte. saída da execução: utilizamos o “escreval” quando queremos uma quebra de linha, troque por “escreva” e perceba o que acontece: 2.7. Expressões aritméticas. Quando construímos algoritmos é comum trabalharmos com expressões matemáticas para a resolução de alguns problemas. As expressões matemáticas podem fazer uso de operadores aritméticos e relacionais. As variáveis (ou constantes) manipuladas pelos operadores são chamadas de operandos. Observe o diagrama: Exemplos: A+B (A e B são os operados, e + é o operador da expressão). ((2 * A) + 5) (B/A) ((A//2)*B) – 15 Projeto Ejovem Módulo II Logica de Programação 21 2.8. Operadores aritméticos Chamamos de operadores aritméticos o conjunto de símbolos que representa as operações básicas da matemática. Para representa potencia e radiciação utilizamos: Operador Função Significado Exemplos ^ Potenciação x elevado a y 2^8 raizQ(x) Radiciação Raiz quadrada de x raizQ(9) Exemplo: códigofonte.Saída da execução. Usaremos outras operações matemáticas não convencional, porém muito úteis nas construção de algoritmo, que são o resto e o quociente da divisão inteira, conforme abaixo: Operador Função Exemplo mod Resto da divisão 9 mod 4 resolta em 1 div Quociente da divisão 9 div 4 resulta em 2 Exemplo: algorítimo que possui as quatros operações: códigofonte. Saída da execução. algorítimo que calcula o quociente e resto de uma divisão: códigofonte. Saída da execução. Projeto Ejovem Módulo II Logica de Programação 22 2.9. Expressões lógicas As expressões lógicas sempre retornaram True (Verdadeiro) e False (Falso). Para se montar expressões lógicas utilizamos de operadores relacionais e operadores lógicos. Exemplo: Visualg: Portugol: a <- verdadeiro a <- verdadeiro; b <- falso b <- falso; 2.10. Operadores relacionais. São utilizados para relacionar variáveis ou expressões, resultando num valor lógico (Verdadeiro ou Falso), sendo eles mostrados na tabela abaixo: Obs.: utilizamos somente o “=” no lugar de “==”, e “<>” no lugar de “!=”, mas isso somente no Visualg. Exemplos: comparações: num != 3 {compara se num é diferente de 3,se for igual retorna falso} nome = ‘DENISE’ {compara se nome é igual a ‘DENISE’ ,se for retorna verdadeiro} num > 5 é falso (0) {3 não é maior que 5} Algorítimo abaixo mostra o uso desse operadores relacionais. código-fonte. Saída da execução. Projeto Ejovem Módulo II Logica de Programação 23 2.11. Operadores lógicos. São utilizados para avaliar expressões lógicas. Estes operadores servem para avaliar expressões que resultam em valores lógico sendo verdadeiro ou falso: Esses operadores tem a finalidade de novas proposições lógicas composta a partir de outra proposições lógicas simples. Observe: Operador Função não negação e conjunção ou disjunção Com isso podemos podemos construir a Tabela verdade onde trabalhamos com todas as possibilidades combinatória entre os valores de diversas variáveis envolvidas, as quais se encontram em apenas duas situações (V e F), e um conjunto de operadores lógicos. Veja o comportamento dessas variáveis: Operação de Negação: A (not) não A F V V F Operação de conjunção: A B A e B F F F F V F V F F V V V Operação de disjunção nãoexclusiva: A B A ou B F F F F V V V F V V V V Exemplos: ACHOU = falso , ACHOU = true; NUM = 9 ( 4 > 5 ) e ( 5 > 3) => falso e verdadeiro (1) = falso (0) não ACHOU => verdadeiro Projeto Ejovem Módulo II Logica de Programação 24 Exemplo: código-fonte. Saída da execução. 2.12. Comando de atribuição. O operador de atribuição é utilizado para atribuir valores aos identificadores(variáveis e constantes) e na montagem de expressões(aritméticas,lógicas e literal). Com isso podemos definir sempre que um tipo de dado deve ser compatível com o tipo da variável. A figura abaixo mostra em diagrama a sua sintaxe: O valor da expressão é atribuído ao identificador (variável). X <- 2 y <- 5-x Z <- (3*(y- 9)) w <- (4*((w+2y)/2)*x) Este comando permite que se forneça ou altere o valor de uma determinada variável, onde o tipo desse valor seja compatível ao tipo de variável na qual está sendo armazenado, de acordo com o especificado na declaração. Exemplo: NUM < 8 {A variável NUM recebe o valor 8} NOME < “Guilherme” {A variável NOME recebe o valor ‘Guilherme’} 2.12.1. PRIORIDADE DE OPERADORES: Durante a execução de uma expressão que envolve vários operadores, é necessário a existência de prioridades, caso contrário poderemos obter valores que não representam o resultado esperado. A maioria das linguagens de programação utiliza as seguintes prioridades de operadores: 1. Efetuar operações embutidas em parênteses "mais internos". 2. Efetuar Funções. 3. Efetuar multiplicação e/ou divisão. 4. Efetuar adição e/ou subtração. 5. Operadores Relacionais. 6. Operadores Lógicos Projeto Ejovem Módulo II Logica de Programação 25 2.13. EXERCÍCIOS PROPOSTOS 1º)Como podemos definir o conceito de tipos primitivos de dados. 2°)Cite alguns tipos primitivos e der exemplos. 3°)Qual a diferença entre constantes e variáveis. 4°)Como podemos definir a formação de um identificador válido? crie cinco identificadores no Visualg (o nome devera ser uma única letra e após isso os tipos). 5°)Crie o seguinte código no Visualg e diga qual o resultado final. 6°)Crie um programa no onde podemos receber dois números digitados pelo usuário no final ele some os números e imprima o resultado. 7°)Dado a formula: crie um programa para calcular a formula de Bhaskara. Onde no final mostre ao usuário x1 e x2 separadamente. Dica:o usuário digita três valores, a,b e c,o programa terá duas variáveis para receber o calculo, x1 e x2.Para calcular raiz quadrada use o comando raizQ(x) onde x é o numero que tem valor inteiro,atribua o resultado da raiz a soma e depois a subtração. ex: b ← raizQ(25) , b recebe 5,pois é raiz de 25, e b deve ser do tipo real. 8º)Crie um diagrama onde podemos representar o programa da questão 7. 9°)Crie um programa que receba pelo usuário o nome,ano de nascimento, ano atual, e calcule a idade,mostrando a seguinte saída ex: meu nome é Janaína e tenho 23 anos de idade. 10°)crie um diagrama para representação da questão 9. 11°) usando o comando o tipo de dado logico do Visualg, teste os operadores relacionais. ex: a : logico , a 12 <=5 ,escreva(a).← Projeto Ejovem Módulo II Logica de Programação 26 Capítulo 3. Estruturas de Controle Objetivos Mostrar conceitos e estrutura sequencial de fluxo, em etapas lógicas, onde podese assimilar suas variações, combinações e equivalências; Apresentar estruturas de repetição e sua aplicação. As estrutura de controle de dado são responsáveis pela manipulação dos dados conforme seja necessário na realização de um processamento. Cada instrução programável possui uma lógica de operação e estabelece uma sequencia de ações a serem efetuadas ou verificadas. Quando estivermos criando os algoritmos serão necessárias as manipulações de dados respeitando a sequencia lógica de cada comando, buscando sempre alcançar os objetivos almejados pelos algoritmos. Basicamente as estruturas de controle de dados são de três tipos principais: Sequencial: conjunto de comandos separados por ponto e vírgula (;) que são executados em uma sequência linear de cima para baixo. Seleção:a partir de um teste condicional, uma instrução, ou um conjunto de instruções, podem ser executados ou não, dependendo exatamente do resultado do teste efetuado. Repetição:uma instrução ou o conjunto de instruções que será executado repetidamente, de acordo com o resultado de um teste condicional. 3.1. Estrutura sequencial. A estrutura sequencial é a mais convencional entre todas as possíveis, pois ela consiste na execução de uma instrução de cada vez, onde o encerramento da primeira instrução permite o acionamento da instrução seguinte, respeitando a ordem de cima para baixo. Observe o exemplo a seguir: Declarações real NOTA; Inicio escreva("Informa a nota da prova: "); leia(NOTA); escreva("Nota =", NOTA); Fim O mesmo exemplo no Visualg fica: Projeto Ejovem Módulo II Logica de Programação 27 O algoritmo proposto no exemplo anterior é descritivo e respeita as regras de organização e sintaxe do português estruturado. Porém, qual é a primeira instrução a ser executada neste algoritmo? Ele será executado de maneira sequencial, onde a partir da palavra reservada Declarações as instruções vão sendo executadas de cima para baixo e a próxima instrução só é executada após a anterior ser encerrada. O ponto e vírgula marca exatamente o final da instrução a ser executada, no caso dos comandodo Visualg vale lembrar que suas instruções não finalizam com ponto e virgula, pois ao passar pra próxima linha o programa reconhece como finalização da instrução anterior. 1. Primeira execução será a criação da variável NOTA. 2. Segunda será a escrita da mensagem que orienta o usuário. 3. Na terceira será armazenado o valor informado pelo usuário. 4. A quarta e última mostrará uma mensagem e o valor lido É importante observar que sempre será executado primeiro o bloco de declarações e na sequencia o bloco de instruções. A execução da palavra reservada Fim encerra a execução do algoritmo. 3.2. Estrutura de seleção. Este tipo de estrutura permitir a escolha de um caminho sequencial a ser executado. Primeiramente, ela efetua um teste condicional que definirá o caminho de execução do algoritmo baseado no resultado deste teste. Os testes condicionais são baseados na lógica convencional, podem obter o resultado de verdadeiro ou falso. Estes testes podem ser efetuados sobre operações relacionais simples ou com expressões lógicas complexas que resultem em um valor lógico (verdadeiro ou falso). As estruturas de seleção podem ser classificadas de 4 formas diferentes, sendo esta classificação baseada na organização lógica existente em cada situação. Esta classificação se resume em: > Seleção simples. > Seleção composta. > Seleção encadeada. > Seleção de múltipla escolha. 3.2.1. Seleção Simples Neste tipo de seleção é proposto um teste condicional, que sendo verdadeiro possibilitará a execução de uma instrução ou um conjunto de instruções (bloco condicional) específica. Português estruturado: Acompanhe a seguir as regras de representação em algoritmo para a técnica descritiva do português estruturado. Sintaxe: : se (<condição>) então comando 1; comando 2; : : comando n; fim se; Projeto Ejovem Módulo II Logica de Programação 28 Exemplo: No Visualg: Declarações inteiro IDADE; Inicio escreva("Informe sua idade: "); leia(IDADE); se (IDADE < 15) então escreva ("Você é uma criança"); fim se; Fim Este algoritmo será executado sequencialmente até chegar ao comando SE (comando condicional SE) que realizará o teste condicional para verificar a veracidade do valor informado pelo usuário e armazenado na variável IDADE. Se ela for verdadeira, ou seja, for menor que 15 a mensagem "Você é uma criança" será mostrada na tela. Se o valor informado pelo usuário não atender ao teste condicional, a mensagem não será exibida e o bloco condicional não será executado. Fluxograma: Abaixa temos no fluxograma o simbolo que representa uma decisão ou seleção e a seguinte: As suas vértices indica qual a saída caso ela for verdadeira ou falsa. Acompanhe a seguir a representação em algoritmo na técnica gráfica do fluxograma: Exercício rápido: 1°) Crie um algoritmo que leia um número e diga se ele é maior ou menor que 10. 2°) Crie um algoritmo que leia dois números e determine qual é o maior entre eles, imprimindo na tela (“o primeiro número é o maior”, “o segundo número e o maior” ) de acordo com o valor digitado. Projeto Ejovem Módulo II Logica de Programação 29 3.2.2. Seleção Composta A seleção composta sempre executará um bloco condicional, pois se o resultado do teste condicional for verdadeiro um conjunto de instruções ou somente uma será executada e se o resultado não for verdadeiro um outro conjunto de instruções, ou somente uma, será executada também. Este tipo de seleção sempre identificará um único caminho de instruções a ser percorrido, dependendo sempre do resultado da veracidade do testes condicional executado. Sintaxe: : se (<condição>) então comando 1; : comando n; senão comando 5; : comando m; fim se; Exemplo: no Visualg Declarações inteiro idade; Inicio escreva("Informe sua idade: "); leia(idade); se (idade < 15) então escreva ("Você é uma criança"); senão escreva("Você é adulto"); fim se; Fim Se a idade informada for menor que 15 então a mensagem a classificará como uma criança, senão a mensagem apresentada será que Você é adulto. Projeto Ejovem Módulo II Logica de Programação 30 Veja como é o fluxograma que representa o código anterior abaixo: Exercício rápido: 1°) Crie um algoritmo que leia sua idade e diga se você é de “maioridade” ou de “menoridade”. 2°) Crie um algoritmo que um número, caso ele seja menor que 0, transforme ele em positivo, se não, imprima seu valor na tela. 3.2.3. Seleção encadeada A instrução de seleção (SE) pode ser encadeada uma dentro da outra, seja no bloco verdadeiro (então) ou falso (senão). Todas as instruções programáveis podem estar dentro de qualquer um dos blocos da instrução de seleção. O encadeamento destas instruções também é chamada de aninhamento de instruções de seleção ou condicional várias, não existindo um limite de quantos testes condicionais podem estar dentro de outro. Quem estabelece este tipo de limite é a solução lógica proposta no algoritmo para alcançar uma solução eficiente. Sintaxe: : se (<condição_1>) então <bloco de comandos 1>; senão se (<condição_2>) então <bloco de comandos 2>; senão se (<condição_3>) então : fim se; fim se; fim se; Projeto Ejovem Módulo II Logica de Programação 31 Exemplo: no Visualg: Declarações inteiro idade; Início escreva("Informe sua idade: "); leia(idade); se (idade < 20) então se(idade < 15) então escreva ("Você é criança"); senão escreva ("Você é adolescente"); fim se; senão se(idade < 50) então escreva("Você é adulto"); senão escreva("Você é velho"); fim se; fim se; Fim Fluxograma: Exercício rápido: 1°) Crie um algorítimo que receba os três lados(A,B,C) de um triângulo e diga de ele é triângulo escaleno(todos os lados diferente), isósceles(somente dois lados iguais) ou equilátero(todos os lados iguais). 2°) Dado três variáveis, crie um algoritmo que determine quem é a maior, a intermediaria e a menor. Projeto Ejovem Módulo II Logica de Programação 32 3.3. Seleção de múltipla escolha. Uma outra instrução condicional, muito utilizada nas avaliações de igualdade, é a seleção de múltipla escolha. Ela verifica somente a igualdade do valor avaliado, onde sua veracidade resultará na execução de um bloco, ou de uma única instrução específica. Sintaxe: : escolha (X) caso <v1>: comandos; caso <v2>: comandos; caso <v3>: comandos; caso contrario: comandos; fim escolha; <v1>, <v2>, <v3> são supostos valores a serem relacionados por meio da operação de igualdade. Exemplo: Declarações inteiro estação; Inicio escreva("Digite o período trimestral do ano em que estamos: "); leia(estação); escolha (estação) { instrução de múltipla escolha sobre estação } caso 1: escreva ("verão"); { testes de igualdades sobre estação } caso 2: escreva ("outono"); caso 3: escreva ("inverno"); caso 4: escreva ("primavera"); caso contrario: escreva ("período inválido"); fim escolha; Fim Projeto Ejovem Módulo II Logica de Programação 33 No Visualg Temos algumas diferenças de sintaxe, onde uma delas é a ausência de dois pontos após caso, a outra é o comando “outrocaso” que no portugol é representado por “casocontrario”. 3.4. Estruturas de repetição. O processamento de valores pode ocorrer diversas vezes sobre uma mesma lógica, porém os dadosa serem manipulados podem ser diferentes, como no calculo da tabuada de um número. Este calculo realiza a mesma operação de multiplicação sobre os valores numéricos inteiros sequencias, normalmente iniciados em um (1) e seguindo até o número dez (10) quando estamos aprendendo a calcular e memorizar o resultado obtido nesta operação. Sendo assim, Vamos criar um algoritmo que leia um número positivo e apresente o resultado de sua tabuada de um a dez (1 à 10). Observe o exemplo proposto: Exemplo: Supondo que o valor desejado seja 2 então: Solução (algoritmo descritivo): 2 x 1 = 2 2 x 2 = 4 2 x 3 = 6 2 x 4 = 8 2 x 5 = 10 2 x 6 = 12 2 x 7 = 14 2 x 8 = 16 2 x 9 = 18 2 x 10 = 20 Projeto Ejovem Módulo II Logica de Programação 34 Para o exemplo acima foi desenvolvido um algoritmo que atende ao problema apresentado, mas se os valores tivessem que ser gerados até 1000? .Assim o algoritmo não ficaria mais complexo, pois a operação a ser realizada seria a mesma, e ele ficaria bem maior. Adiante veremos a solução para esse problema. Dica: os laços de repetição são conhecidos em inglês como loops ou looping. 3.5. Repetição com teste no início e no final. 3.5.1. TESTE INÍCIO Com o intuito de controlarmos as manipulações necessários sobre os dados armazenados, também podemos utilizar as instruções de repetição, que permitem a repetição de uma operação quantas vezes forem necessárias, baseando esta repetição no resultado de um teste condicional. Para isso temos a estrutura enquanto <condição> faça. A instrução de repetição ENQUANTO ... FAÇA permite a execução do conjunto de comandos pertencentes ao seu bloco de repetição, sendo eles executados a partir de um teste condicional verdadeiro. Enquanto este teste permanecer verdadeiro a repetição é executada continuamente, sendo encerrada somente quando a condição for falsa. Sintaxe: : enquanto (< condição >) faça <bloco de repetição>; { com um ou vários comandos } fim enquanto; Exemplo (descritivo): No Visualg: Declarações real nota, media; inteiro aux; Início aux 1; ← media 0; ← enquanto aux < 50 faca escreva("Informe sua nota: "); leia(nota); media ← media + nota; aux ← aux + 1; fim enquanto escreva("Média da turma = ",media /50); Fim Projeto Ejovem Módulo II Logica de Programação 35 Fluxograma: Observe ao lado a representação genérica em um algoritmo gráfico usando o ENQUANTO ...FAÇA. Exercício rápido: 1°) Crie um algorítimo que conte de 1 até 100. 2°) Crie um algorítimo que receba 10 números e imprima na tela após cada digitação. 3°) Crie um programa que conte de 1 a 52. 3.5.2. TESTE FINAL Para o teste final temos a instrução REPITA ... ATÉ, onde possui características relevantes na sua lógica de execução. As principais características dessa instrução são: • O teste condicional para realizar a repetição sobre o bloco de instruções existente entre a palavra reservada REPITA e ATÉ é executado somente no final do bloco, conforme organização sequencial do algoritmo • O bloco entre as duas palavras reservadas desta instrução será executado no mínimo uma vez • A repetição é executada somente se o teste condicional for falso, pois sendo ele verdadeiro a repetição é encerrada. Sintaxe: : repita <bloco de repetição>;{ com um ou vários comandos } até (<condição>); : Projeto Ejovem Módulo II Logica de Programação 36 Exemplo (descritivo): No Visualg: Declarações real nota, media; inteiro aux; Início aux ← 1; media ← 0; repita escreva("Informe sua nota: "); leia(nota); media ← media + nota; aux ← aux + 1; até (aux > 50); escreva("Média da turma = ",media /50); Fim Usando a representação gráfica, vamos observar o mesmo exemplo usando a instrução REPITA ... ATÉ. O bloco de repetição vai ser executado até a condição for maior que 50. Observe Fluxograma ao lado: Exercício rápido: 1°) Crie um algorítimo que leia um número e mostre vários “*” na tela de acordo com esse número. Ex: 10 vai imprimir **********. 2°) Crie um algoritmo que leia dois números e mostre o intervalo entre eles. Ex: 5 e 12 vai mostra: 6,7,8,9,10,11. Projeto Ejovem Módulo II Logica de Programação 37 3.6. Repetição com variável de controle. Na estrutura de repetição vista até agora, ocorrem casos que fica difícil determinar o números de vezes que um bloco vai executar. Ou seja,será executado enquanto a condição for satisfatória. A instrução de repetição PARA ... FAÇA executa um conjunto de instruções por uma quantidade de vezes bem definidas (conhecidas). Sintaxe: : para X de i até f passo p faça <comandos>; fim para; onde: X é uma variável inteira que auxiliará na contagem da repetição iniciada com o valor i até o valor final de f ,p é o valor do incremento dado a variável X. O problema da tabuada, apresentado anteriormente, pode ser solucionado com o algoritmo que usa eficientemente a instrução de repetição para ... faça. Solução da tabuada (descritiva): Declarações inteiro valor, contador; Início escreva ("Informe o valor desejado: "); leia(valor); para contador de 1 até 10 passo 1 faça escreval(valor, " x ",contador," = ", ( valor * contador) ); fim para; Fim No Visualg: Projeto Ejovem Módulo II Logica de Programação 38 Vamos acompanhar outro exemplo na aplicação desta instrução de repetição. Exemplo (descritivo): No Visualg: Declarações real nota, soma, media; inteiro aux; Início soma <- 0; para aux de 1 até 50 passo 1 faça escreva("Informe sua nota: "); leia(nota); soma<- soma + nota; fim para; media <- soma / 50; escreva ("Média da turma = ", MEDIA); Fim Neste exemplo, a repetição, ou looping, realizado pela instrução para ... faça efetua a leitura e a soma de 50 notas de alunos de uma turma, apresentando no seu final a média desta turma. Fluxograma: Acompanhe a seguir o algoritmo gráfico da solução descrita anteriormente em português estruturado. Exercício rápido: 1°) Faça um algoritmo que receba 10 números e imprima somente os 5 primeiros. 2°) Faça um algoritmo que imprima somente números pares de 2 até 20. Projeto Ejovem Módulo II Logica de Programação 39 3.7. Comparação entre estruturas de repetição. As estruturas de repetição possuem uma forma diferenciada para controlar a quantidade de repetições a serem executadas. Estes controles podem ser genericamente classificados em automático ou controlado pelo usuário do programa. AUTOMÁTICO: Uma variável auxiliar contará de quantas vezes será executado o conjunto de comandos (bloco de repetição), sem interferência direta do usuário. O bloco será repetido sempre a quantidade de vez prevista pelo desenvolvedor do programa. CONTROLADO PELO USUÁRIO: O programa sempre respeitará a solicitação do usuário, executando um bloco de repetição quantas vezes forem solicitadas pelo usuário, respeitando a lógica existente no programa desenvolvido. Na tabela a seguir podemos ver um comparativo de estruturas de repetição; Estrutura Condição Quantidade de execuções Condição de existência Enquanto Início 0 ou muitas Condição verdadeira Repita Final Minimo 1 Condição falsa Para Não tem ((vf-vi) div p)+1 v<=vf Onde: v variável de controle;→ vi é a variável de controle;→ vf é o valor final da variável v;→ p é o valor o incremento dado à variável;→ Diagrama: enquanto: repita: para: Projeto Ejovem Módulo II Logica de Programação 40 Repare que a estrutura para é a mais complexa, uma vez que acontece vários processos no mesmo, as estruturas repita e enquanto são muito semelhantes. A diferença está na ordem da expressão e ação, pois em repita
Compartilhar