Curso de C/C++ Avançado

Slides:



Advertisements
Apresentações semelhantes
C/C++ para Sistemas Operacionais Professor: André Luis Meneses Silva /msn: Página:
Advertisements

Centro Integrado de Tecnologia da Informação
Um programa em C Bibliotecas Variáveis globais
Construção de Algoritmos AULA 07
Programação II Estruturas de Dados
ICC – Matrizes Jorge Macêdo.
Introdução à Linguagem C
LPG - I: Ponteiros e Vetores/Matrizes UDESC - SBS
Estruturas de Dados II Prof.: Sergio Pacheco Prof.: Sergio Pacheco 1 1.
Universidade Federal do Espírito Santo Programação II Vetores Professora: Norminda Luiza.
Centro Integrado de Tecnologia da Informação
Centro Integrado de Tecnologia da Informação
Curso de C/C++ Avançado
Curso de C/C++ Avançado
Centro Integrado de Tecnologia da Informação
Curso de C/C++ Avançado
Centro Integrado de Tecnologia da Informação
Curso de C/C++ Avançado
Linguagem C Strings.
Estruturas de Dados Homogêneas Unidimensionais – Vetores e Strings
Slides Prof. Jean SIMÃO Revisão: Prof. João FABRO
Linguagem C Strings.
Fundamentos de Programação 1
Ponteiros.
Revisão da Linguagem C.
Strings Definição: Não confundir caracteres com strings
O Portal do Estudante de Computação
Introdução a Computação e Cálculo Numérico
Introdução a Computação e Cálculo Numérico
Aula prática 8 Ponteiros Monitoria de Introdução à Programação
Aula prática 8 Ponteiros Monitoria de Introdução à Programação.
Linguagem de Programação II Parte VII
CADEIA DE CARACTERES (Strings)
Construção de Algoritmos Professor: Aquiles Burlamaqui Construção de Algoritmos AULA 07 Aquiles Burlamaqui UERN
Estrutura de dados II Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação.
Seminário 1: Revisão de C
UNIDADE 5 ESTRUTURAS DE DADOS HOMOGÊNEAS
Prof. Ricardo Santos PONTEIROS
+ Curso de C/C++ Aula 6 Instrutor: Luiz Felipe Sotero Material por: Allan Lima
+ Curso de C/C++ Aula 7 Instrutor: Luiz Felipe Sotero Material por: Allan Lima
+ Curso de C/C++ Aula 8 Instrutor: Luiz Felipe Sotero Material por: Allan Lima
Curso de C/C++ Aula 9 Instrutor: Luiz Felipe Sotero
Curso de C/C++ Aula 2 Instrutor: Luiz Felipe Sotero
+ Curso de C/C++ Aula 10 Instrutor: Luiz Felipe Sotero Material por: Allan Lima
Computação Eletrônica
Linguagem C : Ponteiros
Programação em C++ Compiladores
Vetor Prof. Guilherme Baião S. Silva Adaptações:
Educação Profissional Técnica de Nível Médio Curso Técnico de Informática
Algumas notas sobre a linguagem de programação C
Estruturas de Dados Aula 6: Cadeias de Caracteres
STRINGS Dilvan Moreira (baseado no livro Big Java e Z. Liang)
Aula Prática 3 Funções Monitoria Introdução à Programação.
 2000 Prentice Hall, Inc. All rights reserved. 1 Capítulo 8 - Caracteres e Strings Sumário 8.1Introdução 8.2Conceitos Fundamentais de Strings e Caracteres.
