Prévia do material em texto
PONTIFÍCIA UNIVERSIDADE CATÓLICA DE MINAS GERAIS
ISAAC ALVES SCHUENCK
C
BELO HORIZONTE
2022
ISAAC ALVES SCHUENCK
C
Trabalho apresentado para a matéria
de Linguagens de Programação no
curso de Engenharia de Computação.
BELO HORIZONTE
2022
SUMÁRIO
1. INTRODUÇÃO.........................................................................4
2. HISTÓRICO SOBRE A LINGUAGEM.....................................5
3. PARADIGMA...........................................................................7
4. CARACTERÍSTICAS...............................................................8
4.1 Tipos de dados........................................................................8
4.2 Ponteiros.................................................................................9
4.3 Função....................................................................................9
5. LINGUAGENS SIMILARES...................................................11
6. EXEMPLOS DE PROGRAMAS.............................................12
7. CONCLUSÃO........................................................................16
8. BIBLIOGRAFIA......................................................................17
4
1. INTRODUÇÃO
A linguagem C é a mais conhecida linguagem de programação, sendo
considerada a mais utilizada de todos os tempos.
Embora seu aprendizado não seja fácil, tanto pela falta de clareza com que a
estrutura da linguagem é descrita, quanto pela dificuldade de compreender
certos conceitos, a linguagem C é colocada como uma linguagem de médio nível.
C foi projetada como uma linguagem minimalista para ser usada na escrita de
sistemas operacionais para minicomputadores , como o DEC PDP 7, que tinha
memórias muito limitadas em comparação com os computadores mainframe da
época. C combina elementos de uma linguagem de alto nível como BASIC e
Pascal, com a funcionalidade do assembly. C chama muita atenção pela sua
facilidade de portabilidade, adaptar ou converter um software para sistemas
operacionais diferentes.
https://www.britannica.com/technology/operating-system
https://www.britannica.com/technology/operating-system
https://www.britannica.com/technology/minicomputer
https://www.britannica.com/technology/mainframe
5
2. HISTÓRICO SOBRE A LINGUAGEM
Em 1972 surgiu a linguagem de programação desenvolvida pelo cientista da
computação americano Dennis M. Ritchie nos Laboratórios Bell (anteriormente
AT&T Bell Laboratories). A linguagem foi desenvolvida durante 1969–73,
juntamente com o desenvolvimento inicial do sistema operacional UNIX do
computador PDP-11.
A linguagem C foi um conjunto de linguagens que começou com uma
linguagem chamada ALGOL 60, em 1960 que foi um fracasso por ser de muito
alto nível e exigir do usuário um grande conhecimento de hardware por causa
dos sistemas operacionais da época.
Em 1967 surgiu a CPL (Combined Programming Language), que foi
condensada pela primeira vez na linguagem de programação B - uma linguagem
de programação de computador simplificada - criada em 1970 por Ken
Thompson, um cientista da computação americano e colega de Ritchie. A
linguagem B mostrava-se muito limitada, sendo utilizada apenas para certas
classes de problemas
Estes problemas levaram Ritchie posteriormente reescrever e restaurar os
recursos do CPL para criar C e, eventualmente, reescreveu o sistema
operacional UNIX no novo idioma.
Figura 1 - Ken Thompson e Dennis M. Ritchie
https://www.britannica.com/technology/computer-programming-language
https://www.britannica.com/biography/Dennis-M-Ritchie
https://www.britannica.com/topic/Bell-Laboratories
https://www.britannica.com/technology/operating-system
https://www.britannica.com/technology/UNIX
https://www.britannica.com/biography/Dennis-M-Ritchie
6
À medida que o sistema UNIX foi aprimorado, uma série de mudanças
ocorreram em C entre 1977 e 1979. Durante esse período, uma descrição da
linguagem tornou-se amplamente disponível através do livro, The C
Programming Language (1978), de Brian W. Kernighan e Ritchie.
Em meados da década de 1980 tornou-se importante estabelecer um padrão
oficial para C, uma vez que estava sendo utilizado em projetos sujeitos a
contratos comerciais e governamentais. Em 1983, a American National
Standards Institute (ANSI) criou um comitê que alterou e padronizou ainda mais
a linguagem.
Desde então, C tem sido referido como ANSI Standard C, e continua popular
no mundo dos sistemas operacionais do tipo UNIX. C também se tornou uma
das linguagens de programação mais comuns usadas para escrever outros
sistemas softwares e aplicativos.
https://www.merriam-webster.com/dictionary/enhanced
https://www.merriam-webster.com/dictionary/amended
https://www.britannica.com/technology/software
7
3. PARADIGMA
C é uma linguagem que está no paradigma procedural, na qual consiste numa
lista de instruções para informar ao computador o que fazer passo a passo.
As principais características da programação procedural são dadas abaixo:
• Funções predefinidas: Uma função predefinida é tipicamente uma
instrução identificada por um nome. Normalmente, as funções
predefinidas são construídas em linguagens de programação de nível
superior, mas são derivadas da biblioteca ou do registro, e não do
programa.
• Variável Local: Uma variável local é uma variável que é declarada na
estrutura principal de um método e está limitada ao escopo local que lhe
é fornecido. A variável local só pode ser usada no método em que está
definida e, se for usada fora do método definido, o código deixará de
funcionar.
• Variável Global: Uma variável global é uma variável que é declarada fora
de todas as outras funções definidas no código. Devido a isso, as
variáveis globais podem ser usadas em todas as funções, ao contrário
de uma variável local.
• Modularidade: Modularidade é quando dois sistemas diferentes têm
duas tarefas diferentes em mãos, mas são agrupados para concluir
primeiro uma tarefa maior. Cada grupo de sistemas teria suas próprias
tarefas concluídas uma após a outra até que todas as tarefas fossem
concluídas.
• Passagem de Parâmetros: Passagem de Parâmetros é um mecanismo
usado para passar parâmetros para funções, sub-rotinas ou
procedimentos. A passagem de parâmetros pode ser feita através de
'passar por valor', 'passar por referência', 'passar por resultado', 'passar
por valor-resultado' e 'passar por nome'.
https://hackr.io/blog/best-programming-languages-to-learn-2020-jobs-future
https://hackr.io/blog/best-programming-languages-to-learn-2020-jobs-future
8
4. CARACTERÍSTICAS
Características de C que levaram à sua popularidade como linguagem de
programação.
• Tamanho pequeno
• Uso extensivo de chamadas de função
• Digitação solta - ao contrário de PASCAL
• Linguagem estruturada
• Programação de baixo nível
• Implementação de ponteiros - uso extensivo de ponteiros para memória,
array, estruturas e funções.
4.1 tipos de dados
Os tipos de dados básicos são baseados em números inteiros e baseados em
pontos flutuantes. A linguagem C oferece suporte a literais assinados e não
assinados.
Tipo de dados básicos:
• Int - inteiros
• Char - caracteres
• Float - Decimais
• Double - Decimais
Tipo de dados derivados:
• array - vetor
• pointer - ponteiro
• structure - estrutura
• union - união
Tipo de dados de enumeração
• enum - enumerar
Tipo de dados nulo:
• Void – vazio
9
Tipo Num de bits
Intervalo
Inicio Fim
char 8 -128 127
unsigned char 8 0 255
signed char 8 -128 127
int 16 -32.768 32.767
unsignedint 16 0 65.535
signed int 16 -32.768 32.767
short int 16 -32.768 32.767
unsigned short int 16 0 65.535
signed short int 16 -32.768 32.767
long int 32 -2.147.483.648 2.147.483.647
signed long int 32 -2.147.483.648 2.147.483.647
unsigned long int 32 0 4.294.967.295
float 32 3,4E-38 3.4E+38
double 64 1,7E-308 1,7E+308
long double 80 3,4E-4932 3,4E+4932
.
4.2 PONTEIROS
O ponteiro na linguagem C é uma variável que armazena o endereço de outra
variável. Essa variável pode ser do tipo int, char, array, function ou qualquer outro
ponteiro. O tamanho do ponteiro depende da arquitetura
Existem várias situações onde ponteiros são úteis, por exemplo:
• Alocação dinâmica de memória
• Manipulação de arrays.
• Para retornar mais de um valor em uma função.
• Referência para listas, pilhas, árvores e grafos.
4.3 Função
Em c, podemos dividir um programa grande nos blocos básicos de construção
conhecidos como função. A função contém o conjunto de instruções de
10
programação entre {}. Uma função pode ser chamada várias vezes para fornecer
reutilização e modularidade ao programa. Em outras palavras, podemos dizer
que a coleção de funções cria um programa. A função também é conhecida
como procedimento ou sub-rotina em outras linguagens de programação.
Vantagem de funções em C
Existem as seguintes vantagens das funções C.
• Usando funções, podemos evitar reescrever a mesma lógica/código
repetidamente em um programa.
• Podemos chamar funções C quantas vezes em um programa e de
qualquer lugar em um programa.
• Podemos rastrear facilmente um grande programa C quando ele é
dividido em várias funções.
• A reutilização é a principal conquista das funções C.
• No entanto, a chamada de função é sempre uma sobrecarga em um
programa C.
11
5. LINGUAGENS SIMILARES
A linguagem C influenciou diversas linguagens desenvolvidas posteriormente
como: C++, Java, C#, Javascript, Perl, Python e PHP.
Figura 2 – Influencia do C em outras linguagens
A influencia mais marcante que C deixou para as próximas Linguagens de
Programação, foi a sua sintaxe extremamente eficiente.
Figura 3 – Semelhança das LPs com C
12
6.EXEMPLOS DE PROGRAMAS
1 - Hello World!
#include <stdio.h>
#include <stdlib.h>
int main()
{
printf("Hello world!\n");
return 0;
}
2 – While com soma
#include <stdio.h>
#include <stdlib.h>
int main ()
{
char sn;
int i, j, z;
printf("Quer fazer uma soma?(s/n?): "); //perguntando ao usuario se ele quer
fazer a soma
scanf("%c", &sn);
while(sn == 's')
{
printf("\nInsira um numero inteiro: "); //inserir um inteiro
scanf("%d", &i);
printf("Insira um numero inteiro: ");
scanf("%d", &j);
z = i + j; // fazer a soma dos 2 inteiros
printf("\nO resultado da soma e: %d", z); // imprime a soma
fflush(stdin);
printf("\nQuer fazer uma soma?(s/n?): "); // faz o loop
scanf("%c", &sn);
}
13
return 0;
}
3 – Vetor
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
int i;
float vetor[5] = {1,3,5,7,9};
// declarando e inicializando o vetor
printf("Exibindo os Valores do Vetor \n\n");
for( i = 0 ; i < 5; i++)
{
printf("[%.1f]", vetor[i]);
}
return 0;
}
4 – Ponteiro
#include <stdio.h>
#include <conio.h>
int main(void)
{
//valor é a variável que será apontada pelo ponteiro
int valor = 15;
//declaração de variável ponteiro
int *ptr;
//atribuindo o endereço da variável valor ao ponteiro
14
ptr = &valor;
printf("Utilizando ponteiros\n\n");
printf ("Conteudo da variavel valor: %d\n", valor);
printf ("Endereco da variavel valor: %x \n", &valor);
printf ("Conteudo da variavel ponteiro ptr: %x", ptr);
return 0;
}
5 – Função
#include <stdio.h>
#include <stdlib.h>
static void Mul(int i, int j)
{
i = i * j;
printf("O resultado da multiplicacao e: %d", i);
}
int main()
{
char sn;
int i, j;
printf("Quer fazer uma multiplicacao?(s/n?): ");
scanf("%c", &sn);
while(sn == 's')
{
printf("\nInsira um numero inteiro: ");
scanf("%d", &i);
printf("Insira um numero inteiro: ");
scanf("%d", &j);
Mul(i, j);
fflush(stdin);
15
printf("\nQuer fazer uma multiplicacao?(s/n?): "); // faz o loop
scanf("%c", &sn);
}
return 0;
}
16
7.CONSIDERAÇÕES FINAIS
Concluímos que a linguagem C revolucionou o modo em que programamos,
e todas as linguagens seja ela procedural ou orientada a objetos, tem um pouco
de C.
Uma linguagem que no começo pode ser difícil, porem quando se acostuma
a sua sintaxe fica bem simples se programar.
17
8.BIBLIOGRAFIA
SCHILDT, Herbert. C Completo e Total. Terceira Edição. São Paulo, Makron
Books, 1 fevereiro 1997.
BACKES, André. Linguagem C completa e descomplicada. 2ª edição. São
Paulo, GEN LTC, 29 outubro 2018.
THIBES, Vitoria. C: a linguagem de programação que está em tudo o que você
usa. Canal Tech, 2014. Disponível em: (https://canaltech.com.br/software/c-a-
linguagem-de-programacao-que-esta-em-tudo-o-que-voce-usa-19512/). Acesso
em: 23 de março de 2022.
PINHO, Márcio S. Histórico da Linguagem C. PUCRS. Disponível em:
(https://www.inf.pucrs.br/~pinho/LaproI/Historico/Historico.htm). Acesso em: 23
de março de 2022.
LESTAL, Justin. História das linguagens de programação. Dev Skiller, 2020.
Disponivel em: (https://devskiller.com/pt/historia-da-programacao-idiomas/).
Acesso em: 23 de março de 2022.
CARVALHO, Erick. Programação Procedural Vs. Programação Orientada a
Objetos. Bar8. Disponível em:( https://bar8.com.br/abap-oo-versus-procedural-
50474ff371a5). Acesso em: 23 de março de 2022.
https://www.inf.pucrs.br/~pinho