Baixe o app para aproveitar ainda mais
Prévia do material em texto
FALCULDADE PITÁGORAS ALGORITMOS E PROGRAMAÇÃO CONCEITOS INICIAIS PROFESSOR: SÉRVULO JUNIOR UNIDADE 1 1 CONCEITOS INICIAIS 1.1 Definição de algoritmos 1.2 Formas de representação 1.3 Tipos de dados, variáveis e constantes 1.4 Instruções primitivas ROTEIRO PROFESSOR: SÉRVULO JUNIOR 02/66 ROTEIRO ROTEIRO PROFESSOR: SÉRVULO JUNIOR 03/66 1 CONCEITOS INICIAIS RACIOCÍNIO LÓGICO é um conjunto de estudo que visa a determinar os processos intelectuais que são as condições gerais do conhecimento, mais podemos ser mais técnico e dizer que é sequência coerente, regular e necessária de acontecimentos, de coisas ou fatos, ou um esquema sistemático que define as interações com critérios e princípios formais de raciocínio e pensamento. ROTEIRO PROFESSOR: SÉRVULO JUNIOR 04/66 1 CONCEITOS INICIAIS enquanto “existe um quadrado livre e não tenha vencido (ou perdido) o jogo” “espere a jogada do oponente, continue depois”; se “existe um quadrado livre” então se “o centro está livre” então “jogue no centro”; senão se “o oponente tem dois quadrados quaisquer em linha com o terceiro desocupado” então “jogue nesse quadrado desocupado”; senão se “há algum canto livre” então jogue nesse canto; fim se; fim se; fim se; fim se; fim enquanto; ROTEIRO PROFESSOR: SÉRVULO JUNIOR 05/66 1 CONCEITOS INICIAIS Eu tenho que atravessar um rio de barco, mais só posso levar um de cada vez, de um jeito que a raposa não fique só com a galinha e tão pouco a galinha com o saco de milho. Se não a raposa come a galinha ou a galinha come o saco de milho. ROTEIRO PROFESSOR: SÉRVULO JUNIOR 06/66 1.1 Definição de algoritmos O QUE É UM PROBLEMA • Podemos dizer que é uma proposta duvidosa, que pode ter numerosas soluções; ou • É uma questão que foge a uma determinada regra, ou melhor, é o desvio de um percurso, o qual impede de atingir com sucesso um determinado objetivo com eficiência e eficácia; ROTEIRO PROFESSOR: SÉRVULO JUNIOR 06/66 1.1 Definição de algoritmos A técnica mais importante no projeto da lógica é chamada programação estruturada, a qual consiste em uma metodologia de projeto, objetivando: • Agilizar a codificação da escrita da programação; • Facilitar a depuração da sua leitura; • Permitir a verificação de possíveis falhas apresentadas pelos programas; • Facilitar as alterações e atualizações dos programas. ROTEIRO PROFESSOR: SÉRVULO JUNIOR 06/66 1.1 Definição de algoritmos Passos fundamentais para a programação estruturada: • Escrever as instruções em sequencias ligadas entre si apenas por estruturas sequencias, repetitivas ou de selecionamento; • Escrever instruções em grupos pequenos e combiná-los; • Distribuir em módulos o problema entre os trabalhadores sob a supervisão de um gerente de tarefas ou analista do projeto; e • Revisar o trabalho executando passo a passo o que a aplicação deve executar. ROTEIRO PROFESSOR: SÉRVULO JUNIOR 06/66 1.1 Definição de algoritmos ALGORITMOS • É um conjunto de instruções ou comandos que, quando executados , levam a um conjunto finito de ações. • É um conjunto ordenado de instruções que quando seguidas desempenham uma tarefa especifica. Programas são formulações concretas de algoritmos abstratos, baseados em representações e estruturas específicas de dados. A formulação de um algoritmo geralmente consiste em um texto contendo comandos (instruções) que devem ser executados numa ordem prescrita. ROTEIRO PROFESSOR: SÉRVULO JUNIOR 07/66 1.1 Definição de algoritmos A grande dificuldade na concepção e no entendimento de algoritmos é o problema do relacionamento desses aspectos, ou seja: como entender (“visualizar”) as estruturas dinâmicas das possíveis execuções do algoritmo a partir da estrutura estática do texto do algoritmo. Qual é o padrão de comportamento utilizado para gerar uma sequência? 1, 5, 9, 13, 17, 21, 25? ROTEIRO PROFESSOR: SÉRVULO JUNIOR 08/66 1.1 Definição de algoritmos Um algoritmo é a descrição de um padrão de comportamento, expressado em termos de um repertório bem definido e finito de ações “primitivas”, das quais damos por certo que elas podem ser executadas. Um algoritmo é uma norma executável que geralmente está associada à resolução de um certo tipo de problema. Um algoritmo deve ser determinístico, isto é, dadas as mesmas condições iniciais deve produzir, depois de executado, os mesmos resultados. Criar um algoritmo para arrumar livros na biblioteca. ROTEIRO PROFESSOR: SÉRVULO JUNIOR 09/66 1.1 Definição de algoritmos Um algoritmo deve ser determinístico, isto é, dadas as mesmas condições iniciais deve produzir, depois de executado, os mesmos resultados. Observação: O símbolo de sequenciamento ‘;’ (ponto e vírgula) representa a mais simples das estruturas de (fluxo de) controle. O símbolo possui duas funções: Separar um comando de outro; Indicar a sequência que os comandos devem ser executados, conforme eles sejam escrito. ROTEIRO PROFESSOR: SÉRVULO JUNIOR 10/66 1.1 Definição de algoritmos PROGRAMAS E ESTRUTURAS DE DADOS Uma linguagem de programação é uma técnica de notação para programar, com a intenção de servir de veículo para: a) Expressão de raciocínio algoritmo. b) Execução automática de um algoritmo por um computador. PROGRAMAÇÃO ESTRUTURADA Facilitar a escrita dos programas; Facilitar a leitura (o entendimento) dos programas; Permitir a verificação a priori dos programas; Facilitar a manutenção e modificação dos programas. ROTEIRO PROFESSOR: SÉRVULO JUNIOR 11/66 1.1 Definição de algoritmos A idéia de programação estruturada é reduzir a complexidade em três níveis: a) Desenvolvimento do programa em diferentes fases por refinamento sucessivo (desenvolvimento top-down); b) Decomposição do programa total em módulos funcionais, organizados de preferência num sistema hierárquico; c) Usando dentro de cada módulo só um número muito limitado de estruturas básicas de fluxo de controle. ROTEIRO PROFESSOR: SÉRVULO JUNIOR 12/66 1.1 Definição de algoritmos 1. Desenvolvimento Top-Down; 2. Modularização; 3. Estrutura de Controle (sequência simples, comando condicional, comando repetitivo); 4. Motivação: Problemas na Produção de Softaware; a) Confiabilidade X Complexidade; b) Manutenibilidade; c) Importância da Documentação; d) Fluxo de Controle em Algoritmos. A seguir um exemplo utilizando sequência, alternativa, indentação e comentários. ROTEIRO PROFESSOR: SÉRVULO JUNIOR 13/66 1.1 Definição de algoritmos se a > 15 então //(a > 15) x := x*4; y := y+3; senão se a > 10 então //(10 < a ≤15) x := x * 3; x := y + 2; senão se a > 5 então //(5 < a ≤10) x := x * 2; x := y + 1; senão //(a ≤5) x := 0; y := 0; fim se; fim se; fim se; ROTEIRO PROFESSOR: SÉRVULO JUNIOR 14/66 1.2 Formas de representação Existem diversas formas de representação de algoritmos, mas não há um consenso com relação à melhor delas. Dentre as formas de representação de algoritmos mais conhecidas podemos citar: 1. DESCRIÇÃO NARRATIVA: Nesta forma de representação os algoritmos são expressos diretamente em linguagem natural. Exemplo: Cálculo da média de um aluno: Obter as suas 2 notas de provas Calcular a média aritmética Se a média for maior que 7, o aluno foi aprovado, senão ele foi reprovado ROTEIRO PROFESSOR: SÉRVULO JUNIOR 15/66 1.2 Formas de representação 2. FLUXOGRAMA CONVENCIONAL: É uma representação gráfica de algoritmos onde formas geométricas diferentes implicam ações (instruções, comandos) distintos. Tal propriedadefacilita o entendimento das idéias contidas nos algoritmos e justifica sua popularidade. Esta forma é aproximadamente intermediária à 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. Neste tipo de algoritmo são utilizado figuras geométricas para representar operações de saída de dados realizadas em dispositivos distintos, a seguir alguns exemplos: ROTEIRO PROFESSOR: SÉRVULO JUNIOR 16/66 1.2 Formas de representação Figura 1: Principais formas geométricas usadas em fluxogramas ROTEIRO PROFESSOR: SÉRVULO JUNIOR 17/66 1.2 Formas de representação Figura 2: Principais formas geométricas usadas em fluxogramas Exemplo de cálculo da média de um aluno sob a forma de um fluxograma. ROTEIRO PROFESSOR: SÉRVULO JUNIOR 18/66 1.2 Formas de representação 3. PSEUDOCÓDIGO OU PORTUGUÊS ESTRUTURADO: essa representação de algoritmos é rica em detalhes, como a definição dos tipos das variáveis usadas no algoritmo, funções, procedimento, vetores, matrizes e outros e por assemelhar-se bastante à forma em que os programas são escritos, encontra muita aceitação. 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 <nome_do_algoritmo> <declaração_de_variáveis> <subalgoritmos> Início <corpo do algoritmo> Fim ROTEIRO PROFESSOR: SÉRVULO JUNIOR 19/66 1.2 Formas de representação Algoritmo é uma palavra que indica o início da definição de um algoritmo em forma de pseudocódigo. <nome_do_algoritmo> é um nome simbólico dado ao algoritmo com a finalidade de distingui-los dos demais. <declaração_de_variáveis> consiste em uma porção opcional onde são declaradas as variáveis globais usadas no algoritmo principal e, eventualmente, nos subalgoritmos. <subalgoritmos> consiste de uma porção opcional do pseudocódigo onde são definidos os subalgoritmos. 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. ROTEIRO PROFESSOR: SÉRVULO JUNIOR 20/66 1.2 Formas de representação Exemplo: Algoritmo Calculo_Media; var N1, N2, MEDIA: real; início leia N1, N2; MEDIA = (N1 + N2) / 2; se MEDIA >= 7 então escreva “Aprovado”; senão escreva “Reprovado”; fimse; fim. ROTEIRO PROFESSOR: SÉRVULO JUNIOR 21/66 1.3 Tipos de dados, variáveis e constantes Para desenvolvermos um diagrama correto, devemos considerar como procedimentos prioritários os itens seguintes: • Os diagramas devem ser feitos e quebrados em vários níveis. Os primeiros devem conter apenas as ideias gerais, deixando posteriores os detalhamentos necessários; e • Para o desenvolvimento correto de um fluxograma, sempre que possível, deve ser desenvolvido de cima para baixo e da esquerda para a direita; ROTEIRO PROFESSOR: SÉRVULO JUNIOR 21/66 1.3 Tipos de dados, variáveis e constantes Computador nada mais é que uma ferramenta utilizada para solucionar problemas que envolvam a manipulação de informações, sendo que essas informações classificam-se a grosso modo em dois tipos básicos: DADOS e INSTRUÇÕES. Tipos de dados Os dados armazenados ou processados em um computador podem ser classificados de acordo com o tipo de informação neles contida. Para cada classificação, temos um agrupamento de bits responsável pela representação do dado. • 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 à porção das informações a serem processadas pelo computador. ROTEIRO PROFESSOR: SÉRVULO JUNIOR 26/66 1.3 Tipos de dados, variáveis e constantes Variáveis Uma das características mais poderosas de uma linguagem de programação é a habilidade de manipular variáveis. Uma variável é um nome que se refere a um valor. Os programadores geralmente escolhem nomes significativos para suas variáveis, pois os nomes documentam para o que a variável é usada. ROTEIRO PROFESSOR: SÉRVULO JUNIOR 27/66 1.3 Tipos de dados, variáveis e constantes Tipos de dados Os dados são representados pelas informações a serem tratadas (processadas) por um computador. Essas informações estão caracterizadas por três tipos de dados: dados numéricos (inteiros e reais), dados caracteres e dados lógicos. ROTEIRO PROFESSOR: SÉRVULO JUNIOR 28/66 1.3 Tipos de dados, variáveis e constantes Tipos inteiros São considerados inteiros aqueles valores numéricos positivos ou negativos. Este tipo de dados pode ser usado por meio dos identificadores: int, pode possuir 16 bits, 32 bits ou 64 bits; short int, deve possuir tamanho de no mínimo 16 bits e não pode ser maior que int; long int, deve possuir tamanho mínimo de 32 bits; long long int, deve possuir tamanho mínimo de 64 bits. ROTEIRO PROFESSOR: SÉRVULO JUNIOR 29/66 1.3 Tipos de dados, variáveis e constantes Tipos reais São considerados reais os valores numéricos positivos e negativos sendo números fracionários ou inteiros. Este tipo de dados pode ser usado por meio dos identificadores: float define um número de ponto flutuante com seis dígitos decimais de precisão absoluta; double representa números de ponto flutuante com quinze dígitos decimais de precisão absoluta; e long double suporta um número de ponto flutuante com quinze dígitos decimais e precisão absoluta. ROTEIRO PROFESSOR: SÉRVULO JUNIOR 1.3 Tipos de dados, variáveis e constantes Tipos caracteres Caracteres ou sequências de caracteres (strings) são formados por letras, números e símbolos especiais, representando dados alfanuméricos. Na linguagem C, por exemplo permite o uso de dados alfanumérico de duas formas: • um caractere delimitado por apóstrofos: ‘x’ • uma sequência de caracteres delimitadas por aspas: “x” Tipos lógicos Os dados do tipo lógico podem assumir somente dois valores: Verdadeiro Falso true false 1 0 30/66 ROTEIRO PROFESSOR: SÉRVULO JUNIOR 1.3 Tipos de dados, variáveis e constantes Nomenclatura, declaração e inicialização de variáveis Variável é um local onde se pode colocar qualquer valor do conjunto de valores possíveis do tipo básico associado. Toda variável possui um nome que tem a função de diferenciá-la das demais. Cada linguagem de programação estabelece suas próprias regras de formação de nomes de variáveis. Adotaremos nesta apostila as seguintes regras: • um nome de variável deve necessariamente começar com uma letra; • um nome de variável não deve conter nenhum símbolo especial exceto a sublinha (_). 31/66 ROTEIRO PROFESSOR: SÉRVULO JUNIOR 1.3 Tipos de dados, variáveis e constantes Nomenclatura, declaração e inicialização de variáveis Todas as variáveis utilizadas em algoritmos devem ser definidas antes de serem utilizadas. Convenção para desenvolvimento dos algoritmos: • Todas as variáveis utilizadas em algoritmos serão definidas no início do mesmo, por meio de um comando de uma das formas seguintes: VAR <nome_da_variável> : <tipo_da_variável> VAR <lista_de_variáveis> : <tipo_das_variáveis> • a palavra-chave VAR deverá estar presente sempre e será utilizada uma única vez na definição de um conjunto de uma ou maisvariáveis; • numa mesma linha poderão ser definidas uma ou mais variáveis do mesmo tipo. Para tal, deve-se separar os nomes das mesmas por vírgulas; • variáveis de tipos diferentes devem ser declaradas em linhas diferentes. 32/66 ROTEIRO PROFESSOR: SÉRVULO JUNIOR 1.3 Tipos de dados, variáveis e constantes Nomenclatura, declaração e inicialização de variáveis Exemplo de definição de variáveis: VAR NOME : literal[10]; IDADE : inteiro; SALARIO : real; TEM_FILHOS : lógico; 33/66 ROTEIRO PROFESSOR: SÉRVULO JUNIOR 1.3 Tipos de dados, variáveis e constantes Vantagens de utilização de constante Constantes se diferem das variáveis pelo fato destas armazenarem valores temporários. Quer dizer, uma variável é capaz de armazenar um único valor num dado instante de tempo, porém este conteúdo pode ser alterado no decorrer da execução do programa. Já uma constante, ao ser declarada sempre armazenará o mesmo valor, não sendo permitido alterar este valor. As constantes em C podem ser declaradas de qualquer um dos tipos de dados básicos e pode ser explícita ou implícita. Explícita quando o valor é usado diretamente numa instrução, como em RESPOSTA = VALOR + 2.43; 34/66 ROTEIRO PROFESSOR: SÉRVULO JUNIOR 1.4 Instruções primitivas Expressões O conceito de expressão em termos computacionais está intimamente ligado ao conceito de expressão (ou fórmula) matemática, onde um conjunto de variáveis e constantes numéricas relacionam-se por meio de operadores aritméticos compondo uma fórmula que, uma vez avaliada, resulta num valor. Por exemplo, a fórmula de cálculo da área do triângulo é dada por: AREA = 0.5 x B x H 35/66 ROTEIRO PROFESSOR: SÉRVULO JUNIOR 1.4 Instruções primitivas Esta fórmula utiliza três variáveis: B e H, que contêm as dimensões do triângulo, e AREA, onde é guardado o valor calculado (resultado da avaliação da expressão). Há, também, uma constante (0.5) e o operador de multiplicação (x), que aparece duas vezes na expressão. O conceito de expressão aplicado à computação assume uma conotação mais ampla: uma expressão é uma combinação de variáveis, constantes e operadores, e que, uma vez avaliada, resulta num valor. Operadores são elementos funcionais que atuam sobre operandos e produzem um determinado resultado. Por exemplo, a expressão 3 + 2 relaciona dois operandos (os números 3 e 2) por meio do operador (+) que representa a operação de adição. Podem ser classificados em: • binários, quando atuam sobre dois operandos. Ex.: os operadores das operações aritméticas básicas (soma, subtração, multiplicação e divisão); 36/66 ROTEIRO PROFESSOR: SÉRVULO JUNIOR 1.4 Instruções primitivas unários, quando atuam sobre um único operando. Ex.: o sinal de (-) na frente de um número, cuja função é inverter seu sinal. Outra classificação dos operadores é feita considerando-se o tipo de dado de seus operandos e do valor resultante de sua avaliação. Segundo esta classificação, os operadores dividem-se em aritméticos, lógicos e literais. Esta divisão está diretamente relacionada com o tipo de expressão onde aparecem os operadores. Expressões Aritméticas são aquelas cujo resultado da avaliação é do tipo numérico, seja ele inteiro ou real. Somente o uso de operadores aritméticos e variáveis numéricas é permitido em expressões deste tipo. 37/66 ROTEIRO PROFESSOR: SÉRVULO JUNIOR 1.4 Instruções primitivas Operador Ação + Soma (inteira e ponto flutuante) - Subtração ou troca de sinal (inteira e ponto flutuante) * Multiplicação (inteira e ponto flutuante) / Divisão (inteira e ponto flutuante) % Resto de divisão (de inteiros) ++ Incremento (inteiro e ponto flutuante) -- Decremento (inteiro e ponto flutuante) Expressões Aritméticas 38/66 ROTEIRO PROFESSOR: SÉRVULO JUNIOR 1.4 Instruções primitivas Operador Ação || OU ou (or) && E E (and) ! NÃO não (not) Expressões Lógicas e suas relações de prioridade Tabela verdade A B NÃO A NÃO B A ou B A e B F F V V F F F V V F V F V F F V V F V V F F V V 39/66 ROTEIRO PROFESSOR: SÉRVULO JUNIOR 1.4 Instruções primitivas Expressão original Expressão Equivalente x = x + k; x += k; x = x – k; x -= k; x = x * k; x *= k x = x / k; x /= k; Observações O operador lógico NÃO sempre inverte o valor de seu operando. Ex.: NÃO V = F; e NÃO F = V; Para que a operação lógica OU tenha resultado verdadeiro basta que um de seus operando seja verdadeiro; 40/66 ROTEIRO PROFESSOR: SÉRVULO JUNIOR 1.4 Instruções primitivas Operadores relacionais operador operação = igual <> diferente < menor <= menor que > maior >= maior que 41/66 ROTEIRO PROFESSOR: SÉRVULO JUNIOR 1.4 Instruções primitivas Indentação É um termo usado na área de programação para indicar que um código-fonte está organizado, facilitando assim sua leitura e entendimento. São pequenas regras que contribuem para que seu código fique legível. Instrução Primitiva são os comandos básicos que efetuam tarefas essenciais para a operação dos computadores, como entrada e saída de dados (comunicação com o usuário e com os dispositivos periféricos), e movimentação dos mesmos na memória. Dispositivo de entrada é o meio pelo qual as informações (mais especificamente os dados) são transferidas pelo usuário. Os exemplos mais comuns são: o teclado, o cartão perfurado (já obsoleto), as fitas e os discos magnéticos, entre outros; 42/66 ROTEIRO PROFESSOR: SÉRVULO JUNIOR 1.4 Instruções primitivas Dispositivo de saída é o meio pelo qual as informações (geralmente, os resultados da execução de um programa) são transferidas pelo computador ao usuário ou aos níveis secundários de memória. Exemplos: monitor de vídeo, impressora, fitas e discos magnéticos, entre outros; Sintaxe é a forma como os comandos devem ser escritos, a fim de que possam ser entendidos pelo tradutor de programas. A violação das regras sintáticas é considerada um erro sujeito à pena do não- reconhecimento do comando por parte do tradutor; Semântica é o significado, ou seja, o conjunto de ações que serão exercidas pelo computador durante a execução do referido comando. 43/66 ROTEIRO PROFESSOR: SÉRVULO JUNIOR 1.4 Instruções primitivas Código Fonte É o conjunto de palavras ou símbolos escritos de forma ordenada, contendo instruções em uma das linguagens de programação existentes, de maneira lógica. São as linhas de programação que formam um software em sua forma original. Inicialmente, um programador "escreve" o programa em uma certa linguagem no nosso casso linguagem C. Resumindo é uma linguagem que o programador entenda (linguagem humana). Para converter essa linguagem é uma linguagem que o computador entenda (linguagem de máquina) usamos o compilador que transforma código fonte em linguagem de máquina. comando. 44/66 ROTEIRO PROFESSOR: SÉRVULO JUNIOR 1.4 Instruções primitivas Compilador A compilação consiste na tradução do texto em código fonte (no nosso caso, a linguagem de programação C) para um código que o computador possa ler (Código executável ou linguagem de máquina), constituição essa que nós normalmente não conhecemos. Um compilador é um programa de sistema que traduz um programa descrito em uma linguagem de alto nível(código fonte) para um programa equivalente em código de máquina para um processador. Em geral, um compilador não produz diretamente o código de máquina mas sim um programa em linguagem simbólica (linguagem C) semanticamente equivalente ao programa em linguagem de alto nível. O programa em linguagem simbólicaé então traduzido para o programa em linguagem de máquina através do compilador 45/66 ROTEIRO PROFESSOR: SÉRVULO JUNIOR 1.4 Instruções primitivas Código executável (linguagem de máquina) Um executável ou arquivo executável, em informática, é um arquivo em que seu conteúdo deve ser interpretado como um programa por um computador. Normalmente, eles possuem a representação binária das instruções de máquina de um processador específico, mas podem conter também uma forma intermediária que podem ser necessários serviços de um interpretador para executar. Hoje em dia, a distinção entre um programa na sua forma original (em linguagem humana) e em sua forma executável (em linguagem de máquina) está se tornando menos distinta, já que o ato de transformar a forma original no formato máquina (por compilação) ou a interpretação pode ser feito de modo implícito. 46/66 ROTEIRO PROFESSOR: SÉRVULO JUNIOR 1.4 Instruções primitivas Interpretador O interpretador ao contrário do compilador roda o código-fonte escrito como sendo o código objeto, ele traduz o programa linha a linha, o programa vai sendo utilizado na medida em que vai sendo traduzido. Cada execução do programa precisa ser novamente traduzido e interpretado. O interpretador analisa sintaticamente e semanticamente o código, se estas duas etapas forem realizadas e executadas de forma correta o código está pronto para funcionar. 47/66 ROTEIRO PROFESSOR: SÉRVULO JUNIOR 1.4 Instruções primitivas Atribuição de valores e variáveis atribuição, é a principal maneira de se armazenar uma informação numa variável. Sua sintaxe é: <nome_de_variável> ← <expressão> 48/66 ROTEIRO PROFESSOR: SÉRVULO JUNIOR 1.4 Instruções primitivas Leitura (entrada) de dados Sua sintaxe é: Leia <lista_de_variáveis> Em algoritmo Leia será tratada como uma palavra reservada e não mais poderá ser usada como nome de variável em algoritmos. A lista_de_variáveis é um conjunto de um ou mais nomes de variáveis, separados por vírgulas. A semântica da instrução de entrada (ou leitura) de dados é, de certa forma, inversa à da instrução de escrita: os dados são fornecidos ao computador por meio de um dispositivo de entrada e armazenados nas posições de memória das variáveis cujos nomes aparecem na lista_de_variáveis. 49/66 ROTEIRO PROFESSOR: SÉRVULO JUNIOR 1.4 Instruções primitivas 50/66 ROTEIRO PROFESSOR: SÉRVULO JUNIOR 1.4 Instruções primitivas Escreva (saída) de dados meio pelo qual informações são colocadas nos dispositivos de saída, para que o usuário possa visualizá-las. Há duas sintaxes possíveis para esta instrução: Escreva <lista de variáveis> ou Escreva <literal> Escreva em algoritmo é considerada uma palavra reservada e não mais poderá ser utilizada como nome de variável e sim como um comando de saída de dados. Uma lista_de_variáveis é um conjunto de nomes de variáveis separados por vírgulas. Um literal é simplesmente um dado do tipo literal delimitado por aspas. 51/66 ROTEIRO PROFESSOR: SÉRVULO JUNIOR 1.4 Instruções primitivas Leitura (entrada) de dados 52/66 ROTEIRO PROFESSOR: SÉRVULO JUNIOR 1.5 Exemplos de Algoritmos inicio inteiro: MAIOR, //conterá o maior valor MENOR, //conterá o menor valor VALOR; //valor lido leia (VALOR); MAIOR <- VALOR; MENOR <- VALOR; enquanto VALOR <> 0 faça //admintindo que o 0(zero) é o ultimo valor se VALOR > MAIOR então MAIOR <- VALOR; senão se VALOR < MENOR então MENOR <- VALOR; fim se; fim se; leia (VALOR); fim enquanto; imprima (MAIOR, MENOR); fim. 53/66 ROTEIRO PROFESSOR: SÉRVULO JUNIOR 1.6 Linguagem C A linguagem C é uma linguagem simbólica de fácil entendimento, que possui uma sintaxe bastante estruturada e flexível, tornando sua programação bem simplificada. É case sensitive, isto quer dizer que faz diferenças entre maiúsculas e minúsculas. Exemplo: Total TOTAL tOTAL Palavras reservadas, não podem ser utilizadas para nomear variáveis ou funções. Exemplos: break, continue, define, do, for, function, if, return, switch, struct, while. 54/66 ROTEIRO PROFESSOR: SÉRVULO JUNIOR 1.6 Linguagem C Um bloco de comandos é demarcado com os símbolos {e } Exemplo: { printf(“teste 1”) ; printif(“teste 2”) } Entrada e Saída printf –Imprime para a saída padrão (normalmente o vídeo) scanf –Lê da entrada padrão (normalmente o teclado) 55/66 ROTEIRO PROFESSOR: SÉRVULO JUNIOR 1.6 Linguagem C Printf Sintaxe: printf(“caracteres de controle”, lista de expressões); –O formato indica como exibir as variáveis Exemplo: Int numero = 3; printf("numero = %d\n", 2*numero); Scanf Sintaxe: scanf("caracteres de controle", lista de variáveis); Exemplo: scanf("%d %d", &m, &n) 56/66 ROTEIRO PROFESSOR: SÉRVULO JUNIOR 1.6 Linguagem C Constantes de Caractere de Barra Invertida Código Significado \b Retrocesso(“back”) \f Alinhamento de formulário \n Nova linha \r Retorno de carro \t Tabulação horizontal \” Aspas \’ Apóstrofo \0 Nulo (zero em decinal) 57/66 ROTEIRO PROFESSOR: SÉRVULO JUNIOR 1.6 Linguagem C Comandos de formato da função Código Significado %c Caractere %d Inteiros decimais com sinal %i Inteiros decimais com sinal %f Ponto Flutuante %o Octal sem sinal %s Cadeia sem sinal %x Hexadecimal sem sinal %p Apresenta o endereço de um ponteiro 58/66 ROTEIRO PROFESSOR: SÉRVULO JUNIOR 1.6 Linguagem C Especificadores de formato da função scanf() Código Significado %c Faz a leitura de um único caractere %d Faz a leitura de um único inteiro %i Faz a leitura de um inteiros %f Faz a leitura de um ponto Flutuante %o Faz a leitura de um número octal %s Faz a leitura de uma string %x Faz a leitura de um número hexadecimal %p Faz a leitura de um inteiro o endereço de um ponteiro 59/66 ROTEIRO PROFESSOR: SÉRVULO JUNIOR 1.6 Linguagem C Exemplo de um programa que calcula um fatorial de um número #include <stdio.h> #include <conio.h> void main() { int n, fat, i; printf("Digite o numero:"); scanf("%d", &n); fat= 1; i = 2; while(i <= n) { fat= fat* i; i = i + 1; } printf("Fatorial (%d) = %d", n, fat); } 60/66 ROTEIRO PROFESSOR: SÉRVULO JUNIOR 1.6 Linguagem C Algumas informações Todo programa em C deve ter uma função main, pois é esta função que será chamada quando o programa for executado. O conteúdo da função é delimitado por chaves { }. O código que estiver dentro das chaves será executado sequencialmente quando a função for chamada. Biblioteca padrão de entrada e saída em C existe um conjunto de funções definidas pelo programador, funções que utilizarão outras funções definidas pelo programador e algumas funções oferecidas pelo sistema (as funções oferecidas pelo sistema são chamadas funções de biblioteca ou funções pré-definidas). A importação de uma biblioteca é dada pelo comando INCLUDE (incluir) seguido da biblioteca entre os sinais de menor (<) e maior (>). 61/66 ROTEIRO PROFESSOR: SÉRVULO JUNIOR 1.6 Linguagem C Stdio.h • printf(): imprime na saída padrão (monitor); • scanf(): lê dados da entrada padrão (teclado); • fopen(): permite a abertura ou criação de arquivos; • fclose(): fecha um arquivo aberto com fopen(); • fprintf(): grava informações em arquivo; • fscanf(): lê informações de arquivo; • remove(): apaga um arquivo. Stlib.h • atoi(): converte uma string para um valor inteiro; • atof(): converte uma string para um valor real; • rand():gera um número ou sequência de forma aleatória; • malloc(): aloca memória dinamicamente; • free(): libera a memória alocada por malloc(). 62/66 ROTEIRO PROFESSOR: SÉRVULO JUNIOR 1.7 Code::Blocks Em nosas aulas iremos utilizar o Code::Blocks, para facilitar o desenvolvimento e compilação de um programa em C, esse programa oferece um ambiente que integra um editor de textos a um compilador para linguagem C. Para iniciar um novo programa em C faça: 63/66 ROTEIRO PROFESSOR: SÉRVULO JUNIOR 1.7 Code::Blocks Em seguida clique em: Depois em Go 64/66 ROTEIRO PROFESSOR: SÉRVULO JUNIOR 1.7 Code::Blocks Na tela seguinte, selecione C e clique em Next 65/66 ROTEIRO PROFESSOR: SÉRVULO JUNIOR 1.7 Code::Blocks Na janela seguinte, digite um nome para o arquivo de programa a ser digitado. Para tanto, clique no quadrado com ... que aparece ao lado da caixa com título Filename with full path: e digite um nome de arquivo, por exemplo fatorial. Clique no botão ... que aparece uma caixa onde você colocará o nome do arquivo, por exemplo fatorial. 66/66 ROTEIRO PROFESSOR: SÉRVULO JUNIOR 1.7 Code::Blocks Digite seu programa (por exemplo vamos utilizar nosso exemplo fatorial), e para compilar o seu programa você deve clicar em Build -> Compile current file ou pressione Ctrl + Shift + F9. 67/66 ROTEIRO PROFESSOR: SÉRVULO JUNIOR Bibliografia ARAÚJO, Everton C. Algoritmos: fundamento e prática. 2.ed. Florianópolis: VisualBooks, 2005. MANZANO, José Augusto N. G.; OLIVEIRA, Jayr Figueiredo. Algoritmos: lógica para desenvolvimento de programação de computadores. 17.ed. São Paulo: Érica, 2005. SALIBA, Walter Luís Caram. Técnicas de programação: uma abordagem estruturada. São Paulo: Pearson Education do Brasil, 1992. GUIMARÃES, Ângelo de Moura; LAGES, Newton Alberto de Castilho. Algoritmos e Estrutura de Dados. 28ª Tiragem. Editora LTC São Paulo. 68/66
Compartilhar