Você está na página 1de 21

SISTEMAS DE INFORMAÇÃO

e
ANÁLISE E DESENVOLVIMENTO DE SISTEMAS

LINGUAGEM DE PROGRAMAÇÃO C++

Prof. Marilda Fatima de Souza da Silva


Computação de Alto
Desempenho (HPC)

22SSIS_6B/N

Prof. Manoel Guilherme


High-Performance Computing (HPC)
Objetivos da Aula

• Relembrar os conceitos básicos do C

• Conceitos básicos de avaliação de desempenho


High-Performance Computing (HPC)
Revisão rápida de linguagem C
Para iniciar no mundo da Linguagem C, primeiro precisamos entender um pouco de como funciona o processo de
construção de um programa.
Geralmente, este processo é similar para qualquer linguagem de programação.
Em geral, o ciclo de construção de uma aplicação engloba quatro etapas:

Etapas da construção de um programa


High-Performance Computing (HPC)
Revisão rápida de linguagem C
1. Escrita do código fonte
• É nesta etapa que o programador realiza o esforço de escrever o código que dará origem ao programa final.
• Este código deve seguir regras rígidas para que o compilador tenha sucesso ao construir o programa.
• Chamamos de "sintaxe" da linguagem a esse conjunto de regras.
High-Performance Computing (HPC)
2. Compilação do programa
• Após escrever o código-fonte, o programador deve acionar o compilador para que o mesmo possa verificar a
consistência do código escrito e construir o programa executável.
• Para compilar um programa em linguagem C, você pode utilizar uma IDE de desenvolvimento.
High-Performance Computing (HPC)
3. Link dos objetos
• O arquivo executável é criado na terceira etapa em que ocorre a "linkagem“ dos objetos.
• Basicamente o linker faz a junção dos arquivos objetos gerados e originados das bibliotecas nativas do C, em
um único arquivo, o executável.
High-Performance Computing (HPC)
4. Execução do programa
• Se as etapas de 1 a 3 ocorrerem sem erros, então ao final deste processo tem-se o arquivo executável do
programa
High-Performance Computing (HPC)
A estrutura do c

1 e 2 - principais bibliotecas da linguagem C


3 - é a definição do método main da aplicação, que é responsável pela definição de
quais serão as primeiras instruções do programa a serem executadas, desta forma,
esta é a função que se encarrega de indicar aonde o programa deve começar
4 até 5 - As instruções iniciais do programa.

Primeiro Programa
High-Performance Computing (HPC)
Uma breve revisão
Identificadores

São os nomes que podem ser dados para variáveis e funções.


Para a escolha destes nomes é necessário seguir algumas regras:

Um identificador deve iniciar por uma letra ou por um "_“;

• A partir do segundo caractere pode conter letras, números e underscore;


• Deve-se usar nomes significativos dentro do contexto do programa;
• C é uma linguagem case-sensitive, ou seja, faz diferença entre nomes com letras maiúsculas e nomes com letras minúsculas. Nota e nota são diferentes;
• Costuma-se usar maiúsculas e minúsculas para separar palavras: "PesoDoCarro";
• Deve ser diferente dos comandos da linguagem;
• Deve ter no máximo 31 caracteres;
• Pode conter números a partir do segundo caractere;

Exemplos:
High-Performance Computing (HPC)
Uma breve revisão

Variáveis

Uma variável é uma possição de memória que pode ser identificada através de um nome.
Podem ter seu conteúdo alterado por um comando de atribuição.
High-Performance Computing (HPC)
Uma breve revisão

Variáveis

Uma variável é uma possição de memória que pode ser identificada através de um nome.
Podem ter seu conteúdo alterado por um comando de atribuição.
High-Performance Computing (HPC)
Uma breve revisão
Função printf() - permite realizar a impressão de textos no monitor, ou seja, é responsável pela saída de informações.

Função scanf() – Permite a entrada de dados no programa


High-Performance Computing (HPC)
Uma breve revisão
Exemplo printf e scanf
High-Performance Computing (HPC)
Uma breve revisão
Exercício

Faça um programa em C que receba dois números inteiros e ao final imprima a soma deles.
High-Performance Computing (HPC)
Uma breve revisão
Exercícios

1. Faça um programa em C que imprima o seu nome.


2. Faça um programa em C que imprima o produto dos valores 23 e 45.
3. Faça um programa em C que imprima a média aritmética entre os números 7, 9, 18.
4. Faça um programa em C que leia e imprima um número inteiro.
5. Faça um programa em C que leia um número reais e imprima a terça parte dele.
6. Faça um programa em C que leia um número inteiro e imprima o seu antecessor e o seu sucessor.
High-Performance Computing (HPC)
Uma breve revisão
Desafio
Faça um programa em C que calcule a quantidade de litros de combustível consumidos em uma viagem, sabendo-se que o
carro tem autonomia de 12 km por litro de combustível. O programa deverá ler o tempo decorrido na viagem e a velocidade
média e aplicar as fórmulas:

D=T×V

L = D/12

Em que:
D = Distância percorrida em horas
T = Tempo decorrido
V = Velocidade média
L = Litros de combustível consumidos

Ao final, o programa deverá imprimir a distância percorrida e a quantidade de litros consumidos na viagem.
High-Performance Computing (HPC)
Métricas para avaliar ganho de desempenho

Computação de Alto Desempenho

• Deve maximizar o que se entende como “desempenho”


• Devemos ser capazes de aferir o ganho de desempenho obtido

Fatores afetam o desempenho de aplicações concorrentes

• Plataformas computacionais distintas


• Diferentes modelos de programação
• Diferentes linguagens/bibliotecas para programação concorrente
• Paradigmas de interação (comm e sync)
• Heterogeneidades de arquiteturas, SOs, desempenho, ...
High-Performance Computing (HPC)
Métricas para avaliar ganho de desempenho
Speedup (Sp) => determina o ganho de desempenho

Absoluto: considera Tseq o melhor algoritmo sequencial conhecido


• Sp = Tseq / Tparp (p indica a quantidade de processadores usada)

Relativo: considera Tseq a exec da versão par sobre um processador)


• Sp = Tpar1 / Tparp

Eficiência (Ep) => determina a eficiência no uso de p processadores


• E = Spp / p

• SP linear (Sp = p) ideal, é o que buscamos


• SP sublinear (Sp < p) caso comum
• SP superlinear (Sp > p) pode acontecer

Escalabilidade
• Eficiência permanece constante para a carga de trabalho e o número de processadores aumentam ou
diminuem
High-Performance Computing (HPC)
Métricas para avaliar ganho de desempenho
Bibliografia

M. J. Quinn, Parallel Computing Theory and Practice, 2nd edition, McGraw-Hill, 1994
Andrew S. TANENBAUM, Maarten Van Steen - Distributed Systems: Principles and Paradigms, 2rd Edition, Pearson -
Prentice Hall, 2007

George COULOURIS, Jean DOLLIMORE, Tim KINDBERG, Gordon BLAIR - Distributed Systems: Concepts and Design, 5rd
Edition, Addison Wesley, 2012
LAUREANO, M. Programando em C para Linux, Unix e Windows. Rio de Janeiro: Brasport, 2005. ISBN 85-7452-233-3.
LOPES, A.; GARCIA, G. Introdução à programação: 500 algoritmos resolvidos. Rio de Janeiro: Elsevier, 2002. ISBN 85-352-
1019-9

MANZANO, J. A. N. G. Linguagem C. Acompanhada de Uma Xícara de Café. 1. ed. São Paulo: Érica, 2015. ISBN 8536514620.

Você também pode gostar