Algoritmos e Estruturas de Dados

Documentos relacionados
Algoritmos e Estrutura de Dados I Conceitos de Algoritmos. Prof. Elyssandro Piffer

Capítulo 1 Conceitos Básicos

Algoritmos - 1. Alexandre Diehl. Departamento de Física - UFPel

Algoritmos - 1. Alexandre Diehl. Departamento de Física - UFPel

Introdução à Ciência da Computação

Fig.1: Ilustração de Estrutura de Controle Fonte:Internet

Noções de algoritmos - Aula 1

LÓGICA DE PROGRAMAÇÃO. Algoritmos Computacionais. Sérgio Carlos Portari Júnior

Estruturas de Controle

08/05/2012. Tipos de dados. Tipos de dados. Elementos Básicos. Tipos de dados. Elementos Básicos Tipos de dados. Dados e seus tipos:

CONCEITOS DE ALGORITMOS

Introdução aos Algoritmos

Programação Estruturada Aula VisualG

Noções de algoritmos - Aula 1

Estruturas de Repetição. João Medeiros FATERN

Introdução aos Algoritmos

- Aula 01, 02, 03 e 04 Apresentação da disciplina.

Universidade Federal de Uberlândia Faculdade de Computação. Conceitos básicos de algoritmos Prof. Renato Pimentel. Computação

Este conceito é bastante simples e será útil e conveniente nos itens seguintes, na definição das estruturas básicas de controle de execução.

Algoritmos. Algoritmos e Linguagem de Programação - Prof Carlos Vetorazzi

Processamento de Dados aplicado à Geociências. AULA 3: Algoritmos computacionais Representação de Algoritmos Sintaxe Tipos de dados Expressões

Introdução à Programação Aula 02. Prof. Max Santana Rolemberg Farias Colegiado de Engenharia de Computação

LINGUAGEM DE PROGRAMAÇÃO

INFORMÁTICA APLICADA AULA 02 ALGORITMOS

Introdução a Computação

#Conceituação. Algoritmos. Eliezio Soares

ALGORITMOS E TÉCNICAS DE PROGRAMAÇÃO

SEBENTA INTRODUÇÃO Á ALGORITMIA

Fundamentos de Programação

Lógica. Necessida de se usar lógica. Solucionar problemas Eficiência e eficácia Boa performance de conhecimento

Aula 4B. Lógica e Algoritmos. Profª. Fabiany

Fluxograma. Conjunto de símbolos utilizados em fluxogramas

A única diferença entre o difícil e o impossível é que o último demora um pouco mais de tempo para ser alcançado..

LÓGICA DE PROGRAMAÇÃO. PROFª. M.Sc. JULIANA H Q BENACCHIO

INFORMÁTICA APLICADA AULA 03 ALGORITMOS

Lógica e Linguagem de Programação Aula 04 - Estruturas de Repetição Repetição com Teste no Final - Repita Até - GABARITO Professor: Danilo Giacobo

ALGORITMOS AULA 1. Profª Amanda Gondim

Capítulo 7 Matriz. Roteiro

Fundamentos de Algoritmos (5175/31)

Algoritmos Estrutura Condicional

CURSO SUPERIOR DE TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS DISCIPLINA : INTRODUÇÃO À LÓGICA DE PROGRAMAÇÃO ASSUNTO: ALGORITMOS

ALGORITMOS AULA 2. Profª Amanda Gondim

LINGUAGEM ALGORÍTMICA

Aula 10: Introdução a Vetores e Matrizes

ESTRUTURAS DE CONTROLE ESTRUTURAS DE REPETIÇÃO

TÉCNICO DE INFORMÁTICA - SISTEMAS

Oficina de Introdução de Programação usando Linguagem Python Prof. Ms. Perini

MATRIZES - PARTE Definição e Manipulação de Matrizes AULA 21

Programação Procedimental

Programação de Computadores Profa Jacqueline 1

Microcontroladores. Programação: fluxogramas, pseudocódigos e lógica. Prof. Daniel

E X E R C Í C I O S 01. Sobre o comando CASO, marque as alternativas como verdadeira (V) ou falsa (F):

Algoritmos e Lógica de Programação. Notas de Aula

Algoritmos e Estruturas de Dados I. Universidade Federal de São João del-rei Pedro Mitsuo Shiroma Sala 119 Bloco 3

Algoritmos I Edézio 1

Oficina de Python Prof. Me. José Carlos Perini

Lógica de Programação e Algoritmos

ALGORITMOS. O que é Algoritmo? Algoritmo é um dos processo para criação

