A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Introdução a Programação

Apresentações semelhantes


Apresentação em tema: "Introdução a Programação"— Transcrição da apresentação:

1 Introdução a Programação
Prof. Eduardo Falcão

2 Quem sou eu? Ciências da Computação
Bacharelado 2011  Realidade Virtual Mestrado 2014  Computação em Nuvem Doutorado em andamento (~2018)  Sistemas Distribuídos Professor Substituto 2015  Programação Introdução a Programação, Programação Orientada a Objetos, Análise e Projeto de Sistemas, Projeto Avançado 1 e 2 LP favorita: Java 

3 Quem são vocês? Nome: Cidade: Por que SI e não LCC?

4 Ementa Construção de algoritmos.
Conceitos básicos de um programa: variáveis, operadores e expressões, estruturas de controle (atribuição, seleção, repetição). Introdução à uma linguagem de programação estruturada (Python). Ambientes de programação. Dados estruturados: vetores, matrizes e registros. Arquivos. Subprogramas: funções, procedimentos. Passagem de parâmetros (por valor e por referência). Recursividade.

5 Decisão

6 Regras do jogo Presenças e faltas Façam as listas de exercício
(recomendações a serem seguidas ao longo da disciplina) Presenças e faltas Serão registradas todas as aulas e reprovarei aluno por faltas. if(faltas>(25/100)*aulas) situação  “reprovado” Façam as listas de exercício Quem faz a lista de exercício se dá bem nas provas! Avaliação:  ainda indefinido 2 provas + 1 projeto; ou Minitestes + projeto

7 Comunicação Dúvidas sobre assunto ensinado em sala  Grupo no facebook  IP DCX Dúvidas simples: data de entrega; assunto da prova; Notícias: postagem de aulas, lista de exercícios, notas, avisos de eventual ausência, etc. Site da disciplina  Aulas, Calendários, Listas de Exercícios, etc.

8 1 - Construção de algoritmos

9 Definições "Um algoritmo é uma receita para um processo computacional e consiste de uma série de operações primitivas, interconectadas devidamente, sobre um conjunto de objetos. Os objetos manipulados por essas receitas são as variáveis”. Serve como modelo para programação, pois sua linguagem é intermediária à linguagem humana e às linguagens de programação. Um algoritmo é formalmente uma sequência finita de passos que levam à execução de uma tarefa. Podemos pensar em algoritmo como uma receita, uma sequência de instruções que tem a função de atingir uma meta específica. Estas tarefas não podem ser redundantes nem subjetivas na sua definição, devendo ser claras e precisas.

10 Definições O conceito central da programação e da
Conceito de algoritmo Conjunto de passos que definem a forma como uma tarefa é executada A ordem lógica da execução das tarefas é importante. Todo algoritmo tem início e fim. Um algoritmo tem que ser completo. Um algoritmo deve ter um alto índice de detalhamento. Cada tarefa ou etapa é chamada de instrução Exemplos Instruções para utilização de caixas bancários Regras para cálculo do imposto de renda Procedimentos para cálculo com a operações fundamentais da aritmética Instruções para matrícula na universidade ... O conceito central da programação e da Ciência da Computação é o conceito de algoritmos, isto é, programar é basicamente construir algoritmos.

11 Construção de Algoritmos
Exemplo – algoritmo de divisão euclidiana Condição de entrada – pré-condição Dois números naturais a – dividendo b – divisor, sendo b diferente de zero Condição de saída – pós-condição Dois números naturais únicos q – quociente r – resto, onde r maior ou igual a zero e menor que b Tal que: a = b  q + r

12 Construção de Algoritmos
Exemplo – algoritmo de divisão euclidiana Passos para execução Atribuir, inicialmente, o valor de zero para q e o valor de a para r Caso b seja maior que r, o algoritmo pára e o resultado do quociente é q e do resto é r Subtrair b de r e atribuir o resultado para r Somar um ao valor de q Executar o passo 2.

13 Principais características dos algoritmos
Construção de Algoritmos Principais características dos algoritmos Concebidos por seres humanos Representados por programas (software) escritos em linguagens de programação Alto nível PYTHON, JAVA, C, PASCAL, C++, ADA, ALGOL, FORTRAN Baixo nível – linguagens de máquina e assembler (montagem)

