SlideShare a Scribd company logo
1 of 22
Download to read offline
1
ESCOLA SECUNDÁRIA DE SANTO ANDRÉ


                  Curso e Turma:
Instalação e Manutenção de Sistemas Informáticos, EFA
                         4S


                     Disciplina:
                 Programação Web


                Nome do Trabalho:
            Linguagens de Programação


                  Nome do Aluno:
  Miguel Marques, Paulo Rosário e Bruno Gonçalves


                Nome do Formador:
                  Guilherme Batista


                 Data do Trabalho:
                     03-12-2009


  2
ÍNDICE

Introdução                                      pág.3

Índice                                          pag.4

Principais conceitos na área da programação C   pág.5

Tipos de Linguagens                             pág.6 a 8

História da Linguagem                           pág. 9 a 11

Objectivos e Características da Linguagem C     pág. 11 a 16

Código Fonte                                    pág. 17

Código Máquina                                  pág. 17 a 18

Software de tradução                            pág. 18

Compilador                                      pág. 18 a 19

Interpretador                                   pág. 20

Conclusão                                       pág. 21

Referencias Bibliográficas                      pág. 22




 3
Introdução


Neste trabalho vai ser feita uma pequena abordagem ao mundo da programação, seus
principais conceitos e os vários tipos de linguagens de programação. Depois ficaremos a
conhecer uma das línguas mais influentes no interior da programação, quais as suas
características e os seus objectivos. Vamos também neste trabalho abordar a definição
de código máquina e código fonte, falaremos também de compiladores e interpretadores
quais as suas funções as suas diferenças.




     4
Principais conceitos na área da programação


Antes de falarmos do que são, de como são constituídas e de como evoluíram, será
apresentada a definição de certos conceitos importantes e que serão varias vezes falados
mais á frente.


Algoritmo
“É uma sequência finita de instruções bem definidas e não ambíguas, sendo que cada
uma pode ser executada mecanicamente num período de tempo finito e com uma
quantidade de esforço finita” Wikipedia


É a forma através da qual resolvemos problemas, é a descrição, de forma lógica, dos
passos que devem ser tomados para ser realizada uma dada tarefa.


Programa
Um programa de computador, ou software, é um conjunto de instruções que descrevem
a forma como uma tarefa que será executada por um computador. Um programa oferece
ao utilizador a possibilidade de realizar uma ou mais tarefas específicas. A programação
será então a ciência que nos permite criar programas.


Linguagens de programação
Assim como outra língua qualquer, as linguagens de programação obedecem a um
conjunto de regras sintácticas e semânticas usadas para definir o programa. É utilizado
um conjunto de códigos composto, por palavras e símbolos, que constituem o código
fonte do programa. Para o processador executar um programa, o código fonte necessita
de ser traduzido para código máquina. Existem vários tipos de linguagens, sendo que
cada uma delas tem características e aplicações diferentes. Toda a linguagem de
programação têm um ambiente de programação, por exemplo bloco de notas do
Windows, e algumas podem ter mais que um ambiente. Podemos classifica-las de
acordo com o paradigma de programação, gerações, quanto ao grau de abstracção e
de acordo com o tipo de estrutura.



     5
Paradigma de Programação


O paradigma é basicamente a ideia central onde se baseia a linguagem, existindo 4
paradigmas:
Paradigma Imperativo – que se baseia em comandos e procedimentos
Ex: Pascal, C e Fortran.
Paradigma Orientado a Objectos - baseado em objectos e classes.
Ex: Java, Simula e Smalltalk.
Paradigma Funcional – que se baseia em funções.
Ex: Haskel, Lisp, ML, Scheme.
Paradigma Lógico - baseado na lógica de predicados, factos e regras.
Ex: Prolog, Life, Mercury


         Diferentes níveis ou graus de abstracção das linguagens


- Linguagens de máquina;
- Linguagens de baixo nível;
- Linguagens de alto nível.


Linguagens de máquina
As linguagens de máquina são linguagens de baixo nível e fornecem ao computador as
operações fundamentais para seu funcionamento. Cada instrução é geralmente formada
por um código de operação e um ou dois endereços de memória. É a única linguagem
compreendida pelo processador, pois utiliza unicamente a notação binária, 0's e 1's ou
On e Off. Apesar de ser mais rápida que a linguagem de alto nível, é bastante mais
difícil de utilizar. A programação de um algoritmo complexo neste tipo de linguagem é
complexa, cansativa e fortemente sujeita a erros, sendo depois quase impossível
encontrar o erro. As linguagens de máquina são dependentes do processador, ou seja,
uma determinada linguagem de máquina só poderá usada por um tipo de computador.
Exemplo de uma pequena porção do código máquina do processador desenhado por
Von Neumman em 1946:
000000101011110010100000001011111100100000000011001110101000



     6
Linguagens de baixo nível
Foram projectadas minimizar as dificuldades da programação em notação binária. São
bastante próximas das linguagens de máquina, mantendo a mesma estrutura e conjunto
de instruções, mas permite que o programador utilize nomes, chamados mnemónicos, e
símbolos em lugar dos 0’s e 1’s. São chamadas de linguagens Assembly ou
montagem. Os programas são executados com maior velocidade de processamento e
ocupam menos espaço na memória. Por outro lado os programas em Assembly tem
pouca portabilidade, o código criado para um tipo processador não serve para outro
diferente, e não são estruturados o que torna a programação mais difícil. Nesta
linguagem a maioria das instruções são representações simbólicas de instruções de
linguagem máquina. O processamento de um programa em linguagem simbólica requer
tradução para linguagem de máquina antes de ele ser executado pelo processador.


Linguagens de alto nível
São as mais próximas à linguagem humana e mais distantes das linguagens de máquina,
o que torna mais fácil a sua compreensão. Utilizam uma sintaxe estruturada que torna o
seu código mais legível e fazem uso de palavras reservadas como READ, WRITE,
TYPE, etc. São precisos compiladores ou interpretadores para gerar instruções do
microprocessador, que permitem, teoricamente, que possa a linguagem possa ser
utilizada em qualquer computador. Os interpretadores fazem a interpretação de cada
instrução do programa fonte e executa-a dentro de um ambiente de programação, por
exemplo Basic e Java. Os compiladores traduzem todas as instruções do programa
fonte gerando um programa executável (*. exe), por exemplo C e Pascal. Em relação ás
linguagens de baixo nível os problemas são resolvidos de forma mais fácil e rápida.


Gerações
1º Geração - Linguagem máquina ou binária e Assembly;


2º Geração – Sistemas de execução em tempo real e desenvolvimento de gestores de
Base de Dados;
Ex: COBOL, BASIC e FORTRAN IV/V.




     7
3º Geração - capacidade procedural e estrutura;
Ex: Pascal, C e SIMULA


4º Geração - sistemas especialistas, desenvolvimento de inteligência artificial e
execução dos programas em paralelo.
Ex: SQL e QBE.


5º Geração – Linguagens de especificação de problemas
E: LISP e PROLOG.




Estrutura de tipos



. Fracamente tipada – Ex: Smalltalk

. Fortemente tipada – ex: Java e Ruby

. Dinamicamente tipada – ex: Perl, Ruby e Python

. Estáticamente tipada - ex: Java e C



Domínios de aplicação



. Cientificas – ALGOL, BASIC e FORTRAN.

. Comerciais – COBOL.




     8
História da Linguagem C


Poder-se ia dizer que o C é uma das maravilhas das linguagens de programação. Muitos
dos programas existentes hoje foram escritos nesta linguagem. O C foi desenvolvido nos
laboratórios na década de 70.Possui as seguintes características; portabilidade entre
máquinas e sistemas operacionais. Dados compostos em forma estruturados, total
interacção tanto com o SO como a máquina e o código compacto e rápido. Nos anos 80,
C era a linguagem mais utilizada por programadores, por permitir a escrita intensiva de
todas as características das linguagens anteriores. O Próprio UNIX e Linux foram
escritos em C, assim como o front end do MS-DOS, Windows e as aplicações Office
mais usadas no mundo (OpenOffice.org, Microsoft Office, embora cada uma delas
incluir as suas próprias linguagens de script), sendo também utilizada em aplicações
gráficas e criação de efeitos especiais nos filmes Strar Trek e Star Wars.E as vantagens
de programas extremamente rápidos e pequenos, desvantagens é o tempo de
desenvolvimento lento e sujeito a erros.




      Kenneth Thompson (à esquerda) e Dennis Ritchie (à direita), os criadores da linguagem C.

