Docsity
Docsity

Prepare-se para as provas
Prepare-se para as provas

Estude fácil! Tem muito documento disponível na Docsity


Ganhe pontos para baixar
Ganhe pontos para baixar

Ganhe pontos ajudando outros esrudantes ou compre um plano Premium


Guias e Dicas
Guias e Dicas


Apostila C (incompleta), Notas de estudo de Informática

Apostila de c

Tipologia: Notas de estudo

2011

Compartilhado em 04/05/2011

felipe-alves-januario-3
felipe-alves-januario-3 🇧🇷

1 documento

1 / 13

Toggle sidebar

Esta página não é visível na pré-visualização

Não perca as partes importantes!

bg1
Página 1 de 13
Apostila de Linguagem C
(Versão Incompleta)
Introdução
A linguagem de Programação C foi desenvolvida na AT&T Laboratories por
Dennis Ritchie em 1972. Surgiu da necessidade de uma linguagem de programação que
fosse razoavelmente fácil de aprender, de baixo e alto nível simultaneamente e,
principalmente, independente do hardware. Foi inicialmente utilizada no
desenvolvimento do sistema operacional UNIX.
Evolução da linguagem
Algol 60, 1960. Desenvolvida por um comitê internacional. Era geral e abstrata
demais.
CPL (Combined Programming Language), 1963. Desenvolvida pelas universidades
de Cambridge e Londres. Era grande, difícil de aprender e de implementar.
BCPL (Basic Combined Programming Language), 1967. Desenvolvida por Martin
Richards, universidade de Cambridge. Era muito limitada. Não possuía tipos, era
responsabilidade do programador tratar um item como uma string ou um
inteiro.
B, 1970. Desenvolvida por Ken Thompson, Bell Labs. Melhor que BCPL, mas ainda
possuía muitas limitações e não implementava tipos de dados. Utilizada no
desenvolvimento das primeiras versões do UNIX.
C, 1972. Desenvolvida por Dennis Ritchie, Bell Labs. Amigável e eficiente.
Implementada inicialmente em um computador DEC PDP-11. Foi base do sistema
UNIX. Ficou restrita para uso interno até 1978 quando Dennis M. Ritchie e Brian
W. Kernighan lançaram o livro C, a linguagem de programação.
C++, 1983. Desenvolvida por Bjarne Stroustrup, AT&T Bell Labs. A principal
característica foi a Orientação a Objetos o que a torna uma linguagem híbrida.
Java, 1995. Desenvolvida por James Gosling, Sun Mycrosystems. Baseada em
C++, mas sem algumas características que dificultavam o desenvolvimento
rápido de aplicativos, como uso de ponteiros e herança múltipla. Cresceu
bastante nos seus anos iniciais, mais do que qualquer outra linguagem de
programação. O principal problema é a lentidão de algumas de suas aplicações,
principalmente as relacionadas com interface gráfica.
C#, 2001. Desenvolvida pela Microsoft, C# (C sharp) tem o objetivo de fazer
frente ao rápido e sólido crescimento da base instalada de desenvolvedores Java.
A extensa variedade atual de linguagens/compiladores, disponíveis para
desenvolvimento de software, engloba praticamente todos os aspectos possíveis do
pf3
pf4
pf5
pf8
pf9
pfa
pfd

Pré-visualização parcial do texto

Baixe Apostila C (incompleta) e outras Notas de estudo em PDF para Informática, somente na Docsity!

Apostila de Linguagem C

(Versão Incompleta)

Introdução

A linguagem de Programação C foi desenvolvida na AT&T Laboratories por Dennis Ritchie em 1972. Surgiu da necessidade de uma linguagem de programação que fosse razoavelmente fácil de aprender, de baixo e alto nível simultaneamente e, principalmente, independente do hardware. Foi inicialmente utilizada no desenvolvimento do sistema operacional UNIX.