14 Construção de Algoritmos
O que se pode concluir? Uma vez concebido (descoberto) um algoritmo, sua execução não dependerá do conhecimento dos princípios em que se baseia Uma calculadora digital “sabe” dividir números inteiros (algoritmo de divisão euclidiana), mas não sabe o que significa números inteiros, divisão, algoritmos, etc. Algoritmos codificam conhecimento (raciocínio) necessário a resolução de um problema A semântica dos algoritmos, das pré e pós condições “dependem” do observador humano

15 Construção de Algoritmos
Quais as limitações dos algoritmos? Não são capazes de calcular funções não-computáveis Função para provar teoremas em geral O conjunto dos números reais é incontável. Assim, muitos números reais não são computáveis. Não são auto-organizáveis - depende do ser humano A capacidade (“inteligência”) das máquinas limita-se ao conhecimento embutido no algoritmo

16 O Desenvolvimento das Máquinas Algorítmicas
Máquinas algorítmicas (computacionais) Objetivam executar mecanicamente (automaticamente) as tarefas (computáveis) especificadas nos algoritmos Tipos de máquinas Abstratas Existentes na mente humana Máquinas virtuais Máquinas formalizadas matematicamente - Máquinas de Turing (1936) Define um sistema formal para computação universal Máquinas de Post (1943)

17 O Desenvolvimento das Máquinas Algorítmicas
Máquinas algorítmicas (computacionais) Tipos de máquinas - Físicas Mecânicas Ábaco (c a. C. na Babilônia) Régua de cálculo (Willian Oughtred, 1632) – analógico Dispositivos para cálculos astronômicos – analógicos Quadrantes Compasso de setor “Antikythera” – dispositivo cálculo de calendário lunar (79 a. C.) Etc.

18 O Desenvolvimento das Máquinas Algorítmicas
Máquinas algorítmicas (computacionais) Tipos de máquinas - Físicas Mecânicas – baseadas em engrenagens Máquinas de calcular - digitais Blaise Pascal (1642) máquina para somar ( , matemático francês) G. W. Leibniz (1673) – máquina com as 4 operações Máquina de Jacquard ( ) Programa expressos em cartões perfurados especificando o padrão de desenho de tecidos em teares (1801) Operários com menor qualificação poderiam fazer desenhos elaborados O conhecimento de desenhar foi transferido para os cartões perfurados (programas) processados em teares (máquinas) Os operários forneciam basicamente a energia mecânica

19 O Desenvolvimento das Máquinas Algorítmicas
Máquinas algorítmicas (computacionais) Tipos de máquinas - Físicas Mecânicas – baseadas em engrenagens – digital Máquina diferencial de Babbage (1822) – matemático Inglês (1792- 1871) Produção de tabelas logarítmicas Projeto iniciado nunca foi concluído Máquina analítica de Babbage (1933) Primeiro modelo teórico de computador universal Não foi implementado – totalmente mecânico – movido à vapor Os algoritmos não eram “amarrados” à máquina, que poderia ser programada livremente 1842 – Primeiro programa escrito por Lady Ada Augusta Byron

20 O Desenvolvimento das Máquinas Algorítmicas
Máquinas algorítmicas (computacionais) Tipos de máquinas - Físicas Eletromecânicas – baseadas em engrenagens – digital Tabulador de Hollerith (1890) Tabular o resultado do censo nos EUA Cartões perfurados Representavam números que eram interpretados e somados em acumuladores Fundou a Hollerith Tabulating Machines, compondo uma das empresas que resultou na International Business Machine – IBM em 1924

21 O Desenvolvimento das Máquinas Algorítmicas
Máquinas algorítmicas (computacionais) Tipos de máquinas - Físicas 1o Computador eletromecânico (relé) universal Z1 (1936) – Konrad Zuze ( ) engenheiro civil alemão Computadores eletrônicos Mark I (1944) – Howard Aiken – Harvard University – relés comandados eletronicamente ENIAC (1946) – Universidade da Pensilvânia – válvulas EDVAC (1949) – John von Neumann Concebeu a moderna arquitetura de computadores Programa armazenado

