Professor Fernando Luís

Slides:



Advertisements
Apresentações semelhantes
Introdução à Programação: uma Abordagem Funcional PD I – Engenharia Elétrica Prof.ª Claudia Boeres 2008/2.
Advertisements

Algoritmo e Programação
Introdução a Algoritmos
gerador de código intermediário
TÉCNICAS DE PROGRAMAÇÃO I
Introdução à Programação
Arquitetura de Computadores
Introdução à Ciência da Computação Linguagens de Programação.
Arquitetura e organização de computadores.
Introdução à Programação uma Abordagem Funcional Programação I Prof.ª Claudia Boeres CT VII - Sala 32 Departamento de Informática Centro.
Linguagem de Montagem Visão geral.
Paradigmas de Linguagens Conceitos Básicos
Introdução à Compilação Prof. Leandro Magno Slides adaptados a partir do material cedido pelos professores Heloise Manica Paris Teixeira, Yandre M. G.
Lógica de Programação Módulo II
INTRODUÇÃO À PROGRAMAÇÃO
Estruturas de Controle
Professor: Erivelto Tschoeke – UDESC/CEPLAN
Softwares.
Linguagens de Programação
Prof. Msc. Raul Paradeda Aula 3 Fluxograma e Pseudocódigo
Prof. Msc. Raul Paradeda Aula 2 Introdução
Threads.
Algoritmos Prof. Kelly E. Medeiros.
PRC Bruno Correa.
Formas de Representação de Algoritmos
Introdução a Programação
Algoritmos e Estruturas de Dados I Construção de Algoritmos
Lógica de Programação UNIDADE 1 – Introdução a) Computador
PROGRAMAÇÃO I UNIDADE 1.
Fluxogramas e Pseudo-código
INTRODUÇÃO – LOGICA E ALGORITMOS
Representação de Algoritmos
ENGENHARIA DE AUTOMAÇÃO INDUSTRIAL
PCI- Introdução à Computação
LINGUAGENS DE PROGRAMAÇÃO PROF. DANIELA PIRES
Introdução a Programação
Sistemas Operacionais
Laboratório I Mateus Raeder Material baseado nos originais da
TÉCNICAS DE PROGRAMAÇÃO
Geração de Código aula-12-geração-de-código.pdf.
ALGORITMOS Intensivo Janeiro e Fevereiro de 2011
SISTEMAS OPERACIONAIS I
Projeto de Linguagens de Programação
Sistemas operacionais
Fábio de Oliveira Borges
Igor Steinmacher, MSc. O maravilhoso mundo da Lógica de Programação.
Programação de PIC em C Exposição das funções básicas para
Zeque - Grad. CC1 Sistemas Operacionais Curso de Ciência da Computação da UFPE Prof. José Queiroz - ZEQUE.
Algoritmos e Estrutura de Dados I
Back-End Compilação aula-11-back-end.pdf.
Linguagens de Programação
Algoritmos e Programação I
Fundamentos de linguagens de programação
Software Básico Introdução à Organização de Computadores Capítulo 1 Mitsuo Takaki
Sistemas de Informação – mais que tecnologia Profa. Reane Franco Goulart.
Introdução à Computação - Jorge Macêdo1 ICC – Software Jorge Macêdo.
Algoritmos e Programação MC102
Linguagens de Programação
Algoritmos e Programação I
ALGORITMOS.
SISTEMAS DE INFORMAÇÃO
Sistemas Operacionais Funcionamento Básico
Introdução à lógica de programação
Curso Engenharia Química Modalidade Superior Instituto Federal do Sul de Minas, câmpus Pouso Alegre Professora Michelle Nery Programação de Computadores.
Algoritmos e Estruturas de Dados I - Introdução
INTRODUÇÃO THOBER CORADI DETOFENO, MSC. Aula 01 JOINVILLE 2015 Universidade do Estado de Santa Catarina – CCT/UDESC.
LÓGICA DE PROGRAMAÇÃO Curso: Técnico em Informática Professor: Ronaldo Disciplina: Lógica de Programação.
COMPILADORES 02 Prof. Marcos. COMPILADORES Do Programa à Execução Computadores das mais variadas arquiteturas têm funcionamento:
Lógica de programação Introdução à lógica de programação
Transcrição da apresentação:

