Carlos Eduardo Batista. Centro de Informática - UFPB

Documentos relacionados
Programação de Computadores I Introdução ao C PROFESSORA CINTIA CAETANO

ECT1203 Linguagem de Programação

Estruturas da linguagem C. 1. Identificadores, tipos primitivos, variáveis e constantes, operadores e expressões.

# Estrutura de Dados # Aula - Revisão de C/C++ na Prática. Prof. Leinylson Fontinele Pereira

PLANO DE UNIDADE DIDÁTICA- PUD

#include <stdio.h> Void main() { printf( Cheguei!\n"); } INTRODUÇÃO A LINGUAGEM C

Carlos Eduardo Batista. Centro de Informática - UFPB

Anhanguera Educacional S.A. Centro Universitário Ibero-Americano

Linguagens de Programação

Programação científica C++

Carlos Eduardo Batista. Centro de Informática - UFPB

Programação Estruturada

Introdução a Programação. Ponteiros e Vetores, Alocação Dinâmica

Computação L2. Linguagem C++ Observação: Material Baseado na Disciplina Computação Eletrônica.

ALGORITMOS E ESRUTRA DE DADOS I. Ponteiros Passagem por Valor e Referência Alocação de Memória

Linguagem C. Ponteiros. Alex Vidigal Bastos.

Reinaldo Gomes Alocação Dinâmica

Universidade Estadual de Mato Grosso do Sul Ciência da Computação Algoritmos e Estruturas de Dados I (AED-I) Prof. Nilton

Linguagem de Programação C. Linguagem de Programação C. Linguagem de Programação C. Linguagem de Programação C. Linguagem de Programação C

Linguagem de Programação C

13. ALOCAÇÃO DINÂMICA DE MEMÓRIA

Estrutura de dados 1. Ponteiros

Programação II. Vetores e Alocação Dinâmica. Bruno Feijó Dept. de Informática, PUC-Rio

Estruturas de Dados. Introdução Definição de Ponteiros Declaração de Ponteiros em C Manipulação de Ponteiros em C

ANHANGUERA ESTRUTURA DE DADOS AULA 04 MATRIZES, LISTAS E ALOCAÇÃO DINÂMICA. Prof. Thomás da Costa

Linguagens de Programação PROGRAMAÇÃO DE COMPUTADORES. Linguagem C. Linguagem C Estrutura Básica. Constante (literais) Linguagem C Primeiro Programa

Linguagem de Programação C. Prof. Fabrício Olivetti de França

Fundamentos de Programação. Linguagem C++ Introdução, identificadores, tipos de dados. Prof. Bruno E. G. Gomes IFRN

A Linguagem C. A forma de um programa em C

Hello World. Linguagem C. Tipos de Dados. Palavras Reservadas. Operadores Aritméticos. Pré e pós incremento e pré e pós decremento

AULA 6. Conceitos. Melhores momentos. Conceitos. Conceitos. Conceitos. Conceitos

Introdução à Linguagem C

Estruturas Dinâmicas - Ponteiros

Introdução a Programação. Ponteiros e Strings, Alocação Dinâmica

INTRODUÇÃO AO C++ SISTEMAS DE INFORMAÇÃO DR. EDNALDO B. PIZZOLATO

Sumário. Introdução à Ciência da Computação. Ponteiros em C. Introdução. Definição. Por quê ponteiros são importantes?

3. Linguagem de Programação C

Programação 5374 : Engenharia Informática 6638 : Tecnologias e Sistemas de Informação. Cap. 7 Arrays. Arrays

Slides trabalhados durante a quinta aula

Linguagem C Princípios Básicos (parte 1)

Entender o problema Encontrar um algoritmo para resolvê-lo. Implementar o algoritmo numa linguagem de programação

Introdução à linguagem C++

A linguagem C (visão histórica)

Cláudio C. Rodrigues Faculdade da Computação - UFU. Faculdade da Computação - UFU 1

Fundamentos de Programação

1/34 GESTÃO DINÂMICA DE MEMÓRIA