Algoritmos e Programação MC102 Prof. Paulo Miranda IC-UNICAMP Aula 15 Ponteiros.
Programação Computacional Aula 8: Entrada e Saída pelo Console Prof a. Madeleine Medrano
Algoritmo e Estrutura de Dados I Aulas 12 – Linguagem C Strings Márcia Marra
Profa. Maria Augusta Constante Puget
Linguaguem de Programação II
Estruturas Homogêneas – Vetores e Matrizes
Profa. Maria Augusta Constante Puget
Algoritmo e Estrutura de Dados I Aulas 15 – Linguagem C Alocação Dinâmica de Memória Márcia Marra
Linguagem de Programação
PCI- Vetores Profa. Mercedes Gonzales Márquez. Aula 5 - VetoresAlgoritmos e Estruturas de Dados I Sequência de valores todos do mesmo tipo Nome único.
Aula Prática 6 Ponteiros Monitoria  Quando declaramos uma matriz:  tipo meuArray[tam];  O compilador aloca a matriz em uma região de memória.
1 Aula 07 Strings Prof. Filipe Mutz. 2 Em nossos programas ainda não vimos como armazenar palavras e textos, e eles são muito importantes! Exemplos: Programas.
FUNÇÕES Dilvan Moreira (baseado em material de Z. Liang)
Aula Prática 7 STRINGS Monitoria  Um dos tipos de arranjos que mais ocorre em C é o arranjo de caracteres, ou string. C não suporta um tipo básico.
Transcrição da apresentação:

Curso de C/C++ Avançado Aula 1 – História da Linguagem C, Conceitos básicos de C, Strings, Matrizes e Ponteiros

Sob as seguintes condições: Você pode: copiar, distribuir, exibir e executar a obra criar obras derivadas fazer uso comercial da obra Sob as seguintes condições: Atribuição. Você deve dar crédito ao autor original, da forma especificada pelo autor ou licenciante. Compartilhamento pela mesma Licença. Se você alterar, transformar, ou criar outra obra com base nesta, você somente poderá distribuir a obra resultante sob uma licença idêntica a esta. Para cada novo uso ou distribuição, você deve deixar claro para outros os termos da licença desta obra. Qualquer uma destas condições podem ser renunciadas, desde que Você obtenha permissão do autor. Veja aqui a licença completa

Apresentação do Curso Módulo C Módulo C++ Extensões 4 aulas 2 aulas: Sockets Threads

Metodologia das aulas Exercícios no final de cada aula Análise de exemplos de código Uma prova ao final da décima aula

História de C Surgiu no início dos anos 70 Criada inicialmente para o UNIX Criadores: Dennis Ritchie (dir) Kenneth Thompson (esq) Baseada na Linguagem B Versão inicial bastante simples www.viphostsystem.com

História da Linguagem C Ampla popularização nos anos 80 Muitas arquiteturas e compiladores Problemas com a incompatibilidade Padronização de 82 a 89 (C ANSI) Até hoje existem problemas entre os diversos compiladores e sistemas operacionais

Características Paradigma Procedural Flexível Alta performance Poucas restrições Ótima iteração com: Sistemas Operacionais Dispositivos de Hardware Outras Linguagens

Tipos C possui 5 tipos básicos: E 4 modificadores básicos: char, int, float, double e void E 4 modificadores básicos: signed, unsigned, long e short Os 4 podem ser aplicados ao int long pode ser aplicado ao double signed e unsigned aplicados ao char

Tipos Modificadores de acesso: Classes de Armazenamento: const: a variável não pode ter o seu valor alterado volatile: a variável pode ter o seu valor modificado fora do controle do programa Classes de Armazenamento: auto: indica que uma variável é local (opcional), também é usada na declaração de nested functions extern: variável declarada em outro arquivo register: armazena, se possível, a variável em um registrador na própria CPU.

Tipos Classes de Armazenamento (Cont.): Exemplos: exemploRegister.c static: não permite que um módulo externo possa alterar nem ver uma variável global, também é usado para manter o valor de uma variável local em uma função de uma chamada para outra. Exemplos: exemploRegister.c exemploStatic.c exemploAuto.c

Tipos O tamanho do inteiro depende da arquitetura do sistema: Sistemas de 32 bits -> inteiro de 32 bits Sistemas de 64 bits -> inteiro de 64 bits Restrições: short int e int devem ter pelo menos 16 bits long int com no mínimo 32 bits short int <= int <= long int

Variáveis Restrições O nome das variáveis devem começar com uma letra ou um sublinhado “_” O demais caracteres podem ser letras, números ou sublinhado O nome da variável não pode ser igual a uma palavra reservada e aos nomes das funções Tamanho máximo para o nome de uma variável: 32 caracteres