Evolução da linguagem

  • Algol 60, 1960. Desenvolvida por um comitê internacional. Era geral e abstrata demais.
  • CPL (Combined Programming Language), 1963. Desenvolvida pelas universidades de Cambridge e Londres. Era grande, difícil de aprender e de implementar.
  • BCPL (Basic Combined Programming Language), 1967. Desenvolvida por Martin Richards, universidade de Cambridge. Era muito limitada. Não possuía tipos, era responsabilidade do programador tratar um item como uma string ou um inteiro.
  • B, 1970. Desenvolvida por Ken Thompson, Bell Labs. Melhor que BCPL, mas ainda possuía muitas limitações e não implementava tipos de dados. Utilizada no desenvolvimento das primeiras versões do UNIX.
  • C, 1972. Desenvolvida por Dennis Ritchie, Bell Labs. Amigável e eficiente. Implementada inicialmente em um computador DEC PDP-11. Foi base do sistema UNIX. Ficou restrita para uso interno até 1978 quando Dennis M. Ritchie e Brian W. Kernighan lançaram o livro C, a linguagem de programação.
  • C++, 1983. Desenvolvida por Bjarne Stroustrup, AT&T Bell Labs. A principal característica foi a Orientação a Objetos o que a torna uma linguagem híbrida.
  • Java, 1995. Desenvolvida por James Gosling, Sun Mycrosystems. Baseada em C++, mas sem algumas características que dificultavam o desenvolvimento rápido de aplicativos, como uso de ponteiros e herança múltipla. Cresceu bastante nos seus anos iniciais, mais do que qualquer outra linguagem de programação. O principal problema é a lentidão de algumas de suas aplicações, principalmente as relacionadas com interface gráfica.
  • C#, 2001. Desenvolvida pela Microsoft, C# (C sharp) tem o objetivo de fazer frente ao rápido e sólido crescimento da base instalada de desenvolvedores Java.

A extensa variedade atual de linguagens/compiladores, disponíveis para desenvolvimento de software, engloba praticamente todos os aspectos possíveis do

ciclo de construção de programas, tanto em termos de facilidades de programação (ambiente, depurador, otimizador de código, etc.) quanto em componentes prontos para as tarefas mais comuns. O simples fato de que a maioria das novas ferramentas é voltada para aplicações específicas e em ambientes específicos, possibilita que uma linguagem antiga (bem projetada) continue mantendo seu espaço através das seguintes vantagens:

  • Velocidade
  • Flexibilidade
  • Portabilidade
  • Solidez
  • Sintaxe bem definida, sem ambigüidades
  • Pronto acesso ao hardware, quando necessário
  • Vasta bibliografia e casos de uso práticos

Com todas estas vantagens, alguém pode ser tentado a começar o uso de C imediatamente sem mais considerações. Deve-se alertar que a linguagem C possui seus problemas e alguns destes, curiosamente, advêm justamente das vantagens apresentadas pelos defensores de C:

a) Velocidade: um programador mediano pode facilmente desenvolver um programa em C que seja mais lento que um programa feito por um novato em um ambiente mais moderno, como o Visual Studio , por exemplo. Um programa em C somente será mais rápido se for bem projetado e levando-se em consideração as habilidades algorítmicas do programador, seu conhecimento da linguagem e o seu conhecimento do hardware e do sistema operacional onde o programa será utilizado.

b) Flexibilidade: novamente uma característica que depende muito do conhecimento do programador. Caso este não conheça muito bem as nuances da linguagem poderá desenvolver um programa que não funcione corretamente e o que é pior: difícil de depurar.

c) Portabilidade: mesmo utilizando ANSI-C (C padrão) não há garantias que um programa funcione corretamente em plataformas diferentes, visto que existem diferenças significativas na implementação dos compiladores.

C é uma linguagem de programação de médio nível, pois possui estruturas de controle e de dados inerentes a linguagens de alto nível e facilidades de programação de hardware, característica de linguagens de baixo nível (ex: assembly). É sensível ao caso, ou seja, diferencia as letras minúsculas das maiúsculas. Escrever contador em C é diferente de Contador ou cOntador. Convencionou-se que os nomes de funções e variáveis em C sejam escritas em minúsculas enquanto os nomes de constantes em maiúsculas.