22 Histórico das Linguagens de Programação
As primeiras linguagens Frutos da busca de um “procedimento efetivo (mecânico)” para verificar a validade de uma proposição matemática Busca frustrada, mas que resultou no desenvolvimento da teoria da computação Usadas para representar algoritmos, possuindo Sintaxe para determinar a forma com que as entidades de um programa são estruturadas Semântica para determinar o significado de um programa, isto é, o que provoca quando executado por uma máquina algorítmica e como é entendido por um programador

23 Histórico das Linguagens de Programação
As primeiras linguagens Subconjunto não ambíguo de linguagens naturais Português, inglês, francês, etc. Linguagens artificiais Universais – capaz de expressar qualquer algoritmo Formal e matematicamente bem definidas O -cálculo (lambda-cáclulo) proposto por Alonzo Church ( – matemático norte-americano) em 1936 Cálculo para expressar todas as funções computáveis Base teórica das linguagens de programação Lógica combinatorial proposta em 1924 por Moses Shönfinkel Equivalente ao -cálculo Linguagem de máquina Instruções diretamente interpretada por computadores Difíceis para programar e para entender

24 Histórico das Linguagens de Programação
As primeiras linguagens Linguagens artificiais Linguagens de montagem (assembler) - fins dos anos 40 início dos anos 50 Notação simbólica para instruções em linguagem de máquina Uso de mnemônicos Primeiros tradutores – assembler  linguagem de máquina Dependente de máquinas específicas Instruções muito primitivas Linguagens de baixo nível LOAD R X ADD R LOAD X R LOAD R, X ADD R, 1 LOAD X, R tradução

25 Histórico das Linguagens de Programação
As primeiras linguagens Linguagens artificiais Linguagens de alto nível Meados dos anos 50 Objetivos Expressar algoritmos independente de uma máquina particular Linguagem mais próxima da linguagem natural Facilitar a programação e o entendimento de programas Compiladores para traduzir automaticamente programas em linguagens de alto nível para programas em linguagem de máquina código objeto intermediário código objeto linguagem de máquina código fonte alto nível LOAD R, X ADD R, 1 LOAD X, R tradução tradução X = X + 1 Processo de compilação

26 Histórico das Linguagens de Programação
1950 1960 1970 1980 1990 2000 Fortran Lisp Algol-60 Cobol Simula Algol-68 PL/1 Pascal Prolog Smalltalk C ML Ada Miranda C++ Java Python Haskell Linguagens orientadas a objetos Linguagens concorrentes e imperativas Linguagens funcionais Linguagens lógicas Fonte: adaptação da fig. 1.1 do livro Programming Language Concepts and Paradigms de David A. Watt. Prentice Hall, 1991

27 Evolução da Ciência da Computação
Inicialmente – anos 40, 50 e meados de 60 Computadores Custo elevado Primeiro HD criado pela IBM em 1956, com 5Mbytes de capacidade, custava mais de US$ ,00 PDP-1 – primeiro minicomputador – fabricado pela DEC nos anos 60, custava aproximadamente US$ ,00, e possuía 4 Kbytes de memória principal Grandes em tamanho Pequena capacidade de memória e processamento Programas Usados para resolver “problemas simples” Baixo custo de desenvolvimento Aplicações militares, científicas e em organizações de grande porte Lei de Moore (1965) – co-fundador da Intel O número de transistores por polegada quadrada nos circuitos integrados dobrará a cada ano (revisto nos anos 70 para a cada 18 meses)

28 Construção de Algoritmos
Hoje Computadores Baixo custo Simples de usar e de dimensões reduzidas Grande capacidade de memória e processamento Interconectados em rede Programas Usados para resolver “problemas complexos” Elevados custos de desenvolvimento Processo de desenvolvimento complexo Importância do fator humano Crise de software permanente Aplicações de software permeiam toda a sociedade Exemplos: lazer, entretenimento, cultura e informação

29 Tarefas de Casa Instalar o Python no seu notebook
cap. 2 do livro “Introdução à Programação com Python (2ª edição)”, de Nilo Ney Coutinho Menezes; ou Google :P

30 Refs Slides prof Gutavo Motta. Slides prof Cristovao Cunha.


Carregar ppt "Introdução a Programação"

Apresentações semelhantes


Anúncios Google