Baixe o app para aproveitar ainda mais
Prévia do material em texto
Gustavo Meira - EQ • UEM Algorítmos e Programação de Computadores Fundamentos de PROG O computador Software e hardware ● Software são todos os programas que executam e programam o hardware (sistemas operacionais, navegadores, editores, etc). ● Hardware é a parte física de um computador (componentes eletrônicos, como por exemplo, circuitos de fios e luz, placas, utensílios, correntes, e qualquer outro material em estado físico, que seja necessário para fazer com que o computador funcione). ● Computador junção desses dois componentes Hardware Noções Básica ● CPU (unidade central de processamento) é o principal item de hardware do computador, que também é conhecido como processador . A CPU é responsável por calcular e realizar tarefas determinadas pelo usuário e é considerado o cérebro do computador ● Core (núcleo) pequena pastilha de silício que contém todos os transístores; é o interior de um processador onde cada core é uma unidade de processamento separada capaz de lidar com tarefas independentes Arquitetura Von Neumann Trata-se da arquitetura conceitual dos computadores: CPU ● Responsável pelo processamento e execução de programas armazenados na memória principal ● Coordena, controla e realiza todas as operações do sistema ○ Função processamento atividades relacionadas com a efetiva execução de uma operação ( processar ) ○ Função de controle atividade de busca , interpretação , controle de execução das instruções e controle da ação dos demais componentes do sistema (memória, E/S, etc) ● Principais partes ○ ULA (unidade lógica e aritmética) realiza cálculo real ou o processamento de dados ○ UC (unidade de controle) controla o movimento de dados e instruções dentro e fora da CPU, controlando, também, as operações do ULA de forma sincronizada e adequada ○ Registradores Memória interna da CPU, rápida e com capacidade restrita ○ Barramento interno da CPU caminho para transferir dados entre os vários registradores e a ULA, podendo ter velocidades distintas Memória Principal ● Armazena todos os programas em execução, bem como os dados envolvidos no processamento ● Nada “entra ou sai” do computador sem passar pela memória principal ● É organizada em células endereçáveis de tamanho fixo ● O computador só pode representar a informação por meio 0s e 1s dígitos binários ou bit. Um bit é a unidade básica 1 Gustavo Meira - EQ • UEM Algorítmos e Programação de Computadores de memória, ou seja, a menor unidade de informação que pode ser armazenada ● Como o valor de um bit tem pouco significado, as memórias são estruturadas e divididas em conjuntos ordenados de bits, denominados células (majoritariamente padronizada como: 8 bits (1 byte) = 1 célula ● Pode ser acessada por operações de leitura e escrita ○ Leitura requisita à memória o conteúdo de determinada célula ○ Escrita escreve o conteúdo em uma célula da memória ● Classificada em dois grupos ○ RAM (random access memory) memória volátil que retém as instruções e dados de programas que estão sendo executados. Geralmente, os termos "memória principal" e RAM são usados como sinônimos. Assim que o computador é desligado, seu conteúdo é todo apagado. ○ ROM (read only memory) as informações são gravadas no momento da fabricação e não mais serão alteradas. Contém informações necessárias para o funcionamento do computador, como rotinas que verificam se os meios físicos estão aptos para o funcionamento. Memória Secundária ● Memória não volátil , geralmente com grande capacidade de armazenamento ● Usada para guardar informações (instruções e dados de programas) que não serão imediatamente usadas pela CPU ● A memória permanece inalterada mesmo com o computador desligado; ● Exemplos ○ Discos (fixos e removíveis), HD (hard disk), SSD (solid-state drive), disquetes, DVDs, etc ○ Memórias flash (pendrive, cartão de memória) Interface de Entrada e Saída ● Conjunto de circuitos (hardware) e programas (software) que interligam um ou mais dispositivos de E/S e o subsistema CPU/MP para controlar e efetivar a transferência de bits entre esses elementos ● Um subsistema de E/S deve, em conjunto, ser capaz de realizar duas funções ○ Receber ou enviar informações ao meio exterior ○ Converter as informações de uma forma inteligível para a máquina ou para usuário Barramento do Sistema ● É o elemento responsável pela interligação dos demais componentes (CPU, memória, E/S) ● Conduz de modo sincronizado o fluxo de dados de uns para os outros, de acordo com uma programação de atividades previamente definida na unidade de controle. Software Todos os elementos de programação de um sistema de computação. Softwares Básicos Programas que oferecem estruturas para um programa de software aplicativo: ● BIOS (Basic Input/Output System) Software que determina como o computador deve se comunicar com os seus diversos periféricos ● Drivers Pequenos programas que instruem o computador sobre como se comunicar com um determinado periférico. Ampliam as instruções da BIOS e disponibilizam funções mais avançadas ● Sistemas Operacionais Conjunto de programas que controla os vários componentes do hardware, coordenando as funções básicas do computador, tornando-o operacional. Serve de interface com o usuário. Softwares Aplicativos Programas voltados para a utilização do usuário final. ● Sistemas de escritório editores de texto, planilhas eletrônicas e programas de apresentação ● Sistemas comerciais gerenciadores de bancos de dados e gestão empresarial ○ ERP (Enterprise Resource Planning) ○ CRM (CustomerRelationshipManagement) ● Projetos (CAD e CAM) ● Programas gráficos , Programas educacionais , jogos , etc. Sistemas Operacionais É uma camada de software que opera entre o HW e os programas aplicativos voltados ao usuário final. É uma estrutura de software ampla, muitas vezes complexa , que incorpora aspectos de baixo nível (como drivers de dispositivos e gerência de memória física) e de alto nível (como programas utilitários e a própria interface gráfica). ● Provê a interface básica entre o usuário e o computador ● É um gerenciador de recursos , alocando o hardware, o software e os dados 2 Gustavo Meira - EQ • UEM Algorítmos e Programação de Computadores ● Controla e coordena todas as operações básicas do sistema de computação ● Mac OS , UNIX, LINUX, Windows , DOS… Codificação Representação de Dados Circuitos eletrônicos entendem apenas dois estados: com energia (1) ou sem energia (0) . Com o código ASCII (american standard code for information interchange) temos uma grafia transformada em um decimal que, posteriormente, será transformado em um código binário, por exemplo. O sistema de números romanos e o sistema sexagesimal (0-59) são exemplos de representação de dados. Sistema de numeração ● Base quantidade de algarismos ou símbolos para representar todos os números do sistema de numeração. ○ Decimal; binário; octal; hexadecimal... ● Decimal (base 10) a cada posição à esquerda, o símbolo vale 10 vezes mais ● Binário (base 2) os computadores mapeiam valores com voltagem de 0 Volts (0) e +5 Volts (1). Cada valor numérico é representado por uma combinação de 0s e 1s. ○ Cada dígito é chamado de bit (binary digit) {1 dígito = bit, 4 dígitos = nibble, 8 dígitos = byte} ● Octal sistema que vai de 0 até 7 ● Hexadecimal 16 símbolos (0-9 + a-f + 10) Conversão de Bases ● Binário ○ Binário para decimal considerando um código binário lido da esquerdapara a direita e com o primeiro número na posição 0, temos que uma posição do bit equivale à , sendo 0 ou 1 e n a posição que ele 𝑥 × 2 𝑛 𝑥 se encontra. Por exemplo: 100 é 0 × 2 0 + 0 × 2 1 + 1 × 2 2 = 4 ○ Decimal para binário para transformar um número em binário basta dividi-lo sucessivamente por 2, tal que o resto (ao contrário) dará o código. Por exemplo: 47 = / 47 ÷ 2 = 23 ( 𝑐𝑜𝑚 𝑟𝑒𝑠𝑡𝑜 1 ) / 23 ÷ 2 = 11 ( 𝑐𝑜𝑚 𝑟𝑒𝑠𝑡𝑜 1 ) / / 11 ÷ 2 = 5 ( 𝑐𝑜𝑚 𝑟𝑒𝑠𝑡𝑜 1 ) 5 ÷ 2 = 2 ( 𝑐𝑜𝑚 𝑟𝑒𝑠𝑡𝑜 1 ) logo, 47 = 101111 2 ÷ 2 = ( 𝑐𝑜𝑚 𝑟𝑒𝑠𝑡𝑜 0 ) 1 ● Decimal ○ Binário para decimal usa-se a fórmula para 𝑥 × 2 𝑛 converter. Exemplo: 1001 2 = 9 10 ○ Octal para decimal 𝑥 × 8 𝑛 ○ Decimal para octal divisão sucessiva por 8 ● Octal ○ Octal para binário faz uma análise separada de cada um dos símbolos (ex: já que 2 = 010 e 27 8 = 010111 2 7 = 111) ○ Binário para octal faz-se o processo inverso (análise de 3 em 3 bits) ● Hexadecimal ○ Hexadecimal para decimal 𝑥 × 16 𝑛 ○ Decimal para hexadecimal divisão sucessiva com 16 ○ Todos os valores maiores do que 10 e diferentes de 16 tem que ser substituídos (A = 10, B = 11, C = 12, D = 13, E = 14 e F = 15) ○ Hexadecimal para binário análise separada de cada símbolo (sempre completando 4 bits, se só possuir 3, adiciona-se um 0 na quarta posição) ○ binário para hexadecimal agrupa-se 4 bits a partir da direita de \ para Binário Octal Decimal Hexa Binário - Análise 3 bits 𝑥 × 2 𝑛 Análise 4 bits Octal Análise 3 bits - 𝑥 × 8 𝑛 O -> B B -> H Decimal Divisão por 2 Divisão por 8 - Divisão por 16 Hexa Análise 4 bits H -> B B -> O 𝑥 × 16 𝑛 - Métricas Computacionais Capacidade de Armazenamento Refere-se a memória principal (RAM) e secundária. Nomenclatura de aglomerações de bits : ● 1 Byte = 8 bits ○ KB 1024 B ○ MB 1024 KB ○ GB 1024 MG ○ TB 1024 GB Velocidade de Processamento Refere-se aos processadores . Hertz são ciclos por segundo que originam a velocidade de processamento (instruções realizadas por segundo). As nomenclaturas de aglomeração de Hz são as mesmas que as do Byte. O valor puro de Hz vezes a quantidades de bits no processador (bits por ciclo) mostra quantos bits ele processa por segundo . 3 Gustavo Meira - EQ • UEM Algorítmos e Programação de Computadores Taxa de Transmissão de Dados Refere-se, de forma mais direta, à velocidade da internet . É medida em bits por segundo . Conceitos Fundamentais ● Problema objeto da questão fundamentado por uma pergunta de caráter geral a ser respondida. Precisa de uma entrada e uma saída com condições envolvidas ● Lógica correlação de pensamentos de forma correta ● Algoritmos sequência de passos que visam atingir um objetivo. De modo direto, é uma receita ● Estruturas de dados programa = algoritmo + estrutura de dados. Representa objetos, operações... ○ Dados porção das informações a serem processadas pelo computador ○ Estrutura forma de representação de dados ● Linguagem de Programação é o método utilizado para comunicar instruções para um computador com análise semântica e sintática ○ Linguagens estrutura Pascal, C... ○ Linguagens orientadas a objetos C + +, Java… ● Implementação codificação; tradução do algoritmo para uma linguagem de programação específica. Teste de mesa (verificar se o algoritmo foi escrito corretamente) ● Programa sequência de instruções codificadas em uma linguagem de programação para ser executado na memória do computador Algorítmos Representação de Algoritmos ● Descrição narrativa escrever os passos em linguagem natural, em prosa ● Fluxograma formas geométricas (símbolos gráficos) representam diferentes ações ● Pseudocódigo ou Portunhol escrever os passos por meio de regras bem definidas Construção de Dados ● Compreender completamente o problema a ser resolvido ● Definir os dados de entrada ● Definir o processamento , os cálculos e restrições ● Definir os dados de saída ● Construir o algoritmo ● Testar o algorítmos com simulações Variáveis Representa uma posição na memória com nome e tipo, dimensionando um valor real para um valor virtual ● Numéricos ○ Inteiros números positivos e negativos sem parte fracionária ○ Reais pode possuir parte fracionada, tal que a parte decimal é obrigatoriamente representada por um ponto ● Lógicos ou Booleanos assumir valores de verdadeiro (1) e falso (0) ● Literais ou caracteres formado por um caractere ou uma cadeia de caracteres (letras, dígitos e símbolos especiais) Estrutura Sequencial Formação de Identificadores São os nomes das variáveis, programas, constantes, etc. Possuem uma formação regrada: ● São permitidos números, maiúsculas, minúsculas e sublinhados ● Primeiro sempre letra ou caractere sublinhado ● Não pode conter espaços em branco e caracteres especiais ● Não pode haver palavras reservadas Estrutura Sequencial em Algoritmos ● DECLARE declara quais são as variáveis (literais, numéricos e lógico) DECLARE X NUMÉRICO Y, Z LITERAL TESTE LÓGICO ● ← comando de atribuição que concede valores ou operações a variáveis x 4 y " aula " teste falso ● Início 4 Gustavo Meira - EQ • UEM Algorítmos e Programação de Computadores ○ LEIA comando de entrada em algoritmos que recebe os valores adicionados pelo usuário LEIA X LEIA Y ● ○ ESCREVA comando de saída onde mostra os resultados na tela ou impressora ESCREVA X ESCREVA " conteúdo de Y = ", Y Operadores ● Adição + ● Subtração - ● Multiplicação * ● Divisão real / ● divisão inteira div ● Resto da divisão mod Declare dividendo, divisor: inteiro; quociente, resto: inteiro; Início dividendo ← 17; divisor ← 2; quociente ← dividendo div divisor; {8} resto ← dividendo mod divisor; {1} fim . ● Igual = ● Diferente <> ● Maior > ● Menor < ● Maior ou igual >= ● Menor ou igual <= Operadores Lógicos ● Aditiva e ● Adversativa ou ● não A B não(A) não(B) A e B A ou B V V F F V V V F F V F V F V V F F V F F V V F F Estrutura Sequencial Estruturas que controlam a sequência , ou fluxo, de execução das instruções no programa Estrutura Sequência (Composição) Os comandos são executados em uma sequência pré-estabelecida . Cada comando é executado somente após o anterior ter finalizado ● início - fim início Comando x; fim; Estrutura Condicional Faz um questionamento sobre o conteúdo de uma variável, tal que ele direciona o resultado a partir disso. ● Condicionais ○ Simples \ se - então se ExpressãoLógica (EL) então Comando ; ○ Composta \ se - então - senão se ExpressãoLógica (EL) então Comando 1 {V} senão Comando 2 ; {F} ○ Seletiva \ caso - de Laços de Repetição Laços Condicionais ● Com avaliação a priori ( enquanto - faça ) Gera um looping do tipo "enquanto algo não acontecer, continue executando um comando''. Quando acontecer, pare de executar". enquanto ExpressãoLógica faça Comando (s) ; ● Com avaliação a posteriori ( repita - até ) Pascal Geral program x; Uses crt; Var x: integer; Begin {comentário} write ("coloque um número") readln (numero) 5 Gustavo Meira - EQ • UEM Algorítmos e Programação de Computadores numero := numero + 10 end . ● Tipos de dados ○ Inteiro\ integer ○ real \ real ○ Literal \ string (conjunto 1 - 255) ou char (um carácter) ○ Lógico \ boolean ● Constantes \ CONST nome = valor ● Comentários \ texto entre { } ou (* *) ou após // ● Escreva \ write ou writeln (passa o cursor para nova linha) ● Leia \ read ou readln (nova linha ao pressionar Enter) ● Escrita formatada \ 0:2 (2 casas decimais a partir do ponto) Funções Predefinidas abs (x) valor absoluto exp (x) obtém o logaritmo natural elevado a potência x log (x) logaritmo natural de x trunc (x) parte inteira do número real armazenado em x frac (x) parte fracionária armazenada em x round (x) arredonda x sin (x) calcula o seno cos (x) calcula o cosseno pi retorna o valor de π sqrt (x) calcula a raiz quadrada de x sqr (x) calcula x elevado ao quadrado inc (x, y) incrementa a variável x com o valor da variável y dec (x, y) decrementa a variável x com o valor de y Laços ● Laços condicionais ○ Avaliação a priori \ while - do ○ Avaliação a posteriori \ repeat - until ● Laços contados ○ Repetição automática \ for - to - do ● VC \ variável de comando (integer) for VC := LI to LF do Comando; Matrizes & Cadeia de Caracteres Vetor São estruturas homogêneas (conjunto de valores do mesmo tipo) referenciáveis pelo mesmo nome e individualizadas entre si através de sua posição dentro desse conjunto (variáveis indexadas) Os arranjos tridimensionais são chamados de vetores e os bidimensionais são chamados de matriz. ● Array \ é um vetor (Vi) de um determinado tipos de dado ● Dimensões \ (inteiros positivos) são faixas de valores que determinam os índices da variável var NomedaVariavel: array [dim1,dim2,...] of TipoDeDado ; ⋮ var A: array [1..10] of integer; begin A[1] := 17; A[2] := 32; ⋮ A[10] := 12; end . Se var for string : begin A[1] := 'Nkaj'; end . Matrizes É um arranjo multidimensional possuindo um aspecto de tabela [duas dimensões m ( linha ) por n ( colunas )]. nome_do_arranjo: array [1..x,1..y] of tipo; ⋮ nome_do_arranjo: array [1..x,1..y] of tipo; = ((elementos_linha_1), (elementos_linha_2), (...)); Para apresentar a matriz na tela: for i := 1 to 3 do Begin for j := 1 to 4 do Begin Write (mat[i,j]:2, ' '); end ; writeln (''); end. Para escrever os valores na matriz: for i := 1 to 4 do Begin for j := 1 to 5 do Begin Write ('informe mat[', i, ',', j, ']: 6 Gustavo Meira - EQ • UEM Algorítmos e Programação de Computadores '); end ; end. Cadeia de Caracteres Outro tipo de dados homogêneos - chamados de strings - que permite o armazenamento de caracteres. var x: string [ numero_de_caracteres ]; x := '...'; ● chr( núm ) \ mostra o código do caracter ● ord( 'arlgoritmo' ) \ transforma os algoritmos de volta em caracter ● length( string ) \ calcula o tamanho da string ● upcase( string ) \ transforma minúscula para maiúscula ● Concatenação \ declara-se uma nova variável que some as strings existentes Agregados Heterogêneos & Subprogramação Agregados Heterogêneos Envolve, em uma única estrutura, dados de tipos diferentes. ● Record \ guarda as informações de diferentes tipos var x: record var y: string; var w: integer; var z: char; var k: real; end ; Para atribuir valores temos: x.y := 'Alguma_coisa'; x.w := 25; x.z := 'F'; x.k := 89.2; ● Type \ cria um tipo de registro de dados que define como o dado é estruturado Type var Tx : record var y: string; var w: integer; var z: char; var k: real; end; var p: var Tx ; Subprogramação São blocos de instruções que realizam tarefas específicas. Ela melhora a estrutura do programa, a legibilidade e a modificação / correção do programa. ● Funções Retorna um valor processado Function Identific (parâmetro: tipo ; parametro : tipo; ...): Tipo; Var … Begin … Identificador := expressão ; … end. ● Funções sem parâmetro \ se resolvem por conta própria tal que o usuário decide um parâmetro Function Identific( ): Tipo; ● Local de declaração \ devem ser declaradas antes do programa principal ● Funções com interdependência \ (declaração do protótipo da função) usa-se forward Function Identific (parametro: tipo; parametro: tipo; ...): Tipo; Forward ; ● Procedimento Não retorna nada Procedure Identific ( sequência de parâmetros ); Var … Begin … end. ● Escopo de variáveis ○ Escopo global \ declarações feitas no programa principal, sendo elas únicas e acessíveis em qualquer parte do programa ○ Escopo local \ variáveis declaradas dentro dos subprogramas (sombreiam as variáveis globais quando declaradas iguais) ● Passagem de parâmetros Procedure Identif( var a: tipo; var b: tipo); Isso indica que o que acontecerá com a e b também acontecerá com os valores que estão ligados a eles por referência. Recursividade Objetos que podem ser definidos em termos de si próprios 7 Gustavo Meira - EQ • UEM Algorítmos e Programação de Computadores ● Caso base \ uma instância do problema que possui solução direta ● Chamadas recursivas \ o objeto define-se em termos de si próprio, convergindo até o caso base Tipos de recursão: ● Rotina direta \ ela mesma se chama na recursão ● Rotina indireta \ uma rotina chama a outra que chama a primeira e assim por diante Ordenação Ordenação Interna de Dados Serve para ordenar dados de alguma forma. ● Medidas de complexidade relevantes: ○ C(n) \ número de comparações entre elementos ○ M(n) \ número de movimentações de elementos Seleção Neste método, ele analisa o vetor casa por casa e verifica elementos menores quando comparado ao primeiro e então troca os dois de posição e assim por diante. for i := 1 to N do Begin menor := vet[i]; m {posição do menor} := i; for j := i + 1 to 10 do Begin if vet[j] < menor then Begin menor := vet[j]; m := j; end; end; aux := vet[i]; vet[i] := vet[m]; vet[m] := aux; end; Excluindo menor: for i := 1 to N do Begin m {posição do menor} := i; for j := i + 1 to 10 do Begin if vet[j] < vet[m] then Begin menor := vet[j]; m := j; end; end; aux := vet[i]; vet[i] := vet[m]; vet[m] := aux; end; Inserção Acrescenta o número maior/menor na posição correta diretamente por deslocar os que possuem uma casa a mais. Procedure Troca(var x: integer; var y: integer); Var aux: integer; Begin aux := x; x := y; y := aux; end; for i := 2 to N do Begin k := i; while (k > 1) and (vet[k] < vet[k-1]) do Begin Troca (vet[k], vet[k-1]); k := k - 1; end; end; troca Vai analisando par a par e trocando a posição deles quando necessário Procedure BubbleSort(var vet: TVetor); var i, j: integer; Begin for i := 1 to ( N-1 ) do Begin for j := 1 to ( N-i ) do Begin if vet[j] > vet[j+1] then Begin Troca (vet[j], vet[j+1]); end; end; end; end. Manipulação de Arquivos Arquivo é tudo o que se pode armazenar na memória do computador, tal que eles podem ser manipulados por um programa. Permitem o armazenamento permanente dos dados! 8 Gustavo Meira - EQ • UEM Algorítmos e Programação de Computadores Texto ● Descritor \ quem manipula o arquivo ● Abrir o arquivo ● Manipular o arquivo ● Fechar o arquivo var arquivoTexto: Text ; linha: string; Begin Assign ( arquivoTexto , 'arquivo' ); Readln ( arquivoTexto , linha ); End. ● Reset(Descritor) \ abrir o arquivo para leitura dos dados do arquivo ● Rewrite(Descritor)\ ● EOF(Descritor) \ retorna verdadeiro no final do arquivo Registro ● Read(arq, reg) \ (não se usa o ln) ● Seek \ serve para nos deslocarmos dentro do arquivo e irmos para o registro que queremos ● FilePos(Descritor) \ retorna o número do registro que está posicionado o final do arquivo ● FileSize(Descritor) \ retorna o número de registros contidos no arquivo var arquivoTexto: Text ; linha: string; Begin Assign ( arquivoTexto , 'arquivo' ); Readln ( arquivoTexto , linha ); End. 9
Compartilhar