O desenvolvimento inicial da linguagem C ocorreu nos laboratórios Bell da AT&T
entre 1969 e 1973. Segundo Ritchie, o periodo mais criativo ocorreu em 1972. Deu-se o
nome C à linguagem porque muitas das suas características derivaram de uma
linguagem de programação anterior chamada B. Há vários relatos que se referem à
origem do nome B: Ken Thompson dá crédito à linguagem de programação BCPL, mas
ele também criou uma outra linguagem de programação chamada Bon, em honra da sua
mulher Bonnie. Por volta de 1973, a linguagem C tinha se tornado suficientemente
poderosa para que grande parte do núcleo de UNIX, originalmente escrito na linguagem
de programação, fosse reescrito em C. Este foi um dos primeiros núcleos de sistema
operativo que foi implementado numa linguagem sem ser o Assembly, sendo exemplos

     9
anteriores do sistema. Em 1978, Ritchie e Kernighan publicaram a primeira edição do
livro The C Programming Language. Esse livro, conhecido pelos programadores de C
como "K&R", serviu durante muitos anos como uma especificação informal da
linguagem. A versão da linguagem C que ele descreve é usualmente referida como "C
de K&R". (A segunda edição do livro cobre o posterior padrão ANSI C, descrito
abaixo.) K&R introduziram as seguintes características na linguagem:

        Tipos de dados struct
        Tipos de dados long int
        Tipos de dados unsigned int
        O operador =+ foi alterado para +=, e assim sucessivamente (a análise léxico do
        compilador confundia o operador =+. Por exemplo, i =+ 10 e i = +10).



C de K&R é frequentemente considerado a parte mais básica da linguagem cujo suporte
deve ser assegurado por um compilador C. Durante muitos anos, mesmo após a
introdução do padrão C ANSI, ele era considerado o "menor denominador comum" em
que programadores de C se apoiavam quando uma portabilidade máxima era desejada,
já que nem todos os compiladores eram actualizados para suportar na íntegra o padrão C
ANSI, e o código C de K&R razoavelmente bem escrito é também válido em relação ao
C ANSI.Nos anos que se seguiram à publicação do C K&R, algumas características
"não-oficiais" foram adicionadas à linguagem, suportadas por compiladores da AT&T e
de outros vendedores.

        Funções void e tipos de dados void
        Funções que retornam tipos struct ou union
        Campos de nome struct num espaço de nome separado para cada tipo struct
        Atribuição a tipos de dados struct
        Qualificadores const para criar um objecto só de leitura
        Uma biblioteca-padrão que incorpora grande parte da funcionalidade
        implementada por vários vendedores
        Enumerações
        O tipo de ponto-flutuante de precisão simples




   10
Durante os finais da década de 1970, a linguagem C começou a substituir a linguagem
BASIC como a linguagem de programação de microcomputadores mais usada. Durante
a década de 1980, foi adoptada para uso no PC IBM, e a sua popularidade começou a
aumentar significativamente. Ao mesmo tempo, Bjarne Stroustrup, juntamente com
outros nos laboratórios Bell, começou a trabalhar num projecto onde se adicionavam
construções de linguagens de programação orientada por objectos à linguagem C. A
linguagem que eles produziram, chamada C++, é nos dias de hoje a linguagem de
programação de aplicações mais comum no sistema operativo Windows da companhia
Microsoft; C permanece mais popular no mundo UNIX.




                Objectivos e características da Linguagem C

A linguagem C surgiu com o objectivo de facilitar a criação de programas mais extensos
e com um menor número de erros apelando ao paradigma da programação algorítmica,
sobrecarregando menos o autor do compilador, visto as características desta linguagem
serem complicadas.

Dentro da linguagem C temos as seguintes características:


. É uma linguagem nuclear extremamente simples, com funcionalidades não essenciais
tais como as funções matemáticas ou manuseamento de ficheiros (arquivos), fornecida
por um conjunto de bibliotecas de rotinas padronizadas;


. A sua focalização no paradigma de programação procedimento;
. Têm um sistema de tipos simples que evita várias operações que não fazem sentido;
. O Uso de uma linguagem de pré-processamento, o pré-processador de C, para tarefas
tais como a definição de macros e a inclusão de múltiplos ficheiros de código fonte;


. Ponteiros dão maior flexibilidade à linguagem;


   11
. Acesso de baixo nível através de inclusões de código Assembly no meio do programa
C;


. Parâmetros que são sempre passados por valor para as funções e nunca por referência
(É possível simular a passagem por referências com o uso de ponteiros);


. Definição do alcance lexical de variáveis;
Estruturas de variáveis, (structs), que permitem que dados relacionados sejam
combinados e manipulados como um todo.

Apesar das suas características atrás descritas, faltam a linguagem C outras que se
podem encontrar em outras linguagens, como por exemplo:


. Segurança de tipo;
. Colector de lixo (mais comum em linguagens interpretadas);
. Vectores que crescem automaticamente;
. Classes ou objectos com comportamento;
. Closures;
. Funções aninhadas;
. Programação genérica;
. Sobrecarga de operadores;
. Meta-programação;
. Apoio nativo de multithreading e comunicação por rede
     12
O conceito de Variáveis

As variáveis no C podem ter qualquer nome se duas condições forem satisfeitas: o nome
deve começar com uma letra ou sublinhado (_) e os caracteres subsequentes devem ser
letras, números ou sublinhado (_). Há apenas mais duas restrições: o nome de uma
variável não pode ser igual a uma palavra reservada, nem igual ao nome de uma função
declarada pelo programador, ou pelas bibliotecas do C. Variáveis de até 32 caracteres
são aceitas. Mais uma coisa: é bom sempre lembrar que o C é "case sensitive" e
portanto deve-se prestar atenção às maiúsculas e minúsculas.
É uma prática tradicional do C, usar letras minúsculas para nomes de variáveis e
maiúsculas para nomes de constantes. Isto facilita na hora da leitura do código; Quando
se escreve código usando nomes de variáveis em português, evita-se possíveis conflitos
com nomes de rotinas encontrados nas diversas bibliotecas, que são em sua maioria
absoluta, palavras em inglês.
Os Tipos do C
O C tem 5 tipos básicos: char, int, float, void, double.O double é o ponto flutuante
duplo e pode ser visto como um ponto flutuante com muito mais precisão. O void é o
tipo vazio, ou um "tipo sem tipo".
Constantes

Constantes são valores que são mantidos fixos pelo compilador. Já usamos constantes
neste curso. São consideradas constantes, por exemplo, os números e caracteres como
45.65 ou 'n', etc.
- Constantes dos tipos básicos
Abaixo vemos as constantes relativas aos tipos básicos do C:
Exemplos de Constantes
char 'b' 'n' '0'

int 2 32000 -130

long int 100000 -467

short int 100 -30

unsigned int 50000 35678

float 0.0 23.7 -12.3e-10

double 12546354334.0 -0.0000034236556


    13
As estruturas de controlo de fluxo são fundamentais para qualquer linguagem de
programação. Sem elas só haveria uma maneira do programa ser executado: de cima
para baixo comando por comando. Não haveria condições, repetições ou saltos. A
linguagem C possui diversos comandos de controlo de fluxo. É possível resolver todos
os problemas sem utilizar todas elas, mas devemos nos lembrar que a elegância e
facilidade de entendimento de um programa dependem do uso correcto das estruturas no
local certo.
O Comando if, comando else, comando switch, comando for, comando while,
comando break, comando continue, comando goto.


Um exemplo:


