Prévia do material em texto
Aula 1 - Fundamentos da Lógica 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. Pensamento Computacional Processo de solução de problemas. 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. Pilares do Pensamento Computacional · Decomposição - Envolve a decomposição do problema em partes menores e mais gerenciáveis; · Reconhecimento de padrões - Busca semelhanças entre o problema e outras soluções anteriores e também dentro do próprio problema; · Abstração - Concentra-se nas informações relevantes para o problema, ignorando detalhes que não são importantes; · Algoritmos - Desenvolvem uma solução passo a passo para o problema, incluindo as regras a serem seguidas para tal. Conceitos e definições · Algoritmo - Solução passo a passo para um problema que inclui regras a serem seguidas. Os algoritmos representam soluções para problemas que podem ser do cotidiano ou especificamente computacionais. São independentes de linguagens de programação, podendo serem convertidos em qualquer linguagem. Soluções ordenadas para resolução de problemas. · Raciocínio Lógico - Processo de estruturação do pensamento que permite que se chegue a uma conclusão ou se resolva um problema. Ajuda na organização do pensamento de forma que se possa identificar a melhor solução para um problema. · Pensamento Computacional - Processo que orienta a solução de um problema de forma que um computador possa executá-la. Nos ajuda a formular soluções que possam ser executadas por um computador. Essas soluções devem ser estruturadas e nada do que seja necessário ser feito pode ser omitido ou o computador não se comportará como se espera. · Pilares do Pensamento Computacional - Decomposição, reconhecimento de padrões, abstração e algoritmo. Representam as etapas pelas quais devemos passar antes que cheguemos à solução de um problema. Todos os pilares são igualmente relevantes e não devem ser menosprezados. Fluxogramas Representação gráfica dos algoritmos. Mais comuns: Pseudocódigo Não é uma linguagem de programação, então não segue uma sintaxe específica. Maneira simples de descrever um conjunto de instruções que deverão ser executadas pelo computador. O portugol não é uma linguagem de programação, portanto seus algoritmos não podem serem executados por um computador. Sintaxe: regras que especificam de que maneira devem ser utilizadas as instruções e declarações de uma linguagem de programação. Aula 2 - Conceitos básicos de programação O princípio básico do funcionamento dos computadores envolve as etapas de: entrada > processamento > saída Os dados ficam armazenados na memória principal (RAM). Variáveis É um espaço da memória principal dedicado ao armazenamento temporário de valores. Variáveis criadas precisam de um identificador, que funciona como um rótulo. Podem conter letras e números, não podem ter espaços em branco, não podem começar com números. Idealmente, deverá ser algo que represente o dado armazenado. Algumas linguagens são case sensitive. As variáveis podem ser de três tipos: · 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 Caracter: somente um caractere char Cadeia: conjunto de caracteres char Logico: verdadeiro ou falso bool Para ser utilizada, a variável precisa ser declarada. Declaração de Variáveis Portugol Studio C++ cadeianome = “Luciana” inteiroidade = 42 realsaldo = 550.00 cadeiasexo = ‘F’ logicotrabalha = verdadeiro charnome[ ] = “Luciana”; intidade = 42; floatsaldo = 550.00; charsexo[ ] = “F”; booltrabalha = true; Nas linguagens de programação forte,emte tipadas, o tipo de dado a ser armazenado na variável deve ser explicitamente definido. A variável somente armazenará valores do tipo definido em sua declaração, e a tentativa de armazenar valores de tipo distintos acarretará em erro. 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. Constantes É um valor que não se altera e não pode ter seu valor modificado ao longo do programa. Devem ser declaradas e devem ter seu tipo e identificador definidos. Declaração de Constantes Portugol Studio C++ const real PI = 3.14 const inteiro MESES = 12 const float PI = 3.14; const int MESES = 12; Por convenção, os identificadores de constantes costumam ser escritos em caixa alta, mas essa não é uma obrigatoriedade. Operadores São símbolos que, combinados às variáveis e constantes, nos permitem construir expressões aritméticas, relacionais e lógicas. Podem ser unários ou binários. Os tipos são: aritméticos, relacionais, lógicos, de atribuição, de incremento e de decremento. Operadores Matemáticos + Soma - Subtração / Divisão * Multiplicação % Resto da divisão Operadores Relacionais > Maior que < Menor que >= Maior ou igual <= Menor ou igual == Igual a != Diferente de Operadores Lógicos ! Não && E || Ou Operadores Especiais de Atribuição += Soma e atribui. Exemplo: res+=2 -= Subtrai e atribui. Exemplo: res-=2 /= Divide e atribui. Exemplo: res/=5 *= Multiplica e atribui. Exemplo: res*=3 Operadores de Atribuição = Atribuição de valor a variáveis ou constantes. Operadores de Incremento / Decremento ++ Incremento -- Decremento Aula 3 - Expressões e tabela da verdade Expressões Matemáticas Para que exista, é necessário que tenha, no mínimo, dois valores ou variáveis e um operador. Precedência dos operadores matemáticos 1º. Multiplicação, divisão, módulo 2º. Adição, subtração Parênteses tem precedência, assim como na matemática. Expressões Relacionais São construídas de modo a avaliar a relação entre os termos da expressão. Composta por termos de um mesmo tipo e por operadores relacionais, e o resultado sempre terá um valor lógico. Expressões Lógicas (Ou 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. Resultam sempre em um valor lógico. Operador && (E) A B A && B Verdadeiro Verdadeiro Verdadeiro Verdadeiro Falso Falso Falso Verdadeiro Falso Falso Falso Falso Operador || (OU) A B A || B Verdadeiro Verdadeiro Verdadeiro Verdadeiro Falso Verdadeiro Falso Verdadeiro Verdadeiro Falso Falso Falso Operador ! (NÃO) A !A Verdadeiro Falso Falso Verdadeiro Precedência dos operadores lógicos 1º. Não (!) 2º. E (&&) 3º. Ou (||) Tabela da Verdade Tabela matemática capaz de apresentar todos os resultados possíveis para uma expressão lógica, a partir das diferentes combinações de valores para as variáveis avaliadas. 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. 2ˆ3 Quantidade de variáveis da expressão 3º. Passo Resolver a potenciação para descobrir a quantidade decombinações possíveis. 2ˆ3 = 8 → 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 Armazenam valores em constantes e variáveis. Operadores de Incremento e Decremento · Incremento = aumenta em uma unidade o valor da variável. · Decremento = diminui em uma unidade o valor da variável Aula 4 - Comandos de entrada e saída Estrutura básica Portugol C++ programa { funcao inicio() { } } #include <iostream> using namespace std; int main() { } Comando de entrada e saída Portugol C++ escreva cout << leia cin >> Arredondando valores reais no Portugol Portugol 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) } } Exibindo a acentuação gráfica no C++ C++ #include < iostream > #include < locale > using namespace std; int main() { setlocale(LC_ALL, "ptb"); … } Aula 5 - Estrutura de seleção simples e composta se | if Portugol C++ se (condição) { // Comandos a serem executados se a condição for verdadeira. } if (condição) { // Comandos a serem executados se a condição for verdadeira. } se (idade>=16) { escreva("Você já pode votar!") } if (idade>=16) { cout <<"Você já pode votar!"; } Observe que estamos avaliando a condição (idade>=16) – que é uma expressão relacional – e, se ela for verdadeira, exibimos a mensagem informando ao usuário que ele já pode votar. senao | else Portugol C++ se (condição) { // Comandos a serem executados se a condição for verdadeira. } senao { // Comandos a serem executados se a condição for falsa. } if (condição) { // Comandos a serem executados se a condição for verdadeira. } else { // Comandos a serem executados se a condição for falsa. } se (idade>=16) { escreva("Você já pode votar!") } senao { escreva("Você ainda não pode votar!") } if (idade>=16) { cout <<"Você já pode votar!"; } else { Cout <<"Você ainda não pode votar!"; } Avaliar duas ou mais condições Portugol C++ se (resto==0 e num>0) { escreva("Este número é par e positivo!") } if (resto==0 && num>0) { cout <<"Este número é par e positivo!"; } Aula 6 - Estrutura de seleção com múltiplas alternativas se / senao se / senao if / else if / else Portugol C++ se (num>0) { escreva("Este número é positivo!") } senao se (num<0) { escreva("Este número é negativo!") } senao { escreva("Este número é nulo!") } if (num>0) { cout <<"Este número é positivo!"; } else if (num<0) { cout <<"Este número é negativo!"; } else { cout <<"Este número é nulo!"; } ESCOLHA ou SWITCH Não aceita operadores lógicos ou relacionais. Os valores a serem testados precisam ser definidos e a variável será igual a eles ou diferente dos mesmos. Portugol 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 pós-teste pré-teste (enquanto | while) Portugol enquanto (condição) { //Comandos a serem executados enquanto a condição for verdadeira. } programa { funcao inicio() { inteiro num num=10 enquanto (num<=100) { escreva(num, "\n") num+=2 } } } C++ while (condição) { //Comandos a serem executados enquanto a condição for verdadeira. } #include <iostream> using namespace std; int main() { int num=10; while (num<=100) { cout <<num<<"\n"; num+=2; } } pós-teste (faca/enquanto | do/while) Portugol faca { //Comandos a serem executados enquanto a condição for verdadeira. } enquanto (condição) faca { se (num%2==0) { escreva("Este número é par!\n") } senao { escreva("Este número é ímpar!\n") } escreva("Informe um número qualquer: ") leia(num) } enquanto (num!=-1) C++ do { //Comandos a serem executados enquanto a condição for verdadeira. } while (condição) faca { res = num * contador escreva(num, " x ", contador, " = ", res, "\n") contador++ } enquanto (contador<=10) Aula 8 - Estrutura de repetição com variável de controle para | for Portugol para (inicialização_contador;condição;incremento_ou_decremento) { //Comandos a serem executados enquanto a condição for verdadeira. } para (num=10;num<=100;num+=2) { escreva(num, "\n") } C++ for (inicialização_contador;condição;incremento_ou_decremento) { //Comandos a serem executados enquanto a condição for verdadeira. } for (num=10;num<=100;num+=2) { cout <<num<<"\n"; }