Linha 8: return 0; Retorna o valor 0 para indicar que o programa finalizou.

Linha 9: } Uma chave fechada indica o fim de um bloco. Em nosso exemplo, estamos finalizando a função principal.

Ao ser executado, este programa apresenta uma única mensagem.

Meu primeiro programa

Constantes

No programa anterior a única informação que não faz parte dos comandos da linguagem C é a frase mostrada na tela. Esta frase não muda, sempre é mostrada da mesma forma. Os dados de um programa cujos valores não mudam são chamados de constantes.

Exemplos de constantes

  • "Era uma vez um programa...\n" - string ou cadeia de caracteres
  • 'a' - caracter
  • 100 - Número inteiro na base decimal
  • 0100 - Número inteiro na base octal
  • 0x100 - Número inteiro na base hexadecimal
  • 35.50 - Número real (ponto flutuante)

Variáveis e Tipos de Dados

Existem dados que variam durante a execução de um programa. Estes elementos chamam-se de variáveis e podem conter qualquer valor de um determinado tipo de dados. Os tipos de dados definem que elemento pode ser inserido dentro de uma variável e também qual o tamanho desta variável. A linguagem C tem 4 tipos de dados básicos:

  • char - Tem 1 byte de tamanho. Pode armazenar caracteres isolados (um de cada vez) ou números inteiros de -128 a 127;
  • int - O seu tamanho depende do sistema operacional e do compilador. O valor mais comum é de 4 bytes. Pode armazenas números inteiros de -2147483648 a 2147483647;
  • float - Tem 4 bytes de tamanho. Armazena números reais (ponto-flutuante de precisão simples). Sua faixa de valores é de 3.4E-38 a 3.4E38. O "E" significa dez elevado a.
  • double - Tamanho de 8 bytes. Também armazena números reais (ponto flutuante de dupla precisão). Sua faixa de valores é bem mais ampla: 1.7E-308 a 1.7E308.

Estes tipos podem se alterados quanto ao tamanho ou faixa de valores pelos modificadores de dados short, long, signed, unsigned.

Declaração de Variáveis

Para que uma variável possa ser usada em um programa ela deve ser criada. A declaração de variáveis é o processo pelo qual a variável é criada, fornecendo no ato um nome e um tipo para a variável. Este processo resulta na alocação (reserva) de um espaço de memória referente ao tamanho do tipo definido.

Sintaxe:

<var 1>, <var 2>, ...;

onde:

: qualquer tipo válido da linguagem C. : nome da variável. Deve começar com letra, mas os demais caracteres podem ser letras ou números.

Exemplos

int idade, qtde; float valor_comprado; char email; double nota1, nota2;

Após a declaração destas variáveis teremos espaços reservados em memória para cada uma delas. Neste espaço podemos realizar operações de leitura e escrita, de acordo com a necessidade do algoritmo.

Comandos de Entrada e Saída de Dados

Função printf ()

Função para impressão de dados formatados na saída padrão ( stdout - tela) definida no arquivo cabeçalho stdio.h.

Sintaxe:

printf ("<texto para impressão>", , <expressão>, ...);

<texto para impressão> é o texto que será impresso na tela. Este texto pode ser composto de caracteres que serão exibidos na tela ou ações que serão executadas, como, por exemplo, pular uma linha ou emitir um bip no alto-falante.

este argumento é opcional e indica um valor que será impresso dentro do <texto para impressão>. Pode ser uma variável ou constante.

<expressão> este argumento é opcional e indica um valor que será impresso dentro do <texto para impressão>. Pode ser uma expressão aritmética ou lógica ou ainda uma chamada a outra função.

Exemplos:

printf("O valor da variável idade é %d", idade);

printf("Depois deste texto serão puladas duas linhas\n\n");

