Prévia do material em texto
<p>Metodologias de Programação</p><p>Algoritmos</p><p>1</p><p>Linguagem natural versus linguagem formal</p><p>É a linguagem falada ou escrita, como o português</p><p>Linguagem definida artificialmente, a partir de um conjunto pré-determinado de símbolos ou alfabeto com um objetivo definido.</p><p>Linguagem formal</p><p>Linguagem natural</p><p>2</p><p>Tudo é um algoritmo</p><p>BOLO DE CHOCOLATE</p><p>INGREDIENTES</p><p>1 chávena chá de óleo</p><p>2 chávena de chá de açúcar</p><p>4 ovos</p><p>2 chávena de chá de farinha de trigo com fermento</p><p>125 g de chocolate em pó</p><p>Cobertura</p><p>1 lata de leite condensado</p><p>3 colheres de chocolate em pó</p><p>1 lata de creme de leite</p><p>1 colher de manteiga</p><p>PREPARAÇÃO</p><p>Misture os ingredientes e coloque-os numa forma untada com manteiga. Leve ao forno e, por último, faça a cobertura.</p><p>DADOS</p><p>DE</p><p>ENTRADA</p><p>Processamento</p><p>Resultado</p><p>Algoritmo</p><p>Conjunto ordenado de ações que conduzem à solução de um problema.</p><p>Conceção</p><p>Implementação</p><p>Formulação do algoritmo.</p><p>Utilização do algoritmo numa linguagem de programação.</p><p>Linguagem e formas de representação das instruções indicadas nos algoritmos</p><p>Linguagem e formas de representação das instruções indicadas nos algoritmos</p><p>Fluxogramas</p><p>Exemplo</p><p>de um Fluxograma</p><p>Operações básicas de um algoritmo</p><p>Operações</p><p>Leitura ou input</p><p>Atribuição</p><p>Escrita ou output</p><p>Instruções</p><p>Ler (Num1);</p><p>soma num1+num2;</p><p>Writeln (soma);</p><p>Programa</p><p>Read (num1);</p><p>Soma := num1 + num2;</p><p>Writeln ( ‘A soma é ‘ , soma);</p><p>Instruções, variaveis e operadores</p><p>Variaveis Area, Comp, Larg : Inteiros ;</p><p>Início</p><p>Ler (comp, Larg); Leitura</p><p>Area Comp * Larg Atribuição</p><p>Writeln (Area); Escrita</p><p>Fim</p><p>Início</p><p>Ler(comp,larg)</p><p>Escrever(Area)</p><p>Fim</p><p>Area<comp*larg</p><p>Exercício1</p><p>Exercício2:</p><p>Apresente sob a forma de fluxograma.</p><p>Algoritmo troca_valores;</p><p>Variáveis a, b, c: lógico;</p><p>Inicio</p><p>a true;</p><p>b false;</p><p>c a;</p><p>a b;</p><p>b c;</p><p>Escrever (a, b);</p><p>Fim</p><p>inicio</p><p>Escreve (a,b)</p><p>a <-true</p><p>b <- false</p><p>c <-a</p><p>a <- b</p><p>b <- c</p><p>fim</p><p>Linguagem Pascal</p><p>Estrutura representativa da estrutura de escrita de um programa em Pascal</p><p>Variáveis</p><p>É uma entidade que pode assumir vários/diferentes valores ao longo da execução de um programa.</p><p>Declaração e atribuição</p><p>Lucro, custo: inteiro;</p><p>Nome : string;</p><p>Critérios para construir uma variável</p><p>O primeiro carater é sempre uma letra</p><p>Não pode ter espaços em branco</p><p>As palavras reservadas da linguagem de programação não podem ser atribuídas</p><p>Carateres não permitidos: ?, *, !, ç, é, ã, etc.</p><p>Tipos de variáveis</p><p>caracteres</p><p>Caracteres, elementos da tabela ASCII</p><p>Numéricos</p><p>Inteiros (10; 2000) Reais (1.5; 0.125)</p><p>Integer ou Real</p><p>Alfanuméricos</p><p>Ex: Hoje é dia 30</p><p>Lógicos</p><p>Verdadeiro ou Falso</p><p>Char</p><p>Boolean</p><p>Texto</p><p>Cadeias de caracteres ou texto</p><p>String</p><p>Variáveis</p><p>Dados Tipo de variável</p><p>Nome</p><p>Número</p><p>Morada</p><p>Telefone</p><p>Peso</p><p>Altura</p><p>Código postal</p><p>Idade</p><p>Clube futebol</p><p>Género char</p><p>-19</p><p>“25 de abril”</p><p>“-500”</p><p>3,05x105</p><p>True</p><p>EXERCÍCIO 3</p><p>Elabore um algoritmo que some dois números e multiplique o resultado pelo primeiro número.</p><p>Sintaxe e declaração de variáveis</p><p>Sintaxe Exemplo</p><p>Var <id1,id2, …>:<Tipo de dados>; Var peso, altura: real;</p><p>soma: integer;</p><p>nome: string;</p><p>Sintaxe e declaração de Constantes</p><p>Sintaxe Exemplo</p><p>Const <id>:<valor>; Const PI: 3.1415926;</p><p>a=3;</p><p>Constantes – são identificadores para designar valores que não variam ao longo da execução do programa.</p><p>Sintaxe e exemplos de atribuição de valores a variáveis</p><p>Sintaxe Exemplo</p><p><id>:=<valor>; quantidade:=10;</p><p>Soma:=n1+n2+n3;</p><p>Instrução de atribuição– associar um determinado valor a uma variável.</p><p>Em pascal utiliza-se o sinal := que é o operador de atribuição.</p><p>Operadores Aritméticos relacionais e lógicos</p><p>Operador Significado</p><p>NOT Negação</p><p>AND E (conjunção)</p><p>OR OU (disjunção)</p><p>XOR OU exclusivo</p><p>Resumo</p><p>Exercício</p><p>Elabore um algoritmo que permita calcular o Índice de Massa Corporal (IMC) sabendo que:</p><p>IMC = peso/ (altura*altura)</p><p>ABS – Devolve o valor absoluto de um número, um número sem sinal</p><p>SQR – quadrado de um número</p><p>SQRT – raiz quadrada de um número</p><p>Pi – número pi=3,14</p><p>ROUND(x) – Arredonda o valor x para o inteiro mais próximo</p><p>TRUNC(x) – (elimina a parte decimal)</p><p>Funções pré definidas</p><p>Estruturas de controlo</p><p>IF</p><p>CASE</p><p>REPEAT …UNTIL</p><p>WHILE…DO</p><p>FOR…DO</p><p>For – é conhecido o nº de vezes que o bloco de instrução sera repetido. Utiliza um contador automático</p><p>While - enquanto</p><p>25</p><p>Estruturas de decisão ou seleção</p><p>Com base numa condição</p><p>Estrutura de repetição de ciclos</p><p>Com base num seletor</p><p>Com base numa condição</p><p>Com base num contador</p><p>Estruturas de decisão – IF Sintaxe</p><p>IF<condição> Then</p><p><bloco de instruções></p><p>[else</p><p><bloco de instruções>]</p><p>end</p><p>Program exames;</p><p>Var Nota1:real;</p><p>Begin</p><p>Writeln (‘Qual a nota do 1º exame?’);</p><p>readln (Nota1);</p><p>If Nota1>=10 Then Writeln (‘Aprovado’)</p><p>Else</p><p>Writeln (‘Reprovado’);</p><p>End.</p><p>Fluxograma</p><p>Ler nota</p><p>If nota>=10</p><p>Escrever “Aprovado”</p><p>Escrever “Reprovado”</p><p>F</p><p>V</p><p>Estrutura de seleção composta (IF)</p><p>Dados dois valores, este algoritmo determina e imprime o maior.</p><p>ALGORITMO maior;</p><p>VARIÁVEIS valor1, valor2: inteiro;</p><p>INÍCIO</p><p>LER (valor1, valor2);</p><p>SE valor1 > valor2 ENTÃO</p><p>ESCREVER (‘O maior valor é ‘, valor1);</p><p>SENÃO</p><p>ESCREVER (‘O maior valor é ‘, valor2);</p><p>FIM;</p><p>FIM.</p><p>Caracterizada pela avaliação de uma condição e se a condição é verdadeira, efetua uma sequência de ações, se a condição é falsa efetua outra série de ações.</p><p>Estruturas de seleção Case…Of</p><p>Case <variavel> of</p><p><valor1> : <instrução1>;</p><p><valor2> : <instrução2>;</p><p>…..</p><p><valorN> : <instruçãoN>;</p><p>[Else :<instruçãoZ>]</p><p>FimSelecionar</p><p>end</p><p>Var Nota : Integer;</p><p>Begin</p><p>Writeln(‘Qual a nota númerica’);</p><p>readln (Nota);</p><p>Case Nota of</p><p>0,1,2,3,4,5,6,7,8,9 : writeln (‘Mediocre’);</p><p>10..13 : Writeln (‘Suficiente’);</p><p>14..20 : Writeln (‘Bom’);</p><p>Else Writeln (‘Nota inválida’);</p><p>end;</p><p>End.</p><p>Integer ou char</p><p>LER(nota)</p><p>início</p><p>0,1,2,3,4</p><p>CASO Nota =</p><p>Nenhuma das hipóteses</p><p>5,6,7,8</p><p>Escrever “Medíocre”</p><p>Escrever “Mau”</p><p>Escrever “Nota Inválida”</p><p>fim</p><p>Estrutura de seleção múltipla (CASO)</p><p>Dado um dia da semana de 1 a 7, este algoritmo imprime o nome do dia correspondente.</p><p>ALGORITMO diasemana;</p><p>VARIÁVEL dia: inteiro;</p><p>INÍCIO</p><p>ESCREVER (‘Insira um nº inteiro de 1 a 7’);</p><p>LER(dia);</p><p>CASO dia</p><p>INÍCIO</p><p>1: ESCREVER (‘Segunda-feira’);</p><p>2: ESCREVER (‘Terça-feira’);</p><p>3: ESCREVER (‘Quarta-feira’);</p><p>4: ESCREVER (‘Quinta-feira’);</p><p>5: ESCREVER (‘Sexta-feira’);</p><p>6: ESCREVER (‘Sábado’);</p><p>7: ESCREVER (‘Domingo’);</p><p>SENÃO ESCREVER (´Inseriu um número errado´);</p><p>FIM;</p><p>FIM.</p><p>Caracterizada pela avaliação de uma condição que pode ter como resultados N valores distintos, seguindo-se a execução de uma das N sequências de ações correspondentes.</p><p>Elabora um algoritmo (Pseudocódigo e Fluxograma) que determina o dia da semana (escrito por extenso) de acordo com o valor inserido (entre 1 e 7).</p><p>Estrutura de seleção CASE</p><p>Elabore um algoritmo que permita atribuir uma classificação, em conformidade com nível numérico fornecido.</p><p>[0-4] – Mau</p><p>[5-9] - Medíocre</p><p>[10-13] - suficiente</p><p>[14-17] - Bom</p><p>[18-20] – Muito Bom</p><p>Estrutura de seleção CASE</p><p>Elabore um algoritmo que peça ao utilizador a introdução de 2 números e a operação que pretende fazer(+,-,*,/) e mostre no ecrã o resultado dessa operação.</p><p>Processa uma sequência de instruções, tantas vezes quantas as estabelecidas pela condição a que está sujeita.</p><p>Estruturas de repetição ou ciclos</p><p>35</p><p>ENQUANTO… FAZER…</p><p>REPETIR… ATÉ….</p><p>Repeat… Until…</p><p>While… Do…</p><p>PARA… ATÉ… FAZER</p><p>For… To… Do</p><p>Estruturas de repetição ou ciclos</p><p>Ciclos controlados por uma condição</p><p>Ciclos controlados por um contador</p><p>Com base numa condição a avaliar no fim</p><p>Repeat</p><p><bloco de instruções></p><p>Until <condição></p><p>For Cont:= V-inicial To V_final</p><p>Do</p><p><bloco de instruções></p><p>Com base numa condição a avaliar no início</p><p>While <condição></p><p>Do</p><p><bloco de instruções></p><p>Estruturas de repetição ou ciclos</p><p>Iteração – significa repetição, corresponde a cada uma das vezes que o ciclo são repetidos.</p><p>Contador – é uma variável que efetua a contagem do numero de vezes(iteração) que um ciclo é executado.</p><p>Acumulador – é uma variável que permite efetuar o somatório de uma serie de valores consecutiva e cumulativamente.</p><p>Estruturas de repetição</p><p>For Cont:= V-inicial To</p><p>V_final</p><p>Do</p><p><bloco de instruções></p><p>Var i, Soma : integer;</p><p>Begin</p><p>Soma:=0;</p><p>For i:=5 to 10 do</p><p>soma:=soma +i;</p><p>writeln (soma);</p><p>End.</p><p>Estruturas de repetição</p><p>Repeat</p><p><bloco de instruções></p><p>Until <condição></p><p>Var Valor, Soma : integer;</p><p>Begin</p><p>Writeln (' introduza um número e Termine com 0.');</p><p>soma:=0;</p><p>Repeat</p><p>Writeln ('Introduza um valor');</p><p>read(valor);</p><p>soma := soma + valor;</p><p>writeln ('Soma: ', soma);</p><p>Until valor = 0;</p><p>writeln (soma);</p><p>End.</p><p>while</p><p>Elabore um algoritmo que peça ao utilizador que introduza vários números, enquanto a soma desses números for menor que 100.</p><p>Estruturas de repetição</p><p>While <condição></p><p>Do</p><p><bloco de instruções></p><p>var valor, soma: integer;</p><p>Begin</p><p>soma:= 0;</p><p>while soma<100 do</p><p>begin</p><p>write ('introduza um valor');</p><p>read(valor);</p><p>soma:= soma + valor;</p><p>end;</p><p>write (' O valor do somatório é ' , soma);</p><p>End.</p><p>Program contanomes ;</p><p>Var conta: integer;</p><p>nome: string;</p><p>Begin</p><p>conta:=0;</p><p>Writeln ('escreva o seu nome');</p><p>read(nome);</p><p>while nome<> 'Fim' Do</p><p>Begin</p><p>Conta :=conta + 1;</p><p>Writeln ('escreva o seu nome');</p><p>read(nome);</p><p>end;</p><p>Writeln ('Foram digitados ' , conta, 'nomes');</p><p>End.</p><p>Program contanomes ;</p><p>Var nome: string;</p><p>Begin</p><p>Repeat</p><p>Writeln ('escreva o seu nome e termine com a palavra FIM');</p><p>read(nome);</p><p>Until nome='FIM';</p><p>End.</p><p>Estrutura Repeat e While.</p><p>Elabore um algoritmo que efetue a soma de vários números introduzidos pelo utilizador até que o número introduzido seja 0(zero).</p><p>Exercício</p><p>Elabore um algoritmo e respetivo fluxograma que realize as seguintes instruções:</p><p>Algoritmo num_2_sup;</p><p>Variaveis num, res1, res2: inteiro;</p><p>Inicio</p><p>Escrever (“Digite um numero inteiro”);</p><p>Ler (num);</p><p>res1 <- num + 1;</p><p>res2 <- res1 + 1;</p><p>Escrever (res1, res2);</p><p>Fim.</p><p>Elabora um algoritmo capaz de calcular a hipotenusa de um triângulo retângulo. Os valores dos catetos devem ser pedidos ao utilizador.</p><p>Exer 1</p><p>Ex2</p><p>Elabore um algoritmo que permita efetuar a leitura de 3 valores inteiros e calcular o:</p><p>-triplo do primeiro valor,</p><p>-o produto do segundo valor com o terceiro e</p><p>- o quadrado do terceiro valor.</p><p>MP</p><p>2019/2020</p><p>48</p><p>Exer 3</p><p>Construa um algoritmo que, tendo como dados de entrada dois pontos quaisquer no plano, P(x1,y1) e P(x2,y2), escreva a distância entre eles. A fórmula para o cálculo é:</p><p>Ex4: Cálculo da área de um circulo</p><p>Program areacirc ;</p><p>var A, R: real;</p><p>Begin</p><p>writeln ('Digite o raio do circulo');</p><p>read (R);</p><p>A:=3.14159*sqr(R);</p><p>Writeln ('A area da circunferencia é de ' , A);</p><p>End.</p><p>Exercício 5</p><p>Utilizando a estrutura de decisão IF, construa um algoritmo que, determine o maior de dois números dados.</p><p>Estrutura Repeat e While.</p><p>Elabore um algoritmo, que peça ao utilizador que introduza um nome e só termine o ciclo quando o utilizador digitar a palavra FIM.</p><p>Ciclo For</p><p>Elabore um algoritmo que calcule a média de idades de uma turma.</p><p>O número de alunos e as idades dos alunos são introduzidos pelo utilizador.</p><p>Ciclo For</p><p>Elabore um algoritmo que calcule a tabuada de um número N.</p><p>image13.jpg</p><p>image3.jpeg</p><p>image14.jpeg</p><p>image15.jpeg</p><p>image16.png</p><p>image17.png</p><p>image18.png</p><p>image19.jpeg</p><p>image20.png</p><p>image21.png</p><p>image22.png</p><p>image23.png</p><p>image24.png</p><p>image25.png</p><p>image26.png</p><p>image27.jpeg</p><p>image28.png</p><p>image29.png</p><p>image30.png</p><p>image31.png</p><p>image32.png</p><p>image33.png</p>