PORTUGUÊS ESTRUTURADO: INTRODUÇÃO INTRODUÇÃO À PROGRAMAÇÃO PROF. ALEXANDRO DOS SANTOS SILVA

Instituto Federal de Educação, Ciência e Tecnologia do RN Câmpus Currais Novos. LINGUAGEM C++ VARIÁVEIS COMPOSTAS Arrays Aula I

Programação Estruturada

VETORES Motivação AULA 19

Programação de Computadores:

Aula 5 Controle do Fluxo de Execução

Introdução a Lógica de Programação

Pseudocódigo e Visualg

Questão 1 Analise o trecho do código abaixo, escrito na linguagem C#:

Lógica de Programação, Algoritmos e Estruturas de Dados

Oficina de Python Prof. Me. José Carlos Perini

Estruturas de Dados. Prof.: Carlos Alberto Página da Disciplina:

CAPÍTULO 5 ESTRUTURAS DE REPETIÇÃO

CCO 016 Fundamentos de Programação

O nome da variável é utilizado para identificação (para carga e posterior uso). Porém, são necessárias algumas regras para nomear essa variável:

Algoritmos e Técnicas de Programação

1.1 o que é um algoritmo... 6

Programação de Computadores III

Introdução à Programação de Computadores Fabricação Mecânica

AULA 07. HABILIDADES TRABALHADAS: Desenvolver algoritmos utilizando laços a partir da leitura de fluxogramas ou algoritmos em portugol.

Sistemas Operacionais e Introdução à Programação. Introdução à Lógica de Programação: estruturas de repetição

Programação em C. Victor Amorim dos Santos

Programação de Computadores III

Introdução à Algoritmos INF 1005 e INF Programação I

Lógica e Linguagem de Programação Aula 04 - Estruturas de Repetição - GABARITO Repetição com Variável de Controle - Para Professor: Danilo Giacobo

É neste ponto que entra o conceito de lógica de programação.

Fluxograma Pseudocódigo Estruturas de decisão. Professor Leandro Augusto Frata Fernandes

Introdução ao Conceito de Algoritmo e Programação Estruturada

INF1005: Programação I. Capítulo 2. Ivan Mathias Filho Algoritmo

Introdução à Ciência da Computação

Linguagem Computacional

Computação I (MAB120) DCC/UFRJ

Programação: Vetores

ESTRUTURA CONDICIONAL E SELEÇÃO

Algoritmos e Programação

Programação de Redes de Computadores

TÉCNICAS DE PROGRAMAÇÃO. Estrutura de dados

Transcrição:

Algoritmos e Estruturas de Dados Introdução Prof. Sinaide Nunes Bezerra <sinaide@hotmail.com> Vídeoaulas e exercícios em linguagem C, acesse www.mathgraph.com.br 1 de novembro de 2015

Sumário 1 Introdução 2 Estrutura Sequencial 3 Estrutura Condicional se... então se... senão... 4 Estruturas de Repetição enquanto... faça para... até... faça repita... até... 5 Estruturas Homogêneas de Dados Vetor Matriz 2/37

Algoritmos computacionais Definição Segundo Cormem (2001) um algoritmo computacional pode ser entendido como... qualquer procedimento computacional bem definido que toma algum valor ou conjunto de valores como entrada e produz algum valor ou conjunto de valores como saúda. Portanto, um algoritmo é uma sequência de passos computacionais que transformam a entrada na saída. 3/37

Algoritmos computacionais Outras definições Algoritmo é uma sequência de passos que visa atingir um objetivo bem definido (FORBELLONE, 1999) Algoritmo é a descrição de uma seqüência de passos que dever ser seguida para a realização de uma tarefa (ASCENCIO, 2007) Algoritmo é uma sequência finita de instruções ou operações cuja execução, em tempo finito, resolve um problema computacional, qualquer que seja sua instância (SALVETTI, 1999) 4/37

Algoritmos computacionais Outras definições Algoritmo são regras formais para a obtenção de um resultado ou da solução de um problema, englobando fórmulas de expressões aritméticas (MANZANO, 1997) Ação é um acontecimento que, a partir de um estado inicial, após um período de tempo finito, produz um estado final previsível e bem-definido. Portanto, um algoritmo é a descrição de um conjunto de comandos que, obedecidos, resultam numa sucessão finita de ações (FARRER, 1999) 5/37

