Baixe o app para aproveitar ainda mais
Prévia do material em texto
Table of Contents Aula 1: Fundamentos da lógica 3 Objetivos 3 Atenção 3 O pensamento computacional 3 Um pouco mais sobre algoritmos 3 Mas o que são algoritmos? 3 Fluxogramas 4 Pseudocódigo 4 Saiba mais 4 Atenção 5 Aula 2: Conceitos básicos de programação 6 Objetivos 6 Armazenamento de dados 6 Compreendendo as variáveis 6 Atenção 7 Numerais 7 Literais 7 Lógicos 7 Atenção 7 Atenção 7 Comentário 8 As constantes 8 Operadores 8 QUANTO AO NÚMERO 8 QUANTO AO TIPO 8 Aula 3: Expressões e tabela da verdade 10 Objetivos 10 Expressões matemáticas 10 Dica 10 Expressões relacionais 10 Exemplo: 10 Expressões lógicas 11 Atenção 11 Tabela da verdade 11 1º. Passo 11 2º. Passo 11 3º. Passo 11 Operadores de atribuição 12 Operador de adição e atribuição 12 Operador de subtração e atribuição 12 Operador de divisão e atribuição 12 Operador de multiplicação e atribuição 12 Operadores de incremento e decrementar 12 Aula 4: Comandos de entrada e saída 13 Objetivos 13 Comandos de entrada e saída em Portugol 13 COMANDO DE ENTRADA 13 COMANDO DE SAÍDA 13 Arredondando valores reais no Portugol Studio 13 Comandos de entrada e saída em C++ 14 Dica 14 Aula 5: Estrutura de seleção simples e composta 15 Objetivos 15 Estrutura Seletiva 15 Aula 6: Estrutura de seleção com múltiplas alternativas 16 Objetivos 16 Estrutura seletiva aninhada 16 * Portugol Studio 16 Estrutura de seleção CASO ou SWITCH 17 Aula 7: Estrutura de repetição com pré-teste e com pós-teste 20 Objetivos 20 Estruturas repetitivas 20 Estrutura de repetição com pré-teste 20 Estrutura de repetição com pós-teste 20 Aula 8: Estrutura de repetição com variável de controle 23 Objetivos 23 Estrutura de repetição com variável de controle 23 Aula 9: Estruturas de dados homogêneas unidimensionais 25 Objetivos 25 Vetores 25 Atenção 26 Dica 27 Aula 10: Estruturas de dados homogêneas bidimensionais 28 Objetivos 28 Matrizes 28 Dica 29 Aula 1: Fundamentos da lógica Objetivos Identificar raciocínio lógico e pensamento computacional; Examinar fluxogramas e algoritmos escritos em portugol; Praticar a estruturação de soluções com fluxogramas e algoritmos. Na computação, o raciocínio lógico é o que nos ajuda a explicar por que as coisas acontecem da maneira como acontecem. A lógica é fundamental para o funcionamento dos computadores; tudo o que a máquina faz é controlado pela lógica e podemos usá-la para raciocinar sobre o comportamento dos programas. Atenção É importante ressaltar que, antes que um computador possa ser utilizado para resolver um problema, precisamos compreender o problema e as diferentes maneiras que podemos usar para solucioná-lo. O pensamento computacional O pensamento computacional é um processo de solução de problemas que envolve os seguintes passos: 1. Identificação e descrição de um problema. 2. Verificação de detalhes importantes para a solução. 3. Decomposição do problema em partes menores. 4. Tratamento dos segmentos na criação de um processo de solução. 5. Aplicação e avaliação da solução proposta. Existem quatro pilares para o pensamento computacional: 1. Decomposição - Envolve a decomposição do problema em partes menores e mais gerenciáveis. 2.Reconhecimento de padrões - Busca semelhanças entre o problema e outras soluções anteriores e também dentro do próprio problema. 3. Abstração - Concentra-se nas informações relevantes para o problema, ignorando detalhes que não são importantes. 4. Algoritimos - Desenvolvem uma solução passo a passo para o problema, incluindo as regras a serem seguidas para tal. Um pouco mais sobre algoritmos A discussão em torno do conceito e das etapas do pensamento computacional introduziu um termo muito presente no estudo de programação: algoritmos. Mas o que são algoritmos? Os algoritmos são séries de procedimentos definidos passo a passo que visam a solução de um problema. Algoritmos são independentes de linguagens de programação e, por isso, um algoritmo pode ser convertido em qualquer linguagem de programação. Os algoritmos que formulam soluções para problemas computacionais e que serão traduzidos em uma linguagem de programação normalmente estão descritos como fluxogramas ou escritos em pseudocódigo. Fluxogramas Os fluxogramas são a representação gráfica dos algoritmos. Para desenhá-los, existe um conjunto de regras a ser seguido e é necessário utilizar uma simbologia específica. Veja, a seguir, os símbolos que podem ser usados: (VER NA DISCIPLINA) Exemplo 1: SOMA Pseudocódigo O pseudocódigo não é uma linguagem de programação e, por isso, não precisa seguir uma sintaxe específica. Ele é uma maneira simples de descrever um conjunto de instruções que deverão ser executadas pelo computador. O pseudocódigo é escrito na língua nativa de quem o utiliza – no nosso caso, o português – e sua intenção é garantir que qualquer pessoa compreenda o que está descrito. Saiba mais Em computação, o termo sintaxe faz referência às regras que especificam de que maneira devem ser utilizadas as instruções e declarações de uma linguagem de programação. Na Informática, os algoritmos costumam ser escritos em portugol. O portugol é uma pseudolinguagem, ou seja, é uma linguagem intermediária entre a linguagem natural e a linguagem de programação. Para fins de padronização e garantia de compreensão dos algoritmos, o portugol adota algumas regras. Vamos ver o exemplo a seguir, em que são recebidos dois números para que se calcule e exiba a subtração entre eles. Algoritmo em portugol 1 Início 2 Leia(Teste) Leia(Prova) 3 Media <- (Teste+Prova)/2 4 Escreva (Media) 5 Se (Media < 6) 6 Escreva(“Você está abaixo da média!”) 5 Fim se Atenção O portugol não é uma linguagem de programação e, por isso, um algoritmo escrito em portugol não pode ser executado por um computador. Fluxogramas: Os fluxogramas representam graficamente a solução de um problema com base em um conjunto específico de símbolos. Algoritmos: Os algoritmos são como os fluxogramas, mas, ao invés de terem a forma gráfica, são totalmente textuais. Portugol: O portugol é a linguagem adotada na criação de algoritmos que nos permite definir as soluções usando nossa língua materna, ou seja, o português. Aula 2: Conceitos básicos de programação Objetivos Apontar o conceito de variáveis e constantes; Identificar os diferentes tipos de dados existentes; Examinar os diferentes tipos de operadores e sua aplicação. Armazenamento de dados O funcionamento dos computadores envolve as etapas de entrada > processamento > saída Isso significa dizer que o computador recebe dados, faz o processamento necessário com eles e gera as informações necessárias para a saída. Na programação, trabalharemos diretamente com essas etapas. Observe o exemplo a seguir: Início Escreva(“Informe o o. número: ”) Leia(N1) Escreva(“Informe o 2o. número: ”) Leia(N2) Subtra <- N1 - N2 Escreva(“A subtração entre os números é ”, Subtra) Fim Entrada de dados> Processamento> Saída de informações As cores destacam a etapa envolvida em cada momento Os dados de entrada e as informações a serem exibidas como saídas ficam armazenados na memória principal do computador, conhecida como RAM – Random Access Memory ou Memória de Acesso Aleatório. Por isso, é preciso ter uma solução que permita armazenar os dados e recuperá-los sem dificuldade e sem que eles se misturem com todos os outros dados na memória. Essa solução existe: são as variáveis. Compreendendo as variáveis Uma variável é um espaço da memória principal dedicado ao armazenamento temporário de valores. Em geral, os identificadores de variáveis podem conter letras e números, não devem conter espaços em branco nem caracteres especiais, e não podem começar com números. O único caractere especial que costuma ser aceito em nomes de variáveis é o sublinado ou UNDERLINE (_). No C++, as regras para criação de identificadores de variáveis são as seguintes: Os identificadores podem começar com uma letra ou com o caractere “_”; Após o primeiro caractere, o identificador pode ser composto por letrase números. Caracteres especiais e espaços em branco não podem ser utilizados. Atenção Lembre-se: C++ é uma linguagem case sensitive. As variáveis podem ser de diferentes tipos. Em geral, esses tipos pertencem à categoria dos numerais, dos literais ou dos lógicos. Numerais Agrupa tipos que identificam variáveis cuja intenção é armazenar valores numéricos. Literais Permitem a criação de variáveis para armazenamento de caracteres. Lógicos Permitem a criação de variáveis para armazenamento de valores do tipo verdadeiro ou falso. Tipos de Variáveis Portugol Studio C++ Inteiro: número sem casa decimal significativa int / long int Real: número com casa decimal significativa float / double Caractere: somente um caractere char Cadeia: conjunto de caracteres char Logico: verdadeiro ou falso bool Atenção No Portugol Studio, as palavras com o tipo de dado que define variáveis para armazenamento de valores lógicos são escritas sem os acentos. Declaração de Variáveis Portugol Studio C++ cadeia nome = “Luciana” char nome[ ] = “Luciana”; int eiroidade = 42 int idade = 42; real saldo = 550.00 float saldo = 550.00; cadeia sexo = ‘F’ char sexo[ ] = “F”; logico trabalha = verdadeiro bool trabalha = true; Atenção No C++, as variáveis lógicas são declaradas como do tipo bool e podem receber true (verdadeiro) ou false (falso). Comentário Os programadores acham mais fácil escrever programas em linguagens de tipagem fraca. Alguns exemplos de linguagens fracamente tipadas são Python e JavaScript. No Portugol Studio, as aspas simples são usadas para delimitar um único caractere (como em sexo), e as aspas duplas delimitam cadeias de caracteres (como em nome). No C++ isso não acontece e as aspas duplas são utilizadas em ambos os casos. Mas, se eu quiser usar um valor constante, como o de pi? As constantes Um valor constante é um valor que não se altera. Ao contrário das variáveis, que podem ter seu valor modificado ao longo do programa, as constantes têm um valor predefinido que não pode ser alterado. Portugol Studio C++ const real PI = 3.14 const float PI = 3.14; const inteiro MESES = 12 const int MESES = 12; Por uma questão de convenção, os identificadores de constantes costumam ser escritos em caixa alta, mas essa não é uma obrigatoriedade. Operadores Os operadores são símbolos que, combinados às variáveis e constantes, nos permitem construir expressões aritméticas, relacionais e lógicas. QUANTO AO NÚMERO Quanto ao número de operandos sobre os quais atuam, os operadores podem ser unários ou binários. Operadores unários atuam sobre um único operando, e operadores binários precisam de dois operandos para que possam ser utilizados. QUANTO AO TIPO Os operadores podem ser aritméticos, relacionais, lógicos, de atribuição, de incremento e de decremento. Observe, a seguir, os operadores pertencentes a cada uma dessas categorias. Operadores Matemáticos Operadores Relacionais + soma > Maior que - subtração < Menor que / divisão >= Maior ou igual * multiplicação <= Menor ou igual % Resto da divisão != Diferente de Operadores Lógicos Operadores Especiais de Atribuição ! Não += Soma e atribui. Exemplo: res+=2 && E -= Subtrai e atribui. Exemplo: res-=2 || Ou /= Divide e atribui. Exemplo: res/=5 *= Multiplica e atribui. Exemplo: res*=3 Operadores de Atribuição Operadores de Incremento / Decremento = Atribuição de valor a variáveis ++ Incremento ou constantes. – Decremento Aula 3: Expressões e tabela da verdade Objetivos Identificar os diferentes tipos de expressão; Analisar a forma como são escritas as expressões; Avaliar expressões lógicas para construção de tabelas da verdade. Vamos ver de que maneira eles são utilizados nos programas e algoritmos que iremos construir. Expressões matemáticas Para que as expressões matemáticas nos exemplos possam ser utilizadas em um algoritmo ou programa, precisam ser escritas conforme a seguir: Subtra = 12 - 7 Divide = 14 / 2 Mult = 35 * 3 Soma = 14 + 2 Um operador que está disponível em diversas linguagens de programação é o módulo, representado pelo sinal “%”. A operação de módulo é responsável por retornar o resto de uma divisão. Observe os exemplos: Resto1 =120%2 Resto2 = 310%3 Lembre-se de que os operadores têm o que chamamos de precedência — responsável por definir a ordem em que as operações serão executadas, quando uma expressão combina várias delas. Observe a tabela de precedência a seguir: 1º. Multiplicação, divisão, módulo 2º. Adição, subtração Dica Assim como são usados na Matemática, os parênteses também podem ser utilizados em algoritmos e programas. Quando eles estiverem presentes, resolva primeiro o conteúdo dentro dos parênteses. Expressões relacionais As expressões relacionais são construídas de modo a avaliar a relação entre os termos da expressão. Uma expressão desse tipo é composta por termos de um mesmo tipo e por operadores relacionais. O resultado de uma expressão relacional será sempre um valor lógico: Exemplo: Considere as variáveis N1=15 e N2=29: Maior = (N1 > N2) Maior armazena falso Menor = (N1 < N2) Maior armazena verdadeiro. Diferente = (N1 != N2) Diferente armazena verdadeiro. Expressões lógicas As expressões lógicas, também conhecidas como expressões booleanas, são construídas com o auxílio dos operadores lógicos e são responsáveis por avaliar uma ou mais condições. O resultado de uma expressão lógica será sempre um valor lógico. Considere que a variável “Num” está armazenando o valor 10. Ao avaliarmos a expressão lógica para esse caso, veremos que ambas expressões relacionais retornam verdadeiro. Num = 10 (Num>0) Esta expressão relacional retorna verdadeiro. (Num%2==0) Esta expressão relacional retorna falso. Precedência dos operadores lógicos 1º. Não (!) 2º. E (&&) 3º. Ou (||) Atenção Conhecer a precedência dos operadores é essencial quando é necessário resolver uma expressão na qual vários operadores são combinados. Tabela da verdade A quantidade de variáveis será expoente de uma base 2 e o resultado dessa potenciação dirá quantos resultados diferentes existem para a expressão. Observe: 1º. Passo Identificar a quantidade de variáveis. A && B || !C Três variáveis: A, B e C 2º. Passo Utilizar a quantidade de variáveis como expoente de uma base 2. 23 Quantidade de variáveis da expressão 3º. Passo Resolver a potenciação para descobrir a quantidade de combinações possíveis. A quantidade de combinações possíveis nos ajudará a definir quantas linhas irão compor a tabela da verdade. Operadores de atribuição Os operadores de atribuição são responsáveis por armazenar valores em constantes e variáveis. Observe: Resultado = 0 Atribui 0 à variável “Resultado”; Pi = 3.14 Atribui 3.14 à constante “Pi”; Nome = “Thomás” Atribui “Thomás” à variável “Nome”; Soma = N1 + N2 Atribui a soma de A+B à variável “Soma”. Operador de adição e atribuição Soma += 5 Equivale à expressão Soma = Soma + 5 Operador de subtração e atribuição Subtra –= 10 Equivale à expressão Subtra = Subtra – 10 Operador de divisão e atribuição Divide /= 2 Equivale à expressão Divide = Divide / 2 Operador de multiplicação e atribuição Multiplica *= 3 Equivale à expressão Multiplica = Multiplica * 3 Operadores de incremento e decrementar O operador de incremento aumenta em uma unidade o valor da variável. Exemplo: Total ++ Equivale à expressão Total = Total + 1 Enquanto o operador de decremento diminui em uma unidade o valor da variável. Exemplo: Total -- Equivale à expressão Total = Total – 1 Aula 4: Comandos de entrada e saída Objetivos Identificar os comandos de entrada e saída; Analisar problemas simples que possam ser resolvidos com programas; Aplicar algoritmos e programas para solução dos problemas apresentados. Nesta disciplina, trabalharemos apenas com os comandos de entrada de dados via teclado, mas um input pode vir de outras origens, como o clique emum botão do mouse ou um sinal detectado por um sensor de movimentos, por exemplo. Os comandos de saída podem direcionar a informação para uma impressora ou um dispositivo de áudio, por exemplo, mas o destino padrão das saídas de nossos programas e algoritmos será o monitor de vídeo. Comandos de entrada e saída em Portugol Geralmente, os algoritmos utilizam os comandos leia e escreva para entrada e saída de dados, respectivamente. Algumas vezes, vemos pequenas variações dessas instruções: COMANDO DE ENTRADA pode aparecer como receba, receber ou ler. COMANDO DE SAÍDA Comando de saída pode passar a ser exiba, exibir ou escrever. Arredondando valores reais no Portugol Studio Para arredondarmos valores e configurar o número de casas decimais que desejamos exibir, é preciso utilizar a função arredondar, da biblioteca Matematica-->mat. Veja como fazer: programa { inclua biblioteca Matematica --> mat funcao inicio() { real pi_Longo = 3.14159265358979323846 real pi_Curto // Arredonda o valor de pi_Longo para 2 casas decimais pi_Curto = mat.arredondar(pi_Longo,2) } } Linhas de comentário são muito úteis, pois nos permitem escrever informações que nos ajudam a compreender melhor o código. Elas não serão executadas pelo computador e servem somente para fins de documentação. Comandos de entrada e saída em C++ Os comandos cin e cout são os que utilizaremos para entrada e saída de dados, respectivamente. Dica C++ é uma linguagem de programação compilada. O compilador é responsável por verificar erros de sintaxe no programa e, quando o programa está sintaticamente correto, produzir outro programa em linguagem de máquina. Aula 5: Estrutura de seleção simples e composta Objetivos Identificar as estruturas seletivas; Aplicar as estruturas de seleção para escrever algoritmos e programas; Analisar os resultados produzidos por códigos que empreguem estruturas seletivas. Estrutura Seletiva Uma estrutura seletiva restringe a execução de um trecho do código à veracidade, ou não, de uma ou mais condições. No seu formato mais simples, uma estrutura seletiva, no Portugol Studio e no C++, tem a seguinte sintaxe: * Portugol Studio se (condição) { // Comandos a serem executados se a condição for verdadeira. } * C++ if (condição) { // Comandos a serem executados se a condição for verdadeira. } Você se lembra de quando falamos das expressões relacionais e lógicas? RESUMINDO TUDO: ESTRUTURAS SELETIVAS SÃO ESTRUTURAS COM IF, ELSE, etc… ESTRUTURAS QUE DESVIAM CONFORME A OU AS CONDIÇÕES... Aula 6: Estrutura de seleção com múltiplas alternativas Objetivos Aplicar as estruturas seletivas aninhadas; Identificar uma alternativa à estrutura “se..então..senão”; Estabelecer a estrutura de seleção adequada para escrever algoritmos e programas. Estrutura seletiva aninhada Para dar conta das três possibilidades e ser capaz de dar uma mensagem correta seja qual for a situação – número nulo, número positivo ou número negativo – precisamos adequar o código, mais especificamente o trecho que avalia as condições. Observe: * Portugol Studio se (num>0) { escreva("Este número é positivo!") } senao se (num<0) { escreva("Este número é negativo!") } senao { escreva("Este número é nulo!") } * C++ if (num>0) { cout <<"Este número é positivo!"; } else if (num<0) { cout <<"Este número é negativo!"; } else { cout <<"Este número é nulo!"; } Logo após o comando senao ou else, inserimos outro teste de condição, iniciado pelo comando se ou if. Atenção É importante que você saiba que não há um limite para aninhamento de estruturas seletivas. COMO JÁ SEI : USO DOS: IF, ELSE IF, ELSE Estrutura de seleção CASO ou SWITCH A estrutura CASO (nos algoritmos) ou SWITCH (nos programas em C++) são semelhantes à estrutura SE ou IF, mas possui algumas restrições: Uso dos operadores lógicos para avaliar mais de uma condição em um mesmo teste: isso não é possível na estrutura CASO ou SWITCH. Os operadores relacionais (como maior que ou menor ou igual a) também não são permitidos. Aqui, os valores a serem testados precisam ser definidos e a variável será igual a eles ou diferente dos mesmos. Observe a sintaxe desta estrutura no Portugol Studio e no C++: * Portugol Studio escolha (variável_a_ser_testada) { caso valor1: // Comandos a serem executados. pare caso valor2: // Comandos a serem executados. pare caso valorN: // Comandos a serem executados. pare caso contrario: // Comandos a serem executados caso a variável testada não seja // igual a nenhum dos valores testados nos “casos”. } * C++ switch (variável_a_ser_testada) { case valor1: // Comandos a serem executados. break; case valor2: // Comandos a serem executados. break; case valorN: // Comandos a serem executados. break; default: // Comandos a serem executados caso a variável testada não seja // igual a nenhum dos valores testados nos “cases”. } Aula 7: Estrutura de repetição com pré-teste e com pós-teste Objetivos Identificar as estruturas de repetição; Diferenciar as estruturas de repetição com pré-teste das com pós-teste; Registrar algoritmos e programas, utilizando a estrutura de repetição adequada. Estruturas repetitivas Temos estruturas específicas às quais podemos recorrer em situações nas quais é necessário repetir determinado trecho do código: as estruturas repetitivas ou de repetição. Estrutura de repetição com pré-teste. Estrutura de repetição com pós-teste. Estrutura de repetição com variável de controle. É comum chamarmos as estruturas repetitivas de laço ou loop. Estrutura de repetição com pré-teste As estruturas repetitivas com pré-teste, ou teste inicial, farão a repetição de determinada parte do código enquanto uma condição for verdadeira. Isso significa que, no momento em que a condição for falsa, o trecho descrito dentro da estrutura de repetição deixará de ser executado. Ela é definida como sendo uma estrutura com pré-teste porque o teste da condição é feito antes da repetição do trecho. Observe sua sintaxe no Portugol Studio e no C++:, * Portugol Studio enquanto (condição) { //Comandos a serem executados enquanto a condição for verdadeira. } * C++ while (condição) { //Comandos a serem executados enquanto a condição for verdadeira. } Estrutura de repetição com pós-teste As estruturas repetitivas com pós-teste, ou teste final, farão a repetição de determinada parte do código enquanto uma condição for verdadeira. Ela é definida como sendo uma estrutura com pós-teste porque o teste da condição é feito depois da repetição do trecho. O que difere esta estrutura da estrutura com pré-teste é o fato de que o bloco de comandos a ser repetido será executado ao menos uma vez. Observe sua sintaxe no Portugol Studio e no C++: * Portugol Studio faca { //Comandos a serem executados enquanto a condição for verdadeira. } enquanto (condição) * C++ do { //Comandos a serem executados enquanto a condição for verdadeira. } while (condição) Aula 8: Estrutura de repetição com variável de controle Objetivos Descrever as estruturas de repetição com variável de controle; Diferenciar as estruturas de repetição com variável de controle daquelas com pré-teste ou pós-teste; Registrar algoritmos e programas utilizando a estrutura de repetição adequada. Estrutura de repetição com variável de controle Na aula de hoje, vamos ver um terceiro tipo de estrutura de repetição, que é o que utiliza uma variável de controle. Este tipo de estrutura é muito utilizado quando se sabe, de antemão, o número de iterações a serem realizadas, ou seja, quantas vezes será necessário repetir o trecho definido dentro da estrutura. Isso acontece porque essa estrutura inclui um contador em sua definição que será automaticamente incrementado ou decrementado. Você se lembra da variável de controle que é extremamente necessária nos laços com pós e pré-teste? Nesse tipo de repetição, ela é controlada pela estrutura. Vamos ver como é sua sintaxe no PortugolStudio e no C++? Portugol Studio para (inicialização_contador;condição;incremento_ou_decremento) { //Comandos a serem executados enquanto a condição for verdadeira. } * C++ for (inicialização_contador;condição;incremento_ou_decremento) { //Comandos a serem executados enquanto a condição for verdadeira. } Vamos ver como ficaria o algoritmo para exibição dos números pares entre 10 e 100: Portugol Studio 1 programa 2 { 3 funcao inicio() 4 { 5 inteiro num 6 num=10 7 para (num=10;num<=100;num+=2) 8 { 9 escreva(num, "\n") 10 } 11 } 12} * Programa em C++ 1 #include <iostream> 2 using namespace std; 3 int main() 4 { 5 int num=10; 6 for (num=10;num<=100;num+=2) 7 { 8 cout <<num<<"\n"; 9 } 10 } Nesta aula, encerramos as estruturas repetitivas. Você verá que, assim como as estruturas seletivas, elas são muito utilizadas nas soluções de programação; o que faz com que seja essencial conhecê-las bem e saber utilizá-las sem dificuldade. Aula 9: Estruturas de dados homogêneas unidimensionais Objetivos Definir os vetores e sua funcionalidade; Avaliar o comportamento de algoritmos e programas com vetores; Escrever códigos com vetores como recurso de armazenamento. Vetores Ao longo de todas as aulas que tivemos até o momento, trabalhamos com variáveis. As variáveis são espaços da memória reservados ao armazenamento temporário de valores. Cada espaço pode armazenar somente um valor de determinado tipo por vez. Um vetor é uma variável e, portanto, também armazena dados em caráter temporário. A diferença é que o vetor é capaz de armazenar um conjunto de dados do mesmo tipo, todos sob o mesmo identificador. Trata-se, então, de uma série de elementos de um mesmo tipo, armazenados em espaços contíguos da memória principal, que podem ser individualmente referenciados através de um índice. Se você precisa armazenar cinco valores do tipo inteiro, ao invés de criar cinco variáveis diferentes – uma para cada valor, você pode criar um vetor para cinco elementos. Esse vetor reserva espaços adjacentes da memória (um ao lado do outro) e todos os valores armazenados poderão ser acessados por um mesmo identificador (nome da variável). O identificador precisa estar acompanhado de um número denominado índice, que indica a posição do vetor a ser acessada. Caso você precise criar o vetor descrito no parágrafo anterior, capaz de armazenar cinco elementos inteiros, e deseje chamá-lo de Num, poderíamos representá-lo graficamente da seguinte maneira: Cada retângulo representa um elemento do vetor e os números de 0 a 4 representam os índices das posições do vetor. A posição 0 é a primeira, e a posição 4 é a última. Cada um desses elementos pode armazenar um valor do tipo inteiro, caso o vetor seja declarado como sendo desse tipo. Os vetores são estruturas de dados homogêneas, o que significa que são capazes de armazenar um conjunto de valores de um mesmo tipo. Para declarar um vetor no Portugol Studio, é preciso informar seu tipo, seu identificador, seu tamanho e, opcionalmente, os valores que ele irá armazenar. Observe o exemplo, no qual é criado um vetor denominado vogais, capaz de armazenar cinco elementos do tipo caracter: Atenção Tanto no Portugol Studio quanto no C++, a definição do número máximo de elementos do vetor deve ser estar entre colchetes [ ]; o conjunto de elementos a serem armazenados no vetor deve estar definido entre chaves { }. A declaração de vetores no C++ segue a mesma sintaxe do Portugol Studio. É preciso informar seu tipo, seu identificador, seu tamanho e, opcionalmente, os dados que nele serão armazenados. Observe o exemplo de criação do vetor vogais: char vogais[5] = {‘a’, ‘e’, ‘i’, ‘o’, ‘u’}; Conforme dito anteriormente, não é obrigatório armazenar valores no vetor no momento de sua criação. Caso queira somente criar o vetor, pare a definição antes do sinal de atribuição. Veja: * Portugol Studio caracter vogais[5] // Criação do vetor vogais, para 5 caracteres inteiro num[10] // Criação do vetor num, para 10 números inteiros real notas[35] // Criação do vetor notas, para 35 números reais *C++ char vogais[5]; // Criação do vetor vogais, para 5 caracteres int num[10]; // Criação do vetor num, para 10 números inteiros float notas[35]; // Criação do vetor notas, para 35 números reais É muito importante que você saiba que, para acessar as diferentes posições do vetor para armazenamento ou recuperação de dados, é imprescindível informar seu índice. Veja os exemplos a seguir: * Portugol Studio //Armazena a letra “E” na segunda posição do vetor vogais vogais[1] = ‘E’ //Armazena o número 35 na quinta posição do vetor num num[6] = 35 * C++ //Exibe a primeira posição do vetor vogais cout <<vogais[0]; //Armazena em RESULT a soma dos dois primeiros valores do vetor num RESULT = num[0]+num[1]; //Armazena o valor informado via teclado na quarta posição do vetor notas cin >>notas[3]; Dica Lembre-se de que tanto no Portugol Studio quanto no C++, a primeira posição do vetor é identificada pelo índice 0. Assim, um vetor de 15 elementos varia da posição 0 à posição 14. Aula 10: Estruturas de dados homogêneas bidimensionais Objetivos Definir as matrizes e sua funcionalidade; Avaliar o comportamento de algoritmos e programas com matrizes; Escrever códigos com matrizes como recurso de armazenamento. Matrizes As matrizes são estruturas bidimensionais que podem ser consideradas vetores de vetores. Elas armazenam valores de um mesmo tipo e também precisam que a localização do elemento seja identificada para que o mesmo possa ser armazenado ou recuperado. Ao contrário dos vetores, que aparecem acompanhados de somente um índice, as matrizes precisam de dois índices: um para identificar a linha do elemento e outro para identificar a coluna do mesmo. Vejamos um exemplo: Imagine que você precisa criar uma matriz capaz de armazenar 15 elementos do tipo inteiro e deseja chamá-la de Mat_Num. Essa matriz deve ter três linhas e cinco colunas. Se fossemos representá-la graficamente, ela teria a seguinte aparência: Para declarar uma matriz no Portugol Studio, é preciso informar seu tipo, seu identificador, sua dimensão e, opcionalmente, os valores que a mesma irá armazenar. Observe o exemplo, no qual é criada a matriz Mat_Num, capaz de armazenar quinze elementos do tipo inteiro, organizados em três linhas e cinco colunas: Atenção Tanto no Portugol Studio quanto no C++, a definição do número de linhas e do número de colunas da matriz deve ser estar entre colchetes [ ]; e o conjunto de elementos a serem armazenados na mesma deve estar definido entre chaves { }. A declaração de matrizes no C++ segue a mesma sintaxe do Portugol Studio. É preciso informar seu tipo, seu identificador, sua dimensão e, opcionalmente, os dados que nela serão armazenados. Observe o exemplo de criação da matriz Mat_Num: int Mat_Num[3][5] = {{0,1,2,3,4},{5,6,7,8,9},{10,11,12,13,14}}; Atenção Como sabemos, o conjunto de elementos a serem armazenados na matriz deve estar definido entre chaves { }. Observe, entretanto, que há novas chaves dentro das chaves que delimitam todos os elementos da matriz. A função delas é agrupar os elementos por linha. Veja: int Mat_Num[3][5] = {{0,1,2,3,4},{5,6,7,8,9},{10,11,12,13,14}}; Legenda: Elementos da linha 0 Elementos da linha 1 Elementos da linha 2 Conforme dito anteriormente, não é obrigatório armazenar valores na matriz no momento de sua criação. Caso queira somente criar a variável, pare a definição antes do sinal de atribuição. Veja: * Portugol Studio caracter Mat_vogais[2][5] // Matriz vogais, com 2 linhas e 5 colunas inteiro Mat_num[5][10] // Matriz Mat_num, com 5 linhas e 10 colunas real notas[35][3] // Matriz notas, com 35 linhas e 3 colunas * C++ char Mat_vogais[2][5]; // Matriz vogais, com 2 linhas e 5 colunas int Mat_num[5][10]; // Matriz Mat_num, com 5 linhas e 10 colunas float notas[35][3]; // Matriz notas, com 35 linhas e 3 colunas Dica Lembre-se de que tanto no Portugol Studio quantono C++, a primeira linha e a primeira coluna da matriz são identificadas pelo índice 0 . Assim, uma matriz 2x3 (duas linhas e três colunas) terá as linhas variando de 0 a 1, e as colunas variando de 0 a 2.
Compartilhar