Linguagens de programação C-C++

Post on 19-Jun-2015

442 views 8 download

Transcript of Linguagens de programação C-C++

1

Linguagens de programaçãoC / C++

Alunos:Fagner Maciel

GuilhermeProfessor:Thiago da Silva Weingartner

FACULADES ANGLO-AMERICANO DE CAXIAS DO SUL – FAACSCIÊNCIAS DA COMPUTAÇÃO

2

O que é a linguagem C

• O C é uma linguagem de propósito geral, sendo adequada à programação estruturada. Porem é mais utilizada para escrever compiladores, analisadores léxicos,bancos de dados, editores de texto, entre outros.

• A linguagem C pertence a uma família de linguagens cujas características são:

• Portabilidade, Modularidade, Compilação separada, Recursos de baixo nível, Geração

de código eficiente, Confiabilidade, Regularidade, simplicidade e Facilidade de uso.

3

Um pouco de história

• A linguagem C foi criada por Dennis Ritchie, em 1972, no centro de Pesquisas da Bell Laboratories.

• Sua primeira utilização importante foi a reescrita do Sistema Operacional UNIX, que até então era escrito em assembly.

• Na década de 1970 o UNIX saiu do laboratório para ser liberado para as universidades.

• Por volta de 1980,varias empresas desenvolveram plataformas compatíveis com vários outros sistemas operacionais.

4

Visão geral de um programa C

• Editor (módulo fonte em C)

• Pré-processador (novo fonte expandido)

• Compilador (arquivo objeto)

• Lincador (executável)

5

Palavras reservadas•auto •if

•break •int

•case •long

•char •register

•const •return

•continue •short

•default •signed

•do •sizeof

•double •static

•else •struct

•enum •switch

•extern •typedef

•float •union

•for •unsigned

•goto •void

•while •volatile

6

Sintaxe

• A sintaxe são regras detalhadas para cada construção válida na linguagem C.

• As regas estão relacionadas com os tipos, as declarações, as funções e as expressões.

• Tipos:Definem as propriedades dos dados

manipulados em um programa.

7

Sintaxe

• Declarações:Expressam as partes do programa, podendo dar

significado para:Identificador;

Alocar memória; Definir conteúdo inicial;

Definir funções;

8

Sintaxe

• Funções:• Especificam as ações que um programa deve

seguir em execução,definir e alterar valores, e a chamada de funções de I/O são definidas nas expressões.

• As funções são entidades de operação básica nos programas C.

• Existem funções básicas definidas em bibliotecas.

9

Sintaxe

• Pode também serem definidas novas funções nos programas desenvolvidos,nesse caso o programador é quem vai definir se é necessário implantar códigos específicos.

• Para um programa c obrigatório que a função main() exista, ou seja todo programa c deve começar com essa função.

10

Sintaxe

• Para que se possa construir uma função é necessário saber que Os comentários são feitos dessa forma /*Comentário*/ e não são considerados na compilação.

• Cada instrução encerra com ; (Ponto e virgula).

11

Sintaxe

Exemplo 1:#include <stdio.h>/*Declaração da biblioteca que define

printf*/main() /*Função obrigatória*/{int n = 2;/*Declaração de uma variável do tipo int(inteiro)*/printf(“Endereco: %u, Valor: %d”, n, &n);/*função printf*/

}

• Estes são exemplos de programas com funções simples:

Exemplo 2:#include <stdio.h>#include <conio.h>/*Biblioteca que define getche e getch*/main() /*Função obrigatória*/{char carac; ;/*Declaração de uma variável do tipo Char(caracter)*/printf(“Digite um caracter: ”); );/*função printf*/carac = getche();/*Função getche*/printf(“\n A tecla pressionada foi: %c”, carac); );/*função printf*/}

Exemplo 3:#include <stdio.h>main(){char ch;printf(“Digite um caracter: ”);ch = getchar();putchar(ch);}