Professor Fernando Luís fernandomaia@hotmail.com.br Algoritmos

Introdução e objetivos Introdução geral sobre Algoritmos; Diferenças entre Algoritmos e Programas; Compiladores e Montadores; Formas populares de estruturação de Algoritmos; Notações.

1.1 Conceituação Algoritmos É bastante associada à informática, porém não é restrito apenas a ela. É usada também em outras áreas como administração e engenharias. Vem do nome do matemático iraniano al-Khawarizmi.

Com isso definimos o termo como sendo: 1.1 Conceituação Com isso definimos o termo como sendo: Um procedimento passo a passo para a solução de um problema. Uma sequência detalhada de ações a serem executadas para realizar uma tarefa.

1.2 Programas de computador Processo necessário para criação de programas de computador.

1.2.1 O que é um programa? barramento Os computadores, independentemente de sua arquitetura, têm funcionamento similar. UCP – Unidade Central de Processamento Memória barramento Dispositivos Entrada/Saída

...continuando A UCP (unidade central de processamento) contém um pequeno conjunto de instruções. Estas instruções que o processador executa são buscadas na memória e podem ser: Operações matemáticas; Interações com dispositivos de entrada e saída.

... Concluindo! Programas de computadores são conjuntos de instruções executadas pelos processadores em uma determinada seqüência. Esse programa fará com que o computador execute uma tarefa!

Programas x Algoritmos Fica claro que: Um programa nada mais é que um tipo de algoritmo onde suas operações são específicas para o computador. Atenção: é preciso ressaltar que tais operações são restritas ao conjunto de instruções (linguagem de máquina) que o processador pode executar!

Linguagens de programação Existem atualmente centenas de linguagens. Elas são classificadas de acordo com o “distanciamento” em relação à linguagem de máquina. Ou seja: Quanto mais semelhante com a linguagem de máquina, mais baixo é o nível da linguagem.

Linguagens de baixo e alto nível Baixo Nível: São aquelas mais semelhantes à linguagem de máquina. Alto Nível: São aquelas mais distantes da linguagem de máquina. Estão mais próximas à linguagem natural. Guardam pouca similaridade à ling máquina.

Como ocorre a tradução Código em linguagem (compiladores ou interpretadores) Tradutor Código em linguagem de máquina

1.2.2 Executando um programa Compilador (compilação): É aquele que faz a tradução do código de alto nível (código-fonte) para a linguagem de máquina (código-objeto). Esse código-objeto fica armazenado em disco e só é carregado em memória durante a execução. Código-fonte (linguagem de alto nível) Código –objeto (linguagem de máquina) Compilador

1.2.2 Executando um programa Interpretador (interpretação): Faz o mesmo trabalho (final) que o compilador, entretanto não gera nenhum código-objeto. A tradução do código-fonte (linguagem de alto nível) é executada em tempo de instrução, ou seja: instrução por instrução diretamente na memória. Tradução de cada instrução Código-fonte (linguagem de alto nível) Interpreta-dor Memória

1.2.3 Linguagens de programação e sistemas operacionais É muito complexo, até mesmo para programadores experientes, a realização de determinadas operações usando linguagem de máquina. Essa não é apenas importante aos programadores, é também uma das funções do sistema operacional.

1.2.3 Linguagens de programação e sistemas operacionais Máquina real: É a máquina propriamente dita, física. Operada pela linguagem de máquina (complicada). Máquina virtual: É uma camada que está entre o sistema operacional e a estrutura física do computador. Facilita para o usuário a utilização dos recursos. Exemplo: arquivos (manipulação dos dados).

1.2.3 Linguagens de programação e sistemas operacionais Além disso, os sistemas operacionais, fornecem interfaces para que outros programas possam ser executados. Essas interfaces são conhecidas como system calls (chamadas de sistema) e o conjunto de operações disponibilizadas são as bibliotecas do sistema.

1.2.3 Linguagens de programação e sistemas operacionais Durante a compilação de um programa, o compilador encontra no código-fonte as chamadas de sistema e as transforma em referências no código-objeto (linguagem de máquina). Para ser executado, esse código precisa ser “ligado” ao sistema operacional (que é quem efetivamente “faz o trabalho”). Esse processo se chama ligação do código ou linking.

