Aula 5 - Programação de Softawre Basico
Aula 5 - Programação de Softawre Basico
Aula 5 - Programação de Softawre Basico
BÁSICO
ARA0363 – 1003
Prof: Maximiano Correia Martins, D.Sc
Aula 5
Plano de Aula: 5ª Aula de Programação de software básico
Vimos anteriormente as funções printf() e scanf(), da biblioteca stdio.h, que estão nessa categoria. Elas
fornecem a flexibilidade para receber a entrada em algum formato fixo e fornecer a saída no formato
desejado.
Função printf()
Essa função tem por finalidade imprimir dados na tela. Isto é feito através da sintaxe:
printf (“expressão de controle”, lista de argumentos);
Na “expressão de controle” são inseridos todos os caracteres a serem exibidos na tela e/ou códigos de
formatação, responsáveis por indicar o formato em que os argumentos devem ser impressos. Esses
argumentos devem estar incluídos na “lista de argumentos” e caso exista mais de um, devem ser
separados por vírgula.
Exemplo: printf("A resposta é %d\n", c);
onde c é uma variável do tipo inteiro.
Códigos de formatação permitidos na linguagem C
Os códigos especiais (barra invertida) são apresentados na tabela 2. Eles
também podem ser inseridos na “expressão de controle”.
A função printf()
Especificações de conversão causam a conversão e a impressão do argumento correspondente pela
função printf. Cada especificação de conversão começa com um símbolo % e termina com um
caractere de conversão.
Entre o % e o caractere de conversão, pode haver poucos números, sinais, pontos etc. Estes
ocorrem na seguinte ordem:
•Um sinal de menos, que especifica o ajuste à esquerda do argumento convertido.
•Um número que especifica a largura mínima do campo. Se necessário, será preenchido à esquerda
(ou à direita, se for necessário ajuste à esquerda) para compensar a largura do campo.
•Um período que separa a largura do campo da precisão.
•Um número, a precisão, que especifica o número máximo de caracteres a serem impressos a partir
de uma string ou o número de dígitos após o ponto decimal de um ponto flutuante.
Exemplos já vistos com a função “printf”
Exemplos:
int num = 12;
int num2 = 12345;
printf("%d\n", num2); // imprime 12345
printf("%5d\n", num); // imprime 12, com 3 espaços antes do número 12
O programa lerá um valor inteiro que o usuário digitar no teclado (%d é para
números inteiros, como em printf, portanto a deve ser declarado como int) e
colocará esse valor em a.
Lembrando que se deve colocar & na frente da variável usada no scanf. Este
operador indica o endereço da variável.
NOVIDADE: Função sprintf() e sscanf ()
Essas funções de E/S formatadas funcionam um pouco diferentes das funções printf () e scanf ().
A função sprintf () é bastante semelhante à função printf(), mas em vez de imprimir a saída na tela,
ela é armazenada em um vetor de caracteres.
NOVIDADE: Função sprintf() e sscanf ()
A função sscanf() é o equivalente na função scanf(). Ela permite que o programador armazene os
caracteres de string em alguma outra variável.
Funções de entrada/saída não formatadas em C
Execute o programa e em seguida aperte três telas no teclado por fim Enter o que você observou???
Função putchar()
Exercício: Altere o código para imprimir de “A” ate “Z” e depois “a” ate “z” minúsculo.
Trabalhando com strings
Função gets()
A Função gets() Lê da entrada padrão (teclado) até encontrar uma nova linha (Enter) ou o fim de arquivo
(EOF). A nova linha não é incluída na string lida. O caractere NULL ('\0') é automaticamente adicionado ao
fim da string.
Essa função não é segura! Como não é possível especificar o número máximo de caracteres a serem lidos,
é possível ler caracteres além do tamanho da string passada como parâmetro, causando uma falha de
segurança conhecida como buffer overflow.
CUIDADO: Um buffer overflow (ou transbordamento de dados) acontece quando um programa excede o uso de memória assignado a ele pelo sistema
operacional, passando então a escrever no setor de memória contíguo. Essas falhas são utilizadas por cibercriminosos para executar códigos arbitrários
em um computador, o que possibilita muitas vezes aos atacantes controlar o PC
Função gets()
Função puts()
A função puts imprime na tela uma string especificada, incluindo uma
nova linha ('\n') ao final da impressão.
Função fgets()
A função fgets lê uma linha do fluxo especificado e a armazena na
string apontada por str.
Realiza o procedimento até que os caracteres (n-1) são lidos, o
caractere de nova linha é lido ou o final do arquivo é alcançado, o que
ocorrer primeiro.
É normalmente usada com arquivos. A leitura pelo teclado é feita com
stdin.
Sintaxe:
char * fgets (char * string, int tamanho, FILE * fluxo);
Exemplo: Função fgets()
Função fputs()
A função fputs escreve a cadeia de caracteres string no fluxo. Ela não tem a
mesma funcionalidade que a função puts. Além de ser possível especificar o
fluxo ao utilizar a fputs, ela não adiciona uma nova linha (\n) na saída.
Protótipo:
int fputs (const char * string, FILE * fluxo);
r -=> Abre um arquivo no modo de leitura e define o ponteiro para o primeiro caractere no
arquivo. Retorna null se o arquivo não existir.
w => Abre ou cria um arquivo no modo de leitura e gravação. Retorna null se o arquivo não
puder ser aberto. Se o arquivo existir, os dados serão sobrescritos.
a => Abre um arquivo no modo de acréscimo. Ele retorna null se o arquivo não puder ser
aberto.
r + => Abre um arquivo para o modo de leitura e define o ponteiro para o primeiro caractere
no arquivo.
w + => abre um arquivo para o modo de leitura e gravação e define o ponteiro para o
primeiro caractere no arquivo.
a + => Abre um arquivo para o modo de leitura e gravação e define o ponteiro para o último
caractere no arquivo.
Função fclose():
A função fclose Fecha o arquivo que está sendo apontado e que foi aberto pela função fopen.
Qualquer dado que ainda não tenha sido escrito ao arquivo, é escrito antes de o arquivo ser
fechado.
O próximo exemplo: Abrindo ou criando, escrevendo com fputs(), vista anteriormente, e fechando
um arquivo. Verifique que o arquivo foi criado e possui o texto digitado.
Exemplo: Abrindo, escrevendo e fechando um arquivo.
Função fgets()
A Função fgets() serve para ler de arquivo: é usada para ler um arquivo linha por linha. Usa-se
como mostrado abaixo:
fgetc(fp);
Onde: fp é o ponteiro para o arquivo.
Função fprintf
Essa função é igual à função printf (), mas grava dados formatados no arquivo em vez da saída padrão. Essa função possui os
mesmos parâmetros que printf (), mas possui um parâmetro adicional, que é um ponteiro do tipo FILE, que aponta para o arquivo
no qual a saída deve ser gravada. Retorna o número de caracteres emitidos para o arquivo em caso de sucesso e o EOF em erro.
PROTÓTIPO
PARÂMETROS
fluxo - ponteiro para um objeto FILE que será usado como saída. Além de arquivos, existem duas saídas padrões que podem ser
utilizadas:
Nome Descrição
#include <stdio.h>
int main() {
/* fprintf(stdout, ...) é equivalente a printf(...) */
fprintf(stdout, "Olá mundo!\n");
return 0;
}
Função fscanf()
A função fscanf() é usada para ler a entrada formatada do arquivo. Funciona exatamente como a
função scanf(), mas em vez de ler dados da entrada padrão, ele lê os dados do arquivo. De fato, a
maioria dos argumentos da função fscanf() é a mesma da função scanf(), exceto que ela só precisa
de um argumento adicional, obviamente o suficiente para apontar um arquivo. Em caso de êxito, essa
função retorna o número de valores lidos e, no erro ou no final do arquivo, retorna EOF ou -1.
Função fwrite()
Esta função é usada para gravar um bloco inteiro em um determinado arquivo, em geral um
arquivo binário. ptr é um ponteiro que aponta para o bloco de memória que contém as
informações a serem gravadas no arquivo, size denota o comprimento de um item em bytes, n é o
número de itens a serem gravados no arquivo e fptr é um ponteiro (FILE) que aponta para o
arquivo no qual os dados são gravados. Se for bem-sucedido, fwrite() escreverá n itens, isto é, n
* tamanho bytes no arquivo e retornará n. Em erro ou no final do arquivo, ele retornará um
número menor que n.
size_t fread( void *buffer, size_t size, size_t count, FILE *stream );
Propor uma tarefa a ser executada com um programa feito em C que abre le e escreve em arquivo
txt ou binário.
Lista de alunos e suas notas salvando o nome a nota e media do aluno no arquivo NOTAS.txt
Atividades AURA c.
#include <stdio.h>
Atividade do objetivo 1:
#include <stdlib.h>
Escrever para console e arquivo na maneira que necessitamos é uma questão de int main()
usar a função correta, passando os parâmetros de forma adequada. Tente
reconhecer como os parâmetros abaixo formatam as saídas. {
float num;
b. FILE *fptr;
a. #include <stdio.h>
#include <stdio.h> fptr = fopen("programa.txt","w");
int main() if(fptr == NULL)
{ {
int main() printf("Erro ao abrir arquivo!");
printf( "<%f>\n", 1234.56 );
{ exit(1);
printf( "<%e>\n", 1234.56 );
printf( "<%d>\n", 123 ); }
printf( "<%4.2f>\n", 1234.56 ); printf("Entre com um numero fracionário: ");
printf( "<%2d>\n", 123 ); printf( "<%3.1f>\n", 1234.56 ); scanf("%f",&num);
printf( "<%10d>\n", 123 ); printf( "<%10.3f>\n", 1234.56 ); fprintf(fptr,"%.2f",num);
printf( "<%-10d>\n", 123); printf( "<%10.3e>\n", 1234.56 ); fclose(fptr);
return 0; return 0; return 0;
} }
}
Próxima Aula
Próximos passos
Na próxima aula iniciaremos o aprendizado de bibliotecas em C para
funções de entrada e saída em externas ao sistema computacional
usado.
• https://www.youtube.com/watch?v=6h2ja9MzBkc
• https://www.youtube.com/watch?v=eriDnpkh5kA
• https://www.youtube.com/watch?v=7mKC07_lAg4
• https://www.youtube.com/watch?v=08LkxBAz4LU