Algoritmos computacionais Continuação Um algoritmo é como uma receita de bolo para o computador, onde estão definidos todos os comandos que ele deve executar p ara se chegar a um resultado. Daí, temos que, o algoritmo é uma sequência de instruções, onde cada instrução representa uma AÇÃO que deve ser entendida e realizada. Em algoritmos computacionais, o computador possui um conjunto limitado de instruções e o algoritmo deve ser expresso nos termos destas instruções. O computador utiliza dois conceitos básicos para construir e interpretar algoritmos, são eles: Estruturas de Dados para manipulação das informações Estruturas de Controle para manipulação das ações 6/37

Tipos de Algoritmos Descrição Narrativa A descrição narrativa consiste em analisar o enunciado do problema e escrever, utilizando um linguagem natural (por exemplo, a ĺıngua portuguesa), os passos a serem seguidos para resolução do problema (semelhante a escrever uma receita). Vantagem: Não é necessário aprender nenhum conceito novo, pois uma ĺıngua natural já é bem conhecida. Desvantagem: A linguagem natural (não padronizada e informal) abre espaço para várias interpretações. Será mais difícil estruturá-la e transcrever este algoritmo para uma linguagem de programação. 7/37

Tipos de Algoritmos Fluxograma Analisar o enunciado do problema e escrever, utilizando símbolos gráficos pré-definidos, os passos a serem seguidos para a resolução do problema. Vantagem: Visão geral do fluxo de processamento. Desvantagem: É necessário aprender a simbologia dos fluxogramas e, além disso o algoritmo resultante não apresenta muitos detalhes, dificultando sua transcrição para uma linguagem de programação. 8/37

Tipos de Algoritmos Fluxograma Os símbolos utilizados para representar o uso em fluxograma podem variar dependendo do autor. A seguir é apresentada a lista de símbolos a ser utilizada nas aulas deste curso. Indica o início ou fim do algoritmo. Leitura de dados. Processamento dos dados. Saída de dados 9/37

Tipos de Algoritmos Pseudocódigo Consiste em analisar o enunciado do problema e escrever, por meio de regras predefinidas, os passos a serem seguidos para a resolução do problema. Vantagem: A passagem (transcrição) do algoritmo para uma linguagem de programação é quase imediata, bastando conhecer as regras e palavras reservadas da linguagem que será utilizada. Desvantagem: É necessário aprender as regras para se escrever um algoritmo corretamente. 10/37

Estruturas de Dados Definição Uma estrutura de dados é um meio para armazenar e organizar dados com o objetivo de facilitar o acesso e as modificações. Nenhuma estrutura de dados única funciona bem para todos os propósitos, e assim é importante conhecer os pontos fortes e as limitações de várias delas (CORMEN, 2001) As estruturas de dados representam as informações do problema a ser resolvido. Tais estruturas estão organizadas em tipos distintos de informações. Dentro do escopo das estruturas de dados, define-se os seguintes termos: Constante, Variável e Identificador. 11/37

Estruturas de Dados Constantes Representam valores constantes, ou seja, que não variam no decorrer do algoritmo. Exemplo 1: Seja x = 2, efetuando as seguintes operações: y = x y = 4 A = 3x + 5x A = 3*(2) + 5 * 2 A = 22 Exemplo 2: Seja PI = 3,14, efetuando as seguintes operações: A = PI.*1 A = 3,14 A = PI * 2 A = 6,28 A = PI * 3 A = 9,42 Nos exemplos 1 e 2, tanto o valor de x quanto PI não variam a medida que as operações são executadas. 12/37

Estruturas de Dados Variáveis Representam informações cujos valores são modificados ao longo do tempo. Exemplo 1: Deseja-se saber o salário de um funcionário considerando que ele recebe R$ 1.000, 00 por mês, supondo que teve um aumento de 20% e deve-se descontar 8% de INSS do novo salário, qual será o salário ĺıquido? Resposta: salario = 1.000 reajuste = salario * 0,2 salario = salario + reajuste imposto = salario * 0,08 salario = salario - imposto 13/37

Estruturas de Dados Variáveis Matematicamente, variável é a representação simbólica dos elementos de um certo conjunto. Computacionalmente, pode-se definir variável como um local reservado na memória do computador usado para armazenar dados. Uma variável possui nome (identificador) e tipo, possui apenas um valor em um determinado instante, mas seu conteúdo pode variar ao longo do tempo. O conceito de variável, em computação, corresponde a posições de memória RAM (Random Access Memory) onde são armazenados os dados manipulados pelo programa quando este for executado. 14/37

Estruturas de Dados Identificador Nome de um local onde se pode colocar qualquer valor do conjunto de valores possíveis de um tipo básico associado. Usado para manipular os dados necessários no algoritmo. O identificador é também usado para rotular valores constantes, assim como o nome PI, utilizado no exemplo 2, em constantes (o identificador PI foi utilizado para representar o valor constante 3,14). 15/37

