Baixe o app para aproveitar ainda mais
Prévia do material em texto
Linguagem de Programação Níveis Sintaxe Programação x Algoritmos Linguagem C Sites interessantes Linguagens de Programação Sintaxe e Linguagem C Prof. Moacir P. Ponti Jr Prof. Marcelo R. Zorzan Universidade Federal de Viçosa SIN-110 (Programação I) Outubro de 2008 Prof. Moacir P. Ponti Jr Prof. Marcelo R. Zorzan Universidade Federal de Viçosa SIN-110 (Programação I) Linguagens de Programação Linguagem de Programação Níveis Sintaxe Programação x Algoritmos Linguagem C Sites interessantes Sumário 1 Linguagem de Programação 2 Níveis Linguagem de Alto Nível 3 Sintaxe 4 Programação x Algoritmos 5 Linguagem C 6 Sites interessantes Prof. Moacir P. Ponti Jr Prof. Marcelo R. Zorzan Universidade Federal de Viçosa SIN-110 (Programação I) Linguagens de Programação Linguagem de Programação Níveis Sintaxe Programação x Algoritmos Linguagem C Sites interessantes Introdução Introdução O que é Método padronizado para expressar instruções para um computador. Do que é composta Conjunto de regras sintáticas e semânticas usadas para definir um programa de computador. Os conjuntos de caracteres (tokens), compostos de acordo com essas regras, constituem o código fonte. Prof. Moacir P. Ponti Jr Prof. Marcelo R. Zorzan Universidade Federal de Viçosa SIN-110 (Programação I) Linguagens de Programação Linguagem de Programação Níveis Sintaxe Programação x Algoritmos Linguagem C Sites interessantes Introdução Introdução O que é Método padronizado para expressar instruções para um computador. Do que é composta Conjunto de regras sintáticas e semânticas usadas para definir um programa de computador. Os conjuntos de caracteres (tokens), compostos de acordo com essas regras, constituem o código fonte. Prof. Moacir P. Ponti Jr Prof. Marcelo R. Zorzan Universidade Federal de Viçosa SIN-110 (Programação I) Linguagens de Programação Linguagem de Programação Níveis Sintaxe Programação x Algoritmos Linguagem C Sites interessantes Introdução Exemplos Linguagens não-proprietárias usadas atualmente Assembly, C, C++, Java, Pascal, Perl, Python, Ruby, PHP Linguagens proprietárias usadas atualmente C#, J#, Delphi, VB.NET, Cobol Prof. Moacir P. Ponti Jr Prof. Marcelo R. Zorzan Universidade Federal de Viçosa SIN-110 (Programação I) Linguagens de Programação Linguagem de Programação Níveis Sintaxe Programação x Algoritmos Linguagem C Sites interessantes Introdução Programação de Computadores Sistema Computacional Hardware Software Software de Sistema (Sistema Operacional) Software Utilitário Software Aplicativo Prof. Moacir P. Ponti Jr Prof. Marcelo R. Zorzan Universidade Federal de Viçosa SIN-110 (Programação I) Linguagens de Programação Linguagem de Programação Níveis Sintaxe Programação x Algoritmos Linguagem C Sites interessantes Níveis de Linguagens de Programação Linguagem de Máquina Sistema Binário Linguagem Hexadecimal Prof. Moacir P. Ponti Jr Prof. Marcelo R. Zorzan Universidade Federal de Viçosa SIN-110 (Programação I) Linguagens de Programação Linguagem de Programação Níveis Sintaxe Programação x Algoritmos Linguagem C Sites interessantes Linguagem Assembly Linguagem de Máquina É difícil escrever Solução: uso de mnemônicos (em substituição aos números) Linguagem Assembly (Montagem) Versão legível da linguagem de máquina Facilitou por usar nomes descritivos para as posições da memória Mnemônicos (comandos) representam códigos de operação A programação necessita de conhecimento do hardware Prof. Moacir P. Ponti Jr Prof. Marcelo R. Zorzan Universidade Federal de Viçosa SIN-110 (Programação I) Linguagens de Programação Linguagem de Programação Níveis Sintaxe Programação x Algoritmos Linguagem C Sites interessantes Linguagem Assembly Exemplo MOV R1, R2 � move o conteúdo de R2 para R1 ADD R1, R2 � adiciona R2 ao R1 e armazena o valor em R1 Transformação da Linguagem Passagem de Linguagem Assembly para Linguagem de Máquina: montagem O programa que realiza esta operação é chamado montador. Prof. Moacir P. Ponti Jr Prof. Marcelo R. Zorzan Universidade Federal de Viçosa SIN-110 (Programação I) Linguagens de Programação Linguagem de Programação Níveis Sintaxe Programação x Algoritmos Linguagem C Sites interessantes Linguagem Assembly Características Acesso direto à maquina (otimização da programação). Pode ser até 300% mais rápido que um programa em linguagem de mais alto-nível. Necessidade de detalhamento e conhecimento da máquina Dificuldade de leitura (deve ser bem documentado) Aplicações Sistemas com respostas em tempo real Otimização de subtarefas da programação de alto nível Prof. Moacir P. Ponti Jr Prof. Marcelo R. Zorzan Universidade Federal de Viçosa SIN-110 (Programação I) Linguagens de Programação Linguagem de Programação Níveis Sintaxe Programação x Algoritmos Linguagem C Sites interessantes Linguagem de Alto Nível Linguagem de Alto Nível Características Sintaxe mais próxima à linguagem natural (read, write, etc.) Permite manipulação de dados em diversas formas (números, listas, matrizes, etc.) Exemplos Fortran, Cobol, Pascal Java, C/C++ Python, Ruby Prof. Moacir P. Ponti Jr Prof. Marcelo R. Zorzan Universidade Federal de Viçosa SIN-110 (Programação I) Linguagens de Programação Linguagem de Programação Níveis Sintaxe Programação x Algoritmos Linguagem C Sites interessantes Linguagem de Alto Nível Linguagem de Alto Nível Características Programação independente das máquinas � uso de compiladores em cada sistema Portabilidade é comum nas linguagens de alto nível, mas podem haver variações Padronização Padrões para as linguagens: institutos ANSI e ISO Prof. Moacir P. Ponti Jr Prof. Marcelo R. Zorzan Universidade Federal de Viçosa SIN-110 (Programação I) Linguagens de Programação Linguagem de Programação Níveis Sintaxe Programação x Algoritmos Linguagem C Sites interessantes Sintaxe e Características Sintaxe de uma Linguagem de Programação Conjunto de regras que uma sequência de caracteres em um código fonte deverá seguir para ser considerada correta Cada conjunto de caracteres (token) deve estar em ordem adequada Exemplo: quando um operador binário é encontrado, deverão existir dois operandos para que possa estar na forma correta: ex.: b + 5, caso contrário, será considerado incorreto: ex: 5 + ou b + Prof. Moacir P. Ponti Jr Prof. Marcelo R. Zorzan Universidade Federal de Viçosa SIN-110 (Programação I) Linguagens de Programação Linguagem de Programação Níveis Sintaxe Programação x Algoritmos Linguagem C Sites interessantes Sintaxe e Características Características da Linguagem Palavras reservadas Conjunto de caracteres usados pela linguagem e que não podem ser usados como identificadores Exemplos (C/C++ e Java): while, if, for Case Sensitive Termo usado para definir que uma linguagem faz diferença entre letras maiúsculas e minúsculas (sensível à caixa) Exemplos (C/C++ e Java): o identificador Nome é diferente de nome e NOME Prof. Moacir P. Ponti Jr Prof. Marcelo R. Zorzan Universidade Federal de Viçosa SIN-110 (Programação I) Linguagens de Programação Linguagem de Programação Níveis Sintaxe Programação x Algoritmos Linguagem C Sites interessantes Sintaxe e Características Características da Linguagem Palavras reservadas Conjunto de caracteres usados pela linguagem e que não podem ser usados como identificadores Exemplos (C/C++ e Java): while, if, for Case Sensitive Termo usado para definir que uma linguagem faz diferença entre letras maiúsculas e minúsculas (sensível à caixa) Exemplos (C/C++ e Java): o identificador Nome é diferente de nome e NOME Prof. Moacir P. Ponti JrProf. Marcelo R. Zorzan Universidade Federal de Viçosa SIN-110 (Programação I) Linguagens de Programação Linguagem de Programação Níveis Sintaxe Programação x Algoritmos Linguagem C Sites interessantes Sintaxe e Características Hello, world! Exemplo �mínimo� de uma linguagem de programação Código que imprime na tela �Hello, world!� C #include <stdio.h> int main(void) { printf("Hello, world!\n"); return 0; } Prof. Moacir P. Ponti Jr Prof. Marcelo R. Zorzan Universidade Federal de Viçosa SIN-110 (Programação I) Linguagens de Programação Linguagem de Programação Níveis Sintaxe Programação x Algoritmos Linguagem C Sites interessantes Sintaxe e Características Hello, world! Exemplo �mínimo� de uma linguagem de programação Código que imprime na tela �Hello, world!� C #include <stdio.h> int main(void) { printf("Hello, world!\n"); return 0; } Prof. Moacir P. Ponti Jr Prof. Marcelo R. Zorzan Universidade Federal de Viçosa SIN-110 (Programação I) Linguagens de Programação Linguagem de Programação Níveis Sintaxe Programação x Algoritmos Linguagem C Sites interessantes Sintaxe e Características Hello, world! Java public class Hello { public static void main(String[] args) { System.out.println("Hello, world!"); } } Prof. Moacir P. Ponti Jr Prof. Marcelo R. Zorzan Universidade Federal de Viçosa SIN-110 (Programação I) Linguagens de Programação Linguagem de Programação Níveis Sintaxe Programação x Algoritmos Linguagem C Sites interessantes Programação de Computadores x Algoritmos Programa de Computador Every computer program is a model, hatched in the mind, of a real or mental process. (ABELSON et al., 1985) Implementação A implementação das lógicas, elaboradas e representadas em um algoritmo, é realizada sobre o computador, por meio da transcrição do algoritmo para uma linguagem de programação, que possibilitará a compreensão e execução das instruções pelo computador. Prof. Moacir P. Ponti Jr Prof. Marcelo R. Zorzan Universidade Federal de Viçosa SIN-110 (Programação I) Linguagens de Programação Linguagem de Programação Níveis Sintaxe Programação x Algoritmos Linguagem C Sites interessantes Programação de Computadores x Algoritmos Método Sistemático Análise: estuda-se o problema, buscando a sua completa compreensão, Projeto: aplica métodos e técnicas que possibilitem a descrição necessária do problema com suas possíveis soluções, Codificação: implementação do projeto do programa, escrito em uma linguagem de programação, Teste: simulações, testes e verificações dos programa são analisados, podendo resultar em alterações no código elaborado. Prof. Moacir P. Ponti Jr Prof. Marcelo R. Zorzan Universidade Federal de Viçosa SIN-110 (Programação I) Linguagens de Programação Linguagem de Programação Níveis Sintaxe Programação x Algoritmos Linguagem C Sites interessantes Programação de Computadores x Algoritmos Linguagem de Programação Computer language is not just a way of getting a computer to perform operations but rather that it is a novel formal medium for expressing ideas about methodology. Thus, programs must be written for people to read, and only incidentally for machines to execute. (ABELSON et al., 1985) Código Qualquer tolo consegue escrever código que um computador entenda. Bons programadores escrevem código que humanos possam entender. (FOWLER, 2004) Prof. Moacir P. Ponti Jr Prof. Marcelo R. Zorzan Universidade Federal de Viçosa SIN-110 (Programação I) Linguagens de Programação Linguagem de Programação Níveis Sintaxe Programação x Algoritmos Linguagem C Sites interessantes Histórico, Aplicações e Sintaxe Linguagem C Criação AT& T Bell Labs � 1969 a 1973 Ken Thompson e Dennis Ritchie Nome �C� � derivado de uma linguagem anterior �B� Desenvolvimento ligado ao sistema operacional Unix (kernel escrito em C) Primeiro livro publicado em 1978 por Dennis Ritchie e Brian Kernighan (C - The Programming Language) gerou a versão conhecida como K&R C Prof. Moacir P. Ponti Jr Prof. Marcelo R. Zorzan Universidade Federal de Viçosa SIN-110 (Programação I) Linguagens de Programação Linguagem de Programação Níveis Sintaxe Programação x Algoritmos Linguagem C Sites interessantes Histórico, Aplicações e Sintaxe Histórico Figura: Ken Thompson e Dennis Ritchie Prof. Moacir P. Ponti Jr Prof. Marcelo R. Zorzan Universidade Federal de Viçosa SIN-110 (Programação I) Linguagens de Programação Linguagem de Programação Níveis Sintaxe Programação x Algoritmos Linguagem C Sites interessantes Histórico, Aplicações e Sintaxe Histórico Figura: Ken Thompson e Dennis Ritchie em um computador PDP-11 (por volta de 1972) Prof. Moacir P. Ponti Jr Prof. Marcelo R. Zorzan Universidade Federal de Viçosa SIN-110 (Programação I) Linguagens de Programação Linguagem de Programação Níveis Sintaxe Programação x Algoritmos Linguagem C Sites interessantes Histórico, Aplicações e Sintaxe Características Nivel �Médio� É possível realizar operações mais próximas ao hardware Diversos drivers e sistemas operacionais são escritos em C Bibliotecas padronizadas com funcionalidades Entrada e saída Funções matemáticas Acesso a direto à memória por meio de ponteiros Prof. Moacir P. Ponti Jr Prof. Marcelo R. Zorzan Universidade Federal de Viçosa SIN-110 (Programação I) Linguagens de Programação Linguagem de Programação Níveis Sintaxe Programação x Algoritmos Linguagem C Sites interessantes Histórico, Aplicações e Sintaxe Aplicações Abre aspas �Comparing C to Pascal is rather like comparing a Learjet to a Pipercub - one is meant for getting something done while the other is meant for learning � (Kerninghan) Figura: Pipercube e Learjet Prof. Moacir P. Ponti Jr Prof. Marcelo R. Zorzan Universidade Federal de Viçosa SIN-110 (Programação I) Linguagens de Programação Linguagem de Programação Níveis Sintaxe Programação x Algoritmos Linguagem C Sites interessantes Histórico, Aplicações e Sintaxe Sintaxe Linguagem Imperativa Uso livre de comentários e linhas em branco Uso obrigatório de ponto-e-vírgula no final de cada linha Uso de comandos para especificar ações Elementos de linguagem estruturada e procedural Prof. Moacir P. Ponti Jr Prof. Marcelo R. Zorzan Universidade Federal de Viçosa SIN-110 (Programação I) Linguagens de Programação Linguagem de Programação Níveis Sintaxe Programação x Algoritmos Linguagem C Sites interessantes Histórico, Aplicações e Sintaxe Sintaxe Gerenciamento de memória Alocação estática: espaço reservado em tempo de compilação Alocação automática: objetos temporários podem ser alocados e liberados quando não mais necessários Alocação dinâmica: blocos de memória de tamanho arbitrário requeridos em tempo de execução e controlados de forma manual Prof. Moacir P. Ponti Jr Prof. Marcelo R. Zorzan Universidade Federal de Viçosa SIN-110 (Programação I) Linguagens de Programação Linguagem de Programação Níveis Sintaxe Programação x Algoritmos Linguagem C Sites interessantes Histórico, Aplicações e Sintaxe Versões K&R C Biblioteca de entrada e saída padrão (stdio) Novos tipos de dados Resolução de problemas de ambiguidade ANSI/ISO C (C89) Inclusão de recursos antes não oficiais Compatibilidade com C++ A maioria dos compiladores atuais é baseado nesta versão Prof. Moacir P. Ponti Jr Prof. Marcelo R. Zorzan Universidade Federal de Viçosa SIN-110 (Programação I) Linguagens de Programação Linguagem de Programação Níveis Sintaxe Programação x Algoritmos Linguagem C Sites interessantes Histórico, Aplicações e Sintaxe Versões C99 C++ continuou evoluindo após 1989 Corrigidos alguns detalhes Extendido suportea conjuntos de caracteres internacionais Incluiu recursos da linguagem C++ (tipos de dados, macros, comentários, etc.) Em 2007 foi iniciada nova revisão da linguagem C Prof. Moacir P. Ponti Jr Prof. Marcelo R. Zorzan Universidade Federal de Viçosa SIN-110 (Programação I) Linguagens de Programação Linguagem de Programação Níveis Sintaxe Programação x Algoritmos Linguagem C Sites interessantes Histórico, Aplicações e Sintaxe Sintaxe Básica Main é o programa principal, executado no início do programa Ponto-e-vírgula indicam fim de uma linha Chaves indicam início e fim de blocos (seja para programas, funções, estruturas de decisão ou de repetição) Hello, world! #include <stdio.h> // biblioteca int main(void) { // definição do programa principal printf("Hello, world!\n"); // escreve e vai para próxima linha return 0; // finaliza o programa principal } Prof. Moacir P. Ponti Jr Prof. Marcelo R. Zorzan Universidade Federal de Viçosa SIN-110 (Programação I) Linguagens de Programação Linguagem de Programação Níveis Sintaxe Programação x Algoritmos Linguagem C Sites interessantes Histórico, Aplicações e Sintaxe Sintaxe Básica Main é o programa principal, executado no início do programa Ponto-e-vírgula indicam fim de uma linha Chaves indicam início e fim de blocos (seja para programas, funções, estruturas de decisão ou de repetição) Hello, world! #include <stdio.h> // biblioteca int main(void) { // definição do programa principal printf("Hello, world!\n"); // escreve e vai para próxima linha return 0; // finaliza o programa principal } Prof. Moacir P. Ponti Jr Prof. Marcelo R. Zorzan Universidade Federal de Viçosa SIN-110 (Programação I) Linguagens de Programação Linguagem de Programação Níveis Sintaxe Programação x Algoritmos Linguagem C Sites interessantes Histórico, Aplicações e Sintaxe Elementos sintaxe do programa em C A função main() é a função principal e deve constar em qualquer programa C Toda função retorna um valor (neste caso int) A palavra void indica ausência de tipo e informação. Neste caso quer dizer que a função principal não requer nenhuma informação para executar. Prof. Moacir P. Ponti Jr Prof. Marcelo R. Zorzan Universidade Federal de Viçosa SIN-110 (Programação I) Linguagens de Programação Linguagem de Programação Níveis Sintaxe Programação x Algoritmos Linguagem C Sites interessantes Histórico, Aplicações e Sintaxe Palavras Reservadas São utilizadas pela linguagem e não podem jamais serem usadas como identificadores Lista de Palavras Reservadas (32) if break case char const continue default do else while for float goto double extern auto int return long short signed sizeof register static void switch union enum volatile unsigned typedef struct Prof. Moacir P. Ponti Jr Prof. Marcelo R. Zorzan Universidade Federal de Viçosa SIN-110 (Programação I) Linguagens de Programação Linguagem de Programação Níveis Sintaxe Programação x Algoritmos Linguagem C Sites interessantes Histórico, Aplicações e Sintaxe Geração de Código Fonte � Codificação Codificação: escrita usando uma linguagem de programação Uso de um editor como ferramenta para codificar É gerado o Código-fonte Prof. Moacir P. Ponti Jr Prof. Marcelo R. Zorzan Universidade Federal de Viçosa SIN-110 (Programação I) Linguagens de Programação Linguagem de Programação Níveis Sintaxe Programação x Algoritmos Linguagem C Sites interessantes Histórico, Aplicações e Sintaxe Tradução do Código Fonte � Compilação Código fonte não é executável diretamente pelo processador Tradução do código fonte para linguagem de máquina: Montadores (geração de linguagem de montagem) Compiladores (geração do código-objeto) Fases da compilação: Análise léxica Análise sintática Geração de código Prof. Moacir P. Ponti Jr Prof. Marcelo R. Zorzan Universidade Federal de Viçosa SIN-110 (Programação I) Linguagens de Programação Linguagem de Programação Níveis Sintaxe Programação x Algoritmos Linguagem C Sites interessantes Histórico, Aplicações e Sintaxe Tradução do Código Fonte � Compilação Análise Léxica Identificação de cada cadeia de caracteres Verifica se cada item é válido classificando em: numérica, palavra, ou operador aritmético Análise Sintática Constrói árvores sintáticas para o programa fonte Identifica a estrutura gramatical reconhecendo o papel de cada componente do código Prof. Moacir P. Ponti Jr Prof. Marcelo R. Zorzan Universidade Federal de Viçosa SIN-110 (Programação I) Linguagens de Programação Linguagem de Programação Níveis Sintaxe Programação x Algoritmos Linguagem C Sites interessantes Histórico, Aplicações e Sintaxe Tradução do Código Fonte � Compilação Figura: Árvore sintática para a cadeia x+y*z Prof. Moacir P. Ponti Jr Prof. Marcelo R. Zorzan Universidade Federal de Viçosa SIN-110 (Programação I) Linguagens de Programação Linguagem de Programação Níveis Sintaxe Programação x Algoritmos Linguagem C Sites interessantes Histórico, Aplicações e Sintaxe Gerando um programa C Prof. Moacir P. Ponti Jr Prof. Marcelo R. Zorzan Universidade Federal de Viçosa SIN-110 (Programação I) Linguagens de Programação Linguagem de Programação Níveis Sintaxe Programação x Algoritmos Linguagem C Sites interessantes Histórico, Aplicações e Sintaxe Tipos de Dados Cinco tipos principais char: dados alfanuméricos int: números inteiros float: números reais � aproximadamente 7 dígitos de precisão (4 bytes) double: números reais � aproximadamente 15 dígitos de precisão (8 bytes) void: ausência de tipo, indica que não há dados a serem informados ou retornados Prof. Moacir P. Ponti Jr Prof. Marcelo R. Zorzan Universidade Federal de Viçosa SIN-110 (Programação I) Linguagens de Programação Linguagem de Programação Níveis Sintaxe Programação x Algoritmos Linguagem C Sites interessantes Histórico, Aplicações e Sintaxe Comentários int main(void) { /* comentario de varias linhas */ // comentario de uma linha } Prof. Moacir P. Ponti Jr Prof. Marcelo R. Zorzan Universidade Federal de Viçosa SIN-110 (Programação I) Linguagens de Programação Linguagem de Programação Níveis Sintaxe Programação x Algoritmos Linguagem C Sites interessantes Histórico, Aplicações e Sintaxe Linguagens Relacionadas Direta ou Indiretamente Influenciou: C++ Unix C Shell Java PHP Perl Prof. Moacir P. Ponti Jr Prof. Marcelo R. Zorzan Universidade Federal de Viçosa SIN-110 (Programação I) Linguagens de Programação Linguagem de Programação Níveis Sintaxe Programação x Algoritmos Linguagem C Sites interessantes Sites Interessantes Wikipedia http: //pt.wikipedia.org/wiki/Linguagem_de_programaç~ao http://pt.wikipedia.org/wiki/Programa_Olá_Mundo http://pt.wikipedia.org/wiki/Linguagem_de_ programaç~ao_esotérica Prof. Moacir P. Ponti Jr Prof. Marcelo R. Zorzan Universidade Federal de Viçosa SIN-110 (Programação I) Linguagens de Programação Linguagem de Programação Níveis Linguagem de Alto Nível Sintaxe Programação x Algoritmos Linguagem C Sites interessantes
Compartilhar