#include <stdio.h>
int main ()
{
int num;
printf ("Digite um numero: ");
scanf ("%d",&num);
if (num>10)
printf ("nnO numero e maior que 10");
else if (num==10)
{
printf ("nnVoce acertou!n");
printf ("O numero e igual a 10.");
}
else if (num<10)
printf ("nnO numero e menor que 10");
return(0);
}

Software para linguagem C




    14
"IDE para programação de executáveis Win32, console ou GUI na linguagem C/C++."

Por existirem várias linguagens de programação disponíveis no mercado, cada uma
delas tinha de possuir pontos onde se especializavam mais para conseguir cativar o
interesse dos programadores.

Dentro da maioria das linguagens os seus objectivos a atingir são:


. COBOL- Processamento de Registos

. PASCAL- Ensino de Técnicas de Programação

. FORTRAN- Cálculo Científico

. LISP e PROLOG- Vocacionam para áreas de Inteligência Artificial
Já na linguagem C não existe nenhuma área de destino em particular, habitualmente se
denomina por General Purpose, esta é uma das vantagens, pois tem a capacidade de
adaptar qualquer desenvolvimento num projecto, como sistemas operativos, interfaces
gráficas, processamento de registos, ect. A linguagem C é utilizada também para
escrever compiladores de outras linguagens, é uma linguagem extraordinariamente
robusta e maleável.

    Rapidez – consegue atingir performance semelhante á do Assembly, usando
instruções de alto nível, isto é instruções semelhantes há linguagem PASCAL ou
COBOL, mesmo para aceder a mecanismos de mais baixo nível, como o de
endereçamento ou manipulação de Bits.
    Simples – de sintaxe extremamente simples e o número de palavras reservadas,
tipos de dados básicos e operadores é reduzido, fazendo diminuir a quantidade de tempo
e esforço necessário à aprendizagem da linguagem.
    Portável – existente um standard (ANSI) que define características de qualquer
compilado, deste modo o código escrito numa máquina, pode ser então transportado
para outra máquina e compilado sem qualquer alteração, (ou com um numero reduzido).

   15
Popular – é conhecida internacionalmente e utilizada, esta porem muito bem
documentada em livros, revistas de especialidade, manuais, etc. Existe compiladores
para qualquer tipo de arquitecturas e computadores.
    Modular – permite o desenvolvimento modular em aplicações, facilitando a
separação de projectos em módulos distintos, independentes, recorrendo à utilização de
funções específicas de cada módulo.
    Alto Nível – há a possibilidade de manipular a memória directamente, utilizando o
endereço de qualquer objecto (seja variável ou função), manipulando directamente a
memória sem ter qualquer restrição o que aumenta a flexibilidade da linguagem.
    Livrarias muito poderosas – tem um número reduzido de palavras-chave, o que
indica que as suas capacidades são limitadas na realidade. A maior parte das
funcionalidades da linguagem são-lhe adicionadas pela sua utilização de funções
existentes em livrarias adicionais e realizam todo o tipo de tarefas, deste a escrita no
ecrã ate ao seu processamento de strings, etc.
    Macros – Utilizada no desenvolvimento de aplicações, reduzindo assim a
necessidade de escrita de funções distintas na realização do mesmo processamento, em
todos os tipos de dados. As Macros permitem aumentar a velocidade de execução sem
este ter que aumentar a complexidade de escrita do código.
    Focus – Permite ao programador a escrita do código, como pretender, no qual o
programa pode ser escrito numa só linha e dividido em inúmeras linhas. Apenas tem de
se preocupar com objectivo e a correcção da aplicação que está a desenvolver, do modo
a que no final o resultado seja o desejado, n é necessário formatar o código a partir da
coluna X e os dados a partir da coluna Y como acontece com outras linguagens.
Evolução – A evolução das linguagens, fez que também o C evoluísse no sentido da
Linguagens Orientadas por Objectos, dando origem a nova Linguagem C++ qual se
mantém a sintaxe da Linguagem C, e permite um conjunto adicional de características
(Encapsulamento, Hereditariedade, Polimorfismo, Overloading, etc.). Actualmente a
nova linguagem – JAVA – apresentou-se com base alargada de trabalho para
programadores. Também esta linguagem se baseia na C e C++. Foram algumas razões
indicadas para aprender a programar na Linguagem C.




   16
Código Fonte

O código fonte é um conjunto de palavras ou símbolos escritos de uma forma ordenada
contendo instruções em uma das linguagens de programação existentes de maneira
lógica (in Wikipédia). No inicio um programador compõe o programa de uma certa
linguagem (C++ ou Visula Basic), o programador de sistemas tem toda a autonomia de
poder alterar a forma como um programa funciona, ao adicionar recursos e a remover
outros. O código fonte permite que o programador consiga expor o programa de uma
forma nítida aos humanos, para que consiga definir o programa executável, é necessário
que o código fonte seja traduzido para o código de máquina do processador que se
ajuste á arquitectura do sistema.




           Na figura de cima podemos verificar um exemplo de código fonte

                                Código de Máquina


Também conhecido por linguagem do computador ou sistema binário, é a linguagem
mais baixa de programação e a única que o processador e restante Hardware entendem.
É unicamente constituída por 0 e 1 que representam On e Off, ou seja, se existe ou não
passagem de corrente, mas que permite escrever absolutamente tudo com apenas estes
dois números. Ex: Letra A corresponde a 1010 0001.




   17
Programa Fonte – é o programa original, escrito numa qualquer linguagem de
programação.

Programa objecto – é o programa gerado após o programa fonte ter sido compilado,
por um compilador e escrito em linguagem máquina.




                           Software de Tradução

O Software de tradução é constituído por Compiladores e Interpretadores, que fazem
a conversão de uma linguagem de alto nível (C, C++, Pascal, etc.) para uma linguagem
de baixo nível, linguagem máquina, ou seja, tem a sua função é a de traduzir uma
linguagem abstracta para uma linguagem binária. Processam dados de entrada e geram
dados de saída.

                                   Compilador

É um programa ou um conjunto de programas, que no momento de execução de um
programa, traduz cada instrução para uma linha de código que é interpretado pelo
computador, que será executada apenas após a sua completa tradução. Os compiladores
analisam o código em 3 formas diferentes:

- Sintáctica ou hierárquica;

- Léxica ou linear;

- Semântica




   18
São o tipo de tradutores mais utilizados e alguns deles possuem pré-processamento, que
modifica e optimiza o código-fonte conforme as suas necessidades.




   Programa                  Compilador                                  Compile
                                                                          Time

                                                                            Run
        input                     Código                     output         Time



Vantagens

- O código compilado é mais rapidamente executado;

- Impossibilita ou pelo menos dificulta quebrar e visualizar o código-fonte original;

- Permite a optimização do código por parte do compilador;

- Compila o código somente após verificar se tem algum erro.

- Permite estrutura de dados mais complexas.




Desvantagens

- O código necessita de passar por muitos níveis de compilação até ser utilizado;

- O processo de correcção ou alteração do código exige que o mesmo seja novamente
compilado;

- A Impossibilidade de visualizar e modificar o código-fonte.




   19
Interpretador

O interpretador apesar de assumir um papel semelhante ao compilador não gera código-
objecto. Ao contrário do compilador, lê, traduz e executa cada linha de código
sequencialmente. Permite a utilização do programa á medida que vai sendo traduzido,
cada nova execução do programa requer nova tradução e interpretação.




   Programa

       input                    Interpretador                          output


Vantagens

- O código não precisa ser compilado para ser executado;

- Correcções e alterações mais rápidas de executar;

- Consomem menos memória;

Desvantagens

- A execução do programa é mais lenta;

- É necessário ler sempre o código original para ser executado,

- Estrutura de dados demasiadamente simples.




   20
Conclusão