Programação 1. Atribuição, operadores aritméticos, entrada de dados. Técnico em Eletrônica Semestre 5 02

Linguagem C Introdução. Contexto Histórico Principais diferenças do Java Funções em C Compilar programas em C no Linux

Carlos Eduardo Batista. Centro de Informática - UFPB

The Cyclops Project. Introdução: C++

Algoritmos e Programação

Material III-Bimestre Introdução e conceitos fundamentais da Linguagem C#

Exercício. Alocação Dinâmica. Alocação dinâmica de memória. Alocação de memória. Alocação da Memória Principal. Alocação da Memória Principal

ALGORITMOS AULA 01. Baseado nas aulas do Prof. Jorgiano Vidal

Introdução à Linguagem C

4. Estruturas Fundamentais de Programação em C

Linguagem de Programação. Thiago Leite Francisco Barretto

Ponteiros em C. Adriano Joaquim de Oliveira Cruz 21 de julho de Instituto de Matemática Departamento de Ciência da Computação UFRJ

Curso de Programação C em Ambientes Linux Aula 05

Conceitos básicos. Computação eletrônica: Gurvan Huiban

Conhecendo a Linguagem de Programação C

Linguagem C. IF61A/IF71A - Computação 1 Prof. Leonelo Almeida. Universidade Tecnológica Federal do Paraná

Programação de Computadores II Lista de Exercícios 03

Computação 2. Aula 7. Profª. Fabiany Ponteiros

Programação II. Introdução à Linguagem C

Utilizando cin: primeiros passos

Programação de Computadores

Linguagem C. Brian W. Kernighan, Dennis Ritchie (K&R) Slides adaptados, inspirados, muitos copiados dos slides do professor Pedro Pereira

Básico: estrutura de programa, sintaxe Interface com linha de comando

Princípios de Desenvolvimento de Algoritmos MAC122

Programação Estruturada Prof. Rodrigo Hausen Organização e Gerenciamento de Memória

INTRODUÇÃO À LINGUAGEM C. Prof. Msc. Luis Filipe Alves Pereira 2015

Linguagens de Programação I

Universidade Federal de Uberlândia Faculdade de Computação. Linguagem C: ponteiros e alocação dinâmica

Algoritmos e Estruturas de Dados. Prof. Marcelo Zorzan Profa. Melissa Zanatta

Conceitos Básicos de C

Revisão Linguagem C Parte 1

Ponteiros - Parte I. Ponteiros, Ponteiros e Vetores, Algoritmo Bubble Sort, Alocação Dinâmica de Memória

INSTITUTO FEDERAL DE! EDUCAÇÃO, CIÊNCIA E TECNOLOGIA RIO GRANDE DO NORTE

Programação II. Vetores e Alocação Dinâmica. Bruno Feijó Dept. de Informática, PUC-Rio

Introdução à Programação Aula 04. Prof. Max Santana Rolemberg Farias Colegiado de Engenharia de Computação

Programação Mestrado Integrado em Engenharia Aeronáutica 1º ano, 1º semestre. T. 11 Gestão de Memória Dinâmica

Introdução a Programação. Tipos Estruturados de Dados

Introdução à Computação

Alocação Dinâmica em C

Ponteiros. Baseado nos slides do Prof. Mauro.

Programação em C. Variáveis e Expressões. Universidade Federal do Rio Grande do Norte Departamento de Engenharia de Computação e Automação

Estruturas dinâmicas Ponteiros

Estruturas Dinâmicas - Ponteiros Parte I

Introdução a Computação

Aula 24 Ponteiros, vetores e structs

11a. Aula Ponteiros e Vetores

Programação em Sistemas Computacionais

Ponteiros. Introdução

//conteúdo do arquivo pacote.h

Linguagem de Programação I. Aula 06 Linguagem C: Tipos de Dados

Prof. Marco Antonio M. Carvalho

Parte 1. Programação (linguagem C) Introdução Geral

Tópicos em C. Eliade F. Lima

Algoritmos e Estruturas de Dados I IEC012. Linguagem C - Guia de bolso - Prof. César Melo

