Transcript
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 Linguagens de Programação
Universidade Federal de Viçosa SIN-110 (Programação I)
Linguagem de Programação
Níveis
Sintaxe
Programação x Algoritmos
Linguagem C
Sites interessantes
Sumário
1 2 3 4 5 6
Linguagem de Programação Níveis Linguagem de Alto Nível Sintaxe Programação x Algoritmos Linguagem C Sites interessantes
Prof. Moacir P. Ponti Jr Prof. Marcelo R. Zorzan Linguagens de Programação
Universidade Federal de Viçosa SIN-110 (Programação I)
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.
Prof. Moacir P. Ponti Jr Prof. Marcelo R. Zorzan Linguagens de Programação
Universidade Federal de Viçosa SIN-110 (Programação I)
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 denir um programa de computador. Os conjuntos de caracteres (tokens ), compostos de acordo com essas regras, constituem o
Prof. Moacir P. Ponti Jr Prof. Marcelo R. Zorzan Linguagens de Programação
código fonte.
Universidade Federal de Viçosa SIN-110 (Programação I)
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 Linguagens de Programação
Universidade Federal de Viçosa SIN-110 (Programação I)
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 Linguagens de Programação
Universidade Federal de Viçosa SIN-110 (Programação I)
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 Linguagens de Programação
Universidade Federal de Viçosa SIN-110 (Programação I)
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 Linguagens de Programação
Universidade Federal de Viçosa SIN-110 (Programação I)
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 Máquina: montagem
para Linguagem de O programa que realiza esta operação é chamado
Prof. Moacir P. Ponti Jr Prof. Marcelo R. Zorzan Linguagens de Programação
.
montador
Universidade Federal de Viçosa SIN-110 (Programação I)
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 Diculdade 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 Linguagens de Programação
Universidade Federal de Viçosa SIN-110 (Programação I)
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 Linguagens de Programação
Universidade Federal de Viçosa SIN-110 (Programação I)
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 Linguagens de Programação
Universidade Federal de Viçosa SIN-110 (Programação I)
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 Linguagens de Programação
Universidade Federal de Viçosa SIN-110 (Programação I)
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 identicadores Exemplos (C/C++ e Java):
Prof. Moacir P. Ponti Jr Prof. Marcelo R. Zorzan Linguagens de Programação
while, if, for
Universidade Federal de Viçosa SIN-110 (Programação I)
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 identicadores Exemplos (C/C++ e Java):
while, if, for
Case Sensitive Termo usado para denir que uma linguagem faz diferença entre letras maiúsculas e minúsculas (sensível à caixa) Exemplos (C/C++ e Java): o identicador de
nome
e
NOME
Prof. Moacir P. Ponti Jr Prof. Marcelo R. Zorzan Linguagens de Programação
Nome
é diferente
Universidade Federal de Viçosa SIN-110 (Programação I)
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!
Prof. Moacir P. Ponti Jr Prof. Marcelo R. Zorzan Linguagens de Programação
Universidade Federal de Viçosa SIN-110 (Programação I)
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 int main(void) { printf("Hello, world!\n"); return 0; }
Prof. Moacir P. Ponti Jr Prof. Marcelo R. Zorzan Linguagens de Programação
Universidade Federal de Viçosa SIN-110 (Programação I)
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 Linguagens de Programação
Universidade Federal de Viçosa SIN-110 (Programação I)
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 Linguagens de Programação
Universidade Federal de Viçosa SIN-110 (Programação I)
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,
Codicação:
implementação do projeto do programa, escrito
em uma linguagem de programação,
Teste:
simulações, testes e vericações dos programa são
analisados, podendo resultar em alterações no código elaborado.
Prof. Moacir P. Ponti Jr Prof. Marcelo R. Zorzan Linguagens de Programação
Universidade Federal de Viçosa SIN-110 (Programação I)
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 Linguagens de Programação
Universidade Federal de Viçosa SIN-110 (Programação I)
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 escrito em
C)
Unix
(kernel
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 Linguagens de Programação
Universidade Federal de Viçosa SIN-110 (Programação I)
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 Linguagens de Programação
Universidade Federal de Viçosa SIN-110 (Programação I)
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 Linguagens de Programação
Universidade Federal de Viçosa SIN-110 (Programação I)
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 Linguagens de Programação
Universidade Federal de Viçosa SIN-110 (Programação I)
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
getting something done for learning (Kerninghan)
Pipercub - one is meant for other is meant
while the
Figura: Pipercube e Learjet Prof. Moacir P. Ponti Jr Prof. Marcelo R. Zorzan Linguagens de Programação
Universidade Federal de Viçosa SIN-110 (Programação I)
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
obrigatório de ponto-e-vírgula no nal de cada linha Uso de comandos para especicar ações Uso
Elementos de linguagem estruturada e procedural
Prof. Moacir P. Ponti Jr Prof. Marcelo R. Zorzan Linguagens de Programação
Universidade Federal de Viçosa SIN-110 (Programação I)
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 tempo de execução e controlados de forma
requeridos em
manual
Prof. Moacir P. Ponti Jr Prof. Marcelo R. Zorzan Linguagens de Programação
Universidade Federal de Viçosa SIN-110 (Programação I)
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
stdio)
Biblioteca de entrada e saída padrão ( Novos tipos de dados
Resolução de problemas de ambiguidade
ANSI/ISO C (C89) Inclusão de recursos antes não ociais Compatibilidade com C++ A maioria dos compiladores atuais é baseado nesta versão
Prof. Moacir P. Ponti Jr Prof. Marcelo R. Zorzan Linguagens de Programação
Universidade Federal de Viçosa SIN-110 (Programação I)
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 suporte a 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 Linguagens de Programação
Universidade Federal de Viçosa SIN-110 (Programação I)
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 m de uma linha
Chaves indicam início e m de blocos (seja para programas, funções, estruturas de decisão ou de repetição)
Prof. Moacir P. Ponti Jr Prof. Marcelo R. Zorzan Linguagens de Programação
Universidade Federal de Viçosa SIN-110 (Programação I)
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 m de uma linha
Chaves indicam início e m de blocos (seja para programas, funções, estruturas de decisão ou de repetição) Hello, world!
#include int main(void) { printf("Hello, world!\n"); return 0; }
Prof. Moacir P. Ponti Jr Prof. Marcelo R. Zorzan Linguagens de Programação
// // // //
biblioteca definição do programa principal escreve e vai para próxima linha finaliza o programa principal
Universidade Federal de Viçosa SIN-110 (Programação I)
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
int) void indica ausência de tipo e informação.
Toda função retorna um valor (neste caso A palavra
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 Linguagens de Programação
Universidade Federal de Viçosa SIN-110 (Programação I)
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 identicadores
Lista de Palavras Reservadas (32) if break case char const else while for oat goto int return long short signed void switch union enum volatile
Prof. Moacir P. Ponti Jr Prof. Marcelo R. Zorzan Linguagens de Programação
continue double sizeof unsigned
default extern register typedef
do auto static struct
Universidade Federal de Viçosa SIN-110 (Programação I)
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 Codicação
Codicação:
escrita usando uma linguagem de programação
Uso de um editor como ferramenta para codicar É gerado o Código-fonte
Prof. Moacir P. Ponti Jr Prof. Marcelo R. Zorzan Linguagens de Programação
Universidade Federal de Viçosa SIN-110 (Programação I)
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 Linguagens de Programação
Universidade Federal de Viçosa SIN-110 (Programação I)
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 Identicação de cada cadeia de caracteres Verica se cada item é válido classicando em: numérica, palavra, ou operador aritmético
Análise Sintática Constrói árvores sintáticas para o programa fonte Identica a estrutura gramatical reconhecendo o papel de cada componente do código
Prof. Moacir P. Ponti Jr Prof. Marcelo R. Zorzan Linguagens de Programação
Universidade Federal de Viçosa SIN-110 (Programação I)
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 Linguagens de Programação
Universidade Federal de Viçosa SIN-110 (Programação I)
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 Linguagens de Programação
Universidade Federal de Viçosa SIN-110 (Programação I)
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 oat: 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 Linguagens de Programação
Universidade Federal de Viçosa SIN-110 (Programação I)
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 Linguagens de Programação
Universidade Federal de Viçosa SIN-110 (Programação I)
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 Inuenciou: C++ Unix C Shell Java PHP Perl
Prof. Moacir P. Ponti Jr Prof. Marcelo R. Zorzan Linguagens de Programação
Universidade Federal de Viçosa SIN-110 (Programação I)
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 Linguagens de Programação
Universidade Federal de Viçosa SIN-110 (Programação I)