Com a realização deste trabalho podemos concluir que a linguagem C é uma linguagem
de nível médio, por oferecer elementos de linguagem de alto nível e recursos do tipo
Assembler. A linguagem C acaba por ser a linguagem mais utilizada ao nível da
programação de sistemas (compiladores, sistemas operacionais), pois permite-nos a
manipulação de bits, bytes e endereços com que o computador funciona. Já o código
fonte tem como objectivo fazer que o programador descreva o programa de forma nítida
as pessoas. Para conseguirmos executar um programa é necessário traduzir o código
fonte em código máquina, visto esta ser a única linguagem que os computadores
compreendem. Já em relação aos compiladores e aos interpretadores tem como função
operarem sobre o código fonte do programa.




   21
Fontes de consultas:

Livro C/C++ de Renato Haddad

Linguagem de Programação – trabalha realizado por Nuno Marques

http://www.oficinadanet.com.br/artigo/1527/diferencas_entre_compiladores_e_interpret
adores

http://blog.uncovering.org/archives/2007/09/linguagens_de_p.html#ixzz0Y1JDv3c3

http://logbr.reflectivesurface.com/2003/03/26/evolucao-das-linguagens-de-
programacao/

http://www.criarweb.com/artigos/685.php

http://msdn.microsoft.com/pt-br/magazine/cc500572.aspx

http://www.dcc.ufla.br/~monserrat/icc/Capitulo3.html




   22

More Related Content

What's hot

Linguagem de programação
Linguagem de programação Linguagem de programação
Linguagem de programação Marcos Gregorio
 
Paradigmas de Linguagens de Programação - Introdução
Paradigmas de Linguagens de Programação - IntroduçãoParadigmas de Linguagens de Programação - Introdução
Paradigmas de Linguagens de Programação - IntroduçãoAdriano Teixeira de Souza
 
Introdução a Linguagem de Programação
Introdução a Linguagem de ProgramaçãoIntrodução a Linguagem de Programação
Introdução a Linguagem de ProgramaçãoJessica Ribeiro
 
Conceitos Iniciais de Linguagens de Programação
Conceitos Iniciais de Linguagens de ProgramaçãoConceitos Iniciais de Linguagens de Programação
Conceitos Iniciais de Linguagens de ProgramaçãoSidney Roberto
 
Introdução à Computação Aula 09 - Algoritmos (Linguagens de Programação)
Introdução à Computação Aula 09 - Algoritmos (Linguagens de Programação)Introdução à Computação Aula 09 - Algoritmos (Linguagens de Programação)
Introdução à Computação Aula 09 - Algoritmos (Linguagens de Programação)Leinylson Fontinele
 
Linguagens de Programação
Linguagens de ProgramaçãoLinguagens de Programação
Linguagens de Programação12anogolega
 
Paradigmas de Linguagens de Programação - Quatro Paradigmas + Ambientes de Pr...
Paradigmas de Linguagens de Programação - Quatro Paradigmas + Ambientes de Pr...Paradigmas de Linguagens de Programação - Quatro Paradigmas + Ambientes de Pr...
Paradigmas de Linguagens de Programação - Quatro Paradigmas + Ambientes de Pr...Adriano Teixeira de Souza
 
Linguágens de programação
Linguágens de programaçãoLinguágens de programação
Linguágens de programaçãoAlbertoVach
 
Plp aula-02-critérios de avaliação
Plp aula-02-critérios de avaliaçãoPlp aula-02-critérios de avaliação
Plp aula-02-critérios de avaliaçãoJosé Meirelles
 
Critérios de avaliação de linguagens
Critérios de avaliação de linguagensCritérios de avaliação de linguagens
Critérios de avaliação de linguagensPaulo Muniz
 
Plp aula-01-apresentação
Plp aula-01-apresentaçãoPlp aula-01-apresentação
Plp aula-01-apresentaçãoJosé Meirelles
 
Paradigmas De Linguagem De Programação.
Paradigmas De Linguagem De Programação.Paradigmas De Linguagem De Programação.
Paradigmas De Linguagem De Programação.Valmon Gaudencio
 
Atps paradigmas linguagem programacao
Atps paradigmas linguagem programacaoAtps paradigmas linguagem programacao
Atps paradigmas linguagem programacaopablogranola
 

What's hot (20)

Linguagem de programação
Linguagem de programação Linguagem de programação
Linguagem de programação
 
Paradigmas de Linguagens de Programação - Introdução
Paradigmas de Linguagens de Programação - IntroduçãoParadigmas de Linguagens de Programação - Introdução
Paradigmas de Linguagens de Programação - Introdução
 
Linguagens de programação
Linguagens de programaçãoLinguagens de programação
Linguagens de programação
 
Introdução a Linguagem de Programação
Introdução a Linguagem de ProgramaçãoIntrodução a Linguagem de Programação
Introdução a Linguagem de Programação
 
Conceitos Iniciais de Linguagens de Programação
Conceitos Iniciais de Linguagens de ProgramaçãoConceitos Iniciais de Linguagens de Programação
Conceitos Iniciais de Linguagens de Programação
 
Introdução à Computação Aula 09 - Algoritmos (Linguagens de Programação)
Introdução à Computação Aula 09 - Algoritmos (Linguagens de Programação)Introdução à Computação Aula 09 - Algoritmos (Linguagens de Programação)
Introdução à Computação Aula 09 - Algoritmos (Linguagens de Programação)
 
Linguagens de Programação
Linguagens de ProgramaçãoLinguagens de Programação
Linguagens de Programação
 
02 historia da programação
02   historia da programação02   historia da programação
02 historia da programação
 
Paradigmas de Linguagem
Paradigmas de LinguagemParadigmas de Linguagem
Paradigmas de Linguagem
 
Paradigmas de Linguagens de Programação - Quatro Paradigmas + Ambientes de Pr...
Paradigmas de Linguagens de Programação - Quatro Paradigmas + Ambientes de Pr...Paradigmas de Linguagens de Programação - Quatro Paradigmas + Ambientes de Pr...
Paradigmas de Linguagens de Programação - Quatro Paradigmas + Ambientes de Pr...
 
Linguágens de programação
Linguágens de programaçãoLinguágens de programação
Linguágens de programação
 
Software
SoftwareSoftware
Software
 
Plp aula-02-critérios de avaliação
Plp aula-02-critérios de avaliaçãoPlp aula-02-critérios de avaliação
Plp aula-02-critérios de avaliação
 
C 04 linguagem_de_programacao
C 04 linguagem_de_programacaoC 04 linguagem_de_programacao
C 04 linguagem_de_programacao
 
Critérios de avaliação de linguagens
Critérios de avaliação de linguagensCritérios de avaliação de linguagens
Critérios de avaliação de linguagens
 
Plp aula-01-apresentação
Plp aula-01-apresentaçãoPlp aula-01-apresentação
Plp aula-01-apresentação
 
Paradigmas de programação
Paradigmas de programaçãoParadigmas de programação
Paradigmas de programação
 
Paradigmas De Linguagem De Programação.
Paradigmas De Linguagem De Programação.Paradigmas De Linguagem De Programação.
Paradigmas De Linguagem De Programação.
 
1.1.paradigmas
1.1.paradigmas1.1.paradigmas
1.1.paradigmas
 
Atps paradigmas linguagem programacao
Atps paradigmas linguagem programacaoAtps paradigmas linguagem programacao
Atps paradigmas linguagem programacao
 

Viewers also liked

Viewers also liked (8)

Nossa Onda é Praia Redonda
Nossa Onda é Praia RedondaNossa Onda é Praia Redonda
Nossa Onda é Praia Redonda
 
Cognatos
CognatosCognatos
Cognatos
 
Muller Puig
Muller PuigMuller Puig
Muller Puig
 
Solisc 2009 - Ensinando pela Web com Software Livre
Solisc 2009 - Ensinando pela Web com Software LivreSolisc 2009 - Ensinando pela Web com Software Livre
Solisc 2009 - Ensinando pela Web com Software Livre
 
Madera Results
Madera ResultsMadera Results
Madera Results
 
Wikis
WikisWikis
Wikis
 
Inguru esperimentua ur turbinak
Inguru esperimentua ur turbinakInguru esperimentua ur turbinak
Inguru esperimentua ur turbinak
 
