Fundamentos de Algoritmos (5175/31)

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

Fundamentos da Computação. O Computador. O Computador. Evolução tecnológica: Prof. Yandre Maldonado e Gomes da Costa

Fundamentos da Computação Prof. Yandre Maldonado - 1

INTRODUÇÃO A PROGRAMAÇÃO

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

Capítulo 1 Conceitos Básicos

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..

Introdução à Programação Estruturada Parte 3. Material da Prof. Ana Eliza

Técnicas de Programação

Introdução a Computação

ALGORITMOS AULA 1. Profª Amanda Gondim

LINGUAGEM ALGORÍTMICA

Linguagem Computacional

Algoritmos e Introdução à Programação. Lógica e Linguagem de Programação

Lógica de Programação I

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

TECNOLOGIA EM REDES DE COMPUTADORES. computadores. Aula 4

Algoritmos e Programação - Engenharia da Computação -

Introdução aos Algoritmos

Algoritmos Computacionais

Introdução aos Algoritmos

Pseudocódigo e Visualg

Aula 3: Algoritmos: Formalização e Construção

Algoritmos e Estruturas de Dados I

Algoritmos e Estruturas de Dados

Introdução à Programação

Algoritmos e Programação. Noções de Lógica e Algoritmos Tarcio Carvalho

Introdução a Programação

Ciência da Computação. Prof. Dr. Leandro Alves Neves Prof. Dr. Adriano M. Cansian

INFORMÁTICA APLICADA AULA 01 ALGORITMOS

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

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

Programação de Computadores I Dados, Operadores e Expressões PROFESSORA CINTIA CAETANO

I - CONCEITOS INICIAIS

Algoritmos. Seqüência finita e ordenada de procedimentos que resolvem um determinado problema. Exemplo: O que preciso fazer para preparar um omelete?

ALGORITMOS 3ª Aula. 3. Introdução Tipos de dados, variáveis e operadores Tipos de dados

UNIDADE 1 CONCEITOS BÁSICOS EM ALGORITMOS

DISCIPLINA: Computação e Algoritmo I. PROFESSOR: Léo M. Lopes da Silva Garcia FORMAÇÃO:

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

Programação em C. Variáveis e Expressões. Universidade Federal do Rio Grande do Norte Departamento de Engenharia de Computação e Automação

CONCEITOS DE ALGORITMOS

Introdução à Computação

Introdução à Programação. Introdução a Linguagem C. Prof. José Honorato F. Nunes

Programação Estruturada Aula VisualG

Introdução a Programação de Jogos

Disciplina de Algoritmos e Programação

Lógica de Programação e Algoritmos. Prof. André Y. Kusumoto

Fundamentos de Programação Introdução

Definições de Algoritmos. Algoritmos e Programação I. Conceitos Básicos de Algoritmos. Relação entre Algoritmos e Programação

Introdução à Computação

Introdução à Computação

CAI Fluxograma Revisão 7

Apêndice A. Pseudo-Linguagem

Oficina de Python Prof. Me. José Carlos Perini

Paradigmas de Linguagens

Programação Aplicada à Engenharia

Oficina de Python Prof. Me. José Carlos Perini

Algoritmos e Lógica de Programação Introdução e formas de representação

Introdução. 17-out-08 Leandro Tonietto 2

Conceitos Básicos. Professor: Juliano Lucas Gonçalves.

Algoritmos: Conceitos Fundamentais. Slides de autoria de Rosely Sanches e Simone Senger de Souza

FERRAMENTAS BÁSICAS DA PROGRAMAÇÃO

Variáveis e Entrada de Dados Marco André Lopes Mendes marcoandre.googlepages.

INF 1005 Programação I

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

Lógica de Programação I. Gilson de Souza Carvalho

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

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

PROGRAMAÇÃO A. Matrizes

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

Introdução aos algoritmos computacionais

Algoritmos e Estruturas de Dados

PROGRAMAÇÃO ESTRUTURADA E ORIENTADA A OBJETOS

Tipos de dados, constantes e variáveis. Prof.: Jesus

Treinamento Olimpíada Brasileira de Informática

CCO 016 / COM 110 Fundamentos de Programação

Programação de Redes de Computadores

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

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

Lógica de Programação e Algoritmos

Algoritmos e Estruturas de Dados

Algoritmos e Técnicas de Programação

Programação Básica de Computadores

Linguagem Pascal. Prof. Sérgio Rodrigues. É a descrição, de forma lógica, dos passos a serem executados no cumprimento de determinada tarefa;

Algoritmos: Conceitos Fundamentais. Baseado nos slides de autoria de Rosely Sanches e Simone Senger de Souza

Algoritmos. Conceitos e Comandos

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

As bibliotecas iostream e cstdlib permitem a utilização de diversos comandos de entrada e saída e funções básicas.