Código-objeto (executável) Compilador (ETAPA II) Código-fonte Compilador (ETAPA I) Código-objeto Memória Código-objeto (executável) Compilador (ETAPA II) Biblioteca do sistema operacional

Portabilidade A relação entre o compilador e o sistema operacional faz com que o programa independa da arquitetura física do computador (processador). Assim, programas executados em LINUX dificilmente poderão ser executados em um sistema operacional da família MICROSOFT.

1.3 Estruturação de algoritmos Com o passar do tempo, as linguagens de programação acabaram se distanciando da linguagem de máquina e se aproximando da “lógica humana”. Mesmo assim, linguagens de alto nível podem ser MUITO complexas para quem não é acostumado a fazer ALGORITMOS.

Diferenças entre linguagem humana e computacional As máquinas: Não podem tomar decisões com base em premissas; Não podem escolher alternativas; Não podem corrigir comandos mal redigidos; Não podem descobrir a intenção do programador;

Rigidez (regras) Sintática: Semântica: A tradução no computador é bastante limitada devido seu idioma também ser limitado. “Se sei poucas palavras, me comunico com dificuldade” Semântica: Não podem existir ambigüidades. O computador é, portanto, um ótimo cumpridor de ordens.

A velhinha ouviu o barulho da janela Exemplos A velhinha ouviu o barulho da janela Interpretações A velhinha ouviu o barulho produzido pela janela. A velhinha estava junto à janela e ouviu o barulho. A velhinha ouviu o barulho que veio através da janela.

Dilema! A linguagem natural (humana) não é adequada porque não tem rigidez semântica e sintática e a linguagem de programação não é adequada justamente por ter essas características que dificultam o desenvolvimento por sua complexidade.

Na realidade, já existem algumas alternativas. Apresento duas delas: Como resolver? Na realidade, já existem algumas alternativas. Apresento duas delas: FLUXOGRAMA PSEUDO-CÓDIGO

1.3.2 Fluxograma Apresentam os ALGORITMOS de forma gráfica. São formados por CAIXAS que contém as instruções. As CAIXAS são ligadas por SETAS que indicam o FLUXO.

CAIXAS Algumas caixas especiais indicam a possibilidade de o FLUXO seguir caminhos diferentes. Para isso acontecer, precisamos de CONDIÇÕES e DECISÕES.

VANTAGENS Facilidade para o desenvolvimento e compreensão do funcionamento do ALGORITMO.

DESVANTAGEM Não é prática. A correção de uma linha do pensamento pode implicar na reconstrução de muitas instruções. A construção de ALGORITMOS mais complexos pode se torna demasiadamente trabalhoso.

Exemplo Façamos um ALGORITMO, usando a notação de FLUXOGRAMAS, para a escolha do maior de dois números distintos.

Raciocínio

Início Leia num1, num2 Num1 > num2 Maior  num1 Maior  num2 Escreva Maior Fim

1.3.3 Pseudo-código Visa trazer ao código a rigidez semântica e sintática sempre tentando reduzir a dificuldade de uma linguagem de programação. Será intermediária entre a linguagem natural e a linguagem de programação.

PORTUGOL É um Pseudo-código muito popular no BRASIL. É bastante simples e atende as características básicas da rigidez semântica e sintática. Nas próximas aulas estudaremos a fundo a linguagem PORTUGOL e facilitaremos o estudo das linguagens de maior nível.

Var num1, num2, maior : inteiro; Início Algoritmo MAIOR Var num1, num2, maior : inteiro; Início Leia(num1, num2); Se (num1 > num2) então Maior  num1; Se não Maior  num2; Escreva (Maior); Fim

Exercícios Defina o que é ALGORITMO. Diferencie um ALGORITMO de um PROGRAMA. Explique como um programa é executado em um computador. Defina o que é uma linguagem de programação de alto nível e uma linguagem de baixo nível. Porque a linguagem natural não é adequada para a construção de ALGORITMOS para computador? Quais as vantagens e desvantagens da utilização de FLUXOGRAMA e de PSEUDOCÓDIGO na construção de ALGORITMOS?