Exemplo 4:#include <stdio.h>main(){float anos, dias;printf(“Informe sua idade em anos: ”);scanf(“%f”, &anos);dias = anos*365;printf(“Sua idade em dias e’: %.0f \n”, dias);}

12

Sintaxe• Um endereço na memória é visto como um

número inteiro sem sinal, por isso de utilizarmos %u no exemplo 01.

%c caracter simples%d inteiro decimal

%e notação científica%f ponto flutuante

%o inteiro octal %s cadeia de caracteres

%u decimal sem sinal%x hexadecimal%l inteiro longo

13

Sintaxe

• Identificadores:• São nomes usados para se fazer referência a

variáveis, funções, rótulos e vários outros objetos definidos pelo usuário.

int f; /*é != de int F;*/

14

Sintaxe• Quando você declara um identificador dá a

ele um tipo. Os tipos principais podem ser colocados dentro da classe do tipo de objeto de dado.

• Tipos inteiros:char 0,128

signed char (-128,128)unsigned char 0,256

short (2-E15,2E15)unsigned sort -0,216

int 2E-15,2E15unsigned int -0,216

long (2-E31,2E31)unsigned log (-2E+31)

Mesmo tamanho que int sem negativosInteiro de menos 32 bits;

Mesmo que signed char sem negativos

Igual a signed char ou unsigned char sem negativoInteiro de 8 bits

Mesmo que signed char sem negativosInteiro de 16 bits

Mesmo tamanho que short sem negativos Inteiro de 16 bits;

15

Sintaxe

• Tipos de ponto flutuante:float [3.4E-38, 3.4E+38]double (1.7-308,1.7+308)long double (1.7-308,1.7+308) 10 dígitos decimais e precisão maior que do double

6 dígitos de precisão decimal10 dígitos decimais e precisão maior que do float

16

Sintaxe

• Operadores:Operador de atribuição "=“;Aritméticos *, /, + e -;Operadores de relação e lógicos;Incremento e decremento ++,--;Precedência ++ -- mais alta,* / %,+ - mais baixa;Operador cast;Operador sizeof;

17

Estruturas de controle de fluxo

• Podemos dividir em três categorias. • A primeira consiste em instruções condicionais

if e switch. • A segunda são os comandos de controle de

loop o while, for e o do-while. • A terceira contém instruções de desvio

incondicional goto.

18

Matrizes

• A matriz é um tipo de dado usado para representar uma quantidade de variáveis que são referenciadas pelo mesmo nome.

• Matriz unidimensional;• Matriz Multidimensional;• Matrizes estáticas;

19

Manipular Strings

• Em C não existe um tipo de dado string, no seu lugar é utilizado uma matriz de caracteres.

• Para manipular isto pode-se utilizar de algumas funções pré definidas:

• Função gets()• Função puts()• Função strcpy()• Função strcat()• Função strcmp()

20

Ponteiros

• É uma variável que contém o endereço de outra variável. Os ponteiros são utilizados para alocação dinâmica, podendo substituir matrizes com mais eficiência.

• Fornecem a maneira pelas quais funções podem modificar os argumentos chamados.

21

Estruturas• Ao manusearmos termos, informações que não são fáceis de

armazenar em variáveis escalares como são os tipos inteiros e pontos flutuantes.

• Então estes são compostos com vários dos tipos básicos do C.• As estruturas permitem uma organização dos dados e

dividida em campos e registros.Ex1:struct casaco { int cor;char fabricante;int preco;};;

