Prévia do material em texto
Unidade 1 Aula 1 Pensamento Computacional O pensamento computacional visa desenvolver e testar soluções práticas para resolver diferentes tipos de problemas, utilizando essencialmente quatro habilidades que são: decomposição, reconhecimento de padrões, abstração e algoritmos. Deste modo, o objetivo é interpretar e entender um determinado problema da vida real, abstrair alguns pontos que não interferem em sua existência ou solução e, assim, resolvê-lo. O pensamento computacional pode ser dividido em quatro habilidades essenciais: decomposição, reconhecimento de padrões, abstração de padrão e projeto de algoritmos (FORBELLONE; EBERSPACHER, 2005). Observamos que pensar computacionalmente não significa pensar igual a um computador (rápido e com precisão), mas, sim, dividir um problema em partes menores e, a partir de cada uma dessas partes menores, resolvê-lo. O pensamento computacional não envolve obrigatoriamente o uso de computadores! Podemos utilizá-lo em atividades desplugadas. Decomposição O primeiro pilar é a decomposição. A decomposição é a habilidade de dividir problemas complexos em pedaços menores e que possam ser mais bem gerenciados. Reconhecimento de Padrões O segundo pilar é o reconhecimento de padrões, semelhanças e tendências dentro de um determinado problema. Essa habilidade é essencial, pois, se alguns problemas são de natureza semelhante (tanto no problema atual que está sendo enfrentado quanto nos problemas anteriores), há uma boa chance de que eles possam ser resolvidos usando técnicas semelhantes ou repetidas. O reconhecimento de padrões é uma habilidade-chave quando se trata de criar soluções eficientes e eficazes para determinados problemas. Essencialmente, é dar uma resposta para a seguinte pergunta: o que aprendemos no passado que pode nos ajudar a resolver esse problema? Abstração Qual a função de um arquiteto? Colocar no papel uma casa ou um edifício. Observe que não podemos morar em um papel ou explorar cada canto daquele desenho, caminhando internamente por aquela construção (no papel). Essa é a terceira habilidade do pensamento computacional que diz que, em vez de olhar para detalhes específicos, devemos ter a capacidade de filtrar os elementos desnecessários de um problema para que você se concentre apenas nos elementos importantes. Em outras palavras, esqueça o fato de ser apenas um desenho, abstraia o fato de estar apenas em um papel. Identificar as informações cruciais em um problema e desconsiderar as informações irrelevantes é uma das partes mais difíceis do pensamento computacional. Algoritmos O pensamento computacional envolve o desenvolvimento de soluções para um problema e, entre essas soluções, temos os algoritmos. Especificamente, o pensamento algorítmico cria regras sequenciais a serem seguidas para resolver um problema. Todo algoritmo é uma sequência finita de instruções! Aula 2 Flowgorithm Desenvolvimento de algoritmos com fluxogramas. Um fluxograma é utilizado para representar um algoritmo graficamente. Trata-se de um diagrama com diversos tipos de blocos, em que cada um destes representam um determinado tipo de instrução. Algoritmo Assim, é possível concluir que um algoritmo deve possuir as seguintes características: Cada passo do algoritmo deve ser uma instrução possível de ser realizada; a ordem de cada uma das instruções deve ser respeitada; e o algoritmo deve ser finito. Existem pelo menos três formas principais para representação de um algoritmo: descrição narrativa, fluxograma e pseudocódigo. Descrição Narrativa Um algoritmo pode ser representado em linguagem natural, ou seja, como as pessoas em geral falam. Esse tipo de algoritmo é pouco usado na prática, afinal, pode gerar múltiplos sentidos de interpretação. Fluxograma O fluxograma é um conjunto de estados que é utilizado para representar graficamente um algoritmo (FORBELLONE; EBERSPACHER, 2005). Cada um desses estados (instruções e comandos) é representado por uma forma geométrica específica. Pseudocódigo Além da representação narrativa ou textual de um algoritmo, uma outra maneira de representá-lo é em pseudocódigo, o que não vem a ser um código de programação (ainda), porém, contém instruções inteligíveis por humanos e que se assemelha a códigos para computadores. Trata-se, portanto, de uma linguagem intermediária entre a linguagem de máquina (linguagem de computador) e a linguagem humana. Unidade 2 Aula 3 Compreendemos que o computador segue a arquitetura de von Neumann, recebendo uma entrada, processando essa entrada e gerando uma saída. Em seguida, conhecemos o conceito de variável que, em uma comparação prática, é como uma casa em uma rua, sendo responsável por armazenar temporariamente um valor. Compreendemos também que uma variável possui um único valor, logo, se tentarmos atribuir outro valor a ela, o antigo será sobrescrito. Além disso, aprendemos que, em programação, podemos utilizar os operadores aritméticos para realizar as operações básicas da matemática como adição, subtração, multiplicação e divisão. Scratch, possui oito categorias de blocos: . Movimento – responsável pela movimentação do personagem; . Aparência – blocos de saída, apresentam uma mensagem na tela...; . Som – responsável pelos sons no projeto; . Eventos – blocos de entrada no projeto; . Controle – controle de fluxo; . Sensores – capturam a interação do usuário (clique do mouse...); . Operadores – blocos com operadores aritméticos, lógicos...; . Variáveis – blocos para criar variáveis. No Scratch, as variáveis podem começar com letras maiúsculas ou minúsculas ou com underscore. Aula 4 Os Operadores de Comparação ou Relacionais compara um valor/expressão do lado esquerdo com um valor/expressão do lado direito. O resultado de qualquer operação de comparação será true (verdadeiro) ou false (falso). Os Operadores Lógicos realizam uma conexão entre duas expressões, é o que se denomina expressões lógicas ou expressões booleanas. A Estrutura Condicional tem o objetivo de dividir o fluxo do código. A Estrutura de Repetição ou loop permite repetir trechos do código. Resumindo: Operadores Aritméticos (+ - / *) Operadores de Comparação ou Relacionais (> < >= <= == !=) Operadores Lógicos (e ou não) Estrutura Condicional (If, If/Else) Estrutura de Repetição Unidade 3 Aula 5 Programação com Linguagem Imperativa Foca em ordens, comandos para o computador executar. Possui declaração de variáveis, funções, linguagem orientada a objetos. Linguagem Imperativa: Paradigma Procedural - está relacionado à chamada de procedimentos, os quais podem ser sub-rotinas, métodos ou funções. Paradigma Orientado a Objetos - considera que o código pode ser dividido em objetos (como os objetos da vida real), os quais possuem propriedades e executam diferentes ações. Paradigma de Processamento Paralelo - usa o princípio de dividir diferentes partes de uma tarefa entre vários processadores, os quais trabalham simultaneamente para resolver um problema. Programação com Linguagem Declarativa Foca na lógica, no resultado acima do modo como fazer. Exemplo: a linguagem HTML. Linguagem Declarativa: Paradigma Lógico - os programas são escritos como uma série de fatos e regras que seguem uma estrutura lógica. Paradigma Funcional – é baseado na execução de uma série de funções matemáticas. Essas linguagens evitam estruturas de controle de fluxo, como loops. Paradigma Database - é baseado em dados, logo, as instruções são definidas para manipular os dados em um banco de dados. Tipos de Variáveis na Linguagem C# Números Inteiros O tipo byte vai de 0 até 255 (System.Byte), ou seja, 2 elevado a 8 O tiposbyte vai de -128 até 127 (System.SByte), ou seja, 2 elevado a 8 O tipo short vai de -32768 até 32767 (System.Int16), ou seja, 2 elevado a 16 O tipo ushort vai de 0 até 65535 (System.UInt16), ou seja, 2 elevado a 16 O tipo int vai de -2147483648 até 2147483647 (System.Int32), ou seja, 2 elevado a 32 O tipo uint vai de 0 até 4294967295 (System.UInt32), ou seja, 2 elevado a 32 O tipo long vai de -9223372036854775808 até 9223372036854775807 (System.Int64), ou seja, 2 elevado a 64 O tipo ulong vai de 0 até 18446744073709551615 (System.UInt64), ou seja, 2 elevado a 64 Números Reais float - suporta até 7 casas decimais de precisão - números float precisam ter um "F" ou “f” no final (System.Single) double - suporta até 15-16 casas decimais de precisão (System.Double) decimal - suporta até 28-29 casas decimais de precisão - números decimal precisam ter um "M" ou “m” no final (System.Decimal) Texto char - para um caractere (entre aspas simples) string - para uma cadeia de caracteres (entre aspas duplas) Lógico bool - aceita true ou false Comandos de Saída de Dados: Console.Write( ); apresenta na tela apenas a string fornecida Console.WriteLine( ); apresenta a string e também se move para o início da próxima linha Concatenação e String Formatada: Console.WriteLine("A idade de José é " + idade); Console.WriteLine("A idade de José é {0} ", idade); Console.WriteLine("{0} + {1} = {2}", numA, numB, resultado); Console.WriteLine($“A idade de José é {idade}”); Comandos de Entrada de Dados: Console.Read( ); Console.ReadLine( ); Console.ReadKey( ); lê a tecla pressionada pelo usuário. É um método usado para segurar a tela até que o usuário digite uma tecla qualquer Observação: Todo valor recebido pelo ReadLine() é uma cadeia de caracteres, ou seja, é do tipo string. Logo, se você receber dois valores numéricos, o resultado será um erro. Desse modo, se você solicitar um valor do tipo inteiro para o usuário, é necessário que primeiramente você converta a entrada do ReadLine() para int, utilizando o método ToInt32. Um exemplo de código é: int valor = Convert.ToInt32(Console.ReadLine()). O método Convert.ToInt32 converterá o conteúdo recebido pelo Console.ReadLine() para inteiro e armazenará na variável valor. int valor = Convert.ToInt32(Console.ReadLine()); Existem três formas principais de conversão: int valor = Convert.ToInt32(Console.ReadLine()); int valor = int.Parse(Console.ReadLine()); int.TryParse(Console.ReadLine(), out valor); Aula 6 Estrutura Condicional If (Condição Simples) If / Else (Condição Composta) If / Else If / Else (Condição Aninhada ou Encadeada) Unidade 4 Aula 7 Estrutura de Repetição while – quando não sabemos o número de repetições do / while – quando não sabemos o número de repetições for (inicialização; condição; passo) – quando sabemos o número de repetições Aula 8 Existem três categorias principais de estruturas de controle: . Estrutura Sequencial . Estrutura Condicional ou de Seleção . Estrutura de Repetição ou de Iteração Sequência – Seleção – Iteração Função: . com ou sem parâmetros; . que podem ou não ter os valores de retorno, dependendo do requisito fornecido. <modificadores_de_acesso> <tipo_retorno> <nome_função> (<parâmetros>) Exemplos: public int multiplicar(int a, int b) { } public void quadrado(int numero) { } Vamos Entender Funções: (public/private) (static) (void) (tipo do retorno) (nome da função) (parâmetros) (public/private) são os modificadores de acesso (static) orientação a objetos (void) para funções sem retorno (tipo de retorno) tipo primitivo que retorna (nome da função) em maiúsculo e com CamelCase (parâmetros) conhecidos como parâmetros formais Funções Sem Parâmetros e Sem Retorno: namespace ConsoleApp1 { internal class Program { static void Main(string[] args) { Console.Write("Veja nossa saudação: "); Saudacao(); Console.ReadKey(); } public static void Saudacao() { Console.WriteLine("Olá, seja Bem Vindo!"); } } } Funções Com Parâmetros e Com Retorno: namespace ConsoleApp1 { internal class Program { static void Main(string[] args) { Console.Write("Digite um valor inteiro: "); int.TryParse(Console.ReadLine(), out int n1); Console.Write("Digite um outro valor inteiro: "); int.TryParse(Console.ReadLine(),out int n2); Console.WriteLine("O resultado é igual a: {0}", Soma(n1, n2)); Console.ReadKey(); } public static int Soma(int a, int b) { int resultado; resultado = a + b; return resultado; } } } Passagem de Parâmetro por Valor: Nossos valores das variáveis da função Main não são alterados. Passagem de Parâmetro por Referência: Nossos valores das variáveis da função Main são alterados. Exercícios: Operadores Aritméticos (ordem de precedência): ( ) ^ + - quando unários * / % fatores multiplicativos + - quando binários Operadores Lógicos (ordem de precedência): não (!) e (&&) ou (||) Um Fluxograma apresenta cinco formas geométricas principais: início/fim, operador de entrada, operador de saída, operador de atribuição e estrutura condicional. Regras Nomenclatura Variáveis C#: . Pode começar com uma letra, sublinhado ou @; . Maiúsculas e minúsculas fazem diferença; . Só usa letras, números e sublinhado; . Podemos usar acentos; . Não pode conter espaços; . Não pode conter símbolos (só o sublinhado e a @); . Não pode usar palavras reservadas.