Português Estruturado

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

A palavra ALGORITMO teve origem com um Matemático Persa, al. Khawarizmi. O seu trabalho mais famoso foi Al-jabr walmuquabalah,

Fundamentos de Programação

PROGRAMAÇÃO A. Vetores

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

Linguagem de Programação I Prof. Tiago Eugenio de Melo.

Laboratório de Programação

Transcrição:

UEM/CTC Departamento de Informática Curso: Ciência da Computação Professor: Flávio Rogério Uber Fundamentos de Algoritmos (5175/31) Material Original: Prof. Yandre Maldonado e Gomes da Costa (UEM/DIN)

A disciplina Professor: Flávio Rogério Uber Email: flavio.uber@gmail.com Bloco C56 Sala 204 Bibliografia: Nicolas Wirth. Algoritmos e Estruturas de Dados. Editora Prentice-Hall, 1989. Guimarães & Lages. Algoritmos e Estruturas de Dados. Editora LTC. 2001. Nivio Ziviani. Projetos de Algoritmos com Implementações dem Java e C++. Editora Thomson. 2007.

A Disciplina Programa 1. Definiçoes 2. Modelagem Algorítmica de Problemas Reais Tipos de dados básicos Tipos de dados estruturados Abstração em nível de comando Seleção Repetição entrada/saída Abstração em nível de módulo Funções e Procedimentos Execução de Processos Escopo Alocação de variáveis Passagem de Parâmetro 3. Técnicas de Construção de Algoritmos

Critério de Avaliação 2 Avaliações: 1a Avaliação(Peso 2) 75% Prova / 25% Trabalho 2a Avaliação(Peso 3) 75% Prova / 25% Trabalho

Definições: Redação que descreve de forma lógica e sem ambigüidades, uma seqüência de passos (ações) para se resolver um problema que tenha um comportamento padrão. Franco e Polidório Uma seqüência de passos que visam atingir um objetivo bem definido. Forbellone e Eberspächer

É 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. Guimarães e Lages Descrição de um conjunto de comandos que, obedecidos, resultam numa sucessão finita de ações. Farrer e outros

O algoritmo deve ensinar a resolver o problema, e não trazer a solução. Exemplo: receita de bolo; Ação é um acontecimento que, a partir de um estado inicial, após um período de tempo finito, produz um resultado final previsível e bem definido. Objetivo: solução do problema.

Aspecto lógico: ordenar o pensamento. Organização seqüencial das ações pertinentes à solução de um problema; Exemplo: o bolo só pode ser levado ao forno depois que a massa estiver pronta. Lógica no dia-a-dia: Todo mamífero é animal. Todo cavalo é mamífero. Portanto, todo cavalo é animal.

Padrão de comportamento: uma seqüência de ações para resolver um problema. Exemplos: Trocar uma lâmpada (problema cotidiano): pegue uma escada; posicione-a sob a lâmpada; busque uma lâmpada nova; suba na escada; retire a lâmpada velha; coloque a lâmpada nova. Calcular a área de um retângulo (problema matemático): obtenha a medida da base do retângulo; obtenha a medida da altura do retângulo; multiplique a medida da base pela medida da altura.

Aspecto estático e aspecto dinâmico: Estático: não depende do tempo, mas do espaço físico onde o algoritmo está sendo escrito; Dinâmico: como se comporta a execução de cada ação do algoritmo com o passar do tempo. Todo algoritmo deve produzir resultados corretos, e ser finito tanto estática quanto dinamicamente.

Ambigüidade: relacionada à sintaxe e semântica de linguagens naturais. O artista produz formas perfeitas. Linguagens naturais são muito extensas, possuindo ambigüidade; Linguagem Natural X Linguagem Computacional

Linguagem Algorítmica Linguagem Computacional Nos algoritmos, devemos utilizar construções que executarão uma ação específica bem definida; Uma linguagem algorítmica deve ter sintaxe rígida e semântica bem definida; Toda linguagem possui sintaxe e semântica.

Sintaxe: dita as regras de como as sentenças e cada um de seus elementos devem ser construídos corretamente; Semântica: se preocupa com o significa de uma sentença construída.

A sintaxe por si só não define completamente uma linguagem. Exemplo: Descoloridas idéias verdes sonham furiosamente (Chomsky) Por outro lado: Nóis foi, mais já vortemo

Algoritmos geralmente descrevem algum processamento de dados: Dados de Entrada Processamento (Computador) Dados de Saída Estes dados precisam ser representados (descritos) nos algoritmos;

Um algoritmo para fins computacionais é a descrição de ações que manipulam objetos em função do tempo. Objetos descrevem o estado computacional; Objetos têm função específica; Ações são direcionadas aos objetos; Objetos são definidos como parte do programa; Estados diferentes requerem objetos diferentes. * Objetos frequentemente serão chamados de variáveis. * Exemplo do Retângulo

