Baixe o app para aproveitar ainda mais
Prévia do material em texto
Prof. Farley Correia Sardinha farley.sardinha@kroton.com.br Algoritmos e Lógica de Programação Introdução à Linguagem C Prof. Farley Correia Sardinha farley.sardinha@kroton.com.br PRÉ-AULA O sufixo “.h” indica o arquivo-interface (header-file) de mesmo nome da biblioteca e que é incluído no programa. Prof. Farley Correia Sardinha farley.sardinha@kroton.com.br AULA ➢Processo de tradução de um programa escrito em linguagem de alto nível (chamado de código fonte) para um equivalente em linguagem de baixo nível (chamado de código objeto). ➢Para realizar esse processo é utilizado um programa de computador (ou um grupo de programas) chamado de compilador. Compilação Compilação Código fonte Compilação Código objeto Compilação É um programa que recebe um ou mais arquivos objeto gerados por um compilador e combina-os em um único arquivo executável, arquivo de biblioteca ou outro arquivo objeto. Linker Arquivos Objeto Arquivos de Controle Parâmetros Bibliotecas Compartilhadas Bibliotecas Padrão Linker Arquivo Executável ➢Em inglês chamado de Integrated Development Environment – IDE, é uma aplicação que fornece facilidades no desenvolvimento de softwares e que consiste no agrupamento de: ❖editor de código fonte; ❖compilador ou interpretador; ❖montador; ❖depurador; ❖além dos opcionais: ✓sistema de versionamento; ✓construtor de interfaces; ✓browser integrado; ✓entre outros. Ambiente de Desenvolvimento Integrado ➢É um ambiente de desenvolvimento integrado (IDE) utilizado para o desenvolvimento de programas nas linguagens C, C++ e C++ 11 em sistemas Windows. ➢O Orwell Dev-C++ é um fork que tem dado continuidade ao desenvolvimento do programa Dev-C++. ➢Iniciado em 2011, quando o Dev-C++ parou de receber atualizações, o Orwell continua recebendo atualizações periodicamente. O IDE Orwell DEV-C++ O Repl.it é um ambiente de programação de computador simples e interativo do tipo REPL – Read-Eval-Print Loop (que em português equivale a algo do tipo “Laço de repetição Lê-Calcula-Imprime”). Um programa escrito em um ambiente REPL é executado por partes, utilizando entradas ou expressões únicas, avaliando-as e retornando o resultado ao usuário. O termo geralmente é usado para se referir a interfaces de programação semelhantes ao ambiente interativo clássico de máquina Lisp (anteriores aos microcomputadores). O ambiente online Repl.it Exemplos comuns de REPL incluem shells de linha de comando (interfaces de usuário para acesso a serviços do sistema operacional) e ambientes semelhantes para linguagens de programação e são particularmente característicos de linguagens de script. Cada turma terá um espaço específico no Repl.it, onde serão postados os exercícios valendo pontos. O IDE Repl.it funciona online e pode ser acessado pelo site: https://repl.it/ Vejamos como utilizar o ambiente REPL: O ambiente online Repl.it https://repl.it/ O ambiente online Repl.it ➢ O ambiente REPL.it possui salas de aula que podem ser acessadas pelos links abaixo. Fique atento, pois cada link corresponde a uma turma específica da Pitágoras - Serra! O ambiente online Repl.it Engenharia Civil 1º Período https://repl.it/classroom /invite/15gWNub Engenharia Civil 2º Período https://repl.it/classroom /invite/1aaRa6d Engenharia de Produção 1º Período https://repl.it/classroom /invite/1j8m1QU Engenharia de Produção 2º Período https://repl.it/classroom /invite/1j9pZqX Engenharia Mecânica 1º Período https://repl.it/classroom /invite/1jasY00 Engenharia Mecânica 2º Período https://repl.it/classroom /invite/1jbvXA3 https://repl.it/classroom/invite/15gWNub https://repl.it/classroom/invite/1aaRa6d https://repl.it/classroom/invite/1j8m1QU https://repl.it/classroom/invite/1j9pZqX https://repl.it/classroom/invite/1jasY00 https://repl.it/classroom/invite/1jbvXA3 O ambiente online Repl.it Ao clicar no link, fique atento se é o link da sua turma! O ambiente online Repl.it Digite um nome de usuário (pode ser o mesmo do seu e-mail) O ambiente online Repl.it Digite seu e-mail O ambiente online Repl.it Digite uma senha. O ambiente online Repl.it Clique em “Sign up”. O ambiente online Repl.it Digite seu nome O ambiente online Repl.it Digite seu sobrenome O ambiente online Repl.it Pode até colocar uma foto sua! O ambiente online Repl.it Digite “Faculdade Pitágoras” no campo de busca até aparecer o nome da nossa instituição nas opções Selecione a opção correta! O ambiente online Repl.it Se quiser, pode escrever algo sobre você nesse campo. Ao finalizar, clique em “save”. O ambiente online Repl.it Lembre-se de verificar o seu e- mail mais tarde! O ambiente online Repl.it Ao clicar em “save” você será direcionado para esta página. O ambiente online Repl.it Este quadro lhe direciona para o espaço de exercícios da sua turma. O ambiente online Repl.it Este link lhe direciona para seu espaço pessoal de atividades. Você pode encontrar suas atividades já realizadas ou iniciar uma nova. Clique nele para fazer exemplos e exercícios! O ambiente online Repl.it Clique neste link para fazer exemplos e exercícios! O ambiente online Repl.it Digite C e selecione a linguagem na lista abaixo, para entrar no ambiente de programação em C. O ambiente online Repl.it Este é o ambiente de programação do REPL. O ambiente online Repl.it Neste lado ficam os arquivos gerados. O ambiente online Repl.it No meio está o ambiente de edição do código-fonte. O ambiente online Repl.it Ao finalizar a edição do código-fonte, clique em “run”. O ambiente online Repl.it O que foi programado será exibido neste campo. Estrutura Básica em C 1. #include <stdio.h> 2. 3. int main(void) 4. { 5. printf(“\nHello world!\n”) 6. return 0; 7. } 8. 9. 10. 11. 12. 13. 14. 15. Hello World! Biblioteca de entrada e saída 1. #include <stdio.h> 2. 3. int main(void) 4. { 5. printf(“\nHello world!\n”) 6. return 0; 7. } 8. 9. 10. 11. 12. 13. 14. 15. Hello World! Comando de início. É o mais importante de todo programa. 1. #include <stdio.h> 2. 3. int main(void) 4. { 5. printf(“\nHello world!\n”) 6. return 0; 7. } 8. 9. 10. 11. 12. 13. 14. 15. Hello World! Comando de saída de dados. 1. #include <stdio.h> 2. 3. int main(void) 4. { 5. printf(“\nHello world!\n”) 6. return 0; 7. } 8. 9. 10. 11. 12. 13. 14. 15. Hello World! Indica que o processo está voltando para o Sistema Operacional ➢ Os identificadores são os “nomes” das variáveis, definidos pelo programador e que obedecem as seguintes regras: Regras para identificadores de Variáveis Considerar a diferença entre letras minúsculas e maiúsculas (case sensitive). “Nao podem ter acentuacao”. Apenas os caracteres “_” (sublinha) e “$” são aceitos, além das letras do alfabeto e números. Não podem conter espaços. Podem começar com os caracteres “_” e “$”. Não podem começar com números. Não podem ser palavras reservadas. Palavras Reservadas em C auto break case char const continue default do double else enum extern float for goto if int long register return short signed sizeof static struct switch typedef union unsigned void volatile while Ti p o s d e d ad o s Lógico Booleano bool Numérico Inteiro int Real float double Alfanumérico Caractere char Tipos de Dados ➢ São dados numéricos que ocupam um espaço de 4 bytes (ou 32 bits) na memória. ➢ Compreendem números no intervalo: Dados do Tipo Inteiro (int) – 2.147.483.648 + 2.147.483.647 1 1 1 1 1 1 1 1 (1 byte = 8 bits) 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 (4 bytes = 32 bits) ➢ Chamados de float (ou ponto flutuante) ➢ São dados numéricos reais (possuem valores decimais). ➢ Possuem sete dígitos de precisão decimal. ➢ Ocupam um espaço de 4 bytes (ou 32 bits) na memória. ➢ Compreendem números no intervalo:Dados do Tipo Real de Precisão Simples (float) 1,2. 10−38 3,4. 10+38 ➢ Chamados de double (ou long float) ➢ São dados numéricos reais (possuem valores decimais). ➢ Possuem quinze dígitos de precisão decimal. ➢ Ocupam um espaço de 8 bytes (ou 64 bits) na memória. ➢ Compreendem números no intervalo: Dados do Tipo Real de Precisão Dupla (double) 2,3. 10−308 1,7. 10+308 ➢ São dados do tipo caracteres numéricos, símbolos e letras. ➢ Ocupam um espaço de 1 byte (ou 8 bits) na memória. ➢ Podem representar até 256 caracteres diferentes. Dados do Tipo Alfanumérico (char) ➢Sintaxe <tipo> <nome_da_variável>; ➢Exemplo: int main() { int x; ... return 0; } Declaração de Variáveis ➢A linguagem C não possui o tipo de dados string, que corresponde a cadeias de caracteres. ➢Nesse caso, deve-se utilizar um vetor de caracteres. ➢A declaração é feita da seguinte forma: int main() { char <nome_da_variável> [(quantidade de caracteres)]; ... return 0; } E se for uma cadeia de caracteres? Só aceita uma palavra por vetor! ➢ Serve para escrever mensagens e exibir valores de variáveis ➢ Sintaxe: printf (“<formato1> ... <formatoN>”, var1, ..., varN); ➢ NÃO PRECISA DO SÍMBOLO “&” ➢ FORMATO SIGNIFICADO ❖%c Exibe um único caracter ❖%d Exibe um número inteiro (int) ❖%f Exibe um número real (float) ❖%lf Exibe um número real (double) ❖%% Exibe o símbolo “%” Comandos de Saída de Dados ➢ Serve para captar do usuário do programa um ou mais valores ➢ Sintaxe: scanf (“<formato1> ... <formatoN>”, &var1, ..., &varN); ➢ PRECISA DO SÍMBOLO “&” ➢ FORMATO SIGNIFICADO ❖%c Lê um único caracter ❖%d Lê um número inteiro (int) ❖%f Lê um número real (float) ❖%lf Lê um número real (double) Comandos de Entrada de Dados Formato Significado Sintaxe %c Lê/exibe um único caractere char letra; scanf(“%c”, &letra); printf(“%c”, letra); %d Lê/exibe um número inteiro (int) int idade; scanf(“%c”, &idade); printf(“%c”, idade); %f Lê/exibe um número real (float) float nota; scanf(“%c”, ¬a); printf(“%c”, nota); %lf Lê/exibe um número real (double) double velocidade; scanf(“%c”, &velocidade); printf(“%c”, velocidade); Formatos de Entrada e Saída de Dados It’s time! Elabore um programa que: ❖pergunta o nome da pessoa e armazena na variável nome; ❖pergunta o sobrenome (apenas um) e armazena na variável sobrenome; ❖pergunta a idade e armazena na variável idade; ❖agradece o usuário concatenando a frase com o nome e sobrenome fornecidos. Exemplo 1 1. #include <stdio.h> 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. Exemplo 1 1. #include <stdio.h> 2. 3. int main() 4. { 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. Exemplo 1 1. #include <stdio.h> 2. 3. int main() 4. { 5. char nome[100], sobrenome[100]; 6. int idade; 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. Exemplo 1 1. #include <stdio.h> 2. 3. int main() 4. { 5. char nome[100], sobrenome[100]; 6. int idade; 7. 8. printf("\nDigite seu nome: "); 9. scanf("%s", nome); 10. 11. 12. 13. 14. 15. 16. Exemplo 1 1. #include <stdio.h> 2. 3. int main() 4. { 5. char nome[100], sobrenome[100]; 6. int idade; 7. 8. printf("\nDigite seu nome: "); 9. scanf("%s", nome); 10. printf("\nDigite seu sobrenome: "); 11. scanf("%s", sobrenome); 12. 13. 14. 15. 16. Exemplo 1 1. #include <stdio.h> 2. 3. int main() 4. { 5. char nome[100], sobrenome[100]; 6. int idade; 7. 8. printf("\nDigite seu nome: "); 9. scanf("%s", nome); 10. printf("\nDigite seu sobrenome: "); 11. scanf("%s", sobrenome); 12. printf("\nDigite sua idade: "); 13. scanf("%d", &idade); 14. 15. 16. Exemplo 1 1. #include <stdio.h> 2. 3. int main() 4. { 5. char nome[100], sobrenome[100]; 6. int idade; 7. 8. printf("\nDigite seu nome: "); 9. scanf("%s", nome); 10. printf("\nDigite seu sobrenome: "); 11. scanf("%s", sobrenome); 12. printf("\nDigite sua idade: "); 13. scanf("%d", &idade); 14. printf("\nObrigado %s %s", nome, sobrenome); 15. return 0; 16. } Exemplo 1 Faça um programa que: ❖Peça o valor da diagonal menor de um losango; ❖Peça o valor da diagonal maior de um losango; ❖Calcule a área do losango. Exemplo 2 1. #include <stdio.h> 2. 3. int main() 4. { 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. Exemplo 2 1. #include <stdio.h> 2. 3. int main() 4. { 5. double d, D, area; 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. Exemplo 2 1. #include <stdio.h> 2. 3. int main() 4. { 5. double d, D, area; 6. 7. printf("\nDigite a diagonal menor do losango: "); 8. scanf("%lf", &d); 9. 10. 11. 12. 13. 14. 15. 16. Exemplo 2 1. #include <stdio.h> 2. 3. int main() 4. { 5. double d, D, area; 6. 7. printf("\nDigite a diagonal menor do losango: "); 8. scanf("%lf", &d); 9. printf("\nDigite a diagonal maior do losango: "); 10. scanf("%lf", &D); 11. 12. 13. 14. 15. 16. Exemplo 2 1. #include <stdio.h> 2. 3. int main() 4. { 5. double d, D, area; 6. 7. printf("\nDigite a diagonal menor do losango: "); 8. scanf("%lf", &d); 9. printf("\nDigite a diagonal maior do losango: "); 10. scanf("%lf", &D); 11. 12. area = d*D/2.0; 13. 14. 15. 16. Exemplo 2 1. #include <stdio.h> 2. 3. int main() 4. { 5. double d, D, area; 6. 7. printf("\nDigite a diagonal menor do losango: "); 8. scanf("%lf", &d); 9. printf("\nDigite a diagonal maior do losango: "); 10. scanf("%lf", &D); 11. 12. area = d*D/2.0; 13. 14. printf("\nA área do losango é %lf", area); 15. return 0; 16. } Exemplo 2 Faça um programa que: ❖Crie a constante pi, considerando o valor de pi = 3,14; ❖Pergunte o raio do círculo; ❖Calcule a área do círculo. Exemplo 3 1. #include <stdio.h> 2. #include <math.h> 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. Exemplo 3 1. #include <stdio.h> 2. #include <math.h> 3. 4. int main() 5. { 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. Exemplo 3 1. #include <stdio.h> 2. #include <math.h> 3. 4. int main() 5. { 6. const double pi = 3.14; 7. double raio, area; 8. 9. 10. 11. 12. 13. 14. 15. 16. Exemplo 3 1. #include <stdio.h> 2. #include <math.h> 3. 4. int main() 5. { 6. const double pi = 3.14; 7. double raio, area; 8. 9. printf("\nDigite o raio do círculo: "); 10. scanf("%lf", &raio); 11. 12. 13. 14. 15. 16. Exemplo 3 1. #include <stdio.h> 2. #include <math.h> 3. 4. int main() 5. { 6. const double pi = 3.14; 7. double raio, area; 8. 9. printf("\nDigite o raio do círculo: "); 10. scanf("%lf", &raio); 11. 12. area = pi*pow(raio,2); 13. 14. 15. 16. Exemplo 3 1. #include <stdio.h> 2. #include <math.h> 3. 4. int main() 5. { 6. const double pi = 3.14; 7. double raio, area; 8. 9. printf("\nDigite o raio do círculo: "); 10. scanf("%lf", &raio); 11. 12. area = pi*pow(raio,2); 13. 14. printf("\nA área do círculo é %lf", area); 15. return 0; 16. } Exemplo 3 Prof. Farley Correia Sardinha farley.sardinha@kroton.com.br EXERCÍCIOS (Esses NÃO valem pontos!) Quais dos seguintes nomes de variáveis são inválidos? Por quê? (a) int (b) char (c) 6_05 (d) _var1 (e) massa muscular (f) Z (g) alfa_beta_rotina (h) f# (i) _1312 (j) Reinicializa (k) A$ Exercício 1 Que tipo de variável se usa para guardar os valores abaixo? Explique. (a) 2000 (b) ’a’ (c) 2.3 (d) 23.432 Exercício 2 Faça um programa que: ❖Crie uma constante com o custo do metro cúbico de água consumida (em R$); ❖Pergunte a leitura do hidrômetro (relógio de água) no mês anterior (em metros cúbicos); ❖Pergunte a leitura do hidrômetro (relógio de água) no mês atual (em metros cúbicos); ❖Calcule o consumo de água; ❖Calcule o valor atual da conta de água. Exercício 3 1. #include <stdio.h> 2. 3. int main() 4. { 5. double atual, anterior, dif, val_conta; 6. const double val_unit = 0.5; 7. printf("\nDigite a leitura anterior: "); 8. scanf("%lf", &anterior); 9. printf("\nDigite a leitura atual: "); 10. scanf("%lf", &atual); 11. dif = atual– anterior; 12. val_conta = dif*val_unit; 13. 14. printf("\nA conta é %lf", val_conta); 15. return 0; 16. } Exercício 3 - Resposta Faça um programa que: ❖Peça as coordenadas de um primeiro ponto; ❖Peça as coordenadas de um segundo ponto; ❖Calcule a distância entre os dois pontos. Exercício 4 1. #include <stdio.h> 2. #include <math.h> 3. 4. int main() 5. { 6. double x1, y1, x2, y2, dx, dy, dist; 7. 8. printf ("\nDigite a coordenada x do primeiro ponto: "); 9. scanf ("%lf", &x1); 10. printf ("\nDigite a coordenada y do primeiro ponto: "); 11. scanf ("%lf", &y1); 12. printf ("\nDigite a coordenada x do segundo ponto: "); 13. scanf ("%lf", &x2); 14. printf ("\nDigite a coordenada y do segundo ponto: "); 15. scanf ("%lf", &y2); Exercício 4 - Resposta 4. int main() 5. { 6. double x1, y1, x2, y2, dx, dy, dist; 7. 8. printf ("\nDigite a coordenada x do primeiro ponto: "); 9. scanf ("%lf", &x1); 10. printf ("\nDigite a coordenada y do primeiro ponto: "); 11. scanf ("%lf", &y1); 12. printf ("\nDigite a coordenada x do segundo ponto: "); 13. scanf ("%lf", &x2); 14. printf ("\nDigite a coordenada y do segundo ponto: "); 15. scanf ("%lf", &y2); 16. dx = x2 - x1; 17. dy = y2 - y1; 18. dist = sqrt (pow(dx,2) + pow(dy,2)); Exercício 4 - Resposta 8. printf ("\nDigite a coordenada x do primeiro ponto: "); 9. scanf ("%lf", &x1); 10. printf ("\nDigite a coordenada y do primeiro ponto: "); 11. scanf ("%lf", &y1); 12. printf ("\nDigite a coordenada x do segundo ponto: "); 13. scanf ("%lf", &x2); 14. printf ("\nDigite a coordenada y do segundo ponto: "); 15. scanf ("%lf", &y2); 16. dx = x2 - x1; 17. dy = y2 - y1; 18. dist = sqrt (pow(dx,2) + pow(dy,2)); 19. printf ("\nDistância entre os pontos: %.2lf", dist); 20. 21. return 0; 22. } Exercício 4 - Resposta Prof. Farley Correia Sardinha farley.sardinha@kroton.com.br ATIVIDADES AVALIATIVAS (Esses valem pontos!) Acesse a área de Atividades Essa é a tela que você verá após efetuar novo login no REPL.it Acesse a área de Atividades Clique em “student” para acessar a área de atividades. Acesse a área de Atividades Clique no quadro correspondente à sua turma. Acesse a área de Atividades As atividades pontuadas aparecerão nesta lista. Clique a na atividade desejada. Acesse a área de Atividades Esse é o enunciado da atividade. Acesse a área de Atividades Esse é o espaço em que você vai digitar seu código. Acesse a área de Atividades Esse é o espaço em que aparecerá os resultados dele, após clicar em “run”. Acesse a área de Atividades Ao finalizar é só clicar em “submit” e a atividade será enviada para a conta do professor. Se clicar por engano, é só voltar e “desclicar”.
Compartilhar