Transcrição:

Linguagem de Programação I Carlos Eduardo Batista Centro de Informática - UFPB bidu@ci.ufpb.br

Complexidade dos sistemas de software Estrutura Decomposição Abstração Hierarquia Projeto de sistemas complexos Aula passada... 2

Do C ao C++ A Linguagem C++ C++ e POO C++ versus Java Sintaxe básica C++ Principais IDE e ferramentas A Linguagem C++ 3

C Linguagem de programação imperativa Matrizes, estruturas, ponteiros, estruturas de controle... Concisa, de baixo nível e permissiva C: Código eficiente (ciente dos recursos) Geração de código de máquina Sem máquina virtual (sandbox) Pré-processador Do C ao C++ 4

C Tradicional ou Original Antes da padronização The C Programming Language (Kernighan & Ritchie) C89 ANSI C Ainda a versão mais difundida C99 Desenvolvida em paralelo com C++ C11 Multithreading, melhor suporte a mapas de caracteres unicode etc. Do C ao C++ 5

Do C ao C++ 6

Do C ao C++ 7

#include #include <stdio.h> #include myfile.h Inclusão de arquivos de cabeçalho #define #define PI 3.14159 #define produto(x,y) ((x)*(y)) Constantes simbólicas e abstrações para funções Pré-processador C 8

#if #else #endif #ifdef #ifndef Compilação condicional Pré-processador C 9

void O tipo do não-valor Usado para designação de parâemtro nulo funcao(void) Usado para definição de ponteiros genéricos void* Tipos inteiros int, long e short, signed e unsigned Tipos reais float e double Tipos fundamentais em C 10

C89 não possuía tipo boolean Convenção baseada em inteiros era utilizada Tipos caracteres char um byte Define-se com aspas simples: a, \n, \x45 São na verdade valores inteiros (signed ou unsigned) Tipos fundamentais em C 11

Array Memória consecutiva, elementos do mesmo tipo, alocação de tamanho fixo (tamanho conhecido pelo compilador) Compilador traduz a notação de array para notação de ponteiro Indexação baseada em 0 Não há verificação de alocação (extensão do array) Arrayse ponteiros em C 12

Limitações do array Não há atribuição direta Array não pode ser passado por valor Array não pode ser retornado por valor Arrayse ponteiros em C 13

Ponteiros Um ponteiro é um endereço Em C pode-se manipular-se tanto o ponteiro quanto o elemento apontado Aritmética de ponteiros Para dois tipos diferentes X e Y, X* e Y* são diferentes Ponteiro genérico void* Ponteiro nulo NULL Arrayse ponteiros em C 14

Strings em C Uma string é um array de caracteres (tipo char), mutável e delimitada por um caractere especial \0 Tipo: char[] ou char* Um valor literal é denotado através do uso de aspas duplas valor literal Biblioteca C padrão string.h Arrayse ponteiros em C 15

#include <stdio.h> #include <stdlib.h> int main(void) { double a[] = {1.0, 2.0, 3.0, 4.0, 5.0}, sum = 0.0; int i; a[1] = 2.2; for (i = 0; i < 5; i++) sum += a[i]; printf("sum = %f\n", sum); /* 15.2 */ return 0; } Arrayse ponteiros em C 16

#include <stdio.h> #include <stdlib.h> int main(void) { double *a=(double*)malloc(5*sizeof(double)), sum = 0.0; int i, j, k; if (a == NULL){ printf("erro de alocacao\n"); exit(exit_failure); } for (i = 0; i < 5; i++) *(a+i) = (double)(i + 1); *(a+1) = 2.2; /* a[1] = 2.2 */ for (i = 0; i < 5; i++) sum += *(a+i); printf("sum = %f\n", sum); /* 15.2 */ free(a); return 0; } Arrayse ponteiros em C 17

Struct Agregam campos de tipos diferentes em um novo tipo composto Memória consecutiva Seleção direta de componente estrutura1.campo Seleção indireta via ponteiro para estrutura pt_estrutura1->campo União Todos os campos ocupam a mesma memória Maneira de se especializar uma estrutura em diferentes direções Estruturas e uniões em C 18