Lcd 01
Lcd 01Lcd 01
Lcd 01
 

Similar to Linguagens de Programação e C: História e Conceitos

Linguagens de programação 03-12-09
Linguagens de programação   03-12-09Linguagens de programação   03-12-09
Linguagens de programação 03-12-09essa
 
silo.tips_paradigmas-e-linguagens-de-programaao-prof-josino-rodrigues-neto.pdf
silo.tips_paradigmas-e-linguagens-de-programaao-prof-josino-rodrigues-neto.pdfsilo.tips_paradigmas-e-linguagens-de-programaao-prof-josino-rodrigues-neto.pdf
silo.tips_paradigmas-e-linguagens-de-programaao-prof-josino-rodrigues-neto.pdfAmlieOGalaxias
 
paradigmasdlsksmmskskkekekekekedmmmdmdmmf.pdf
paradigmasdlsksmmskskkekekekekedmmmdmdmmf.pdfparadigmasdlsksmmskskkekekekekedmmmdmdmmf.pdf
paradigmasdlsksmmskskkekekekekedmmmdmdmmf.pdfAndreiaCristinaFlore
 
Linguagem C Entendendo a Programação
Linguagem C Entendendo a ProgramaçãoLinguagem C Entendendo a Programação
Linguagem C Entendendo a ProgramaçãoMonike Santos
 
Trabalho linguagem python
Trabalho linguagem  pythonTrabalho linguagem  python
Trabalho linguagem pythonBruno Maspoli
 
IES GF - Linguagem de Programação Estruturada - Parte 1
IES GF - Linguagem de Programação Estruturada - Parte 1IES GF - Linguagem de Programação Estruturada - Parte 1
IES GF - Linguagem de Programação Estruturada - Parte 1Ramon Mayor Martins
 
Aula de C para Linux
Aula de C para LinuxAula de C para Linux
Aula de C para LinuxChris x-MS
 

Similar to Linguagens de Programação e C: História e Conceitos (20)

Linguagens de programação 03-12-09
Linguagens de programação   03-12-09Linguagens de programação   03-12-09
Linguagens de programação 03-12-09
 
silo.tips_paradigmas-e-linguagens-de-programaao-prof-josino-rodrigues-neto.pdf
silo.tips_paradigmas-e-linguagens-de-programaao-prof-josino-rodrigues-neto.pdfsilo.tips_paradigmas-e-linguagens-de-programaao-prof-josino-rodrigues-neto.pdf
silo.tips_paradigmas-e-linguagens-de-programaao-prof-josino-rodrigues-neto.pdf
 
paradigmasdlsksmmskskkekekekekedmmmdmdmmf.pdf
paradigmasdlsksmmskskkekekekekedmmmdmdmmf.pdfparadigmasdlsksmmskskkekekekekedmmmdmdmmf.pdf
paradigmasdlsksmmskskkekekekekedmmmdmdmmf.pdf
 
Mini Curso de C
Mini Curso de CMini Curso de C
Mini Curso de C
 
Apostila c
Apostila cApostila c
Apostila c
 
Linguagem C Entendendo a Programação
Linguagem C Entendendo a ProgramaçãoLinguagem C Entendendo a Programação
Linguagem C Entendendo a Programação
 
Apostila de dev
Apostila de devApostila de dev
Apostila de dev
 
apostila de dev.pdf
apostila de dev.pdfapostila de dev.pdf
apostila de dev.pdf
 
Apostila de dev
Apostila de devApostila de dev
Apostila de dev
 
Apostila de dev
Apostila de devApostila de dev
Apostila de dev
 
Trabalho linguagem python
Trabalho linguagem  pythonTrabalho linguagem  python
Trabalho linguagem python
 
Apostila de dev
Apostila de devApostila de dev
Apostila de dev
 
IES GF - Linguagem de Programação Estruturada - Parte 1
IES GF - Linguagem de Programação Estruturada - Parte 1IES GF - Linguagem de Programação Estruturada - Parte 1
IES GF - Linguagem de Programação Estruturada - Parte 1
 
Linguagem da programação
Linguagem da programaçãoLinguagem da programação
Linguagem da programação
 
Apostila de devc++ novo
Apostila de devc++ novoApostila de devc++ novo
Apostila de devc++ novo
 
Aula de C para Linux
Aula de C para LinuxAula de C para Linux
Aula de C para Linux
 
Linguagem c
Linguagem cLinguagem c
Linguagem c
 
Linguagem c
Linguagem cLinguagem c
Linguagem c
 
LP002 - AULA 1.potx
LP002 - AULA 1.potxLP002 - AULA 1.potx
LP002 - AULA 1.potx
 
LP003 - AULA 2.potx
LP003 - AULA 2.potxLP003 - AULA 2.potx
LP003 - AULA 2.potx
 

More from essa

Ubuntu versão final
Ubuntu versão finalUbuntu versão final
Ubuntu versão finalessa
 
Si trabalho
Si trabalhoSi trabalho
Si trabalhoessa
 
Espaço shengen (questão integradora cp1)
Espaço shengen (questão integradora cp1)Espaço shengen (questão integradora cp1)
Espaço shengen (questão integradora cp1)essa
 
Configuração de um router trabalho rlw
Configuração de um router trabalho rlwConfiguração de um router trabalho rlw
Configuração de um router trabalho rlwessa
 
Ubuntu
UbuntuUbuntu
Ubuntuessa
 
Windows seven 08-04-10(1)
Windows seven   08-04-10(1)Windows seven   08-04-10(1)
Windows seven 08-04-10(1)essa
 
Questao integradora nova
Questao integradora novaQuestao integradora nova
Questao integradora novaessa
 
Questao integradora nova[1]
Questao integradora nova[1]Questao integradora nova[1]
Questao integradora nova[1]essa
 
Questao integradora cidadania europeia cp1
Questao integradora cidadania europeia cp1Questao integradora cidadania europeia cp1
Questao integradora cidadania europeia cp1essa
 
2º trabalho de base dados
2º trabalho de base dados2º trabalho de base dados
2º trabalho de base dadosessa
 
1º trabalho base dados
1º trabalho base dados1º trabalho base dados
1º trabalho base dadosessa
 
Intel core i3,i5,i7
Intel core i3,i5,i7Intel core i3,i5,i7
Intel core i3,i5,i7essa
 

More from essa (12)

Ubuntu versão final
Ubuntu versão finalUbuntu versão final
Ubuntu versão final
 
Si trabalho
Si trabalhoSi trabalho
Si trabalho
 
Espaço shengen (questão integradora cp1)
Espaço shengen (questão integradora cp1)Espaço shengen (questão integradora cp1)
Espaço shengen (questão integradora cp1)
 
Configuração de um router trabalho rlw
Configuração de um router trabalho rlwConfiguração de um router trabalho rlw
Configuração de um router trabalho rlw
 
Ubuntu
UbuntuUbuntu
Ubuntu
 
Windows seven 08-04-10(1)
Windows seven   08-04-10(1)Windows seven   08-04-10(1)
Windows seven 08-04-10(1)
 
Questao integradora nova
Questao integradora novaQuestao integradora nova
Questao integradora nova
 
Questao integradora nova[1]
Questao integradora nova[1]Questao integradora nova[1]
Questao integradora nova[1]
 
Questao integradora cidadania europeia cp1
Questao integradora cidadania europeia cp1Questao integradora cidadania europeia cp1
Questao integradora cidadania europeia cp1
 
2º trabalho de base dados
2º trabalho de base dados2º trabalho de base dados
2º trabalho de base dados
 
1º trabalho base dados
1º trabalho base dados1º trabalho base dados
1º trabalho base dados
 
Intel core i3,i5,i7
Intel core i3,i5,i7Intel core i3,i5,i7
Intel core i3,i5,i7
 

