Programação de Computadores III Aula 1 Professor Leandro Augusto Frata Fernandes [email protected] Material disponível em http://www.ic.uff.br/~laffernandes/teaching/2011.1/tcc-03.063 Roteiro da Aula de Hoje • Parte I Apresentação da Disciplina • Parte II Introdução a Linguagens de Programação TCC-03.063 Programação de Computadores III (2011.1) 2 1 Parte I A Apresentação d da Di Disciplina i li TCC-03.063 Programação de Computadores III (2011.1) 3 Objetivos • Ensinar noções básicas Construção de algoritmos estruturados Programação de computadores • Ensinar a linguagem de programação FORTRAN FORmula TRANslation Criado pela IBM nos anos 50 Linguagem mais antiga utilizada na engenharia FORTRAN 77 é a versão mais utilizada até hoje TCC-03.063 Programação de Computadores III (2011.1) 4 2 Bibliografia Recomendada • FARRER, H. et al. FORTRAN Estruturado Editora Guanabara Koogan, 1992 • GUIMARÃES, A.M.; LAGES, N.A.C. Algoritmos e Estruturas de Dados Editora LTC, 1994 • CRISTO, H.P. Programação em Linguagem FORTRAN Belo Horizonte, 2003 TCC-03.063 Programação de Computadores III (2011.1) 5 Avaliação • Duas provas escritas (A1 e A2) Prova escrita Individual Sem consulta • Projeto final (A3) Implementação, Implementação relatório e apresentação Em grupo • Média: (A1 + A2 + A3) / 3 TCC-03.063 Programação de Computadores III (2011.1) 6 3 Avaliação Aprovado • Freqüência >= 75% Reprovado • Freqüência < 75% • • • Média >= 6,0 Verificação Suplementar • • • Média < 4,0 Nota < 6,0 na Verificação Suplementar Freqüência >= 75% 4,0 <= Média < 6,0 Aprovado se nota >= 6,0 TCC-03.063 Programação de Computadores III (2011.1) 7 Presença • • Cobrada por meio de lista de chamada Regulamento dos cursos de graduação Presença mínima necessária de 75% das aulas previstas (Art. 83, § 15) Em um total de 34 aulas, são toleradas até 8 faltas Nenhuma falta é abonada, exceto casos citados no Art. 83, § 16 TCC-00.181 Interface Homem/Máquina (2011.1) 4 Projeto Final • • Grupos de até três integrantes Nota composta por (Apresentação + Relatório + Implementação + Participação) / 4 • Participação Cada integrante avalia os colegas de seu grupo Participação em sala também é levado em conta Seja pró-ativo desde o início • “Multa” de um ponto por dia de atraso na entrega TCC-03.063 Programação de Computadores III (2011.1) 9 Informações Atualizadas • Lista de discussão http://groups.google.com/group/uff_tcc03063_2011-1 Todos os alunos devem se cadastrar nessa lista! • Página da disciplina http://www ic uff br/ laffernandes/teaching/2011 1/tcc 03 063 http://www.ic.uff.br/~laffernandes/teaching/2011.1/tcc-03.063 TCC-03.063 Programação de Computadores III (2011.1) 10 5 Parte II I Introdução d a Linguagens de Programação TCC-03.063 Programação de Computadores III (2011.1) Seis Camadas 11 Problema para Resolver Projeto Algoritmo Linguagem de Programação Software Aplicativo (Programa) Sistema Operacional Arquitetura TCC-03.063 Programação de Computadores III (2011.1) Hardware 12 6 O que é dado? • • Dado é o elemento a ser processado Tipos de dados Numérico o 42 (quarenta e dois), 3,14159265... (π), 10100 (um googol), etc. Alfabéticos o Letras (A-Z) (A Z) Alfanuméricos o Números, letras, caracteres especiais ({, >, +, #) TCC-03.063 Programação de Computadores III (2011.1) 13 Processamento de Dados • É o processo de receber dados, manipulá-los e produzir p odu novos o os dados ou resultados esu tados Dados Iniciais Processamento Entrada Saída Dados Finais (Resultados Finais) Transformações • Exemplos de processamento manual Procurar um número telefônico na lista telefônica e anotá-lo numa caderneta Somar valores de compra de supermercado TCC-03.063 Programação de Computadores III (2011.1) 14 7 Computador • Máquina que processa dados Menos tempo Maior segurança contra erro humano • Funções básicas do computador Entrada de dados “A computer lets make more mistakes faster Processamento de you dados than any invention in human history - with the possible exceptions Saída de informações of handguns and tequila.” Mitch Ratcliffe Armazenamento de informações TCC-03.063 Programação de Computadores III (2011.1) 15 Dado x Instrução x Programa • Dado Informação a ser processada Exemplos: Nome do aluno, número de matrícula, notas • Instrução Operação elementar que o computador pode processar sobre os dados Tipos: transferência de dados, E/S, aritmética, comparação, controle da seqüência do programa programa, etc etc. • Programa Conjunto de instruções, organizadas de forma que o computador as execute em determinada ordem TCC-03.063 Programação de Computadores III (2011.1) 16 8 Dado x Instrução x Programa Definição do Problema L i os cinco Leia i números ú lilistados t d abaixo: b i 3, 5, 2, 4 e -13 Dado Calcule o somatório desses números e informe o resultado Programa, escrito, aqui, em uma linguagem de programação hipotética Solução em um Computador Hipotético 1. Iniciar acumulador com 0 (zero) 2. Ler primeiro valor 3. Acumular valor lido 4. Ler segundo valor 5. Acumular valor lido 6. Ler terceiro valor 7. Acumular valor lido 8. Ler quarto valor 9. Acumular valor lido Instrução 10. Ler quinto valor 11. Acumular valor lido 12. Mostrar valor no acumulador TCC-03.063 Programação de Computadores III (2011.1) 17 Linguagens de Programação • • Método padronizado para expressar instruções Conjunto C j t d de regras sintáticas i táti e semânticas â ti para definir d fi i um programa de computador Sintaxe Conjunto de regras formais para a escrita de um programa Semântica Diz respeito ao significado do programa sintaticamente válido TCC-03.063 Programação de Computadores III (2011.1) 18 9 Linguagens de Programação • • Método padronizado para expressar instruções • Permite ao programador especificar Conjunto C j t d de regras sintáticas i táti e semânticas â ti para definir d fi i um programa de computador ... sobre quais dados o computador vai atuar ... como os dados serão armazenados ... como os dados serão transmitidos ... quais ações devem ser tomadas • Exemplos: Pascal, C, Java, FORTRAN, C# TCC-03.063 Programação de Computadores III (2011.1) 19 Gerações de Linguagens de Programação • 1ª Geração – Linguagens de máquina 0010 0001 0110 1100 • 2ª Geração – Linguagens de montagem (Assembly) Baixo Nível ADD R1, TOTAL • 3ª Geração – Linguagens orientadas ao usuário Alto Nível LET SOMA = VAR1 + TOTAL IF SOMA > 3 THEN EXIT • 4ª Geração – Linguagens orientadas à aplicação LIST ALL NOME, ENDERECO, TELEFONE FOR CIDADE = “NITERÓI” • 5ª Geração – Linguagens de conhecimento (IA) TCC-03.063 Programação de Computadores III (2011.1) 20 10 1ª Geração Linguagens de Máquina • Linguagem de máquina escrita em notação binária 0010 0001 0110 1100 Código da operação: adição Endereço do registrador Endereço da posição de memória ó i que contém té o d dado d • Tradução Soma o dado armazenado no registrador 0001 com o dado armazenado na posição de memória 0110 1100 TCC-03.063 Programação de Computadores III (2011.1) 21 2ª Geração Linguagens de Montagem • • Linguagem de baixo nível Elimina a notação binária Introduz o uso de assemblers (montadores) • Usam códigos mnemônicos com letras e números para representar os comandos • Exemplo de comandos LOAD B Carrega no registrador o dado que está no endereço B ADD A Adiciona ao registrador o dado que está no endereço A TCC-03.063 Programação de Computadores III (2011.1) 22 11 3ª Geração Linguagens Orientadas ao Usuário • • Linguagens de alto nível Usam comandos com nomes geralmente auto-explicativos read, write, if, open, etc. • Exemplos de linguagens FORTRAN(1954) Cobol ((1959) 959) Cobo Basic (1965) Pascal (1975) C (1980) TCC-03.063 Programação de Computadores III (2011.1) 23 Exemplo FORTRAN C Primeiro programa de Programacao de Computadores III C Calcula e imprime a soma de dois valores inteiros PROGRAM Soma2Int INTEGER Int1, Int2, Soma Int1 = 5 Int2 = 10 Soma = Int1 + Int2 PRINT* Int1, PRINT*, I t1 ‘+’, ‘ ’ Int2, I t2 ‘=’, ‘ ’ Soma S STOP END TCC-03.063 Programação de Computadores III (2011.1) 24 12 4ª Geração Linguagens Orientadas à Aplicação • • Geram código a partir de expressões de alto nível E Exemplo l d de lilinguagens DBASE, SQL • Exemplo em DBASE List All Nome, Endereco, Telefone For Cidade = “Niterói” • Tradução: lê todos os registros que compõem um arquivo e, para cada registro lido, seleciona aqueles cuja cidade é “Niterói” TCC-03.063 Programação de Computadores III (2011.1) 25 5ª Geração Linguagens de Conhecimento • • Inteligência artificial Princípio São criadas bases de conhecimento, obtidas a partir de especialistas, e as linguagens fazem deduções, inferências e tiram conclusões baseadas no conhecimento armazenado • Exemplos: Prolog, Lisp, Art TCC-03.063 Programação de Computadores III (2011.1) 26 13 Nível das Linguagens de Programação • Alto Nível Capacidade da linguagem em compreender escritas em dialetos próximos do inglês (Ada e Pascal, por exemplo) • Baixo Nível Aproximam-se da linguagem própria da máquina Compostas por instruções binárias e outras incompreensíveis para alguém não treinado • Quanto mais clara para o ser humano (simplicidade maior), mais obscura a linguagem será para a máquina (velocidade menor) TCC-03.063 Programação de Computadores III (2011.1) 27 Nível das Linguagens de Programação Nível Baixo Nível Médio Nível Alto Velocidade Assembler Clareza C Basic COBOL FORTRAN Pascal TCC-03.063 Programação de Computadores III (2011.1) Ada Modula-2 28 14 Montador x Compilador x Interpretador Código Fonte (linguagem de prog.) ... 000101101110010110010 ... ... LET SOMA = VAR1 + TOTAL ... • Código Objeto (executável) Tradutor Montador Tradutor para linguagens de 2ª geração • Compilador Traduz linguagens de alto nível nível, convertendo todo o código fonte em código intermediário ou código objeto • Interpretador Traduz o programa instrução por instrução TCC-03.063 Programação de Computadores III (2011.1) 29 Linguagens de Programação Bizarras • Top 10 Truly Bizarre Programming Languages http://listverse.com/2011/02/17/top-10-truly-bizarre-programming-languages Fonte: Listverse Postado em 17 de fevereiro de 2011 TCC-03.063 Programação de Computadores III (2011.1) 30 15