
































































Estude fácil! Tem muito documento disponível na Docsity
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Prepare-se para as provas
Estude fácil! Tem muito documento disponível na Docsity
Prepare-se para as provas com trabalhos de outros alunos como você, aqui na Docsity
Encontra documentos específicos para os exames da tua universidade
Prepare-se com as videoaulas e exercícios resolvidos criados a partir da grade da sua Universidade
Responda perguntas de provas passadas e avalie sua preparação.
Ganhe pontos para baixar
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Este documento aborda conceitos básicos de programação em c, como variáveis, estruturas de dados e funções. São apresentadas as palavras-chave da linguagem c, tipos de dados, declaração de variáveis, operadores aritméticos e relacionais, estruturas de controle, funções e ponteiros. Além disso, são fornecidos exemplos de código em c para ilustrar esses conceitos.
Tipologia: Exercícios
1 / 72
Esta página não é visível na pré-visualização
Não perca as partes importantes!

































































Centro Nacional de Alto Desempenho CENAPAD-SP Prof. Carlos Rebollo Abril de 2013
O curso foi estruturado em cinco aulas sendo cada aula tendo uma parte teórica e uma parte prática com exercícios e laboratórios. Os capítulos seguem a sequencia das aulas. 1 Introdução 2 Aula 1: Estrutura de um programa C, declaração de variáveis primitivas e valores literais. 3 Aula 2: Declaração de variáveis derivadas e construção de expressões. 4 Aula 3: Controles de fluxos, estrutura de funções, blocos e escopo. 5 Aula 4: Gerenciamento de memória 6 Aula 5: Biblioteca padrão C e entrada/saída 7 Material Extra:
Para acessar o ambiente pelo linux, utilizamos o ssh. O usuário tem que ser substituindo usuario pelo login passado no primeiro dia de aula. #ssh [email protected] Password:
Os ambientes CENAPAD tem como sistema operacional o Linux ou Unix. No curso vamos ver alguns comandos básicos para poder editar os exemplos e exercícios. Diretório atual #pwd Listar arquivos e pastas #ls Entrar em uma pasta #cd pasta #cd curso_c Sair dessa pasta #cd .. Copiar um arquivo #cp origem destino #cp exemplo01.c teste.c Renomear um arquivo #mv origem destino #mv teste.c teste01.c O ambiente CENAPAD não tem programas gráficos para edição de arquivos. Os editores em linha de comando são o vi e o nano. Para quem já conhece essas ferramentas poderá escolher a que é mais confortável. Quem está conhecendo agora, indicamos o nano pela facilidade nos comandos. Editar um arquivo existente #nano arquivo #nano teste01.c Para navegar entre as linhas ou posições utilize as teclas “seta” Para sair do programa tecle Ctrl+X Se o arquivo não foi alterado, o programa sai sem perguntar nada. Se for um arquivo alterado, ele perguntará “Save modiffied buffer” Digite “Y”. Ele confirmará o nome do arquivo, apenas tecle “Enter”.
exemplo01.c 1./*
Logo depois, na linha 7 “int main()” é a definição de uma função em C. Nesse caso a função com o nome “main” ( principal em inglês). Um programa pode ter várias funções mas somente uma com o nome “main” que indica aonde o programa iniciará quando for executado. Alias, o C é “case-sensetive” e diferencia letras minúsculas de maiúsculas: “main” é diferente de “MAIN” e é diferente de “Main”. A função “main” tem uma palavra antes o “int” que é uma palavra que define um tipo de dado em C que representa inteiro. A função “main” que por analogia da matemática (y = f(x)) tem um valor de retorno, valor de resultado da função. ➔ Programas tem uma função “main” mas se estivermos programando bibliotecas que apenas disponibilizam uma coleção de funções, não teríamos a função “main” e o programador que for usar essa biblioteca é que vai definir um “main” em seu programa. A função “main” inicia na linha 8 com o caractere “{“ e termina na linha 12 com o caractere “}”. Toas as linhas entre a 8 e 12 estão na função “main” ou mais tecnicamente no escopo da função “main”. Toda a linha de comando em C termina com “;”. Na linha 11 temos uma outra função a “printf” que como analogia a funções em matemática ( y = f(x) ), recebe como parâmetro um texto “Bom dia\n”. A função “printf” imprime na tela do usuário o que recebe como parâmetro ( “Bom dia\n” ). Na linha 12 temos a linha “return 0;” que é um comando especial que além de sair da função, e nesse caso do programa, ela especifica o valor de retorno. ➔ Funções retornam ao ponto que ela foi chamado. No caso de “main”, ela retorna para quem executou o programa. A convenção é que quando retornamos zero ( 0 ) num programa, quer dizer que ele funcionou como esperado e se tiver valor diferente de zero, seria o número de algum erro. Agora vamos compilar esse primeiro exemplo: Na pasta exemplos executamos: icc -o exemplo01 exemplo01.c -Wall Para executar o programa: ./exemplo Saída na tela: Bom dia Note que os caracteres “\n” não são exibidos porque essa sequencia representa o carácter de nova-linha. Existem outras sequencias especiais que veremos durante o curso.
Durante o curso usaremos o “printf” como ferramenta nos nossos laboratórios. Agora apresentaremos o básico necessário para os laboratórios e no último dia veremos melhor a formatação de dados. // formato do printf printf(“string formatação”, [var, var, var,...]);
A “string de formatação” é um texto que podemos escrever literalmente ou podemos indicar locais para a inclusão de variáveis usando “%” e um qualificador que define o tipo e a formatação de saída de cada item. Para cada “%” que achamos, ele ira usar uma variável da lista de variáveis. printf(“%d %d %d \n”, 1 , 2 , 3 ); para cada %d o printf coloca o valor do próximo literal ou variável Letra Descrição i ou d Inteiro u Inteiro sem sinal o Octal sem sinal X ou x Hexadecimal sem sinal F ou f Ponto flutuante. E ou e Ponto flutuante notação cientifica. G ou g Usar a melhor representação e ou f A ou a Ponto flutuante em hexadecimal com sinal c Caractere. s String p Ponteiro Se colocarmos um %x que não condiz com o tipo da variável ou literal, o compilador avisará mas deixará passar. Quando for executado, esse erro ficará aparente. Exemplo02.c 1./*
Como a linguagem C é de tipagem estática, tanto os valores literais quanto variáveis são de um tipo de dado definido. Podemos separar esses tipos de dados em primitivos e derivados. Os tipos de dados primitivos são definidos pela linguagem de programação, os derivados são definidos pelo programador compondo com tipos primitivos ou usando tipos derivados já definidos. Os tipos de dados primitivos podem ser divididos didaticamente em grupos:
Para usar variáveis em C precisamos primeiramente declara-la informando o nome e o tipo dela.
antes. Depois que um programa executa, a memória não é apagada e sim sobreposta por outro programa. Para inicializar uma variável atribuímos algum valor neutro para essa variável. Podemos aproveitar a declaração da variável para a inicialização dela.
Os tipos de dados primitivos podem ser divididos em grupos:
7.int main() 8.{
No C números de ponto flutuante pode ser representado por float ou double e suas variações. Essas variações definem a capacidade de representação numérica. Quanto maior a quantidade de bits, maior a capacidade de representação numérica. Se o valor extrapolar esse limite pode ocorrerá problemas overflow e underflow. Overflow pode ser como o exemplo com números inteiros. Já o Undeflow é quando um número é tão pequeno como 0,000000000001 com 12 casas, mas o tipo somente aceitaria 10 e nesse caso ele seria arredondado para zero. Essas definições de capacidade de variável podem variar de acordo com a arquitetura e do ambiente computacional e se for preciso terá que ser tradada pelo programador (Faça a linguagem rápida, mesmo que não tenha portabilidade). Tipo Capacidade float 16 bits
double 62 bits long double 64 bits A declaração de variáveis segue a mesma regra:
No C caractere representa uma letra somente que é o tipo char. O char é um tipo escalar porque cada letra pode ser representada por um número como na tabela ASCII. ➢ String em c não é um tipo primitivo. String é implementado como um vetor de char. Veremos esse tipo na próxima aula.
Os valores literais em C são de tipagem estática e o compilador qualifica os literais de acordo com o conteúdo deles ou podemos indicar usando prefixos que o qualificam. Podemos descrever literais de tipos primitivos e literais de tipos derivados:
Podemos representar valores inteiros em base decimal, octal e hexadecimal. Podemos também qualificar o inteiro como long, long long ou unsigned. // Números na base 10 0 , 1 , 3 ... 10 , 11 ... , 100 , - // Números na base octal inicia com 0 0, 01, 03, 07, 10, 011, ..., 100, - // Números na base hexadecimal inicia com 0x 0x0, 0x1, 0xa, 0xb, 0x10...0x100, -0x // Para representar long usamos um l ou L somo sufixo e long long usamos dois ll ou LL 1l, 3L, 07L, 0xal, 0x100LL, -0x100LL // Para representar unsigned usamos um u ou U como sufixo 1u, 3U, 07U, 0xau, 0x100U, -0x100U
Podemos representar literais ponto flutuante na notação decimal e na notação cientifica. Ambos as notações podem ser representadas na base decimal e hexadecimal. O qualificador padrão é signed float mas podemos mudar para float ou para long double. Para representar um numero ponto flutuante usamos o ponto para separar a parte inteira da fração. Se não tiver a parte fracionada podemos colocar “.0” ou apenas “.” // Números na base 10 0.5 , 5.0 , 5. //Números log double 0.5L, 5.0L, 5.L
// Podemos usar a notação cientifica 0.5e10, 5.0e2, 5.E // Números na base hexadecimal iniciamos com 0x 0x0.5p0 , 0x5.0p1 , 0x5.p
Literais caractere representam somente um caractere e representamos ele entre aspas simples “'”. A linguagem C trabalha com string sendo um conjunto de caractere como um vetor. Caracteres são escalares e podemos realizar todas as operações. // Letras 'a', 'b', 'c' // Podemos usar sequencias de escape ''', '\”', '?' // Podemos tambem usar código octal e hexadecimal '\0141', '\x61' // Literal string usamos aspas duplas “Bom dia”
Para cada tipo de dado primitivo existe uma diretiva do printf e podemos listar elas Letra Descrição i ou d Inteiro u Inteiro sem sinal hu short int lu long int llu long long int f double/float Lf long double