typedef struct{ char road[15]; int roadnumber; char town[20]; } address; typedef struct{ int idnumber; char firstname[10], lastname[20]; address location;} person; void print_person(const person p){ printf("%s %s\n%s %-4d\n%s\n\n", p.firstname, p.lastname, p.location.road, p.location.roadnumber, p.location.town); } Estruturas e uniões em C 19

Estruturas em C são o ponto de partida para os mecanismos de abstração em C++ Definição de tipos x definição de classes Ponteiros para funções Duas operações com funções possíveis Chamada da função Captura do endereço para a função (ponteiro) Estruturas e uniões em C 20

#include <stdio.h> void (*f)(char *, int); void fun1(char *s, int i){ printf("fun1: %s, %d\n", s, i); } void fun2(char *s, int i){ printf("fun2: %s, %d\n", s, i); } int main(void) { int cond; } printf("condicao (0, 1): "); scanf(" %d", &cond); if (cond) f = &fun1; else f = &fun2; (*f)("ap", 8); return 0; Estruturas e uniões em C 21

enum Mapeamento de valores em instruções switch structs typedef Tipos definidos em C 22

Operadores C++ (re)define 3 operadores. -> :: (escopo) Estruturas de controle C = C++ If, if-else, switch, while... C++ - no laço for pode-se declarar variáveis locais na inilização C89 (ANSI C) não Do C ao C++ 23

#include <iostream> using namespace std; int main(){ int i = 55, j = 77; cout << i << " " << j << endl << endl; for(int j = 10, i = 0; i < 5; i++, j++){ cout << i << " " << j << endl; } cout << endl; } cout << i << " " << j << endl << endl; Do C ao C++ 24

Funções Não é permitido o aninhamento de funções em ANSI C Parâmetros são passados por valor Ponteiros são passados como valor Mecanismo para definição de número arbitrário de parâmetros printf(const char*...) C++ Sobrecarga de funções Argumentos padrão Do C ao C++ 25

#include <stdio.h> double swap_doubles_ptr(double *d1, double *d2){ double temp; temp = *d1; *d1 = *d2; *d2 = temp; } int main(void) { double e, f; } e = 5.0, f = 7.0; printf("%f %f\n", e, f); // 5.0 7.0 swap_doubles_ptr(&e, &f); printf("%f %f\n", e, f); // 7.0 5.0 return 0; Do C ao C++ 26

Organização de programas em C Cabeçalhos (.h) e arquivos de código (.c) Inclusão textual via #include Organização lógica de C++ segue a de C, com escopo diferenciado através do suporte a namespaces Do C ao C++ 27

Funções de alocação de memória em C malloc calloc realloc free C++ new delete Do C ao C++ 28

C++ inclui C With minor exceptions, C++ is a superset of C (meaning C89).Well-written C programs tend to be C++ programs as well. (The C++ Programming Language) Compatibilidade C/C++ 29

Comentários // Não suportados em ANSI C (C89) C++ e C99 suportam Funções sem argumentos Em C pode, em C++ não Estruturas inline como retorno ou parâmetro Em C pode, em C++ não Enum Em C o valor pode ser associado a um inteiro, em C++ não Compatibilidade C/C++ 30

Ponteiro para void Em C podem ser associados a ponteiros de qualquer tipo, em C++ não Static e Casts Semântica diferente em C++ Compatibilidade C/C++ 31

Notas de aula Prof. Kurt Nørmark (Aalborg University) http://people.cs.aau.dk/~normark/ap/from-cto-cpp.html TIOBE http://www.tiobe.com Referências 32

Motivação para o uso de C++ para o aprendizado de POO Quando usar C e quando usar C++ C++ versus Java Sintaxe básica de C++ Ambientes de desenvolvimento C++ Próxima aula 33

Linguagem de Programação I Carlos Eduardo Batista Centro de Informática - UFPB bidu@ci.ufpb.br