main(){int i;struct casaco p[0];p[0].cor=‘A’;p[0].fabricante='F';p[0].Preco=482;printf(“CorFabricante Preco\n");for(i=0;i<1;i+ +)printf("%d\t%c\t\t%d\n",p[i].cor,p[i].fabricante,p[i].preco);}

22

O que é a linguagem C ++

• A história do C + + começa com C.• A razão para isso é fácil de entender: C + + é construída sobre a

fundação da C. • Assim, C + + é um superconjunto de C. C + + expandida e

melhorada a linguagem C para suportar programação orientada a objetos.

• C + + também adicionou várias outras melhorias para a linguagem C, incluindo um conjunto alargado de rotinas de biblioteca.

• No entanto, muito do espírito e do sabor do C + + é diretamente herdado de C. Portanto, para compreender e apreciar C + +, você precisa entender o "como e porquê" por trás C.

23

Um pouco de história

• C + + foi inventada por Bjarne Stroustrup em 1979, na Bell Laboratories em Murray Hill, New Jersey. Ele inicialmente defendeu a nova linguagem "C com classes." Entretanto, em 1983 o nome foi mudado para C + +.

• Stroustrup construído C + + sobre a fundação de C, incluindo todas as funcionalidades do C, atributos e benefícios.

• Ele também aderiu à filosofia subjacente C do que o programador, não a línguagem, está no comando.

• Neste ponto, é fundamental compreender que Stroustrup não criou uma nova linguagem de programação. Em vez disso, ele reforçou o idoma já bem sucedido.

24

Palavras reservadas

and case and_eq catch asm char auto class bitand compl bitor const bool const_cast break continue

25

Sintaxe

• No c++ vamos perceber que irá mudar pouco para a linguagem C,observe o exemplo abaixo:

Exemplo1:#include <iostream> //Declaração da biblioteca que define coutusing namespace std; //O programa inicia no Main() int main() { cout << "C++ é uma programação poderosa."; return 0; }

26

Usando operadores• + Adição;-Subtração;*Multiplicação;/Divisão;Exemplo 2:#include <iostream>using namespace std;

int main(){int comprimento;int largura;int area;Comprimento=7;Largura=5;Area=comprimento*largura;Cout<<area;Return 0;}

27

Lendo entrada do teclado• Para habilitar o usuário para inserir dados em um programa

a partir do teclado, você vai usar o operador>>. Este é o C + + operador de entrada. Para ler a partir do teclado, use esta formula geral:

• cin >> var;• Aqui, cin é um identificador predefinido. • Fica para o console de entrada e é fornecida

automaticamente pelo C + +. • Por padrão, o CIN é ligado ao teclado, embora possa ser

redirecionada para outros dispositivos.• A variável que recebe a entrada é especificado pela var.

28

Tipo de dadosNome Bytes* Descrição Intervalo*

char 1 caractere ou número inteiro com tamanho de 8 bits.

signed: -128 até 127

unsigned: 0 até 255

short 2 número inteiro com tamanho de 16 bits.

signed: -32768 até 32767

unsigned: 0 até 65535

long 4 número inteiro com tamanho de 32 bits.

signed:-2147483648 até 2147483647

unsigned: 0 até 4294967295

int *

Número inteiro. Seu tamanho tradicionalmente depende no tamanho do tipo Word do sistema, assim no MSDOS possui 16 bits,

enquanto em sistemas de 32 bits (como Windows 9x/2000/NT e sistemas que funcionam sob modo protegido em sistemas x86)

possui 32 bits (4 bytes). Veja short, long

float 4 número real. 3.4e + / - 38 (7 digitos)

double 8 número real com dupla precisão. 1.7e + / - 308 (15 digitos)

long double 10 número real comprido com dupla precisão. 1.2e + / - 4932 (19 digitos)

bool 1

Valor boleano. Pode assumir um dos dois valores: true ou false NOTA: esse é um tipo que foi adicionado recentemente pelo padrão

ANSI-C++. Nem todos os compiladores suportam-no. true ou false

wchar_t 2

Caractere largo. Foi projetado como um tipo para guardar caracteres internacionais de um conjunto de caracteres de dois

bytes. NOTA: esse é um tipo que foi adicionado recentemente pelo padrão ANSI-C++. Nem todos os compiladores suportam-no. caracteres largos

Void Sem valor

29

Operadores

• Operadores aritmeticos:+ Adição;- Subtração; * Multiplicãçãp; / Divisão; % Modulo ; ++

Incremento; -- Decremento;• Operadores lógicos e relacionais:==Igual a!= Diferente de> Maior que< Menor que >=Maior ou igual a<=Menor ou igual a!(E), &&(AND), ||(OR) (Lógicos).

30

Classes e objetos

• A forma geral de uma classe:A classe é criada através do uso da classe de palavras-chave. A forma geral de uma declaração de classe é uma classe simples conforme Ex1:

Ex1:class-nome { private dados e funcoespublic: public dados e funcoes}Lista-objeto;

31

Classes e objetos• Definindo uma classe e a criação de objetos:Class veiculo{Public:Int passageiros;//número de passageirosInt Qtdcombus;//Capacidade de combustivel em LitrosInt consumo;//consumo por litro };- Variáveis de instância definidas pelo veículo ilustra a forma que as

variáveis de instância são declaradas em geral. -A forma geral para declarar uma variável de instância é mostrado

aqui:type var-nome;

32

Classes e objetos

A classe demonstrada acima será implementada de maneira entendermos de que forma iremos cria os objetos,pois ela somente define três variáveis de instância: passageiros ,Qtdcombus e consumo, ou seja somente uma classe de dados. Veja o Ex2:

//Ex2:Este programa cria dois objetos veiculos;#include <iostream>Using namespace std;

33

Classes e objetos//declarar a classe veiculoClass veiculo{Public:Int passageiros;//número de passageirosInt qtdcombus;//Capacidade de combustivel em LitrosInt consumo;//consumo por litro };Int main(){Veiculo moto;//Criado objeto veiculoVeiculo carro;// Criado outro objeto veiculoInt intervalo1,intervalo2;//atribuir valores para os campos em motomoto.passageiros=2;moto. qtdcombu=7;moto.consumo=50;//Atribuir valores aos campos em carrocarro.passageiros=5;carro. Qtdcombu=55;carro.consumo=12;

34

//Calculando o intervalo percorrido com um tanque cheio.intervalo1=moto.qtdcombustivel*moto.consumo;Intervalo2=carro.qtdcombustivel*carro.consumo;Cout<<“Moto pode levar”<<moto.passageiros<<

“por “<<intervalo1<<“de tempo”\n”;Cout<<“Carro pode levar”<<carro.passageiros<<

“por “<<intervalo2<<“de tempo”\n”;return 0;}

Este exemplo demonstrou a criação de dois objetos, sendo eles moto e carro, onde cada um

possui a copia das variáveis instanciadas em veiculo podendo acessa-las sempre que

necessário

35

Função de algumas bibliotecas C• As bibliotecas de C são diferentes das bibliotecas de C++. Apesar de

muitos compiladores de C++ suportarem as bibliotecas de C, nenhum compilador exclusivamente de C suporta bibliotecas de C++.

• #include <stdio.h>• Biblioteca bem básica para quem já programa• Essa biblioteca é responsável pela entrada e saída "Standard

In/Out", ou melhor, entrada e saída padrão. Nela encontramos funções para esse tipo de coisa, o que pode ser a leitura do teclado, escrita formatada (ou não) na tela e operações com arquivos.

• Algumas funções dessa biblioteca: fprintf, printf, fscanf, scanf, getchar, putc, getc, fopen e fclose.

36

Função de algumas bibliotecas C

• #include <ctype.h>• Esta biblioteca serve para testar caracteres

• Testar caracteres, ou seja testar se é maiúsculo, testar se é minúsculo, testar se é espaço, testar dígito decimal... Além disso essa biblioteca permite converter maiúscula em minúscula e vice-versa.

• Algumas funções dela: isupper, islower, isspace, isdigit, toupper e tolower.

37

Função de algumas bibliotecas C

• #include <string.h>• A biblioteca string é responsável por disponibilizar funções

para trabalhar com conjuntos de caracteres, isto é, "strings". Este "header" possui dois grupos de comandos, os que começam com str e os que começam com mem.

• O primeiro grupo permite, por exemplo: copiar, concatenar, comparar e ver o tamanho de uma string. As funções referentes a isso são: strcpy, strcat, strcmp e strlen. As funções do segundo grupo fazem coisas semelhantes como: copiar, mover e comparar: memcpy, memmove, memcmp.

38

Função de algumas bibliotecas C

• #include <math.h>• Está biblioteca declara funções matemáticas que podem

servir para: achar a raiz quadrada, achar o seno, co-seno, tangente, logaritmo na base 10. As funções referentes a isso são: sqrt, sin, cos, tan, log10.

• Fora isso, um outro uso para declaração desta biblioteca é a possibilidade de arredondar um número! Para isso usamos a função que retorna o valor absoluto: fabs.

39

Função de algumas bibliotecas C

• #include <stdlib.h>• Ela é responsável pela conversões de números, as alocações

na memórias e outras funções. Com ela podemos converter um "char" em um "double", converter um "char" para "long", criar um número randômico, alocar na memória, realocar na memória, desalocar da memória, execução de comandos do sistema operacional respectivamente. As funções citadas são: atof, atol, rand, malloc, realloc, free e system.

• Também não podia deixar de falar que ela retorna o valor absoluto de um número inteiro usando abs.

40

Função de algumas bibliotecas C

• #include <time.h>• Esta biblioteca declara funções para

manipularmos a data e hora. Podemos usar esta biblioteca para pegar o horário do processador, pegar o horário do sistema, fazermos a diferença entre dois horários. As funções referentes são: clock, time e difftime.

41

Containers• <bitset> - manipulação de arranjo de bits, algo parecido com

vector<bool> (que é uma construção não recomendada)• <deque> - manipulação de lista duplamente ligada• <list> - manipulação de lista simplesmente ligada• <map> - manipulação de conjunto associativo ordenado

(associação: chave → valor)• <queue> - manipulação de lista FIFO• <set> - manipulação de conjunto• <stack> - manipulação de lista LIFO• <vector> - manipulação de arranjo

Função de algumas bibliotecas C++

42

Streams e entrada/saída• <fstream> - manipulação de fluxo de dados em arquivo• <ios> - declaração mais geral de fluxo de dados• <iostream> - manipulação de fluxo de dados padrão do sistema

(entrada padrão, saída padrão e saída de erros padrão)• <iosfwd> - declaração dos fluxos de dados presentes na linguagem• <iomanip> - manipulação da apresentação e do processamento de

fluxos de dados• <istream> - manipulação de entrada de dados• <ostream> - manipulação de saída de dados• <sstream> - manipulação de fluxo de dados em cadeia de caracteres• <streambuf> - manipulação de buffers de fluxo de dados

Função de algumas bibliotecas C++

43

Funcionalidades numéricas• <complex> - manipulação de número complexo• <numeric> - operações com conjuntos numéricos• <valarray> - arranjo de valores mutáveis

Suporte à linguagem C++• <exception> - manipulação de exceção• <limits> - manipulação de limites numéricos dos tipos

embutidos na linguagem• <new> - manipulação de alocação e desalocação de memória• <typeinfo> - auxílio para o RTTIdo C++

Função de algumas bibliotecas C++

44

IDE para C e C++

• Microsoft Visual Studio http://www.microsoft.com/express/Downloads/

• Dev-C + +.-http://bloodshed-dev-c.en.softonic.com/• Borland C++.-http://www.brothersoft.com/borland-c++-

builder-118249.html• Netbeans-http://netbeans.org/features/cpp/

index_pt_BR.html• Eclipse.- www.eclipse.org/• Turbo C.-

http://www.inf.pucrs.br/~flash/cbp/instala_tc/instala_tc.html• Code::Blocks-http://www.codeblocks.org/