Linguagem C Linguagem C José Frazão ÍNDICE Página 1. INTRODUÇÃO 3 2. LINGUAGEM C 4 2.1. Objectivos e características da Linguagem C 4 2.2. Aplicações escritas em C 7 2.3. Estrutura de um Programa em Linguagem C 7 2.4. Código Fonte 8 2.5. Código Maquina 9 2.6. Compiladores e Interpretadores 9 2.6.1. Diferenças existentes entre compiladores e interpretadores 10 3. CONCLUSÃO 11 4. REFERENCIAS BLIBLIOGRÁFICAS 12 Página 2/13 Linguagem C José Frazão 1. INTRODUÇÃO O objectivo deste trabalho é conhecer a evolução da Linguagem C e a sua finalidade. Neste trabalho abordo também a definição de código máquina e código de fonte, compiladores e interpretadores, qual a sua função e suas diferenças. Página 3/13 Linguagem C José Frazão 2. LINGUAGEM C A Linguagem C nasceu em 1972 nas empresas Bell Telephone Loboratories, embora tenha sido conhecida ainda na 3ª Geração como FORTRAN, o PASCAL ou o COBOL. O seu objectivo e funcionalidade era permitir a escrita num sistema operativo (o Unix), utilizando linguagem de relativo de alto nível, evitando o recurso ao Assembly. Devido às suas capacidades e divulgação no sistema Unix pelas universidades dos Estados Unidos, a Linguagem C saiu dos laboratórios Bell, dispersou-se e tornou-se conhecida por todos os tipos de programadores, independente dos projectos em comum. A dispersão leva a que diferentes organizações incrementassem e utilizassem varias versões da Linguagem C, criando então alguns problemas nas portabilidades e não só. Devido ao facto de a Linguagem C se tornar tão popular entre programadores e organizações, a American National Standards Instituite (ANSI) nasceu em 1983 um comité para definir um standard da Linguagem C, sendo o mesmo que visa um funcionamento semelhante para todos os compiladores da linguagem, com especificações muito precisas sobre aquilo que deve ou não fazer, sem limitações, definições, etc. 2.1.Objectivos e características da Linguagem C A Linguagem C surgiu com o objectivo principal de facilitar a criação de programas extensos 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. A linguagem C possui as seguintes características (Wikipédia): “Uma linguagem nuclear extremamente simples, com funcionalidades não-essenciais, tais como funções matemáticas ou manuseamento de ficheiros (arquivos), fornecida por um conjunto de bibliotecas de rotinas padronizada; A focalização no paradigma de programação procedimental; Um sistema de tipos simples que evita várias operações que não fazem sentido 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; Acesso de baixo-nível, através de inclusões de código Assembly no meio do programa C; Página 4/13 Linguagem C José Frazão 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ência 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 características atrás descritas, faltam à Linguagem C outras que se podem encontrar noutras linguagens, como por exemplo (Wikipédia): “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.” Visto existir 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 da maioria dos programadores. Na 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 Na Linguagem C não há 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, etc. A Linguagem C é utilizada também para escrever compiladores de outras linguagens, é uma linguagem extraordinariamente robusta e maleável. Página 5/13 Linguagem C José Frazão 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). 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. Página 6/13 Linguagem C José Frazão 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. 2.2 Aplicações escritas em C A Linguagem C é a mais utilizada pelos programadores devido a permitir a escrita de programas como Assembler, BASIC e COBOL com uma grande eficácia, podemos constatar esse facto nestes seguintes softwares: Sistema Operativo: UNIX Base de Dados: dBase III, IV e Access Folhas de cálculo: 1,2,3 e Exel Aplicações Gráficas 2.3 Estrutura de um Programa em Linguagem C Um Programa em Linguagem C é constituído por uma ou varias funções, assim cada função contém um nome único delimitado por um par de chavetas “{}” possuindo um conjunto de expressões, comandos de controlo e chamadas a outras funções. O Programa só começa a ser executado depois de colocarmos a função main no inicio do programa. A função printf mostra a mensagem no ecrã. A função system executa o programa ou seja uma janela do DOS é aberta e quando termina o programa fecha automaticamente mas possui como opção system(“PAUSE”) para parar o programa e iniciar se quando carrega-se em qualquer tecla. O #include tem como função incluir funções da biblioteca necessária para o programa, são esses: stdio.h (Funções de entrada e saída) string.h (Funções de tratamento de strings) math.h (Funções matemáticas) ctype.h ( Funções de tratamento de caracteres) stdlib.h ( Funções de uso genérico) Página 7/13 Linguagem C José Frazão /* meu primeiro programa em linguagem C*/ #include <stdio.h> void main () { printf ("Bem vindo a aula de programação em C!!!\n"); getchar(); /* Aguarda pressionar Enter */ } Fig.1.Exemplo de uma Estrutura 2.4. Código Fonte “O código fonte e um conjunto de palavra ou símbolos escritos de uma forma ordenada, contendo instruções em uma das linguagens de programação existentes de maneira lógica.” (Wikipédia). Inicialmente um programador compõe o programa em uma certa linguagem (C++ ou Visual Basic), o programador de sistema pode alterar a forma como o programa funciona, adicionar recursos e remover outros. O código fonte (Fig. 2) permite apenas que o programador consiga expor o programa de uma forma nítida aos humanos, para que o 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. Fig.2- Exemplo de código fonte Página 8/13 Linguagem C José Frazão 2.5. Código Máquina Resultado final da compilação de uma linguagem de alto nível, como o C, é apenas composto por 0 e 1, carregadas e executadas por um microprocessador. O código de máquina, também conhecido como linguagem máquina, é a única linguagem que os computadores compreendem, todas as outras linguagens de programação representam maneiras de se estruturar os idiomas humanos de modo a que uma pessoa possa fazer os computadores executarem tarefas específicas. Geralmente os programas de computador não são criados em linguagem máquina, pois devem ser traduzidos por compiladores para serem executados directamente pelo computador, actualmente existe a opção de não executa-los de forma directa mas sim por meio de um interpretador, assim corre logo em código máquina e previamente compilado. 2.6. Compiladores e interpretadores Os compiladores e interpretadores são programas sofisticados que operam sobre o código fonte do programa. O interpretador lê o código fonte do programa uma linha de cada vez e executa as instruções compreendidas nessa linha (Fig. 3), o compilador lê o programa inteiro e converte em código maquina, que consiste em uma tradução do código fonte de maneira a ser directamente executada pelo computador (Fig. 4). Fig. 3 - Interpretador Fig. 4 - Compilador Página 9/13 Linguagem C José Frazão 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. 2.6.1.Diferenças existentes entre compiladores e interpretadores Os programas compilados são realizados com mais rapidez que os interpretadores, mas o processo de compilação é muito mais lenta. Por outro lado é compensado pela economia de tempo que é feito durante a utilização do programa, mas á uma situação de excepção, sendo essa quando o programa é curto ou seja menos de 50 linhas. Então os compiladores apresentam se com a vantagem de ser mais rápidos na execução do programa, ter uma estrutura de dados mais completas e permitir uma melhor optimização de código fonte, e como desvantagens o facto de ter várias etapas de tradução, o processo para corrigir erros é mais demorado e necessita de mais memória visto no final a programação é maior. Enquanto os interpretadores consomem menos memoria e tem o resultado imediato do programa, mas a apresenta se com uma execução de programa mais lenta, tem uma estrutura de dados muito simples e necessita de fornecer o programa fonte ao utilizador. Página 10/13 Linguagem C José Frazão 3. CONCLUSÃO A Linguagem C é considerada uma linguagem de nível médio, visto oferecer elementos de uma linguagem de alto nível e recursos típicos de Assembler. Por isso, a Linguagem C é muito utilizada em programação de sistemas (compiladores, sistemas operativos), pois permite a manipulação de bits, bytes e endereços com que o computador funciona. O Código Fonte tem como objectivo fazer com que o programador descreva o programa de forma nítida as pessoas. Para que se consiga executar um programa é necessário traduzir o Código Fonte para Código de Máquina, visto ser a única linguagem que os computadores compreendem. Em relação aos Compiladores e Interpretadores tem como função operarem sobre o Código Fonte do programa. Página 11/13 Linguagem C José Frazão 4. REFERÊNCIAS BIBLIOGRÁFICAS Damas, Luís; “Linguagem C” ; 10º edição; FCA – Editora de Informática http://carlabknho-mundonet.blogspot.com/2009/11/codigo-fonte.htm (Consultado a 21/11/09) http://pt.wikipedia.org/wiki/C%C3%B3digo_fonte (Consultado a 21/11/09) http://pt.wikipedia.org/wiki/C%C3%B3digo_de_m%C3%A1quina (Consultado a 21/11/09) http://olga.a.freitas.googlepages.com/Unidade1-Teresa.pps (Consultado a 21/11/09) http://pt.wikipedia.org/wiki/C_(linguagem_de_programa%C3%A7%C3%A3o) (Consultado a 21/11/09) http://www.scribd.com/doc/11362105/Linguagem-C-UFRPE-4-de-6 16/12/09) Página 12/13 (Consultado a