Para imprimir o conteúdo de uma variável dentro do texto é necessário inserir neste mesmo texto no local de impressão um % seguido do tipo a ser mostrado. As opções disponíveis para impressão de variáveis são:

Código Tipo da Impressão %c caractere %o número na base octal %x número na base hexadecimal %d número na base decimal %e número em notação científica %f número float %l número long int %lf número double %u número sem sinal %s string %p endereço %% sinal de %

Estes códigos de impressão podem ser usados também para alterar o tamanho do campo e a forma de impressão do resultado. Para especificar o tamanho mínimo deve-se colocar a quantidade de casas do campo entre o % e o símbolo do tipo correspondente. Como exemplo, suponha que a variável var tem o valor igual a oito.

printf ("Valor: %6d", var);

Imprime uma variável inteira com no mínimo 6 casas, alinhadas a direita. Se a variável possuir menos de 6 dígitos o número será completado com espaços em branco a esquerda.

Valor: 8

printf ("Valor: %-6d", var);

Imprime uma variável inteira com no mínimo 6 casas, alinhadas a esquerda. Se a variável num possuir menos de 6 dígitos o número será completado com espaços em branco a direita.

Valor: 8

printf ("Valor: %4.2f", var);

Imprime uma variável float com 4 dígitos sendo 2 decimais. Se não for especificado o número de casas decimais serão impressas 6 casas decimais.

Valor: 8.

printf ("Valor: %06d", var);

Este comando imprimirá o valor da variável alinhado a direita com zeros a esquerda conforme a saída indicada abaixo:

Valor: 000008

Além de valores de variáveis, podemos especificar, dentro do texto para impressão, caracteres especiais que representam determinadas ações, conforme a tabela abaixo:

scanf ("%c", &letra);

Este comando aguarda a digitação de um caractere do teclado, que é colocado na variável letra.

scanf ("%f", &preco);

Este comando aguarda a digitação de um valor numérico do teclado. Este valor digitado é colocado na variável preco. As casas decimais devem ser digitadas após um ponto e não uma vírgula.

Os tipos que podem ser utilizados no scanf são semelhantes aos do printf como indica a tabela abaixo:

Código Tipo da Variável %c caractere %o inteiro na base octal %x inteiro na base hexadecimal %d inteiro na base decimal %e número em notação científica %f número float %l inteiro longo %lf número double %s string %u inteiro sem sinal

Função gets()

Função para leitura de strings da entrada padrão ( stdin - teclado) definida no arquivo cabeçalho stdio.h.

Sintaxe: gets (var);

é a variável que receberá a string.

Uma string em linguagem C é entendida como um conjunto de caracteres. Para armazenar uma string em memória, é preciso criar (declarar) um vetor de caracteres.

Exemplo:

#include<stdio.h> int main() { char teste[10]; gets(teste); printf("A string digitada foi: %s", teste); return 0; }

Neste exemplo, a variável teste foi declarada como sendo do tipo char (caractere) e contendo 10 letras.

Operadores Aritméticos

Os operadores aritméticos são usados para desenvolver operações matemáticas.

Operador Ação

  • Soma
  • Subtração Troca de sinal
  • Multiplicação / Divisão % Resto de divisão

O operador “/” (divisão) quando aplicado a variáveis inteiras, nos fornece o resultado da divisão inteira; quando aplicado a variáveis em ponto flutuante nos fornece o resultado da divisão "real". O operador ”%” fornece o resto da divisão de dois inteiros.

Operadores Relacionais e Lógicos

Os operadores relacionais do C realizam comparações entre variáveis.

Operador Ação

Maior do que = Maior ou igual a < Menor do que <= Menor ou igual a == Igual a != Diferente de && and (e)

Operadores de Molde (cast)

Em certas expressões com tipos de dados misturados é possível realizar a conversão automática de tipos.

Exemplo: int valor; valor = (int) 3.141592;

A variável valor terá como conteúdo o número 3.