Estruturas de Dados Regras para formação de identificadores 1 Começar sempre o nome com uma letra ou o caractere sublinhado ; 2 Não usar espaços em branco, pontuação, acentos nem caracteres especiais (@, #,?, $, etc); 3 Não usar palavras reservadas, ou seja, palavras que pertençam a linguagem de programação que estiver sendo usada (ex: if, for, case, int, etc). Importante: Um identificador deve representar o melhor possível o papel da variável no algoritmo 16/37

Estruturas de Dados Identificadores válidos 1 nota, nota1, nota 1, operador, salario, nome, x, y, enderecoresidencial, 2 aluno01, preco produto, Area, Tensao A, tensao B, media, soma, S. Identificadores inválidos 1 1K, nota 1, salário, nome, x@1, y%2, aluno 01, preco produto. 17/37

Tipos Primitivos de Dados Numéricos 1 Inteiros. Ex:...-100... -2, -1, 0, 1, 2,..., 100,... 2 Reais. Ex:... -100,..., -50.2,..., -2,..., -1.5,..., 0,..., 1,..., 2,..., 25.12, Literal Caractere ou alfanuméricos. Ex: ESCOLA, livro, 18, R$ 55,36,... Lógicos ou booleanos Assume um estado: verdadeiro (V) ou falso (F) 18/37

Declaração Tipos Primitivos de Dados É a criação (ou definição) do identificador da variável (ou constante) que será utilizado no algoritmo. Esta variável será utilizada para a manipulação de um determinado tipo de dado. Formato tipo do dados: identificador; tipo do dado: identificador1, identificador2,..., identificadorn 1 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: 2 Em uma mesma linha podem ser denidas uma ou mais variáveis do mesmo tipo, separando-se os nomes das mesmas por vírgulas. 3 Variáveis de tipos diferentes devem ser declaradas em linhas diferentes. 19/37

Tipos Primitivos de Dados Exemplos inteiro: idade; real: salario; caracter: nome; lógico: temfilhos; No exemplo, foram declaradas quatro variáveis, sendo elas: Variável nome: capaz de armazenar dados literais; Variável idade: capaz de armazenar um número inteiro; Variável salario: capaz de armazenar um número real; Variável temfilhos: capaz de armazenar um valor lógico, verdadeiro (V) ou falso (F). 20/37

Comandos básico Tabela: Comandos em pseudocódigo Comando Função Exemplo atribui um valor a uma variável x 2 leia escreva obter um valor informado externo e atribuir a uma variável mostrar algo, que pode ser uma variável, texto ou ambos leia x; escreva x; escreva mensagem de teste ; 21/37

Estrutura Sequencial Sobre a estrutura Na estrutura sequencial os comandos são executados numa sequência pré-estabelecida. Cada comando é executado somente após o término do comando anterior. Em pseudocódigos, a estrutura sequencial caracteriza-se por um conjunto de comandos dispostos ordenadamente. Formato início tipo: variável1, variável2,... ; //declaração das variávieis leia variável1, variável2; //dados de entrada comandos/ações; //ações a serem executadas escreva Mensagem pré-determinada, variável; //dados de saída fim. 22/37

Estruturas Condicional Finalidade Utilizada quando o problema apresenta alguma ou algumas condições. Em problemas que apresentam classificação, comparação, verificação, restrição, e outras situações que existam condições a serem observadas. Classificação: 1 Simples 2 Composta 23/37

Condicional Simples Pseudocódigo se (condição) então comandos/ações; fimse; Características: A ação será executada apenas se a condição for verdadeira. A ação ou ações a serem executadas são escritas depois da palavra então e antes de fimse. 24/37

Condicional Composta Pseudocódigo se (condição) então comando1; senão comando2; fimse; Funcionamento: Se a condição for verdadeira, será executado o comando1; caso contrário, se a condição for falsa, será executado o comando2. 25/37

Seleção de Múltipla Escolha Finalidade Utilizada para simplificar a escrita de seleções encadeadas se-senão-se. Pseudocódigo escolha X V1: C1; V2: C2;... Vn: Cn; fimescolha; 26/37

Finalidade Estruturas de Repetição Permitem executar mais de uma vez (repetir) um determinado trecho do algoritmo O trecho do algoritmo em repetição é também chamado de laço (ou loop ) As repetições devem ser sempre finitas Quanto a quantidade de repetições, os laços podem ser 1 Pré-determinados: Sabe-se antes a quantidade de execuções 2 Indeterminados: Não se conhece a quantidade de execuções Quanto ao critério de parada, os laços podem utilizar 1 Variável de controle 2 Teste no início 3 Teste no final 27/37

Estruturas de Repetição enquanto... faça Laço que verifica antes de cada execução, se é permitido executar o trecho do algoritmo O laço acontece enquanto uma dada condição permanecer verdadeira Pseudocódigo enquanto(condição) faça comandos/ações; fimenquanto; 28/37

Estruturas de Repetição Exemplo: Faça um algoritmo que leia a nota de cada aluno de uma turma com 50 alunos, em seguida apresente a média da turma. início real: mediaturma, somanotas, nota; inteiro: i; //contador i 0; //inicialização do contador somanotas 0; //inicializaodoacumulador enquanto (i < 50) faça // teste da condição de parada leia nota; //soma em somanotas os valores lidos em nota somanotas somanotas + nota ; i i + 1; //incremento do contador fimenquanto; mediaturma somanotas / 50; // cálculo da média da turma escreva média da turma =, mediaturma; fim. 29/37

para... até... faça Estruturas de Repetição Utilizada somente em casos nos quais a quantidade de repetições previamente conhecida. Incorpora internamente o funcionamento de um contador para controlar a quantidade de laços Pseudocódigo para v de v i até v f passo p faça comandos/ações; fimpara; v: variável de controle v i : valor inicial de v v f : valor final de v p: variação de v 30/37

Estruturas de Repetição repita... até... A verificação se é permitido repetir a ação ocorre no final da estrutura Trata-se de um laço que se mantém repetindo até que uma dada condição se torne verdadeira Pseudocódigo repita comandos/ações; até (condição); 31/37

Estruturas de Repetição Comparação É importante perceber que existem laços mais adequados ou convenientes para cada situação Tabela: Comparação entre Estruturas de Repetição Estrutura Condição Qtd. de Execuções Condição de Existência enquanto... início zero ou muitas verdadeira para... início valor final - valor inicial verdadeira repita... final mínimo uma falsa 32/37

Estrutura Homogênea de Dados Definição Estruturas homogêneas de dados possibilitam o armazenamento de grupos de valores em uma única variável que será armazenada na memória do computador. São ditas homogêneas porque os valores a serem armazenados devem ser do mesmo tipo. Entre outros nomes que estas estruturas recebem, iremos chamá-las de vetores e matrizes. 33/37

Vetor - Arranjo Unidimensional Vetor Um vetores é uma variável composta (arranjo) com múltiplas posições. Podem ser vistos como lista de elementos do mesmo tipo. São estruturas lineares e estáticas, ou seja, são compostas por um número finito e pré-determinado de valores Representação: Exemplo: Vetor de notas de uma turma com 10 alunos: Notas = 6,1 3,4 9,2 8,5 4,6 8,3 7,4 6,5 10 9,6 Posição 1 2 3 4 5 6 7 8 9 10 34/37

Vetor Pseudocódigo - Declaração tipo: identificador[qtd. de elementos]; Exemplo: Faça um algoritmo que leia as notas de uma turma com 50 alunos e mostre o vetor resultante. inicio inteiro: i, notas[50]; para i de 1 até 50 passo 1 faça escrever Entre com um valor: ; ler notas[i]; fimpara; para i de 1 até 50 passo 1 faça escrever notas[i]; fimpara; fim. 35/37

Matriz - Array Bidimensional Matriz Uma matriz é uma variável composta homogênea bidimensional formada por elementos do mesmo tipo, alocados sequencialmente na memória, organizada em linhas e colunas. Representação: Turma 6,1 3,4 9,2 8,5 4,6 8,3 7,4 6,5 10 9,6 1 Nota 5,6 3,1 8 4,5 7 6 7,3 9,8 6,7 8 2 8,6 9 5,5 8,4 3,5 7,3 8,9 8,1 5,7 7 3 1 2 3 4 5 6 7 8 9 10 36/37

Matriz Pseudocódigo - Declaração tipo: identificador[qtd. linha][qtd. coluna]; Exemplo: Faça um algoritmo que leia as notas de 5 turmas, cada turma com 50 alunos, e mostre a matriz resultante. inicio inteiro i, j, notas[5][50]; para i de 1 até 5 passo 1 faça para j de 1 até 50 passo 1 faça escreva Entre com um valor: ; leia notas[i][j]; fimpara; fimpara; para i de 1 até 5 passo 1 faça para j de 1 até 50 passo 1 faça escreva notas[i][j]; fimpara; fimpara; fim. 37/37