Argumentos de Entrada e Saída Entrada: objetos cujos valores são conhecidos em tempo de execução; permitem um comportamento mais genérico dentro do caráter específico do comportamento padrão; Saída: objetos que armazenam a solução objetivo de um problema;

Exercícios Dada uma equação do 2o. Grau na forma ax 2 +bx + cc = 0 responda: a) Quais os argumentos de entrada para se calcular as raízes dessa equação? b) Quais os argumentos de saída, sabendo que o objetivo é calcular as raízes reais da equação? c) Faça um algoritmo para calcular as raízes da equação. d) Execute o algoritmo que você fez para resolver a equação: 2x 2 +2x-2=0

Exercício b h Considerando a figura mostrada acima (um retângulo), faça um algoritmo que calcule a área da mesma. Neste problema existem três valores (estados) a serem representados: Altura do retângulo (h); Largura (ou base) do retângulo (b); Área do retângulo. Dados de Entrada Dados de Saída

A cada objeto é associado um nome que identifica este objeto ao longo da programação. Este nome é chamado identificador. De forma geral, podemos dizer que um identificador está associado à uma célula de memória. O termo variável é freqüentemente utilizado como sinônimo de identificador.

Em geral, as linguagens de programação exigem nomes de identificadores com as seguintes característica: Use somente letras e números; O primeiro caracter do nome deve ser uma letra; Não é permitido o uso de caracteres especiais. Exemplos válidos: ImpostoDeRenda, F1, soma, produto, desconto, SalarioHora. Exemplos inválidos: 1f, Imposto-renda, salario hora.

Atributos (características) de um objeto: Nome; Célula de memória; Valor associado; Tipo: define a categoria dos dados que podem ser armazenados no objeto. Nome identificador do objeto conteúdo (valor armazenado na célula de memória) célula de memória

O tipo: especifica uma classe de valores que podem ser armazenados na célula de memória associada ao identificador; define as operações válidas sobre o identificador;

Tipo de Dado Um identificador armazena um único dado num instante, mas este dado não pode ser qualquer um; Os objetos serão classificados segundo um tipo; Os dados podem ter estruturas físicas diferentes; As células de memória do computador precisam ser compatíveis com o tipo de dado que vão armazenar;

Devemos informar ao computador qual o tipo de dado que vamos armazenar; Esta informação determina quantas células de memória serão necessárias para armazenar o dado; Esta informação define quais serão as operações possíveis de se aplicar sobre os dados; Exemplo: em um dado numérico pode-se aplicar uma operação aritmética.

Os tipos de dados podem variar de uma linguagem para outra. No entanto, existem dois tipos básicos: Tipos simples; Tipos estruturados (estudados mais adiante); Inteiro Numérico Real Tipos de Dados Simples Caracter Lógico

Os Tipos de Dados Numéricos são divididos basicamente em dois grandes conjuntos: Inteiros; Reais; Os inteiros podem ser positivos, negativos ou nulos, mas não possuem um componente decimal;

Os inteiros são compatíveis com os reais, mas os reais não são compatíveis com os inteiros; Assim, um objeto real pode receber um valor inteiro, mas um objeto inteiro não pode receber um valor real; Declaração: LPE Pascal C inteiro integer int

Os reais podem ser positivos, negativos ou nulos, e possuem sempre um componente decimal; Exemplos: 2,34; 0,0; -214,123; Computacionalmente, existem muitas diferenças entre o armazenamento de números inteiros e números reais;

Os números inteiros consomem menos espaço de armazenamento em memória; Declaração: LPE Pascal C real real float

Os tipos de dados não numéricos: Caracter: formado pelas letras (de A a Z, e de a a z), dígitos (de 0 a 9) e caracteres especiais (~,.,?, >, <,...); A diferença entre caracteres e dados numéricos estão na forma de armazenamento, e nas operações legais permitidas sobre os mesmos; Exemplo: operações aritméticas sobre os dados numéricos.

Para diferenciar um caracter de um identificador ou de um dado numérico, utilizaremos apóstrofes. Assim: 8 é um dado numérico; 8 é um caracter; A é um identificador; A é um caracter

Objetos declarados como do tipo caracter poderão armazenar um único caracter; Para armazenar uma seqüência de caracteres será utilizada a estrutura cadeia de caracteres, que consiste num tipo de dado estruturado; Exemplo: Z é um caracter; ANA é uma cadeia de caracteres;

Declaração: LPE Pascal C texto char char

Tipo Lógico: os valores lógicos podem assumir uma entre duas possibilidades (verdadeiro ou falso); Só poderá armazenar um destes dois valores; Muito utilizados em controle do fluxo lógico do algoritmo; LPE Pascal C logico boolean não existe