Baixe o app para aproveitar ainda mais
Prévia do material em texto
Programação em C PRC Parte 01 - Pseudocódigo Prof. Victor Thomaz www.sites.google.com/site/professorvictorthomaz/materialprc O Computador • Máquina que manipula dados de acordo com um conjunto de instruções • Os primeiros foram desenvolvidos em 1940- 1945. Ocupavam grandes áreas devidos ao seu tamanho físico. O Computador • Os computadores modernos são baseados em Circuitos Integrados (CI) tornando-os rápidos e de tamanho reduzido. • Um CI é formado por inúmeros transístores combinados • Lei de Moore: “O número de transístores em um CI dobraria a cada dois anos” O Computador • O computador digital pode ser dividido em 2 partes: Hardware e Software • Hardware -> Parte eletrônica e mecânica – Unidades de armazenamento – Unidades de entrada – Unidades de saída – Unidades de processamento Partes do Computador • Um programa é uma entrada do HDD(1) executada na memória RAM(2). Os dados vindos do teclado(3) também são armazenados na memória RAM(4). O CPU opera sobre o programa e dados na RAM(5) e retorna o resultado para o HDD(6) e também para o Monitor(7). • Isto é tudo controlado pelo CPU exigindo “apenas” instruções de um programador. Partes do Computador • Software – Consiste em programas carregados das unidades de processamento. – Os programas são executados sobre o hardware – Exemplos: • Sistemas Operacionais • Programas de aplicações • Compiladores • Etc. Compiladores • Compiladores traduzem declarações escritas em um software através de linguagens de programação em alto nível em uma linguagem de baixo nível (Chamada código de máquina). • Os compiladores estão associados a uma linguagem. Existem compiladores para linguagens: Fortran, C, C++, Java, Pascal, Basic, Cobol.... Introdução a programação • Programação de computadores é o processo de: – Escrever – Testar / Debugar (Encontrar o erro e corrigir) – Dar manutenção no código fonte de programas. • O código fonte está escrito em uma linguagem de programação. Código Fonte #include <stdio.h> int main(){ printf(“Código Fonte em C”); return 0; } Algoritmo • É um conjunto de regras para solucionar um problema em um número finito de passos • Um algoritmo frequentemente possui repetições, decisões, expressões Algoritmo • Um algoritmo: – Possui um ponto de entrada (passo inicial) e um ponto de saída (passo final) – Os passos são bem definidos, seu resultado é previsível. Repetidas execuções do mesmo passo produzirão sempre o mesmo resultado – Existe uma ordem de execução, uma sequência adequada. É fundamental para o resultado final correto. Um passo é executado e logo depois o seguinte Algoritmo • Um algoritmo: – Executa um número de passos finito – Ao final, produz o resultado esperado , quando executado com um conjunto de dados válidos Algoritmo • Qualquer algoritmo de computador pode ser construído com três tipos de estruturas: – Sequência: Passos executados um após o outro, salvo outra indicação – Decisão: Escolhe entre a execução de uma ou outra instrução ou conjunto de instruções – Repetição: Forma de executar novamente uma instrução ou conjunto de instruções • Estas estruturas estão relacionadas com o controle de execução Algoritmo • A representação do algoritmo também deve permitir: – Inserir dados e receber resultados (Ler e escrever valores) – Realizar as 4 operações aritméticas básicas – Fornecer forma de armazenar dados em variáveis através da atribuição de valores • Estes são os conceitos básicos (outras características estão incluídas nas linguagens de programação, porém isto é tudo o que você precisa saber no momento) Fluxograma • Representação gráfica de um algoritmo composto por três passos: Fluxograma • Símbolos mais utilizados: Fluxograma • Decisão condicional: Fluxograma • Repetição: Pseudocódigo • Forma de representar um algoritmo de modo informal (em comparação as linguagens de programação) • No entanto, dado um algoritmo escrito em pseudocódigo, dois programadores distintos devem ser capazes de escrever dois programas funcionalmente equivalentes Pseudocódigo • Decisão condicional: se (Condição for Verdadeira) então Instrução/Passo/Comando 1 Instrução/Passo/Comando 2 Instrução/Passo/Comando 3 ... fim se Pseudocódigo • Mais de uma decisão condicional em sequência: se (Condição X for Verdadeira) então Instrução/Passo/Comando 1 Instrução/Passo/Comando 2 Instrução/Passo/Comando 3 ... fim se se (Condição Y for Verdadeira) então Instrução/Passo/Comando A Instrução/Passo/Comando B Instrução/Passo/Comando C ... fim se Pseudocódigo • Decisão condicional com SE e SENÃO: se (Condição Y for Verdadeira) então Instrução/Passo/Comando A Instrução/Passo/Comando B Instrução/Passo/Comando C ... senão Instrução/Passo/Comando 1 Instrução/Passo/Comando 2 ... fim se Pseudocódigo • Decisão condicional aninhada: se (Condição Y for Verdadeira) então Instrução/Passo/Comando A se (Condição Z for Verdadeira) então Instrução/Passo/Comando B Instrução/Passo/Comando C se (Condição W for Verdadeira) então Instrução/Passo/Comando H fim se fim se ... senão Instrução/Passo/Comando 1 Instrução/Passo/Comando 2 ... fim se Pseudocódigo algoritmo declare numérico DISTKM, INDICACAOTANQUE escreva “Digite a distância em KM” leia DISTKM se DISTKM > 200 então escreva “Encha o tanque” senão escreva “Digite a indicação do tanque” leia INDICACAOTANQUE se INDICACAOTANQUE < ½ então escreva “Abasteça até ½ tanque” fim se fim se fim algoritmo Pseudocódigo • Repetição: repita (Enquanto Condição for Verdadeira) Instrução/Passo/Comando 1 Instrução/Passo/Comando 2 Instrução/Passo/Comando 3 ... fim repita Pseudocódigo algoritmo declare inteiro NUM escreva “Digite um número:” leia NUM repita NUM<= 10 escreva “O número digitado foi:”, NUM escreva “Digite outro número:” leia NUM fim repita escreva “Você digitou um número maior que 10” fim algoritmo Pseudocódigo algoritmo declare inteiro CONT CONT � 0 repita CONT<= 30 escreva “Valor do contador:”, CONT CONT � CONT + 1 fim repita fim algoritmo Exercício 1 • Faça o fluxograma que calcule a área de um circulo a partir da medida do raio informado pelo usuário. Área = pi (3,14) X raio X raio • Escreva o pseudocódigo do exercício acima Exercício 2 • Faça o fluxograma que responda se um determinado número digitado pelo usuário é ZERO, POSITIVO ou NEGATIVO • Escreva o pseudocódigo do exercício acima Palavras Reservadas • algoritmo fim algoritmo • declare • se senão então fim se • repita fim repita • leia escreva • ... Fazem parte da gramática da linguagem. Existe um conjunto de princípios que regem o funcionamento e orientam como as palavras podem ser combinadas Tipos de Dados • Computador manipula informações • Em geral um programa precisa manipular vários tipos de dados • Internamente o computador só trabalha com números Tipos de Dados • Inicialmente vamos trabalhar com 4 tipos de dados: Tipos de Dados • inteiro: variáveis numéricas do tipo inteiro, ou seja, sem casas decimais • real: variáveis numéricas do tipo real, ou seja, com casas decimais • caractere: variáveis do tipo string, ou seja, cadeia de caracteres • lógico: aplicado a variáveis do tipo booleano. Assumem apenas dois valores: VERDADEIRO ou FALSO Armazenando Dados • As informações manipuladas pelo computador precisam estar armazenadas de alguma forma para: – Consulta – Utilização em operações posteriores • Calcular a médiadas notas dos alunos: É preciso armazenar os dados para gerar o resultado • Solução: Utilizar variáveis Variáveis • São utilizadas para armazenar algum valor • Cada variável armazena um tipo de dado • Representam uma posição na memória (Disco rígido, memória RAM, etc) • Os dados somente podem ser manipulados em tempo de execução Variáveis - Declaração • Utilize a seguinte sintaxe: – declare <tipo de dado> <nome da variável> • Exemplo: – declare real nota – declare real nota1, nota2, nota3 Variáveis - Declaração • Variáveis: matricula, nome, idade, casado –declare inteiro matricula, idade –declare caractere nome –declare lógico casado Variáveis • Sempre é necessário declarar a variável antes de utilizá-la • A ação de armazenar um dado na variável é chamada de atribuição – nome � “Fulano da Silva” – nota � 6.7 – casado � FALSO Variáveis • Após a declaração da variável e antes de utilizá-la em uma operação é aconselhável inicializá-la. Ou seja, atribuir um valor inicial que não interfira na operação que será executada. Esta prática evita que o lixo de memória, que pode estar dentro da variável, produza resultados “estranhos”. • Exemplo: declare inteiro contador contador � 0 contador � contador + 1 Saída de Dados • Para imprimir alguma informação na tela para o usuário utilizaremos: escreva “Olá usuário” • Outro exemplo: algoritmo escreva “Fulano da Silva” escreva “Aluno IST FAETERJ” fim algoritmo Saída de Dados algoritmo declare inteiro idade idade � 21 escreva idade fim algoritmo • O que aparecerá na tela para o usuário? Entrada de Dados • Para receber algum dado digitado pelo usuário utilizaremos: leia idade • Considerando no exemplo acima que existe uma variável denominada idade, o valor digitado pelo usuário será atribuído a variável idade. Entrada de Dados algoritmo declare caractere nome, rua escreve “Informe o seu nome” leia nome escreve “Informe o nome da rua” leia rua escreva “O aluno ”, nome, “reside na rua ”, rua fim algoritmo Exercícios • Crie um algoritmo em pseudocódigo que solicite ao usuário nome, sobrenome, matrícula, curso e ao final apresente estas informações na tela. • Crie um algoritmo em pseudocódigo com duas variáveis do tipo real. Armazene duas notas referentes a provas feitas por um aluno e mostre as notas na tela. Obs.: use atribuição, não é necessário ler o valor digitado pelo usuário. Operadores Aritméticos • + Operador Soma • - Operador Subtração • * Operador Multiplicação • / Operador Divisão Operadores Aritméticos - Soma algoritimo declare inteiro resultado resultado � 5 + 6 escreva “Resultado é ”, resultado fim algoritmo Operadores Aritméticos - Subtração algoritimo declare inteiro numA, numB, resultado numA � 20 numB � 8 resultado � numA - numB escreva “Resultado é ”, resultado fim algoritmo Operadores Aritméticos - Multiplicação algoritimo declare inteiro num01, num02, resultado num01 � 5 num02 � 2 resultado � num01 * num02 escreva “Resultado é ”, resultado fim algoritmo Operadores Aritméticos - Divisão algoritimo declare inteiro resultado resultado � 30/2 escreva “Resultado é ”, resultado fim algoritmo Vários Operadores algoritimo declare inteiro resultado resultado � 5+3-4/2*2 escreva “Resultado é ”, resultado fim algoritmo Vários Operadores algoritimo declare inteiro resultado resultado � 5+(3-4)/2*2 escreva “Resultado é ”, resultado fim algoritmo Operadores Aritméticos - Precedência • Informa qual a operação que o compilador fará primeiro. • Se os operadores forem de um mesmo nível de precedência, serão analisados da esquerda para direita. • Prioridade Alta: *, / e % (Ver mais adiante) • Prioridade Baixa: + e – • Quando houver parênteses, o compilador seguirá a ordem definida pelos parênteses Exercícios • Crie um algoritmo em pseudocódigo que receba duas notas de um aluno e informe a média na tela para o usuário. • Crie um algoritmo em pseudocódigo que some ou subtraia dois números inteiros de acordo com a opção digitada pelo usuário. Se o usuário digitar “1”, execute a operação de soma, caso digite “2”, execute a operação de subtração Constantes • Uma constante é semelhante a uma variável, porém, uma vez atribuído um valor a mesma, este valor não poderá ser alterado posteriormente. Isto é, uma vez atribuído um valor ele será constante sempre que for utilizado no código. Constante algoritimo declare const real PI � 3.14159 escreva “O valor da constante PI é ”, PI fim algoritmo Regras e Convenções • Variáveis – Regras: Nome deve iniciar com uma letra. Após, pode ser qualquer combinação de letras e números – Convenções: Letra inicial do nome deve ser minúscula. Se houver mais de uma palavra no nome, cada letra inicial deve ser maiúscula, para as palavras depois da primeira. – Exemplo: nomeAluno; resultadoFinal; SomaDasNotas Operador Aritmético - Resto • Operador %: Retorna o resto da divisão entre dois números inteiros • Exemplo: resultado � 9%5 – Valor armazenado na variável resultado será 4 Operador Aritmético – Resto algoritimo declare inteiro num1, num2, resultado num1 � 11 num2 �5 resultado � num1 % num2 escreva “O valor do resto da divisão é ”, resultado fim algoritmo Comentários • Textos que servem para explicar e organizar o código • Não são interpretados. O compilador não analisa o conteúdo do comentário • Sintaxe: // • Exemplo: //Este é um comentário de uma linha • Sintaxe comentário de uma ou várias linhas: • /* Comentário que eu posso usar mais de uma linha sem problemas*/ Comentários Algoritmo /*Este algoritmo imprime valores de 1 até 30 utilizando uma repetição*/ declare numérico CONT CONT � 0 //A repetição abaixo imprime os valores de 1 até 30 repita CONT<= 30 escreva “Valor do contador:”, CONT CONT � CONT + 1//Adiciona uma unidade fim repita fim algoritmo Exercícios • Escreva em pseudocódigo um algoritmo que peça para o usuário digitar dois números inteiros. O primeiro número deverá ser elevado ao quadrado (num1²) e o segundo ao cubo (num2³). Use os resultados como valores para o operador resto (%). Insira comentários explicativos. Operadores Relacionais • Também são chamados de operadores de comparação (condicionais) • Dado duas variáveis por exemplo, então: – = Compara se possuem o mesmo valor – <> Compara se possuem valores diferentes – < Compara se o valor da esquerda é menor que o da direita – > Compara se o valor da esquerda é maior que o da direita – <= Compara se o valor da esquerda é menor ou igual ao da direita – >= Compara se o valor da esquerda é maior ou igual ao da direita Operadores Relacionais • Estes operadores são utilizado nas estruturas de decisão e repetição • O resultado da operação relacional é Lógico (Verdadeiro ou Falso) • Exemplo: repita num <> 0 escreva “Você não digitou Zero” fim repita Operadores Lógicos • Conectam mais de uma operação relacional • e – Operação anterior e posterior devem ser verdadeiras • ou – Operação anterior ou posterior deve ser verdadeiras • não – Inverte o valor. O que é verdadeiro se torna falso e vice-versa Operadores Lógicos • Estes operadores também são utilizado nas estruturas de decisão e repetição • Operadores lógicos trabalham com valores do tipo Lógico (Verdadeiro ou Falso) • Exemplo: se (idade >= 18) e (idade < 32) então escreva “Você pode ingressar no corpo de engenheirosda Marinha” fim se Exercícios • Desenvolva um algoritmo em pseudocódigo que peça para usuário digitar duas notas de um aluno. Calcule a média aritmética das notas e se o resultado for maior ou igual a seis, então imprima na tela APROVADO senão imprima REPROVADO. Exercício • Para participar de um curso de programação em linguagem Python os alunos já devem ter cumprido os pré-requisitos a seguir: Ter média 7.0 na disciplina PRC ou média 8.0 na disciplina LFT, além de estar aprovado na disciplina PRJ. Escreva um pseudocódigo em que somente alunos com os pré-requisitos sejam cadastrados no curso. Peça os dados para o usuário. Exercício • Escreva um pseudocódigo que cadastre somente aqueles que devem prestar o serviço militar obrigatório. Ou seja, homens que completem 18 anos no ano corrente. Considere que o cidadão pode escolher ingressar na Marinha, Exército ou Aeronáutica. Caso a escolha seja Marinha ou Exército o cidadão deve se dirigir ao batalhão 1, no caso de Aeronáutica, Batalhão 2. OBS.: Considere que o usuário pode desejar cadastrar mulheres também. Variáveis Compostas Homogêneas • São posições de memória identificadas por um mesmo nome, mas cada posição pode ser acessada individualmente através de um índice • Em resumo são listas de informações. Uma variável capaz de armazenar vários valores de um mesmo tipo • Podem ser unidimensionais, bidimensionais ou multidimensionais • Unidimensionais chamadas de vetores • Bidimensionais chamadas de matrizes Exemplo – Declaração Vetor • Utilize a seguinte sintaxe: – declare <tipo de dado> <nome da variável> [<Quantidade de elementos>] • Exemplo: – declare real notas[10] – declare caractere nomes[5] Exemplo – Como acessar • Acessar uma posição: – escreva “valor da posição 5 no vetor notas: ”, notas[5] • Atribuir valores: – nomes[1] � “João” – nomes[2] � “Fulano de Tal” – nomes[3] � “Maria Silva” – nomes[4] � “Joana Oliveira Silva e Silva” – nomes[5] � “Beltrano” Exemplo – Repetição CONT � 1 repita CONT<= 5 escreva “Digite um nome:” leia nomes[CONT] escreva “O nome digitado foi:”, nomes[CONT] CONT � CONT + 1 fim repita Exercício • Crie um pseudocódigo que receba as notas de 30 alunos e calcule a média da classe. Após, liste na tela somente as notas dos alunos com média maior que a média da classe. • Dica: Peça as notas dos alunos; Faça a soma; Calcule a média; Apresente na tela as notas; Exercício • Crie um pseudocódigo que receba 10 valores inteiros em um vetor e determine qual é o maior valor armazenado no vetor. Matriz • Podemos pensar como sendo uma tabela que armazena dados em linhas e colunas • Podemos acessar os elementos(células) através do índice da linha combinado com o índice da coluna Exemplo – Declaração Matriz • Utilize a seguinte sintaxe: – declare <tipo de dado> <nome da variável> [<Quant. elementos>] [<Quant. elementos>] • Exemplo: – declare real notasAlunos[5][3] Exemplo – Como acessar • Acessar uma posição: – escreva “valor da posição linha 1, coluna 3 na matriz de notas dos alunos: ”, notasAlunos[1][3] • Atribuir valores: – notasAlunos[1][1]� 6.7 – notasAlunos[1][2] � 7.9 – notasAlunos[1][3] � 6.2 – notasAlunos[2][1] � 3.5 – ... – notasAlunos[5][2] � 8.6 – notasAlunos[5][3]� 7.8 Exemplo – Repetição i � 1 repita i <= 5 j � 1 repita j <= 3 escreva “Digite a nota ”, j, “do aluno ”, i leia notasAlunos[i][j] escreva “A nota digitada foi:”, notasAlunos[i][j] j � j + 1 fim repita i � i + 1 fim repita Exercício • Crie um pseudocódigo que preencha uma matriz de 10 por 100 elementos do tipo inteiro (10 linhas x 100 colunas) com valores de 1 até 1000. Após o programa deve apresentar os valores contidos na matriz na tela. Exercício • Em uma classe com dez alunos, cada aluno fez três provas. Crie um pseudocódigo que calcule e apresente na tela a média de cada aluno. Dica: Utilize uma matriz (notas das provas dos alunos) e um vetor (média das notas dos alunos). Resumo – Estrutura de dados homogênias • Permitem manipular um conjunto de dados através de uma só variável • Vetores são unidimensionais, isto é, possuem um único índice • Matrizes são multidimensionais, podem ter duas ou mais dimensões (dois ou mais índices) Modularização - Funções • Uma tarefa normalmente pode ser dividida em várias tarefas menores. Exemplo: trocar uma lâmpada (pegar a escada, remover lâmpada velha). • Uma tarefa grande e complexa pode ser decomposta em problemas menores • Uma grande quantidade de problemas/tarefas menores pode afetar a legibilidade (clareza) dificultando a manutenção de um código em C, por exemplo. • Vantagem: Reutilização, Clareza do Código e Independência Modularização - Funções • Para resolver este problema relacionado com complexidade e clareza do código, utilizamos a técnica de modularização. • Modularização: “Quebrar um problema em pequenas partes” • Podemos chamar um módulo de função • Exemplo: Função que calcule a média dado duas notas • Ao utilizar uma função preciso saber o que ela faz e não como ela faz Declaração de Funções • Cabeçalho ou protótipo: função <tipo retorno> <nome função> (lista de parâmetros) • Corpo da função: função <tipo retorno> <nome função> (lista de parâmetros) fim função Parâmetros • Uma função pode precisar de dados para realizar alguma ação. • Uma lista de parâmetros de uma função é um conjunto de variáveis. Através destas variáveis os dados podem ser armazenados e serão acessíveis dentro do corpo da função. • No corpo da função é onde descrevemos (pseudocódigo) como a função irá trabalhar com os dados. Funções - Observação • As funções podem não ter nenhum parâmetro • As funções podem não ter um tipo de retorno, ou seja, ela executa alguma ação que não precisa retornar um resultado para quem fez a chamada. Função que não tem retorno podem ser chamadas de procedimentos. • Utilizaremos um tipo de retorno especial chamado vazio (palavra reservada). • A palavra reservada retorno no corpo da função indica o resultado da operação/cálculo que deverá ser retornado por “quem” chamou a função Exemplo – Com retorno e com retorno vazio função inteiro somaInteiro(inteiro numA, inteiro numB) declare inteiro resultado resultado � numA+numB retorno resultado fim função função vazio somaInteiro(inteiro numA, inteiro numB) declare inteiro resultado resultado � numA+numB escreve "A soma de ", numA, "com ", numB "é " resultado fim função Exemplo Completo algoritmo declare inteiro n1,n2,r função inteiro somaInteiro(inteiro numA, inteiro numB) escreva "Digite um número inteiro: " leia n1 escreva "Digite outro número inteiro: " leia n2 r = somaInteiro(n1,n2) escreva "As soma dos números é: " r fim algoritmo função inteiro somaInteiro(inteiro numA, inteiro numB) declare inteiro resultado resultado � numA+numB retorno resultado //Retorna o resultado fim função Exemplo – Retorno vazio e sem parâmetros //Corpo da função função vazio bomDia() escreve “Bom dia!" fim função algoritmo função vazio bomDia() // Cabeçalho da função bomDia() //Chamada da função fim algoritmo Exercícios • Crie uma função que retorne o quadrado de um número inteiro digitado pelo usuário. Escreva o algoritmo que solicite o número e faça a chamada a função criada. • Crie uma função que retorne um valor com desconto de 10%, dado um valor do tipo real como entrada ( (valor/100)*10 ). Escreva o algoritmo que solicite o número e faça a chamada a função criada.
Compartilhar