Constantes São valores que são mantidos fixos pelo compilador Também podem ser: Octais - 0NUMERO_OCTAL Hexadecimais - 0xNUMERO_HEXADECIMAL Exemplos: ‘\n’, “C++”, 10, 15.0, 0xEF (239 em decimal), 03212 (1674 em decimal)

Constantes de Barra Invertida Constante Hexadecimal (N é o valor da constante) \xN Constante Octal (N é o valor da constante) \N Sinal Sonoro (Beep) \a Barra Invertida \\ Nulo \0 Tabulação Horizontal (tab) \t Nova Linha \n Retrocesso (backspace) \b Apostrofo \’ Aspas \” Alimentação de Formulário (form feed) \f Significado Código

Operadores Aritméticos Decremento -- Incremento ++ Resto da divisão inteira % Divisão / Multiplicação * Subtração ou troca de sinal - Soma + Ação Operador

Operadores Relacionais Diferente de != Igual a == Menor que ou igual a <= Menor que < Maior que ou igual a >= Maior que > Relação Operador

Operadores Lógicos NOT ! OR || AND && Função Operador

Operadores Bit a Bit Shift Left << Shift Rigth >> NOT ~ XOR (OR exclusivo) ^ OR Lógico | AND Lógico & Ação Operador

Execício 1)Qual o valor das variáveis após a execução do seguinte trecho de código: int x = 2, y = 4; int a, b, c, d, e, f; a = x & y; b = x | y; c = x ^ y; d = ~x; e = x << 3; f = x >> 1; Resultado a = 0 b = 6 c = 6 d = -3 e = 16 f = 1

Controladores de Fluxo C possui 7 controladores de fluxo básicos: if ? switch for while do-while goto

Vetores São Matrizes com uma única dimensão Declaração Exemplo: tipo nome[tamanho]; Exemplo: int array1[10]; Podem ser inicializados na sua declaração: int array2[10] = { 1, 2, 3 }; int array3[] = { 1, 2, 3 }

Vetores Cuidados importantes ao utilizar vetores Ninguém sabe!!! O compilador não verifica se o índice é válido: int a[10]; int b = a[32]; int b = a[-32]; int c = a[‘F’]; // converte f para int O código acima compila sem problemas, mas o que irá acontecer quando ele for rodado? Ninguém sabe!!!

Exemplo #include <stdio.h> int main() { int numeros[10] = {1, 1}; int i; for (i = 2; i < 10; i++) { numeros[i] = numeros[i-1] + numeros[i-2]; } for (i = 0; i < 10; i++) { printf("%d\n", numeros[i]); return 0;

Strings Uma string é vetor de caracteres terminado pelo caractere nulo ‘\0’ Sintaxe: char nomeDaString[] = “conteudo”; Exemplos: char frase[] = “Eu adoro C”; char centro[4] = “CIn”; char faculdade[10] = {‘U’, ‘F’, ‘P’, ‘E’, ‘\0’};

Cuidados Importantes Lembre-se sempre do ‘\0’ O tamanho do vetor deve ser o número de caracteres que ela irá possuir + 1 Erro comum: char faculdade[] = {'U', 'F', 'P', 'E'}; faculdade não é uma string!

A Biblioteca string.h Principais funções: int strlen(str) int strcmp(str1, str2) string strcpy(destino, origem) string strcat(destino, origem)

strlen int strlen(str); Retorna o tamanho da string passada como parâmetro Exemplo: char string[] = “Linguagem”; printf(“%d”, strlen(string)); // imprime 9 Obs.: O caractere ‘\0’ não é contado.

strcmp int strcmp(str1, str2) Compara duas strings A ordem lexicográfica é utilizada para a comparação Se str1 é menor que str2 <0 Se str1 é maior que str2 >0 Se str1 é igual à str2 Retorno Condição

Exemplo #include <stdio.h> int main() { char pergunta[] = “qual é a sua linguagem favorita?”; char resposta[15]; do { printf(“%s”, pergunta); scanf(“%s”, resposta); } while (strcmp(resposta, “C”)); return 0; }