Linguagens de Programação e C: História e Conceitos

  • 1. 1
  • 2. ESCOLA SECUNDÁRIA DE SANTO ANDRÉ Curso e Turma: Instalação e Manutenção de Sistemas Informáticos, EFA 4S Disciplina: Programação Web Nome do Trabalho: Linguagens de Programação Nome do Aluno: Miguel Marques, Paulo Rosário e Bruno Gonçalves Nome do Formador: Guilherme Batista Data do Trabalho: 03-12-2009 2
  • 3. ÍNDICE Introdução pág.3 Índice pag.4 Principais conceitos na área da programação C pág.5 Tipos de Linguagens pág.6 a 8 História da Linguagem pág. 9 a 11 Objectivos e Características da Linguagem C pág. 11 a 16 Código Fonte pág. 17 Código Máquina pág. 17 a 18 Software de tradução pág. 18 Compilador pág. 18 a 19 Interpretador pág. 20 Conclusão pág. 21 Referencias Bibliográficas pág. 22 3
  • 4. Introdução Neste trabalho vai ser feita uma pequena abordagem ao mundo da programação, seus principais conceitos e os vários tipos de linguagens de programação. Depois ficaremos a conhecer uma das línguas mais influentes no interior da programação, quais as suas características e os seus objectivos. Vamos também neste trabalho abordar a definição de código máquina e código fonte, falaremos também de compiladores e interpretadores quais as suas funções as suas diferenças. 4
  • 5. Principais conceitos na área da programação Antes de falarmos do que são, de como são constituídas e de como evoluíram, será apresentada a definição de certos conceitos importantes e que serão varias vezes falados mais á frente. Algoritmo “É uma sequência finita de instruções bem definidas e não ambíguas, sendo que cada uma pode ser executada mecanicamente num período de tempo finito e com uma quantidade de esforço finita” Wikipedia É a forma através da qual resolvemos problemas, é a descrição, de forma lógica, dos passos que devem ser tomados para ser realizada uma dada tarefa. Programa Um programa de computador, ou software, é um conjunto de instruções que descrevem a forma como uma tarefa que será executada por um computador. Um programa oferece ao utilizador a possibilidade de realizar uma ou mais tarefas específicas. A programação será então a ciência que nos permite criar programas. Linguagens de programação Assim como outra língua qualquer, as linguagens de programação obedecem a um conjunto de regras sintácticas e semânticas usadas para definir o programa. É utilizado um conjunto de códigos composto, por palavras e símbolos, que constituem o código fonte do programa. Para o processador executar um programa, o código fonte necessita de ser traduzido para código máquina. Existem vários tipos de linguagens, sendo que cada uma delas tem características e aplicações diferentes. Toda a linguagem de programação têm um ambiente de programação, por exemplo bloco de notas do Windows, e algumas podem ter mais que um ambiente. Podemos classifica-las de acordo com o paradigma de programação, gerações, quanto ao grau de abstracção e de acordo com o tipo de estrutura. 5
  • 6. Paradigma de Programação O paradigma é basicamente a ideia central onde se baseia a linguagem, existindo 4 paradigmas: Paradigma Imperativo – que se baseia em comandos e procedimentos Ex: Pascal, C e Fortran. Paradigma Orientado a Objectos - baseado em objectos e classes. Ex: Java, Simula e Smalltalk. Paradigma Funcional – que se baseia em funções. Ex: Haskel, Lisp, ML, Scheme. Paradigma Lógico - baseado na lógica de predicados, factos e regras. Ex: Prolog, Life, Mercury Diferentes níveis ou graus de abstracção das linguagens - Linguagens de máquina; - Linguagens de baixo nível; - Linguagens de alto nível. Linguagens de máquina As linguagens de máquina são linguagens de baixo nível e fornecem ao computador as operações fundamentais para seu funcionamento. Cada instrução é geralmente formada por um código de operação e um ou dois endereços de memória. É a única linguagem compreendida pelo processador, pois utiliza unicamente a notação binária, 0's e 1's ou On e Off. Apesar de ser mais rápida que a linguagem de alto nível, é bastante mais difícil de utilizar. A programação de um algoritmo complexo neste tipo de linguagem é complexa, cansativa e fortemente sujeita a erros, sendo depois quase impossível encontrar o erro. As linguagens de máquina são dependentes do processador, ou seja, uma determinada linguagem de máquina só poderá usada por um tipo de computador. Exemplo de uma pequena porção do código máquina do processador desenhado por Von Neumman em 1946: 000000101011110010100000001011111100100000000011001110101000 6
  • 7. Linguagens de baixo nível Foram projectadas minimizar as dificuldades da programação em notação binária. São bastante próximas das linguagens de máquina, mantendo a mesma estrutura e conjunto de instruções, mas permite que o programador utilize nomes, chamados mnemónicos, e símbolos em lugar dos 0’s e 1’s. São chamadas de linguagens Assembly ou montagem. Os programas são executados com maior velocidade de processamento e ocupam menos espaço na memória. Por outro lado os programas em Assembly tem pouca portabilidade, o código criado para um tipo processador não serve para outro diferente, e não são estruturados o que torna a programação mais difícil. Nesta linguagem a maioria das instruções são representações simbólicas de instruções de linguagem máquina. O processamento de um programa em linguagem simbólica requer tradução para linguagem de máquina antes de ele ser executado pelo processador. Linguagens de alto nível São as mais próximas à linguagem humana e mais distantes das linguagens de máquina, o que torna mais fácil a sua compreensão. Utilizam uma sintaxe estruturada que torna o seu código mais legível e fazem uso de palavras reservadas como READ, WRITE, TYPE, etc. São precisos compiladores ou interpretadores para gerar instruções do microprocessador, que permitem, teoricamente, que possa a linguagem possa ser utilizada em qualquer computador. Os interpretadores fazem a interpretação de cada instrução do programa fonte e executa-a dentro de um ambiente de programação, por exemplo Basic e Java. Os compiladores traduzem todas as instruções do programa fonte gerando um programa executável (*. exe), por exemplo C e Pascal. Em relação ás linguagens de baixo nível os problemas são resolvidos de forma mais fácil e rápida. Gerações 1º Geração - Linguagem máquina ou binária e Assembly; 2º Geração – Sistemas de execução em tempo real e desenvolvimento de gestores de Base de Dados; Ex: COBOL, BASIC e FORTRAN IV/V. 7
  • 8. 3º Geração - capacidade procedural e estrutura; Ex: Pascal, C e SIMULA 4º Geração - sistemas especialistas, desenvolvimento de inteligência artificial e execução dos programas em paralelo. Ex: SQL e QBE. 5º Geração – Linguagens de especificação de problemas E: LISP e PROLOG. Estrutura de tipos . Fracamente tipada – Ex: Smalltalk . Fortemente tipada – ex: Java e Ruby . Dinamicamente tipada – ex: Perl, Ruby e Python . Estáticamente tipada - ex: Java e C Domínios de aplicação . Cientificas – ALGOL, BASIC e FORTRAN. . Comerciais – COBOL. 8
  • 9. História da Linguagem C Poder-se ia dizer que o C é uma das maravilhas das linguagens de programação. Muitos dos programas existentes hoje foram escritos nesta linguagem. O C foi desenvolvido nos laboratórios na década de 70.Possui as seguintes características; portabilidade entre máquinas e sistemas operacionais. Dados compostos em forma estruturados, total interacção tanto com o SO como a máquina e o código compacto e rápido. Nos anos 80, C era a linguagem mais utilizada por programadores, por permitir a escrita intensiva de todas as características das linguagens anteriores. O Próprio UNIX e Linux foram escritos em C, assim como o front end do MS-DOS, Windows e as aplicações Office mais usadas no mundo (OpenOffice.org, Microsoft Office, embora cada uma delas incluir as suas próprias linguagens de script), sendo também utilizada em aplicações gráficas e criação de efeitos especiais nos filmes Strar Trek e Star Wars.E as vantagens de programas extremamente rápidos e pequenos, desvantagens é o tempo de desenvolvimento lento e sujeito a erros. Kenneth Thompson (à esquerda) e Dennis Ritchie (à direita), os criadores da linguagem C. O desenvolvimento inicial da linguagem C ocorreu nos laboratórios Bell da AT&T entre 1969 e 1973. Segundo Ritchie, o periodo mais criativo ocorreu em 1972. Deu-se o nome C à linguagem porque muitas das suas características derivaram de uma linguagem de programação anterior chamada B. Há vários relatos que se referem à origem do nome B: Ken Thompson dá crédito à linguagem de programação BCPL, mas ele também criou uma outra linguagem de programação chamada Bon, em honra da sua mulher Bonnie. Por volta de 1973, a linguagem C tinha se tornado suficientemente poderosa para que grande parte do núcleo de UNIX, originalmente escrito na linguagem de programação, fosse reescrito em C. Este foi um dos primeiros núcleos de sistema operativo que foi implementado numa linguagem sem ser o Assembly, sendo exemplos 9
  • 10. anteriores do sistema. Em 1978, Ritchie e Kernighan publicaram a primeira edição do livro The C Programming Language. Esse livro, conhecido pelos programadores de C como "K&R", serviu durante muitos anos como uma especificação informal da linguagem. A versão da linguagem C que ele descreve é usualmente referida como "C de K&R". (A segunda edição do livro cobre o posterior padrão ANSI C, descrito abaixo.) K&R introduziram as seguintes características na linguagem: Tipos de dados struct Tipos de dados long int Tipos de dados unsigned int O operador =+ foi alterado para +=, e assim sucessivamente (a análise léxico do compilador confundia o operador =+. Por exemplo, i =+ 10 e i = +10). C de K&R é frequentemente considerado a parte mais básica da linguagem cujo suporte deve ser assegurado por um compilador C. Durante muitos anos, mesmo após a introdução do padrão C ANSI, ele era considerado o "menor denominador comum" em que programadores de C se apoiavam quando uma portabilidade máxima era desejada, já que nem todos os compiladores eram actualizados para suportar na íntegra o padrão C ANSI, e o código C de K&R razoavelmente bem escrito é também válido em relação ao C ANSI.Nos anos que se seguiram à publicação do C K&R, algumas características "não-oficiais" foram adicionadas à linguagem, suportadas por compiladores da AT&T e de outros vendedores. Funções void e tipos de dados void Funções que retornam tipos struct ou union Campos de nome struct num espaço de nome separado para cada tipo struct Atribuição a tipos de dados struct Qualificadores const para criar um objecto só de leitura Uma biblioteca-padrão que incorpora grande parte da funcionalidade implementada por vários vendedores Enumerações O tipo de ponto-flutuante de precisão simples 10
  • 11. Durante os finais da década de 1970, a linguagem C começou a substituir a linguagem BASIC como a linguagem de programação de microcomputadores mais usada. Durante a década de 1980, foi adoptada para uso no PC IBM, e a sua popularidade começou a aumentar significativamente. Ao mesmo tempo, Bjarne Stroustrup, juntamente com outros nos laboratórios Bell, começou a trabalhar num projecto onde se adicionavam construções de linguagens de programação orientada por objectos à linguagem C. A linguagem que eles produziram, chamada C++, é nos dias de hoje a linguagem de programação de aplicações mais comum no sistema operativo Windows da companhia Microsoft; C permanece mais popular no mundo UNIX. Objectivos e características da Linguagem C A linguagem C surgiu com o objectivo de facilitar a criação de programas mais extensos e com um menor número de erros apelando ao paradigma da programação algorítmica, sobrecarregando menos o autor do compilador, visto as características desta linguagem serem complicadas. Dentro da linguagem C temos as seguintes características: . É uma linguagem nuclear extremamente simples, com funcionalidades não essenciais tais como as funções matemáticas ou manuseamento de ficheiros (arquivos), fornecida por um conjunto de bibliotecas de rotinas padronizadas; . A sua focalização no paradigma de programação procedimento; . Têm um sistema de tipos simples que evita várias operações que não fazem sentido; . O Uso de uma linguagem de pré-processamento, o pré-processador de C, para tarefas tais como a definição de macros e a inclusão de múltiplos ficheiros de código fonte; . Ponteiros dão maior flexibilidade à linguagem; 11
  • 12. . Acesso de baixo nível através de inclusões de código Assembly no meio do programa C; . Parâmetros que são sempre passados por valor para as funções e nunca por referência (É possível simular a passagem por referências com o uso de ponteiros); . Definição do alcance lexical de variáveis; Estruturas de variáveis, (structs), que permitem que dados relacionados sejam combinados e manipulados como um todo. Apesar das suas características atrás descritas, faltam a linguagem C outras que se podem encontrar em outras linguagens, como por exemplo: . Segurança de tipo; . Colector de lixo (mais comum em linguagens interpretadas); . Vectores que crescem automaticamente; . Classes ou objectos com comportamento; . Closures; . Funções aninhadas; . Programação genérica; . Sobrecarga de operadores; . Meta-programação; . Apoio nativo de multithreading e comunicação por rede 12
  • 13. O conceito de Variáveis As variáveis no C podem ter qualquer nome se duas condições forem satisfeitas: o nome deve começar com uma letra ou sublinhado (_) e os caracteres subsequentes devem ser letras, números ou sublinhado (_). Há apenas mais duas restrições: o nome de uma variável não pode ser igual a uma palavra reservada, nem igual ao nome de uma função declarada pelo programador, ou pelas bibliotecas do C. Variáveis de até 32 caracteres são aceitas. Mais uma coisa: é bom sempre lembrar que o C é "case sensitive" e portanto deve-se prestar atenção às maiúsculas e minúsculas. É uma prática tradicional do C, usar letras minúsculas para nomes de variáveis e maiúsculas para nomes de constantes. Isto facilita na hora da leitura do código; Quando se escreve código usando nomes de variáveis em português, evita-se possíveis conflitos com nomes de rotinas encontrados nas diversas bibliotecas, que são em sua maioria absoluta, palavras em inglês. Os Tipos do C O C tem 5 tipos básicos: char, int, float, void, double.O double é o ponto flutuante duplo e pode ser visto como um ponto flutuante com muito mais precisão. O void é o tipo vazio, ou um "tipo sem tipo". Constantes Constantes são valores que são mantidos fixos pelo compilador. Já usamos constantes neste curso. São consideradas constantes, por exemplo, os números e caracteres como 45.65 ou 'n', etc. - Constantes dos tipos básicos Abaixo vemos as constantes relativas aos tipos básicos do C: Exemplos de Constantes char 'b' 'n' '0' int 2 32000 -130 long int 100000 -467 short int 100 -30 unsigned int 50000 35678 float 0.0 23.7 -12.3e-10 double 12546354334.0 -0.0000034236556 13
  • 14. As estruturas de controlo de fluxo são fundamentais para qualquer linguagem de programação. Sem elas só haveria uma maneira do programa ser executado: de cima para baixo comando por comando. Não haveria condições, repetições ou saltos. A linguagem C possui diversos comandos de controlo de fluxo. É possível resolver todos os problemas sem utilizar todas elas, mas devemos nos lembrar que a elegância e facilidade de entendimento de um programa dependem do uso correcto das estruturas no local certo. O Comando if, comando else, comando switch, comando for, comando while, comando break, comando continue, comando goto. Um exemplo: #include <stdio.h> int main () { int num; printf ("Digite um numero: "); scanf ("%d",&num); if (num>10) printf ("nnO numero e maior que 10"); else if (num==10) { printf ("nnVoce acertou!n"); printf ("O numero e igual a 10."); } else if (num<10) printf ("nnO numero e menor que 10"); return(0); } Software para linguagem C 14
  • 15. "IDE para programação de executáveis Win32, console ou GUI na linguagem C/C++." Por existirem várias linguagens de programação disponíveis no mercado, cada uma delas tinha de possuir pontos onde se especializavam mais para conseguir cativar o interesse dos programadores. Dentro da maioria das linguagens os seus objectivos a atingir são: . COBOL- Processamento de Registos . PASCAL- Ensino de Técnicas de Programação . FORTRAN- Cálculo Científico . LISP e PROLOG- Vocacionam para áreas de Inteligência Artificial Já na linguagem C não existe nenhuma área de destino em particular, habitualmente se denomina por General Purpose, esta é uma das vantagens, pois tem a capacidade de adaptar qualquer desenvolvimento num projecto, como sistemas operativos, interfaces gráficas, processamento de registos, ect. A linguagem C é utilizada também para escrever compiladores de outras linguagens, é uma linguagem extraordinariamente robusta e maleável. Rapidez – consegue atingir performance semelhante á do Assembly, usando instruções de alto nível, isto é instruções semelhantes há linguagem PASCAL ou COBOL, mesmo para aceder a mecanismos de mais baixo nível, como o de endereçamento ou manipulação de Bits. Simples – de sintaxe extremamente simples e o número de palavras reservadas, tipos de dados básicos e operadores é reduzido, fazendo diminuir a quantidade de tempo e esforço necessário à aprendizagem da linguagem. Portável – existente um standard (ANSI) que define características de qualquer compilado, deste modo o código escrito numa máquina, pode ser então transportado para outra máquina e compilado sem qualquer alteração, (ou com um numero reduzido). 15
  • 16. Popular – é conhecida internacionalmente e utilizada, esta porem muito bem documentada em livros, revistas de especialidade, manuais, etc. Existe compiladores para qualquer tipo de arquitecturas e computadores. Modular – permite o desenvolvimento modular em aplicações, facilitando a separação de projectos em módulos distintos, independentes, recorrendo à utilização de funções específicas de cada módulo. Alto Nível – há a possibilidade de manipular a memória directamente, utilizando o endereço de qualquer objecto (seja variável ou função), manipulando directamente a memória sem ter qualquer restrição o que aumenta a flexibilidade da linguagem. Livrarias muito poderosas – tem um número reduzido de palavras-chave, o que indica que as suas capacidades são limitadas na realidade. A maior parte das funcionalidades da linguagem são-lhe adicionadas pela sua utilização de funções existentes em livrarias adicionais e realizam todo o tipo de tarefas, deste a escrita no ecrã ate ao seu processamento de strings, etc. Macros – Utilizada no desenvolvimento de aplicações, reduzindo assim a necessidade de escrita de funções distintas na realização do mesmo processamento, em todos os tipos de dados. As Macros permitem aumentar a velocidade de execução sem este ter que aumentar a complexidade de escrita do código. Focus – Permite ao programador a escrita do código, como pretender, no qual o programa pode ser escrito numa só linha e dividido em inúmeras linhas. Apenas tem de se preocupar com objectivo e a correcção da aplicação que está a desenvolver, do modo a que no final o resultado seja o desejado, n é necessário formatar o código a partir da coluna X e os dados a partir da coluna Y como acontece com outras linguagens. Evolução – A evolução das linguagens, fez que também o C evoluísse no sentido da Linguagens Orientadas por Objectos, dando origem a nova Linguagem C++ qual se mantém a sintaxe da Linguagem C, e permite um conjunto adicional de características (Encapsulamento, Hereditariedade, Polimorfismo, Overloading, etc.). Actualmente a nova linguagem – JAVA – apresentou-se com base alargada de trabalho para programadores. Também esta linguagem se baseia na C e C++. Foram algumas razões indicadas para aprender a programar na Linguagem C. 16
  • 17. Código Fonte O código fonte é um conjunto de palavras ou símbolos escritos de uma forma ordenada contendo instruções em uma das linguagens de programação existentes de maneira lógica (in Wikipédia). No inicio um programador compõe o programa de uma certa linguagem (C++ ou Visula Basic), o programador de sistemas tem toda a autonomia de poder alterar a forma como um programa funciona, ao adicionar recursos e a remover outros. O código fonte permite que o programador consiga expor o programa de uma forma nítida aos humanos, para que consiga definir o programa executável, é necessário que o código fonte seja traduzido para o código de máquina do processador que se ajuste á arquitectura do sistema. Na figura de cima podemos verificar um exemplo de código fonte Código de Máquina Também conhecido por linguagem do computador ou sistema binário, é a linguagem mais baixa de programação e a única que o processador e restante Hardware entendem. É unicamente constituída por 0 e 1 que representam On e Off, ou seja, se existe ou não passagem de corrente, mas que permite escrever absolutamente tudo com apenas estes dois números. Ex: Letra A corresponde a 1010 0001. 17
  • 18. Programa Fonte – é o programa original, escrito numa qualquer linguagem de programação. Programa objecto – é o programa gerado após o programa fonte ter sido compilado, por um compilador e escrito em linguagem máquina. Software de Tradução O Software de tradução é constituído por Compiladores e Interpretadores, que fazem a conversão de uma linguagem de alto nível (C, C++, Pascal, etc.) para uma linguagem de baixo nível, linguagem máquina, ou seja, tem a sua função é a de traduzir uma linguagem abstracta para uma linguagem binária. Processam dados de entrada e geram dados de saída. Compilador É um programa ou um conjunto de programas, que no momento de execução de um programa, traduz cada instrução para uma linha de código que é interpretado pelo computador, que será executada apenas após a sua completa tradução. Os compiladores analisam o código em 3 formas diferentes: - Sintáctica ou hierárquica; - Léxica ou linear; - Semântica 18
  • 19. São o tipo de tradutores mais utilizados e alguns deles possuem pré-processamento, que modifica e optimiza o código-fonte conforme as suas necessidades. Programa Compilador Compile Time Run input Código output Time Vantagens - O código compilado é mais rapidamente executado; - Impossibilita ou pelo menos dificulta quebrar e visualizar o código-fonte original; - Permite a optimização do código por parte do compilador; - Compila o código somente após verificar se tem algum erro. - Permite estrutura de dados mais complexas. Desvantagens - O código necessita de passar por muitos níveis de compilação até ser utilizado; - O processo de correcção ou alteração do código exige que o mesmo seja novamente compilado; - A Impossibilidade de visualizar e modificar o código-fonte. 19
  • 20. Interpretador O interpretador apesar de assumir um papel semelhante ao compilador não gera código- objecto. Ao contrário do compilador, lê, traduz e executa cada linha de código sequencialmente. Permite a utilização do programa á medida que vai sendo traduzido, cada nova execução do programa requer nova tradução e interpretação. Programa input Interpretador output Vantagens - O código não precisa ser compilado para ser executado; - Correcções e alterações mais rápidas de executar; - Consomem menos memória; Desvantagens - A execução do programa é mais lenta; - É necessário ler sempre o código original para ser executado, - Estrutura de dados demasiadamente simples. 20
  • 21. Conclusão Com a realização deste trabalho podemos concluir que a linguagem C é uma linguagem de nível médio, por oferecer elementos de linguagem de alto nível e recursos do tipo Assembler. A linguagem C acaba por ser a linguagem mais utilizada ao nível da programação de sistemas (compiladores, sistemas operacionais), pois permite-nos a manipulação de bits, bytes e endereços com que o computador funciona. Já o código fonte tem como objectivo fazer que o programador descreva o programa de forma nítida as pessoas. Para conseguirmos executar um programa é necessário traduzir o código fonte em código máquina, visto esta ser a única linguagem que os computadores compreendem. Já em relação aos compiladores e aos interpretadores tem como função operarem sobre o código fonte do programa. 21
  • 22. Fontes de consultas: Livro C/C++ de Renato Haddad Linguagem de Programação – trabalha realizado por Nuno Marques http://www.oficinadanet.com.br/artigo/1527/diferencas_entre_compiladores_e_interpret adores http://blog.uncovering.org/archives/2007/09/linguagens_de_p.html#ixzz0Y1JDv3c3 http://logbr.reflectivesurface.com/2003/03/26/evolucao-das-linguagens-de- programacao/ http://www.criarweb.com/artigos/685.php http://msdn.microsoft.com/pt-br/magazine/cc500572.aspx http://www.dcc.ufla.br/~monserrat/icc/Capitulo3.html 22