linguagens de programação c-c++
TRANSCRIPT
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/