strcpy string strcpy(destino, origem) Copia o segundo parâmetro no primeiro Exemplo: char ori[] = “ABC”; char dest[12] = “”; // Não esqueça de inicializar strcpy(dest, ori); // dest = “ABC”

strcat string strcat(destino, origem) Concatena o primeiro parâmetro no segundo Exemplo: char ori[] = “DEF”; char dest[12] = “ABC”; strcat(dest, ori); // dest = “ABCDEF”

Obtendo mais detalhes www.cplusplus.com

Outras Funções string gets(string) int puts(string) Lê uma string do dispositivo de entrada padrão Também lê espaços Não verifica o tamanho máximo da string int puts(string) Imprime uma string no dispositivo de saída padrão Ambas estão definidas no header stdio.h

Matrizes Sintaxe: Exemplos: // Matriz Bidimensional tipo nomoDaMatriz[dim1][dim2]...[dimN]; Exemplos: // Matriz Bidimensional int m1[2][2] = { 1, 2, 3, 4 }; // Outra maneira int m2[2][2] = { {1, 2 }, { 3, 4 } }; // Matriz Tridimensional int m3[2][2][2] = { 1, 2, 3, 4, 5, 6, 7, 8 }; printf("%d\n", m1[1][1]); printf("%d\n", m3[1][0][0]);

Ponteiros Guardam o endereço de uma variável Sintaxe: Exemplos: tipo *nomeDoPonteiro; Exemplos: int *a; char *b; float *c; double *d;

Ponteiros Ponteiros precisam ser inicializados Para isto basta usarmos o operador & Ele retorna o endereço de uma variável Exemplo: int a = 10, *p; p = &a; // p aponta para o endereço de a

Ponteiros O operador * é usado para termos acesso ao valor do endereço de memória para o qual um ponteiro aponta Exemplo: int a, b = 10, *p; p = &b; // p aponta para o endereço de b a = *p; // a = 10 *p = 15; // b = 15, mas a ainda é 10

Ponteiros Operações aritméticas: Igualdade Incremento e decremento // p1 aponta para o mesmo endereço de p2 p1 = p2 *p1 = *p2 // copia o conteúdo Incremento e decremento p++; // p = p + sizeof(tipo_de_p) p--; // p = p - sizeof(tipo_de_p)

Ponteiros Operações aritméticas: incremento Comparação p = p + 10;

Ponteiros Exemplo: exemploPonteiro.c

Exercícios 2)Qual a diferença entre: p++; (*p)++; *(p++);

Exercícios 3)Qual o valores de x e de y no final do programa? int main() { int y, *p, x; y = 0; p = &y; x = *p; x = 4; (*p)++; x--; (*p) += x; printf ("y = %d\n", y); return 0; }

Exercícios 4) Escreva um programa que lê strings do teclado até que duas strings iguais sejam digitadas consecutivamente. A saída é a concatenação de todas as strings lidas e os tamanhos da maior a da menor.

Exercícios 5)Faça um programa que calcula o determinante de uma matriz 2*2. O usuário entra com a matriz e o programa imprime o determinante na tela

Exercícios 6) Implemente uma função chamada swap que recebe os dois ponteiros para inteiros como parâmetro inverte seus conteúdos.

Referências Matos, P. A. & Carvalho, G. H. P. - A Linguagem de Programação C The C Programming Language http://www.engin.umd.umich.edu/CIS/course.d es/cis400/c/c.html Curso de C da UFMG http://ead1.eee.ufmg.br/cursos/C/ Lammert Bies, ASCII character map http://www.lammertbies.nl/comm/info/ascii- characters.html

Referências Curso de C da UFMG cplusplus resources http://ead1.eee.ufmg.br/cursos/C/ cplusplus resources http://www.cplusplus.com Slides de Gustavo (ghpc@cin.ufpe.br) do Curso de C/C++ Curso de C da UFMG - http://www.mtm.ufsc.br/~azeredo/cursoC/c.html Slides da Aula de Gustavo Adicionar a página sobre o auto